Обмен SPI slave DMA

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

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

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

При необходимости возможно включить CRC16 данных на прием и передачу. Тогда два последних байта посылки - CRC16. Если используется CRC16, то выход «crc_err» сигнализирует об ошибке передачи уровнем единицы. CRC16 считается табличным методом, используя функцию, определенную в файле «uart.h». Если используется CRC16, то SLAVE будет пытаться восстановить линию передачи при временном сбое линии со стороны контроллера MASTER, реинициализируя SPI и DMA. В противном случае (без контроля CRC), при восстановлении линии, передача и данные искажаются необратимо.

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

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

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

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

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

Свойства

Название Имя Описание По умолчанию Тип данных
Выбор приемопередатчика SPI SPI Возможные значения: «SPI0», «SPI1», «SPI2» SPI0 Перечисление
Количество слов данных data_size Возможные значения: целое число 4 Целое
Использовать проверку CRC16 CRC_ON Возможные значения: «Да», «Нет» Да Двоичное

Параметры

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