Обмен SPI master DMA





| Си |
в палитре на схеме

Описание

Данный блок реализует дуплексный обмен с внешними устройствами по шине SPI в режиме MASTER, используя DMA и прерывания. Длина слова SPI - 1 байт.

В блоках "Настройка контроллера DMA" и "Настройка контроллера SPI" необходимо настроить параметры (см. пример работы). Количество передаваемых байт через DMA = data_size ( + 2, если используется CRC16). Вывод NSS должен быть настроен в режиме SOFTWARE. Данные передаются на вход блока, принимаются с выхода блока.

При необходимости возможно включить CRC16 данных на прием и передачу. Тогда два последних байта посылки - CRC16. Если используется CRC16, то выход "crc_err" сигнализирует об ошибке передачи уровнем единицы. CRC16 считается табличным методом, используя функцию, определенную в файле "uart.h".

Для работы данного блока может использоваться прерывание FTF (full transfer finish) по каналу DMA SPI_RX для снятия сигнала выбора устройства NSS. Если снятие сигнала не требуется, прерывание возможно отключить, в этом случае сигнал NSS включиться один раз при включении контроллера и не будет снят до его выключения (может привести к некорректной работе некоторых устройств на шине SPI). В настройках блока возможно изменить его приоритет. Также возможно не использовать сигнал NSS.

При кодогенерации используется стандартная библиотека GD32F10X v2.2.0, предоставляемая производителем микроконтроллеров GigaDevice. Подробные настройки можно найти в документации на микроконтроллер.

Входные порты

Имя Описание Тип линии связи
tx_data Порт входа данных SPI Математическая

Выходные порты

Имя Описание Тип линии связи
rx_data Порт выхода данных SPI Математическая
crc_err Ошибка передачи (ошибка CRC) Математическая

Свойства

Название Имя Описание По умолчанию Тип данных
Выбор приемопередатчика SPI SPI Возможные значения: "SPI0", "SPI1", "SPI2" SPI0 Перечисление
Количество слов данных data_size Возможные значения: целое число 1 Целое
Использовать пин NSS в режиме MASTER NSS Активация использования пина NSS в режиме MASTER. Возможные значения: "Да", "Нет" Да Двоичное
Использовать проверку CRC16 CRC_ON Возможные значения: "Да", "Нет" Да Двоичное
IRQ Настройка IRQ
Включить прерывание DMA FTF IRQ_ON Активация прерывания DMA FTF. Возможные значения: "Да", "Нет" Да Двоичное
Приоритет прерывания IRQ_PRI_PRE Возможные значения: целое число от "0" до "4", высший приоритет "0", низший - "4" 3 Целое
Субприоритет прерывания IRQ_PRI_SUB Возможные значения: целое число от "0" до "4", высший приоритет "0", низший - "4" 3 Целое

Параметры

Блок не имеет параметров.