28564

Очистка буфера FIFO передатчика SPI в режиме Slave


При работе с блоком SPI в режиме ведомого устройства иногда требуется, чтобы передача данных мастеру велась сразу с заданных слов, не допуская при этом отправки данных, загруженных в FIFO ранее. Для этого необходимо очистить буфер FIFO передатчика. Как это можно сделать?

Очистить буфер FIFO передатчика можно, отправив все данные наружу. После будет выставлен флаг опустошения FIFO - SR.TFE.
В режиме мастер SPI может самостоятельно опустошить FIFO фактом выдачи всех данных. В режиме Slave такой возможности нет, так как передача инициируется снаружи - внешним мастером. Поэтому в обоих режимах для очистки буфера FIFO передатчика необходимо:

1. Отключить SPI от линии (перенастроить порты GPIO, чтобы данные не выводились в линию).

2. Установить SPI в режим мастера и разрешить работу приёмопередатчика (регистр CR1, MS=0, SSE=1).

3. Дождавшись опустошения буфера (бит TFE = 1 в регистре SR, а также бит BSY = 0 - модуль закончил передачу), вернуть настройки в исходное состояние.

Теги

Был ли ответ полезным?