Обмен 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 | Возможные значения: "Да", "Нет" | Да | Двоичное |
Параметры
Блок не имеет параметров.

