junkl 0 16 ноября, 2007 Опубликовано 16 ноября, 2007 · Жалоба Кто-нибудь использовал более одного Slave-устройства на шине SPI? Какой режим переключения между периферийными устройствами лучше использовать? И возможно ли вообще использовать Fixed Peripheral Mode? Чем грозит вот этот пункт из Errata Sheet? 14. SPI: No chip select configuration change before end of current transfer If the SPI is programmed in Master Mode and in Fixed Peripheral Mode, and data is being sent to a slave, the user has to wait for completion of the transfer before changing the slave number. Programming a new slave number (PCS) and/or a new DLYBCS field locks the SPI on the current slave. Problem Fix/Workaround The user should use the Variable Peripheral Mode. В каком случае SPI будет заблокрован? Только если изменить PCS в процессе передачи данных от мастера слэйву? Может быть, у кого-нибудь есть пример работы со SPI в Variable Peripheral Mode с использованием PDC? Буду очень благодарна! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 16 ноября, 2007 Опубликовано 16 ноября, 2007 · Жалоба Для того чтобы ответить на Ваши вопросы, желательно знать конфигурацию аппаратной части: что именно планируется повесить на SPI, какие будут потоки/объемы данных и т.п. Например, SPI в Variable Peripheral Mode с использованием PDC очень удачно подходит для работы с ЦАП/АЦП, но работать с памятью будет неудобно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 23 ноября, 2007 Опубликовано 23 ноября, 2007 · Жалоба Кто-нибудь использовал более одного Slave-устройства на шине SPI? Какой режим переключения между периферийными устройствами лучше использовать? И возможно ли вообще использовать Fixed Peripheral Mode? Чем грозит вот этот пункт из Errata Sheet? В каком случае SPI будет заблокрован? Только если изменить PCS в процессе передачи данных от мастера слэйву? Может быть, у кого-нибудь есть пример работы со SPI в Variable Peripheral Mode с использованием PDC? Буду очень благодарна! Использую 8 слейвов (то есть еще с внешним дешифратором). Именно в указанном тобой режиме. Девайсы разные- АЦП, ЦАП, синтезаторы частоты, DataFlash. С этого же SPI и гружусь. Пользую ПДП, переключаю адрес только после окончания обмена. Никаких проблем не заметил. Пример- это сложнее, у меня идет поток с возможностью вставки стороннего запроса от других задач, наворочено чуть, может испугать. :) А так- ничего сложного. Загоняешь в PDC и далее ждешь прерывания по окончанию запроса. Нюанс- если быстро подряд послать два запроса к одному и тому же адресу, то может не устанавливать CS в "1" между этими запросами. Каким-то устройствам это может быть критично. В таких случаях я вставлял принудительный таймаут. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
junkl 0 24 ноября, 2007 Опубликовано 24 ноября, 2007 · Жалоба Большое спасибо. У меня всего два устройства: DataFlash и температурный датчик. Вроде бы разобралась: использую Fixed Peripheral Mode и PDC, также как и вы переключаю адрес только после окончания обмена. Все работает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 25 ноября, 2007 Опубликовано 25 ноября, 2007 · Жалоба Большое спасибо. У меня всего два устройства: DataFlash и температурный датчик. Вроде бы разобралась: использую Fixed Peripheral Mode и PDC, также как и вы переключаю адрес только после окончания обмена. Все работает. Кстати, из личного опыта. Если одновременно активно работаете с SPI PDC и пользуете аппаратный ТWI, то не пугайтесь, если TWI зависнет. Я напоролся на глюки TWI именно когда стал гонять безостановочный поток запросов-ответов по SPI. Вылечилось отказом от аппаратного TWI и заменой его софтовым. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
romashko 0 26 ноября, 2007 Опубликовано 26 ноября, 2007 · Жалоба у кого-нить на сабжевом контроллере удавалось задействовать АППАРАТНЫЙ SPI с ножкой npcs0 ? у меня он блокируется (повисает в цикле опроса статус-байта). По другим чипселектам работает нормально. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 26 ноября, 2007 Опубликовано 26 ноября, 2007 · Жалоба у кого-нить на сабжевом контроллере удавалось задействовать АППАРАТНЫЙ SPI с ножкой npcs0 ? у меня он блокируется (повисает в цикле опроса статус-байта). По другим чипселектам работает нормально. Да, конечно. У меня на нем через дешифратор висит загрузочный DataFlash. То есть при включении его номер (#0) декодируется дешифратором как 14 (0b1110), когда в программе включаю работу с дешифратором, то обращение к нему идет уже как к #14. Ну и конечно при работе с дешифратором NPCS0 участвует в формировании остальных CS. Никаких проблем не заметил. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
romashko 0 26 ноября, 2007 Опубликовано 26 ноября, 2007 (изменено) · Жалоба Ну и конечно при работе с дешифратором NPCS0 участвует в формировании остальных CS. Никаких проблем не заметил. я тоже с Npcs0 автоматически гружусь (at45db011) :) попробуй оттудова чё-нить считать или записать уверен, что аппаратным SPI не получится, токо софтверно :( если я не прав, то приаттачь плиз фрагмент кода, работающий с npcs0 rm9200 а то npcs 1,2,3 -работают у меня, а 0 - нет... P.S. видать Atmel софтварно с npcs0 грузится... Изменено 26 ноября, 2007 пользователем romashko Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 26 ноября, 2007 Опубликовано 26 ноября, 2007 · Жалоба я тоже с Npcs0 автоматически гружусь (at45db011) :) попробуй оттудова чё-нить считать или записать уверен, что аппаратным SPI не получится, токо софтверно :( если я не прав, то приаттачь плиз фрагмент кода, работающий с npcs0 rm9200 а то npcs 1,2,3 -работают у меня, а 0 - нет... P.S. видать Atmel софтварно с npcs0 грузится... Что-то я тебя не понял. Ты грузишься, но у тебя не работает? А как тогда ты код загружаешь? Или у тебя весь код программы в внутреннюю RAM лезет? Счастливый :) Обычно у народа сначала автоматом грузится маленький кусок программы, который производит как минимум тестирование и настройку для загрузки основной части кода (например, SDRAM). Дальше уже эта программка загружает основной код, и передает на него управление. У меня точно так же. И все великолепно работает. Ну и конечно потом пишу-читаю всякую всячину из этой же памяти. Хм. Хотя нет, у меня не так просто. Я сразу дешифратор адреса SPI включаю, чтобы остальная периферия не хулиганила. Так что да, напрямую на npcs0 у меня ничего не висит, таких простых систем не было. :-) Так что может кто другой напрямую опровергнет твое в высшей мере спорное утверждение о неработоспособности npcs0. У меня оно работает, но в режиме с вкл.дешифратором, другие варианты не проверял. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
romashko 0 27 ноября, 2007 Опубликовано 27 ноября, 2007 · Жалоба Что-то я тебя не понял. Ты грузишься, но у тебя не работает? А как тогда ты код загружаешь? Работает! Обычно у народа сначала автоматом грузится маленький кусок программы, который производит как минимум тестирование и настройку для загрузки основной части кода (например, SDRAM). Дальше уже эта программка загружает основной код, и передает на него управление. У меня точно так же. и у меня также :) Попробуй в какой-нибудь последний сектор загрузочного датафлеша что-нибудь считать/записать! а я на NPCS0 вешал ММС-карточку - нифига не работает!!! Проверил на npcs1,2,3 - работает Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
romashko 0 27 ноября, 2007 Опубликовано 27 ноября, 2007 · Жалоба мне нужно чтобы мой прошивальщик шил датафлеш. По npcs0 не шьёт, перекидываю временно на npcs1 могу шить флеш по npcs0, но софтварно Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться