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

 
 
> ATmega slave передаёт по SPI, Нужно как принимать данные от ведущего так и передавать данные в ведущ
maksimp
сообщение May 8 2012, 20:44
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 313
Регистрация: 2-07-11
Пользователь №: 66 023



Рассматривается возможность ипользования контроллеров ATmega как ведомых (slave) по SPI. Нужно как принимать данные от ведущего так и передавать данные в ведущий. Про передачу данных по SPI там написано такое:
Цитата
The system is single buffered in the transmit direction and double buffered in the receive direc-
tion. This means that bytes to be transmitted cannot be written to the SPI Data Register before
the entire shift cycle is completed.

То есть следующий байт нужно писать в регистр данных только после того как предыдущее значение полностью передано. На ведущем это может привести к лишним паузам между байтами. Но в ведомом тактовые импульсы продолжают поступать от ведущего, и чтобы следующий байт от ведомого был передан правильный, его нужно успеть положить в регистр за время до следующего синхроиспульса SCK, то есть за время передачи одного бита?

Приём данных ведомым заметно легче, так как там есть дополнительный буфер.
Цитата
When receiving data, however, a received character must be
read from the SPI Data Register before the next character has been completely shifted in. Oth-
erwise, the first byte is lost.

То есть, для такого обмена наверное ATmega лучше не использовать?
Как сделано это в ATxmega не понятно из даташита. А вот в AT91SAM7X например есть дополнительный буфер передачи, и есть бит TDRE который показывает что он свободен.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
V_G
сообщение May 8 2012, 23:02
Сообщение #2


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

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



В xmege, по-моему, двойной буфер на передачу при работе USART в режиме SPI. Но как слэйв не использую.
Go to the top of the page
 
+Quote Post
zombi
сообщение May 9 2012, 08:01
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата
... то есть за время передачи одного бита?
Нет, за время передачи одного байта.

Работаю в xmege мастером SPI на скорости (CLKper/2).

Цитата( @ May 9 2012, 02:02) *
В xmege, по-моему, двойной буфер на передачу при работе USART в режиме SPI. Но как слэйв не использую.

Пишут что есть:
Цитата
The Transmitter USART in Master SPI mode includes buffering. The XMEGA SPI has no transmit buffer.



Цитата(maksimp @ May 8 2012, 23:44) *
На ведущем это может привести к лишним паузам между байтами.
100%
Чтоб без пауз, думаю, нужна xmega, USART в режиме мастер SPI и DMA.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 13th August 2025 - 23:57
Рейтинг@Mail.ru


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