реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Реализовать мультипроцессорный доступ к SPI DATA FLASH, --
Kovrov
сообщение Apr 6 2006, 15:31
Сообщение #1


Мастер-фломастер
****

Группа: Свой
Сообщений: 611
Регистрация: 29-12-05
Пользователь №: 12 700



Задача такая организовать 2х процессорный доступ к AT45DB161 по SPI
синхронность не нужна...
пусть работаеют друг за другом
как лучше всего сделать?


--------------------
Вон ПОПОВ, клоун клоуном, а радио изобрел!!
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Apr 6 2006, 17:51
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Самое простое схемотехнически, процессор, прежде чем выставить CS,
анализирует уровень, на ней, если оба хотят, вступает в действие система
разруливания коллизий. Сложнее - завести перекрестные линии сигнализирующие о занятости памяти.
Т.е. в общем виде аппаратный мьютекс.


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
rezident
сообщение Apr 6 2006, 18:00
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Я бы для исключения аппаратных коллизий все-таки предложил мультиплексирование. По принципу "кто первый встал, того и тапки" smile.gif
Go to the top of the page
 
+Quote Post
Kovrov
сообщение Apr 6 2006, 18:33
Сообщение #4


Мастер-фломастер
****

Группа: Свой
Сообщений: 611
Регистрация: 29-12-05
Пользователь №: 12 700



я тоже нехочу варианта когда оба хотят!!
думаю сделать пару доп пинов занят - хочу :-)
ещё больное место это установить (освобождать) линии в зет состояние..
как бы так бы изголиться....
так навскидку беспокоит сигнал CS + ещё согласование 5- 3 вольта
ну это ладно буфер НСТ серии поможет наверное....


--------------------
Вон ПОПОВ, клоун клоуном, а радио изобрел!!
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Apr 6 2006, 18:41
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Цитата
так навскидку беспокоит сигнал CS + ещё согласование 5- 3 вольта
ну это ладно буфер НСТ серии поможет наверное....

Ну так и карты в руки - на 7402 сделать и преобразование уровней и арбитраж.


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
rezident
сообщение Apr 6 2006, 20:02
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Kovrov @ Apr 7 2006, 00:33) *
ещё больное место это установить (освобождать) линии в зет состояние..
как бы так бы изголиться....

Дык я же предложил вам муксер (мультиплексор) поставить. Но только не серии HCT! Типа 74HC257. Сигналы CS, SCK, DI от каждого МК завести на свою группу входов муксера. Арбитраж сделать на XORе типа 74HC86. Завести на входы XOR по CSу от каждого МК, на втором элементе 74HC86 проинвертировать и дальше на вход OE муксера. Состояние входа ОЕ должны проверять каждый из МК. Если МК CS сбросил, а вход OE остался в лог. 1, то значит произошел конфликт доступа. При этом выходы мультиплексора перейдут (или останутся) в высокоимпедансное состояние. А если будет наличествовать pull-up на его выходах, то для DataFlash это будет обычное НЕактивное состояние. Мультиплексор можно запитать от 3.3В и сразу же получить согласование уровней с входами DataFlash. Если хочется ВЫходные уровени схемы "арбитража и согласования" иметь TTL, то никто не мешает использовать свободный элемент 74HC86 в качестве повторителя, запитав ее от 5В. Согласовение же по входам мультиплексора легко делается с помощью последовательного включения резисторов. Например, для 74AC257 (ИМХО более предпочтительный муксер в данном случае, чем HC257) входная емкость не более 10pF, а макс. ток защитного диода 20мА. Так что резисторы, скажем 330 Ом, вообще нисколько не повлияют на работоспособность SPI до частоты этак в 10МГц. Не думаю, что ваш МК будет работать с DataFlash на более высокой частоте тактирования SPI.
Итого подытожим. Два корпуса м/с малой степени интеграции 74AC257 и 74AC(HC)86 вполне спасают отца русской демократии от придуманной им проблемы. Ферштейн? wink.gif
P.S. забыл еще про адресацию входов написать. Если вдруг сами не додумаетесь, то заведите один из CSов на адресный вход S указанного мультиплексора. Соответственно для этого МК сигналы нужно завести на те входы муксера, которые выбираются при низком уровне на входе S. Никакого высокого приоритета для этого МК такая схема адресации сигналов не дает. Догадались почему?
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Apr 6 2006, 20:15
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



А нафига все сигналы заводить на мукс?
Достаточно переключать CSы. Ну и два буфера для согласования DI 3->5.


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
rezident
сообщение Apr 6 2006, 20:59
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(beer_warrior @ Apr 7 2006, 02:15) *
А нафига все сигналы заводить на мукс?

Не все, а только те, которые являются входными для DataFlash. Для согласования уровней.
Цитата(beer_warrior @ Apr 7 2006, 02:15) *
Достаточно переключать CSы. Ну и два буфера для согласования DI 3->5.

Если только переключать CSы, то остальные выходы SPI каждого МК нужно держать в Z-состоянии и при обращении к DataFlash перепрограммировать их на вывод и/или на функцию интерфейса SPI. Это немного напрягает при программировании. Что уже подметили.
Цитата
ещё больное место это установить (освобождать) линии в зет состояние..
как бы так бы изголиться....

Да и не устраняет полностью ваш способ вероятность аппаратного конфликта.
Предложенная мной схема позволяет подключить к SPI шине каждого МК еще и другие устройства, если это необходимо. Причем работа каждого МК с этими дополнительными устройствами никак не будет влиять ни на работу соседнего МК, ни на работу любого из МК с аппаратно расшаренной DataFlash.
Хотя, конечно же, я ничего не навязываю и выбор способа за вопрошающим.
Go to the top of the page
 
+Quote Post
Kovrov
сообщение Apr 7 2006, 05:46
Сообщение #9


Мастер-фломастер
****

Группа: Свой
Сообщений: 611
Регистрация: 29-12-05
Пользователь №: 12 700



спасибо всем откликнувшимся щя буду вникать че куды и как


--------------------
Вон ПОПОВ, клоун клоуном, а радио изобрел!!
Go to the top of the page
 
+Quote Post
defunct
сообщение Apr 7 2006, 06:01
Сообщение #10


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Такой вариантец могу предложить:
Соединить две пары одноименных пин процов между собой перекресно, напр PD5, PD2 -> PD2, PD5. Перед обращением к датафлешу смотреть уровень на входном пине, если 0 - низя, 1 - можно. Перед обращением к датафлешу устанавливать на выходном пине 0 (мол занят ресурс), после прочтения - устанавливать 1. Был бы C51 было б проще, там одним пином можно обойтись.

Цитата
ещё больное место это установить (освобождать) линии в зет состояние..
как бы так бы изголиться....

Тупо. Соединить линии обращения к датафлешу с обоих МК. Перед обращением к датафлешу активировать выход DDRX = 11, после окончания работы - отключать DDRX = 00. И уже после того как пины от шины датафлеша отрублены - сигнализировать сопроцессору, что линия свободна.
Go to the top of the page
 
+Quote Post
Kovrov
сообщение Apr 7 2006, 06:23
Сообщение #11


Мастер-фломастер
****

Группа: Свой
Сообщений: 611
Регистрация: 29-12-05
Пользователь №: 12 700



Цитата(rezident @ Apr 7 2006, 00:02) *
. Так что резисторы, скажем 330 Ом, вообще нисколько не повлияют на работоспособность SPI до частоты этак в 10МГц. Не думаю, что ваш МК будет работать с DataFlash на более высокой частоте тактирования SPI.

скорее всего CLK на SPI будет работать больше чем 10 мгц
пояснение...
первый мк будет по наличии аварии весь архив данных записывать в датафлеш
процесс не спешный.. и проблем не вызывает
потом все это хозяйство из флешки должен забрать второй мк
что за мк будет и какая скорость не известно
поэтому на 50 мгц должен быть запас - от греха подальше...
чначала велось к тому что чтоб все это передавалось по уарту по рс485
но протокол так и не был утвержден сторонами..
поэтому мня посетила мысль от мультипроцессорном доступе

Цитата(defunct @ Apr 7 2006, 10:01) *
Такой вариантец могу предложить:
Тупо. Соединить линии обращения к датафлешу с обоих МК. Перед обращением к датафлешу активировать выход DDRX = 11, после окончания работы - отключать DDRX = 00. И уже после того как пины от шины датафлеша отрублены - сигнализировать сопроцессору, что линия свободна.


Угу. меня этот вариант тоже сразу начал крутиться в голове...
но может мультиплексирование всетаки правильней?
надо подумать....


--------------------
Вон ПОПОВ, клоун клоуном, а радио изобрел!!
Go to the top of the page
 
+Quote Post
defunct
сообщение Apr 7 2006, 07:41
Сообщение #12


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Kovrov @ Apr 7 2006, 09:23) *
Угу. меня этот вариант тоже сразу начал крутиться в голове...
но может мультиплексирование всетаки правильней?
надо подумать....

Однозначно правильного пути не бывает ;>
Я же не зря предложил PD2 (это ExtInt0) т.е. получив от сопроцессора инфу по Int(у) проц просто отложит себе где-то в памяти, что интерфейс свободен или занят и будет себе работать дальше.
Go to the top of the page
 
+Quote Post
rezident
сообщение Apr 7 2006, 11:23
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Kovrov @ Apr 7 2006, 12:23) *
скорее всего CLK на SPI будет работать больше чем 10 мгц
пояснение...
первый мк будет по наличии аварии весь архив данных записывать в датафлеш
процесс не спешный.. и проблем не вызывает
потом все это хозяйство из флешки должен забрать второй мк
что за мк будет и какая скорость не известно
поэтому на 50 мгц должен быть запас - от греха подальше...

Я конечно много не знаю, но где вы нашли DataFlash AT45DB161(с каким-нибудь суффиксом), работающую с частотой тактирования 50МГц? Это во-первых. А во-вторых, поскольку тема размещена в разделе AVR, то я логично предположил, что один из МК тоже AVR. Я не очень хорошо знаю все AVR, но растолкуйте который из них сможет выгребать с конвейера SPI данные чаще чем 2-3 миллиона раз в секунду? Или для этого процесса DMA используется?
Я в принципе тоже сторонник, что "лучше переспать, чем недоесть", однако от ваших запросов вы не слишком рискуете "лопнуть" ? wink.gif
Go to the top of the page
 
+Quote Post
Kovrov
сообщение Apr 7 2006, 12:31
Сообщение #14


Мастер-фломастер
****

Группа: Свой
Сообщений: 611
Регистрация: 29-12-05
Пользователь №: 12 700



один из процессоров имеено тот который будет выполнять ф-ию записи в датафлеш
ну вот прям 100% даже тысячу что будет мега 128!! работа скорее всего на 4 мгц клока
второй процессор я не знаю какой будет и знать не хочу... может там DSP будет или что из рода MSP 430!!
это уже не мое дело, главное чтоб я мог дать безпрепятственный доступ к флешке
какая у них скорость будет неизвестно...
ещё одно флеш память в 99% будет бездействовать - запись будет только если случилась авария
что надеюсь не случиться
а флешка AT45DB161D до 66 МГЦ SPI...


--------------------
Вон ПОПОВ, клоун клоуном, а радио изобрел!!
Go to the top of the page
 
+Quote Post
rezident
сообщение Apr 7 2006, 15:13
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Kovrov @ Apr 7 2006, 18:31) *
один из процессоров имеено тот который будет выполнять ф-ию записи в датафлеш
ну вот прям 100% даже тысячу что будет мега 128!! работа скорее всего на 4 мгц клока

Ну дык а я о чем! smile.gif
Цитата(Kovrov @ Apr 7 2006, 18:31) *
второй процессор я не знаю какой будет и знать не хочу... может там DSP будет или что из рода MSP 430!!
это уже не мое дело, главное чтоб я мог дать безпрепятственный доступ к флешке
какая у них скорость будет неизвестно...

Задача со многими неизвестными может иметь одно решение, может несколько, а может не иметь ни одного. Любопытно вы решаете задачу, не зная полностью начальные условия. cranky.gif
Цитата(Kovrov @ Apr 7 2006, 18:31) *
а флешка AT45DB161D до 66 МГЦ SPI...

Угу. Увидел. Новую версию Atmel выпустил.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 11th July 2025 - 20:43
Рейтинг@Mail.ru


Страница сгенерированна за 0.01525 секунд с 7
ELECTRONIX ©2004-2016