Translations of this page:

SPI to UART

Запись в TX FIFO

Байт 0:

Dir 7 6 5 4 3 2 1 0
DI 1 x x x x x x x
DO tx_free rx_ready

Далее передаются байты данных, в количестве не более чем tx_free.

Байт N:

Dir 7 6 5 4 3 2 1 0
DI data
DO tx_free x x x x

Чтение из RX FIFO

Байт 0:

Dir 7 6 5 4 3 2 1 0
DI 0 1 x x x x x x
DO tx_free rx_ready

Далее принимаются байты данных из RX FIFO в количестве не более чем rx_ready. Когда буфер опустевает, читаются нули.

Байт N:

Dir 7 6 5 4 3 2 1 0
DI x x x x x x x x
DO data

Состояние UART

Байт 0:

Dir 7 6 5 4 3 2 1 0
DI 0 0 1 x x x x x
DO tx_free rx_ready

Байт 1:

Dir 7 6 5 4 3 2 1 0
DI x x x x x x x x
DO OVF PE STPE x x x x x
  • OVF - переполнение буфера приёма
  • PE - ошибка чётности
  • STPE - ошибка стопбита

FIXME - какие ещё у нас ошибки UART бывают?

Порядок работы

Выбираем нужный приёмо-передатчик (CS# - down) для начала цикла SPI обмена.

Отправив любую команду в ответ мы получим свободный размер TX FIFO буфера (tx_free) и RX FIFO буфера (rx_ready).

Если это была команда на чтение, то если rx_ready не равен нулю прочитываем имеющиеся байты.

Если это была команда на запись, передаём байты в количестве не большем чем tx_free.

:!: Передача через UART начинается сразу, как только байты появляются в TX FIFO

Освободждаем приёмо-передатчик (CS# - up).

 
protocol/spi2uart.txt · Последние изменения: 2009/04/15 16:04 — adminko
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution-Share Alike 3.0 Unported
Recent changes RSS feed Valid XHTML 1.0 Valid CSS Driven by DokuWiki