dilvishya
Jun 30 2010, 12:31
Есть железка в которой стоит МК AT91SAM3U и ПЛИС. Данные от МК в ПЛИС и обратно передаются по SPI. После настройки скорости передачи данных (48 Мбит/с) и подбора необходимой паузы между посылками байт (332 нс) возник вопрос, а можно ли передавать данные по SPI сплошным потоком без межбайтовых интервалов? Искал инфу по разным форумам, но ничего на эту тему не нашел.
bseyur
Jun 30 2010, 15:52
Скорее всего нельзя, т.к. слэйв должен как-то определять, где находится начало и где конец каждого из передаваемых байтов.
Но можно воспользоваться интерфейсом I2S. Это по сути то же самое, только для непрерывной передачи потоковых данных (например, аудиопотока).
aaarrr
Jun 30 2010, 15:58
Цитата(dilvishya @ Jun 30 2010, 16:31)

можно ли передавать данные по SPI сплошным потоком без межбайтовых интервалов?
Используйте DMA. Подбирать паузы между записями - это как-то не совсем хорошо.
MALLOY2
Jun 30 2010, 16:06
Цитата
где находится начало и где конец каждого из передаваемых байтов.
Это делается по чипселекту.
Цитата
Используйте DMA.
+1
По-моему, для самого SPI никаких пауз между байтами не требуется. Каждому такту соответствует свой бит данных. Другое дело, что дальше с ними происходит, в данном случае, в ПЛИС.
dilvishya
Jul 1 2010, 20:16
Вот как раз в ПЛИС никаких проблем и нет. Там из памяти FIFO по внутренним 48 МГц клокам данные считываются спустя почти микросекунду после записи. Наличие межбайтовых интервалов создает трудности. Пробовал передавать и 8 и 16 бит в одном байте, но интервалы остаются. Пробовал передавать 13 байт по 16 бит в каждом байте и минимальный интервал был в районе 200 нс. Когда пробовал делать меньше, то число передаваемых байт сокращалось до 11.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.