|
Автомат передачи данных по SPI slave, Фифо на много слов, оптимизация |
|
|
|
Feb 25 2015, 16:07
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
Всем привет!
задача такая, надо по SPI slave передать данные размером 32+64+6*32 бита и контрольная сумма (итого 37-38 байт)
SPI - slave, на частоте сравнимой с основным клоком, потому асинхронный, синхронизация по CS
Данные рождаются спонтанно, по каким-либо событиям, а забираются мастером как у того будет настроение, потому решил воткнуть фифо.
Посылка важна целиком, то есть если мастер бросил принимать в середине посылку, она должна быть отброшена разом, и следующая опять должна быть целиком.
В результате у меня получается такая схема:
SPI - передатчик, которому надо на вход выставить 8 битное данные, а он их выдавит асинхронно на выход. Он сигналом отмечает как забрал данные, и внешняя схема может выставлять следующие данные.
FIFO сделал параллельное, которое засасывает сразу всю посылку. Сделал его не одним фифо на (32+64+6*32) бит, а поставил 1+2+6 32 битных отдельных FIFO.
И вот теперь самое интересное. Надо как -то данные с выхода FIFO перепихать на вход SPI передатчика. И что-то у меня ничего умнее чем огромный мультиплексор на 9 8-битных слов в одно не получается. А еще по ходу перещелкивания он будет подсчитывать контрольную сумму, и добавить ее в конце, то есть мультиплексор 10-11 в 1. Ресурсы не жмут, но как-то не красиво выходит, может кто предложит какое-то более изящное решение?
Может 90 битный SPI будет более правильным решением?
|
|
|
|
|
 |
Ответов
|
Feb 26 2015, 05:46
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
1. не обязательно, можно, но с учетом что клок SPI есть вообще только на время передачи, а также есть разрешающий сигнал который показывает что данные на входе SPI можно менять 2. это не важно с точки зрения мастера, он вычитывает всю посылку. Паузы между словами быть не должно, мастер не будет ждать. 32 битный режим плох только тем что неудобно на лету считать контрольную сумму, изначально данные рождаются без нее, а задерживать их на подсчет не хочется, канал надежный, потому сумма примитивная 16 бит от суммы байт по всему сообщению. 3. длинна посылки фиксирована 4. естественно да, иначе зачем городить фифо. Более того нужно если вычитывание посылки по SPI прервалось со стороны мастера, отбросить ее целиком, и в следующих заход выдать новую целиковую посылку. Досылать хвост старой недопустимо.
|
|
|
|
Сообщений в этой теме
Golikov A. Автомат передачи данных по SPI slave Feb 25 2015, 16:07 blackfin Цитата(Golikov A. @ Feb 25 2015, 19:07) .... Feb 25 2015, 16:39 SM Если там 37-38 байт, то сделать FIFO на байт, так,... Feb 25 2015, 17:03 Golikov A. ЦитатаА зачем такой изврат? Нужно сделать один отд... Feb 25 2015, 17:17 des00 Цитата(Golikov A. @ Feb 26 2015, 01:17) к... Feb 25 2015, 17:27 blackfin Цитата(Golikov A. @ Feb 25 2015, 20:17) Э... Feb 25 2015, 17:30  des00 Цитата(blackfin @ Feb 26 2015, 00:30) Вам... Feb 25 2015, 17:35 SM Цитата(Golikov A. @ Feb 25 2015, 20:17) к... Feb 25 2015, 17:48 Golikov A. ЦитатаВам не знакомо такое явление, как регистр сд... Feb 25 2015, 18:58 blackfin Цитата(Golikov A. @ Feb 25 2015, 21:58) т... Feb 25 2015, 19:11 SM Цитата(Golikov A. @ Feb 25 2015, 21:58) В... Feb 25 2015, 19:14 des00 Цитата(Golikov A. @ Feb 26 2015, 02:58) а... Feb 26 2015, 06:17 Golikov A. ЦитатаНе все, конечно. Я бы сделал на трех счетчик... Feb 25 2015, 20:39 blackfin Цитата(Golikov A. @ Feb 25 2015, 23:39) м... Feb 26 2015, 04:40 Golikov A. мне же fifo надо, можно следить куда положено, отк... Feb 26 2015, 09:05 des00 Цитата(Golikov A. @ Feb 26 2015, 16:05) м... Feb 26 2015, 15:39 Timmy Цитата(Golikov A. @ Feb 25 2015, 19:07) Д... Feb 26 2015, 09:42 Golikov A. отбрасывается предыдущий пакет, заменяется на новы... Feb 26 2015, 10:22 Golikov A. Не все как раз наоборот.
Быстро сляпать как раз н... Feb 26 2015, 16:57 blackfin Цитата(Golikov A. @ Feb 26 2015, 19:57) О... Feb 26 2015, 17:14 Golikov A. да мне не исключить надо, мне бы как раз добавить.... Feb 26 2015, 17:23 Timmy Цитата(Golikov A. @ Feb 26 2015, 20:23) д... Feb 26 2015, 20:29 Golikov A. он не то что может быть, а он 100% не активен. пос... Feb 26 2015, 20:36 SM Вообще, междоменные переходы объявляют как set_fal... Feb 27 2015, 09:22 Golikov A. не работает оно 2 клоковое. Клок то у SPI не посто... Feb 27 2015, 13:49 SM Цитата(Golikov A. @ Feb 27 2015, 16:49) в... Feb 27 2015, 15:41 SM Вдогонку - такое FIFO придется делать на распредел... Feb 27 2015, 17:04 Golikov A. спасибо погляжу. Feb 27 2015, 21:39
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|