Последовательный синхронный стандарт передачи данных в режиме полного дуплекса, полудуплекса или симплекса
Подробнее...
|
| файл | hal_spi.h |
| | Интерфейс драйвера модуля SPI.
|
| |
| файл | hal_spi_dma.h |
| | Дополнение драйвера SPI с пересылкой данных через DMA.
|
| |
|
|
typedef struct spi_handle | spi_master_handle_t |
| | Дескриптор Master SPI для работы по прерыванию
|
| |
|
typedef struct spi_handle | spi_slave_handle_t |
| | Дескриптор Slave SPI для работы по прерыванию
|
| |
|
typedef void(* | spi_master_callback_t) (SPI_Type *base, spi_master_handle_t *handle, uint32_t status, void *user_data) |
| | Прототип пользовательской функции обратного вызова Master SPI для вызова по окончанию обмена
|
| |
|
typedef void(* | spi_slave_callback_t) (SPI_Type *base, spi_slave_handle_t *handle, uint32_t status, void *user_data) |
| | Прототип пользовательской функции обратного вызова Slave SPI для вызова по окончанию обмена
|
| |
|
typedef struct _spi_dma_handle | spi_dma_handle_t |
| | Дескриптор SPI-DMA.
|
| |
|
typedef void(* | spi_dma_callback_t) (SPI_Type *base, spi_dma_handle_t *handle, void *user_data, dma_irq_t inttype) |
| | Функция обратного вызова
|
| |
|
| uint8_t | SPI_GetInstance (SPI_Type *base) |
| | Получение индекса модуля SPI.
|
| |
| enum spi_status | SPI_MasterTransferCreateHandleDMA (SPI_Type *base, spi_dma_callback_t callback, void *user_data, spi_dma_handle_t *handle, dma_handle_t *tx_handle, dma_handle_t *rx_handle) |
| | Функция инициализации дескриптора SPI-DMA.
|
| |
| enum spi_status | SPI_MasterTransferDMA (SPI_Type *base, spi_dma_handle_t *handle, spi_transfer_t *xfer) |
| | Функция для SPI master приема/передачи данных в полнодуплексном режиме через DMA каналы в порт SPI.
|
| |
| enum spi_status | SPI_MasterHalfDuplexTransferDMA (SPI_Type *base, spi_dma_handle_t *handle, spi_half_duplex_transfer_t *xfer) |
| | Функция приема/передачи данных в полудуплексном режиме через DMA каналы в порт SPI.
|
| |
| static enum spi_status | SPI_SlaveTransferCreateHandleDMA (SPI_Type *base, spi_dma_callback_t callback, void *user_data, spi_dma_handle_t *handle, dma_handle_t *tx_handle, dma_handle_t *rx_handle) |
| | Функция инициализации дескриптора SPI-DMA.
|
| |
| static enum spi_status | SPI_SlaveTransferDMA (SPI_Type *base, spi_dma_handle_t *handle, spi_transfer_t *xfer) |
| | Функция для SPI slave приема/передачи данных в полнодуплексном режиме через DMA каналы в порт SPI.
|
| |
| void | SPI_MasterTransferAbortDMA (spi_dma_handle_t *handle) |
| | Прекращение передачи SPI.
|
| |
| static void | SPI_SlaveTransferAbortDMA (spi_dma_handle_t *handle) |
| | Прекращение передачи SPI.
|
| |
| static void | SPI_DMADescriptorInitTX (SPI_Type *base, dma_descriptor_t *desc, uint32_t count, uint32_t data_size, uint8_t src_incr, uint32_t data_width, void *src_addr) |
| | Инициализация дескрипторов DMA для многоблочной передачи TX.
|
| |
| static void | SPI_DMADescriptorInitRX (SPI_Type *base, dma_descriptor_t *desc, uint32_t count, uint32_t data_size, uint8_t dst_incr, uint32_t data_width, void *dst_addr) |
| | Инициализация дескрипторов DMA для многоблочной передачи RX.
|
| |
|
| void | SPI_EnableTxDMA (SPI_Type *base, bool enable) |
| | Включение или отключение запроса DMA от SPI TxFIFO.
|
| |
| void | SPI_EnableRxDMA (SPI_Type *base, bool enable) |
| | Включение или отключение запроса DMA от SPI RxFIFO.
|
| |
|
| enum spi_status | SPI_MasterTransferCreateHandle (SPI_Type *base, spi_master_handle_t *handle, spi_master_callback_t callback, void *user_data) |
| | Инициализация дескриптора SPI Master.
|
| |
| enum spi_status | SPI_MasterTransferBlocking (SPI_Type *base, spi_transfer_t *xfer) |
| | Блокирующая дуплексная передача данных (с ожиданием завершения операции)
|
| |
| enum spi_status | SPI_MasterTransferNonBlocking (SPI_Type *base, spi_master_handle_t *handle, spi_transfer_t *xfer) |
| | Неблокирующий SPI обмен по прерыванию
|
| |
| enum spi_status | SPI_MasterHalfDuplexTransferBlocking (SPI_Type *base, spi_half_duplex_transfer_t *xfer) |
| | Блокирующая полудуплексная передача данных (с ожиданием завершения операции)
|
| |
| status_t | SPI_MasterHalfDuplexTransferNonBlocking (SPI_Type *base, spi_master_handle_t *handle, spi_half_duplex_transfer_t *xfer) |
| | Выполнение неблокирующего SPI обмена по прерыванию
|
| |
| status_t | SPI_MasterTransferGetByte (spi_master_handle_t *handle, size_t *count) |
| | Получение количества переданных и принятых байт
|
| |
| status_t | SPI_MasterTransferGetRemainingByte (spi_master_handle_t *handle, size_t *count) |
| | Получение количества оставшихся байт для передачи и приема
|
| |
| status_t | SPI_MasterTransferGetTotalByte (spi_master_handle_t *handle, size_t *count) |
| | Получение общего количества байт на передачу и прием
|
| |
| void | SPI_MasterTransferAbort (SPI_Type *base, spi_master_handle_t *handle) |
| | Останов передачи для мастер режима
|
| |
| void | SPI_MasterTransferHandleIRQ (SPI_Type *base, spi_master_handle_t *handle) |
| |
| static status_t | SPI_SlaveTransferCreateHandle (SPI_Type *base, spi_slave_handle_t *handle, spi_slave_callback_t callback, void *userData) |
| | Инициализация slave SPI дескриптор
|
| |
| static status_t | SPI_SlaveTransferNonBlocking (SPI_Type *base, spi_slave_handle_t *handle, spi_transfer_t *xfer) |
| | Неблокирующая дуплексная передача данных (без ожидания завершения операции)
|
| |
|
static status_t | SPI_SlaveHalfDuplexTransferNonBlocking (SPI_Type *base, spi_slave_handle_t *handle, spi_half_duplex_transfer_t *xfer) |
| |
| static status_t | SPI_SlaveTransferGetByte (spi_slave_handle_t *handle, size_t *count) |
| | Получение количества байт для обмена
|
| |
| static void | SPI_SlaveTransferAbort (SPI_Type *base, spi_slave_handle_t *handle) |
| | Останов передачи для режима Slave по прерыванию.
|
| |
| static void | SPI_SlaveTransferHandleIRQ (SPI_Type *base, spi_slave_handle_t *handle) |
| | Обработчик прерываний для SPI.
|
| |
Последовательный синхронный стандарт передачи данных в режиме полного дуплекса, полудуплекса или симплекса
- Заметки
- Драйвер поддерживает обмены по интерфейсу SPI по прерыванию и в режиме опроса, ширину поля данных от 4 до 32 битов, форматы кадров: Motorola SPI, Texas Instruments, Synchronous Serial Protocol (SSP) и NS Microwire.
◆ SPI_DUMMYDATA
| #define SPI_DUMMYDATA (0xA5U) |
SPI фиктивные данные для передачи по умолчанию.
- Заметки
- Фиктивные данные передаются в @SPI_MasterTransferBlocking, когда буфер Tx пуст, но есть запрос на прием.
◆ SPI_RETRY_TIMES
| #define SPI_RETRY_TIMES 0U |
Время повтора для флага ожидания. Ноль означает продолжать ждать, пока флаг не будет установлен/снят
◆ microwire_busy_ready_check_t
Включить/отключить проверку busy/ready флага (регистр SR) для формата кадра передачи данных National Semiconductor Microwire.
- Заметки
- В активном состоянии модуль SPI проверяет готовность Slave после передачи последнего бита данных, для снятия busy статуса в регистре SR.
| Элементы перечислений |
|---|
| SPI_MicrowireBusyReadyCheckDisable | Отключить проверку
|
| SPI_MicrowireBusyReadyCheckEnable | Включить проверку
|
◆ microwire_ctrlword_len_t
Выбор длины управляющего слова для формата кадра передачи данных National Semiconductor Micorwire.
| Элементы перечислений |
|---|
| SPI_MicrowireCtrlWordLen1Bit | Длина - 1 бит
|
| SPI_MicrowireCtrlWordLen2Bit | Длина - 2 бита
|
| SPI_MicrowireCtrlWordLen3Bit | Длина - 3 бита
|
| SPI_MicrowireCtrlWordLen4Bit | Длина - 4 бита
|
| SPI_MicrowireCtrlWordLen5Bit | Длина - 5 бит
|
| SPI_MicrowireCtrlWordLen6Bit | Длина - 6 бит
|
| SPI_MicrowireCtrlWordLen7Bit | Длина - 7 бит
|
| SPI_MicrowireCtrlWordLen8Bit | Длина - 8 бит
|
| SPI_MicrowireCtrlWordLen9Bit | Длина - 9 бит
|
| SPI_MicrowireCtrlWordLen10Bit | Длина - 10 бит
|
| SPI_MicrowireCtrlWordLen11Bit | Длина - 11 бит
|
| SPI_MicrowireCtrlWordLen12Bit | Длина - 12 бит
|
| SPI_MicrowireCtrlWordLen13Bit | Длина - 13 бит
|
| SPI_MicrowireCtrlWordLen14Bit | Длина - 14 бит
|
| SPI_MicrowireCtrlWordLen15Bit | Длина - 15 бит
|
| SPI_MicrowireCtrlWordLen16Bit | Длина - 16 бит
|
◆ microwire_single_serial_t
Выбор типа передачи (одиночная или последовательная) для формата кадра передачи данных National Semiconductor Microwire.
| Элементы перечислений |
|---|
| SPI_MicrowireSingle | Одиночная передача
|
| SPI_MicrowireSerial | Последовательная передача
|
◆ microwire_tx_rx_t
Направление передачи слова данных для формата кадра передачи данных National Semiconductor Microwire.
| Элементы перечислений |
|---|
| SPI_MicrowireTx | SPI передает слово данных
|
| SPI_MicrowireRx | SPI принимает слово данных
|
◆ spi_frame_format_t
Формат кадра передачи данных
- Заметки
- Для Motorola SPI - режим Slave-Select выставляется на всю продолжительность обмена данными.
Для Texas Instruments Synchronous Serial Protocol (SSP):
- Slave-Select выставляется на 1 такт до начала передачи;
- Установка данных происходит по переднему фронту Clk, а выборка - по заднему;
- Значение DFS должно быть кратно 2.
Для National Semiconductor Microwire:
- Сигнал Slave-Select остается активно-низким на протяжении всей передачи и переходит в высокое состояние через полтакта после окончании передачи данных;
- Данные устанавливаются по заднему фронту линии синхронизации, а выборка по переднему;
- Значение DFS должно быть кратно 4.
| Элементы перечислений |
|---|
| SPI_FfMotorola | Motorola SPI
|
| SPI_FfTexas | Texas Instruments SSP
|
| SPI_FfMicrowire | National Semiconductor Microwire
|
◆ spi_frame_width_t
Размер кадра данных в 32-х битном режиме передачи данных (CTRLR0.DFS_32)
| Элементы перечислений |
|---|
| SPI_Data4Bits | 4 бита
|
| SPI_Data5Bits | 5 бит
|
| SPI_Data6Bits | 6 бит
|
| SPI_Data7Bits | 7 бит
|
| SPI_Data8Bits | 8 бит
|
| SPI_Data9Bits | 9 бит
|
| SPI_Data10Bits | 10 бит
|
| SPI_Data11Bits | 11 бит
|
| SPI_Data12Bits | 12 бит
|
| SPI_Data13Bits | 13 бит
|
| SPI_Data14Bits | 14 бит
|
| SPI_Data15Bits | 15 бит
|
| SPI_Data16Bits | 16 бит
|
| SPI_Data17Bits | 17 бит
|
| SPI_Data18Bits | 18 бит
|
| SPI_Data19Bits | 19 бит
|
| SPI_Data20Bits | 20 бит
|
| SPI_Data21Bits | 21 бит
|
| SPI_Data22Bits | 22 бита
|
| SPI_Data23Bits | 23 бита
|
| SPI_Data24Bits | 24 бита
|
| SPI_Data25Bits | 25 бит
|
| SPI_Data26Bits | 26 бит
|
| SPI_Data27Bits | 27 бит
|
| SPI_Data28Bits | 28 бит
|
| SPI_Data29Bits | 29 бит
|
| SPI_Data30Bits | 30 бит
|
| SPI_Data31Bits | 31 бит
|
| SPI_Data32Bits | 32 бита
|
◆ spi_interrupt_enable
Источники прерываний SPI.
- Заметки
- Битовые маски подходят для работы с регистрами: IMR - регистр маскирования прерываний; ISR - регистр статуса прерываний после маскирования; RISR - регистр статуса прерываний до маскирования.
| Элементы перечислений |
|---|
| SPI_IRQ_MultiMaster | Бит 5: Мультимастер
|
| SPI_IRQ_RxFifoTrigger | Бит 4: Прерывание по триггеру уровня RxFIFO, если уровень RxFIFO больше или равен регистру RXFLTR
|
| SPI_IRQ_RxFifoOverflow | Бит 3: Переполнение RxFIFO
|
| SPI_IRQ_RxFifoUnderflow | Бит 2: Чтение из пустого RxFIFO
|
| SPI_IRQ_TxFifoOverflow | Бит 1: Переполнение TxFIFO
|
| SPI_IRQ_TxFifoTrigger | Бит 0: Прерывание по триггеру уровня TxFIFO, если уровень TxFIFO меньше или равен установленному значению регистра TXFTLR
|
| SPI_IRQ_TxOnly | Только передача
|
| SPI_IRQ_RxOnly | Только прием
|
| SPI_IRQ_All | Все прерывания включены
|
◆ spi_mode_t
Режим передачи (CTRLR0.TMOD)
- Заметки
- Дуплекс (Duplex) - передача продолжится до последнего слова в FIFO передатчика;
- Симплекс, только передача (SimplexTx) - принимаемые данные не поступают в RxFIFO; при использовании этого режима необходимо маскировать прерывания от приемника;
- Симплекс, только прием (SimplexRx) - передаваемые данные не валидны; при использовании этого режима необходимо маскировать прерывания от передатчика;
- Полудуплекс (Halfduplex) - режим чтения EEPROM. Сначала передаются все данные из TxFIFO, принимаемые в этот момент данные игнорируются; когда все данные были отправлены, модуль принимает заданное в CTRLR1.NDF+1 количество кадров. Режим недоступен для протокола SSP.
| Элементы перечислений |
|---|
| SPI_ModeDuplex | Дуплекс (передача и прием идут одновременно)
|
| SPI_ModeSimplexTx | Симплекс (только передача)
|
| SPI_ModeSimplexRx | Симплекс (только прием)
|
| SPI_ModeHalfDuplex | Полудуплекс (сначала передача потом прием). Режим - чтение EEPROM
|
◆ spi_motorola_cap_data_t
Выбор фронта для захвата данных для формата кадра передачи данных Motorola SPI.
| Элементы перечислений |
|---|
| SPI_MotorolaCapDataRising | Захват данных происходит по переднему фронту тактового сигнала
|
| SPI_MotorolaCapDataFalling | Происходит пропуск одного периода тактового сигнала после установки Slave-Select, захват данных происходит по заднему фронту тактового сигнала
|
◆ spi_motorola_clk_pol_t
Выбор полярности тактового сигнала при отсутствия передаваемых данных в режиме Master для формата кадра передачи данных Motorola SPI.
| Элементы перечислений |
|---|
| SPI_MotorolaClkPolLow | Линия синхронизации до начала цикла передачи и после его окончания имеет низкий уровень
|
| SPI_MotorolaClkPolHi | Линия синхронизации до начала цикла передачи и после его окончания имеет высокий уровень
|
◆ spi_rxfifo_watermark_t
Триггер уровня заполнения RxFIFO.
| Элементы перечислений |
|---|
| SPI_RxFifoWatermark1 | 1 элемент в RxFIFO
|
| SPI_RxFifoWatermark2 | 2 элемента в RxFIFO
|
| SPI_RxFifoWatermark3 | 3 элемента в RxFIFO
|
| SPI_RxFifoWatermark4 | 4 элемента в RxFIFO
|
| SPI_RxFifoWatermark5 | 5 элементов в RxFIFO
|
| SPI_RxFifoWatermark6 | 6 элементов в RxFIFO
|
| SPI_RxFifoWatermark7 | 7 элементов в RxFIFO
|
| SPI_RxFifoWatermark8 | 8 элементов в RxFIFO
|
◆ spi_shift_direction_t
Формат передачи данных (MSB или LSB)
| Элементы перечислений |
|---|
| SPI_ShiftDirMsbFirst | Передача данных начинается со старшего бита
|
| SPI_ShiftDirLsbFirst | Передача данных начинается с младшего бита
|
◆ spi_status
Статусы возврата из функций для драйвера SPI.
| Элементы перечислений |
|---|
| SPI_Status_Ok | Успешно
|
| SPI_Status_Fail | Провал
|
| SPI_Status_ReadOnly | Только чтение
|
| SPI_Status_InvalidArgument | Неверный аргумент
|
| SPI_Status_Timeout | Отказ по таймауту
|
| SPI_Status_BaudrateNotSupport | Частота не поддерживается
|
| SPI_Status_Busy | SPI модуль занят
|
| SPI_Status_Idle | SPI модуль простаивает
|
| SPI_Status_TxError | Ошибка в TxFIFO
|
| SPI_Status_RxError | Ошибка в RxFIFO
|
| SPI_Status_RxRingBufferOverrun | Ошибка в кольцевом буфере Rx
|
| SPI_Status_RxFifoBufferOverrun | Ошибка переполнения hw RxFIFO буферa
|
| SPI_Status_NoTransferInProgress | Нет текущего обмена
|
| SPI_Status_IncorrectCall | Некорректный вызов с текущими настройками модуля
|
| SPI_Status_UnexpectedState | Неожиданное состояние
|
◆ spi_status_flags
SPI флаги статусов
| Элементы перечислений |
|---|
| SPI_TxNotFullFlag | TxFIFO не полон
|
| SPI_TxEmptyFlag | TxFIFO пуст
|
| SPI_RxNotEmptyFlag | RxFIFO не пуст
|
| SPI_RxFullFlag | RxFIFO полон
|
◆ spi_trans_status
Состояния приемо-передачи SPI.
| Элементы перечислений |
|---|
| SPI_TransStatus_Busy | Модуль занят
|
| SPI_TransStatus_Idle | Модуль простаивает
|
| SPI_TransStatus_Error | Ошибка
|
| SPI_TransStatus_Error_1 | Multi Master Конфликт
|
| SPI_TransStatus_Error_2 | Внутренняя ошибка, TxFIFO Overflow
|
| SPI_TransStatus_Error_3 | Внутренняя ошибка, RxFIFO Overflow
|
| SPI_TransStatus_Error_4 | Внутренняя ошибка, RxFIFO Underflow
|
◆ spi_txfifo_watermark_t
Триггер уровня заполнения TxFIFO.
| Элементы перечислений |
|---|
| SPI_TxFifoWatermark0 | TxFIFO пуст
|
| SPI_TxFifoWatermark1 | 1 элемент в TxFIFO
|
| SPI_TxFifoWatermark2 | 2 элемента в TxFIFO
|
| SPI_TxFifoWatermark3 | 3 элемента в TxFIFO
|
| SPI_TxFifoWatermark4 | 4 элемента в TxFIFO
|
| SPI_TxFifoWatermark5 | 5 элементов в TxFIFO
|
| SPI_TxFifoWatermark6 | 6 элементов в TxFIFO
|
| SPI_TxFifoWatermark7 | 7 элементов в TxFIFO
|
◆ SPI_CurrentStatusInterrupts()
| static uint32_t SPI_CurrentStatusInterrupts |
( |
SPI_Type * | base | ) |
|
|
inlinestatic |
Получение статуса прерываний
- Аргументы
-
- Возвращает
- Статус прерываний
◆ SPI_Deinit()
| void SPI_Deinit |
( |
SPI_Type * | base | ) |
|
Деинициализация SPI.
- Заметки
- Вызов этого API сбрасывает модуль SPI. Модуль SPI не может работать без вызова функции SPI_MasterInit / SPI_SlaveInit для инициализации.
- Аргументы
-
◆ SPI_DisableInterrupts()
| static void SPI_DisableInterrupts |
( |
SPI_Type * | base, |
|
|
uint32_t | irqs ) |
|
inlinestatic |
◆ SPI_DMADescriptorInitRX()
| static void SPI_DMADescriptorInitRX |
( |
SPI_Type * | base, |
|
|
dma_descriptor_t * | desc, |
|
|
uint32_t | count, |
|
|
uint32_t | data_size, |
|
|
uint8_t | dst_incr, |
|
|
uint32_t | data_width, |
|
|
void * | dst_addr ) |
|
inlinestatic |
Инициализация дескрипторов DMA для многоблочной передачи RX.
- Аргументы
-
| base | Базовый адрес SPI |
| desc | Указатель на массив дескрипторов |
| count | Количество DMA дескрипторов |
| data_size | Общее число передаваемых данных |
| data_width | Ширина 1ого передаваемого слова |
| dst_addr | Адрес Приемника |
◆ SPI_DMADescriptorInitTX()
| static void SPI_DMADescriptorInitTX |
( |
SPI_Type * | base, |
|
|
dma_descriptor_t * | desc, |
|
|
uint32_t | count, |
|
|
uint32_t | data_size, |
|
|
uint8_t | src_incr, |
|
|
uint32_t | data_width, |
|
|
void * | src_addr ) |
|
inlinestatic |
Инициализация дескрипторов DMA для многоблочной передачи TX.
- Аргументы
-
| base | Базовый адрес SPI |
| desc | Указатель на массив дескрипторов |
| count | Количество DMA дескрипторов |
| data_size | Общее число передаваемых данных |
| data_width | Ширина одного передаваемого слова |
| src_addr | Адрес Источника |
◆ SPI_Enable()
| static void SPI_Enable |
( |
SPI_Type * | base, |
|
|
bool | enable ) |
|
inlinestatic |
Включение или отключение модуль SPI Master или Slave.
- Аргументы
-
| base | Базовый адрес SPI |
| enable | Включить (1) или выключить (0) |
◆ SPI_EnableInterrupts()
| static void SPI_EnableInterrupts |
( |
SPI_Type * | base, |
|
|
uint32_t | irqs ) |
|
inlinestatic |
◆ SPI_EnableRxDMA()
| void SPI_EnableRxDMA |
( |
SPI_Type * | base, |
|
|
bool | enable ) |
Включение или отключение запроса DMA от SPI RxFIFO.
- Аргументы
-
| base | Базовый адрес SPI |
| enable | Включить (1) или выключить (0) |
◆ SPI_EnableTxDMA()
| void SPI_EnableTxDMA |
( |
SPI_Type * | base, |
|
|
bool | enable ) |
Включение или отключение запроса DMA от SPI TxFIFO.
- Аргументы
-
| base | Базовый адрес SPI |
| enable | Включить (1) или выключить (0) |
◆ SPI_GetConfig()
Получение внутренней конфигурации
- Аргументы
-
- Возвращает
- Внутренняя структура конфигурации модуля SPI
◆ SPI_GetInstance()
| uint8_t SPI_GetInstance |
( |
SPI_Type * | base | ) |
|
Получение индекса модуля SPI.
- Аргументы
-
- Возвращает
- Индекс модуля
◆ SPI_GetStatusFlags()
| static uint32_t SPI_GetStatusFlags |
( |
SPI_Type * | base | ) |
|
|
inlinestatic |
Получение флага состояния SPI.
- Заметки
- Для получения статуса, соответствующего состоянию SPI, необходимо использовать полученный флаг состояния и spi_status_flags.
- Аргументы
-
- Возвращает
- Состояние SPI
◆ SPI_IsEnable()
| static bool SPI_IsEnable |
( |
SPI_Type * | base | ) |
|
|
inlinestatic |
Получение статуса модуля SPI включено/выключено
- Аргументы
-
- Возвращаемые значения
-
◆ SPI_MasterGetDefaultConfig()
Инициализация конфигурации SPI значениями по умолчанию
- Заметки
- Инициализация структуры конфигурации SPI для использования в SPI_MasterInit. Инициализированную структуру можно использовать как без изменений, так и изменив какие-либо из полей структуры перед вызовом SPI_MasterInit.
Пример:
void SPI_MasterGetDefaultConfig(spi_config_t *config)
Инициализация конфигурации SPI значениями по умолчанию
Структура конфигурации для Master SPI.
Definition hal_spi.h:309
- Аргументы
-
◆ SPI_MasterHalfDuplexTransferBlocking()
Блокирующая полудуплексная передача данных (с ожиданием завершения операции)
- Заметки
- Функция не возвращает управление, пока все данные не будут переданы. Данные передаются в полудуплексном режиме. Пользователь может выбрать, что будет выполняться в первую очередь - передача или прием.
- Аргументы
-
| base | Базовый адрес SPI |
| xfer | Структура для полудуплексной приемо-передачи |
- Возвращаемые значения
-
◆ SPI_MasterHalfDuplexTransferDMA()
Функция приема/передачи данных в полудуплексном режиме через DMA каналы в порт SPI.
- Аргументы
-
| base | Базовый адрес SPI master |
| handle | Дескриптор передачи |
| xfer | Параметры полудуплексной передачи |
- Возвращаемые значения
-
| #SPI_DMA_Status_InvalidArgument | |
| #SPI_DMA_Status_Busy | |
| #SPI_DMA_Status_SPINotExist | |
| #SPI_DMA_Status_Fail | |
| #SPI_DMA_Status_Success | |
◆ SPI_MasterHalfDuplexTransferNonBlocking()
Выполнение неблокирующего SPI обмена по прерыванию
- Заметки
- Эта функция использует режим опроса для первый части обмена и использует прерывания для выполения второй части обмена. Режим обмена полудуплексный. Когда завершится первая часть обмена, сразу произойдет выход из функции, по завершении второй части обмена произойдет вызов callback-функции.
- Аргументы
-
| base | Базовый адрес SPI. |
| handle | SPI структура дескриптора для работы по прерыванию. |
| xfer | Структура для полудуплексной приемо-передачи. |
- Возвращаемые значения
-
◆ SPI_MasterInit()
Инициализация SPI модуля как Master с заданной конфигурацией
Структура конфигурации может быть заполнена пользователем с нуля или установлена по умолчанию значения с помощью SPI_MasterGetDefaultConfig. После вызова этого API ведомое устройство готово к передаче.
Пример:
.enable = false;
.master.baud_rate_bps = 50000;
...
};
enum spi_status SPI_MasterInit(SPI_Type *base, const spi_config_t *config, uint32_t src_clock_hz)
Инициализация SPI модуля как Master с заданной конфигурацией
@ SPI_Data8Bits
Definition hal_spi.h:112
bool loopback_enable
Definition hal_spi.h:311
struct spi_config_t::@18 master
- Аргументы
-
| base | Базовый адрес SPI |
| config | Основная конфигурация SPI |
| src_clock_hz | Исходная тактовая частота |
- Возвращаемые значения
-
◆ SPI_MasterSetBaud()
| enum spi_status SPI_MasterSetBaud |
( |
SPI_Type * | base, |
|
|
uint32_t | baudrate_bps, |
|
|
uint32_t | src_clock_hz ) |
Установка скорости передачи для SPI Master.
- Аргументы
-
| base | Базовый адрес SPI |
| baudrate_bps | Скорость передачи в Hz |
| src_clock_hz | SPI частота синхронизации в Hz |
- Возвращаемые значения
-
| SPI_Status_Ok | |
| SPI_Status_BaudrateNotSupport | |
| SPI_Status_InvalidArgument | |
◆ SPI_MasterTransferAbort()
Останов передачи для мастер режима
- Заметки
- Функция останавливает передачу, происходящую по прерываниям.
- Аргументы
-
| base | Базовый адрес SPI. |
| handle | SPI структура дескриптора для работы по прерыванию. |
◆ SPI_MasterTransferAbortDMA()
Прекращение передачи SPI.
- Аргументы
-
◆ SPI_MasterTransferBlocking()
Блокирующая дуплексная передача данных (с ожиданием завершения операции)
- Заметки
- Функция не поддерживает симплексный режим обмена. Это значит, что в xfer должны быть переданы указатели на данные для передачи и буфер на прием с указанием длины, неравной нулю. Если требуется симплексный обмен, используйте @SPI_MasterHalfDuplexTransferBlocking
- Аргументы
-
| base | Базовый адрес SPI |
| xfer | Структура для приемо-передачи |
- Возвращаемые значения
-
◆ SPI_MasterTransferCreateHandle()
Инициализация дескриптора SPI Master.
- Аргументы
-
| base | Базовый адрес SPI |
| handle | SPI дескриптор |
| callback | Callback-функция |
| user_data | Данные пользователя для callback-функции |
- Возвращаемые значения
-
◆ SPI_MasterTransferCreateHandleDMA()
Функция инициализации дескриптора SPI-DMA.
- Аргументы
-
| base | Базовый адрес SPI master |
| handle | Дескриптор SPI-DMA |
| callback | Функция обратного вызова |
| user_data | Пользовательские данные |
| tx_handle | DMA дескриптор отправки |
| rx_handle | DMA дескриптор приема |
- Возвращаемые значения
-
| #SPI_DMA_Status_InvalidArgument | |
| #SPI_DMA_Status_Success | |
◆ SPI_MasterTransferDMA()
Функция для SPI master приема/передачи данных в полнодуплексном режиме через DMA каналы в порт SPI.
- Аргументы
-
| base | Базовый адрес SPI master |
| handle | Дескриптор SPI-DMA |
| xfer | Параметры передачи SPI |
- Возвращаемые значения
-
| #SPI_DMA_Status_InvalidArgument | |
| #SPI_DMA_Status_Busy | |
| #SPI_DMA_Status_SPINotExist | |
| #SPI_DMA_Status_Success | |
◆ SPI_MasterTransferGetByte()
Получение количества переданных и принятых байт
- Аргументы
-
| handle | SPI структура дескриптора для работы по прерыванию. |
| count | Количество байтов, переданных с помощью неблокирующей транзакции. |
- Возвращаемые значения
-
◆ SPI_MasterTransferGetRemainingByte()
Получение количества оставшихся байт для передачи и приема
- Аргументы
-
| handle | SPI структура дескриптора для работы по прерыванию. |
| count | Количество байтов, оставшихся для передачи и приема c помощью неблокирующей транзакции. |
- Возвращаемые значения
-
◆ SPI_MasterTransferGetTotalByte()
Получение общего количества байт на передачу и прием
- Аргументы
-
| handle | SPI структура дескриптора для работы по прерыванию. |
| count | Общее количество байт на передачу и прием |
- Возвращаемые значения
-
◆ SPI_MasterTransferHandleIRQ()
brief Обработчик прерываний для SPI.
- Аргументы
-
| base | Базовый адрес SPI. |
| handle | SPI структура дескриптора для работы по прерыванию. |
◆ SPI_MasterTransferNonBlocking()
Неблокирующий SPI обмен по прерыванию
- Заметки
- Функция используется для разнесенной по времени передачи и приема, первым этапом происходит передача данных заданной ширины, вторым - прием данных. Весь обмен происходит в асинхронном режиме, т.е в прерываниях. По завершении второй части обмена произойдет вызов callback функции.
Функция не поддерживает симплексный режим обмена. Это значит, что в xfer должны быть переданы указатели на данные для передачи и буфер на прием с указанием длины, неравной нулю. Если требуется симплексный обмен, используйте @SPI_MasterHalfDuplexTransferNonBlocking
- Аргументы
-
| base | Базовый адрес SPI. |
| handle | SPI структура дескриптора для работы по прерыванию. |
| xfer | Структура для полудуплексной приемо-передачи. |
- Возвращаемые значения
-
◆ SPI_ReadData()
| uint32_t SPI_ReadData |
( |
SPI_Type * | base | ) |
|
Получение данных из регистра данных SPI.
- Аргументы
-
- Возвращает
- Данные регистра
◆ SPI_Reset()
| static void SPI_Reset |
( |
SPI_Type * | base | ) |
|
|
inlinestatic |
Останов всех операций SPI.
- Заметки
- Любые операции передачи данных прерываются немедленно. FIFO буферы приемника и передатчика очищаются.
- Аргументы
-
◆ SPI_SetDummyData()
| void SPI_SetDummyData |
( |
SPI_Type * | base, |
|
|
uint8_t | dummy_data ) |
Запись фиктивных данных для передачи
- Заметки
- Фиктивные данные передаются в @SPI_MasterTransferBlocking, когда буфер Tx пуст, но есть запрос на прием.
- Аргументы
-
| base | Базовый адрес SPI |
| dummy_data | Фиктивные данные |
◆ SPI_SlaveGetDefaultConfig()
Заполнение структуры конфигурации SPI Slave-устройства значениями по умолчанию
- Заметки
- Функция инициализирует структуру конфигурации для использования в SPI_SlaveInit. Пользователь может изменить некоторые поля структуры перед вызовом SPI_SlaveInit.
Пример:
void SPI_SlaveGetDefaultConfig(spi_config_t *config)
Заполнение структуры конфигурации SPI Slave-устройства значениями по умолчанию
- Аргументы
-
| config | Структура конфигурации Slave |
◆ SPI_SlaveInit()
Инициализация SPI заданной конфигурацией
- Заметки
- Структура конфигурации может быть заполнена пользователем или установлена функцией SPI_SlaveGetDefaultConfig() в значения по умолчанию. После вызова этой функции устройство готово к работе в режиме Slave.
Пример:
...
};
enum spi_status SPI_SlaveInit(SPI_Type *base, const spi_config_t *config)
Инициализация SPI заданной конфигурацией
spi_shift_direction_t direction
Definition hal_spi.h:315
- Аргументы
-
| base | Базовый адрес SPI |
| config | Структура конфигурации Slave |
- Возвращаемые значения
-
◆ SPI_SlaveTransferAbort()
Останов передачи для режима Slave по прерыванию.
- Аргументы
-
| base | Базовый адрес SPI. |
| handle | Структура дескриптора для работы по прерыванию. |
◆ SPI_SlaveTransferAbortDMA()
Прекращение передачи SPI.
- Аргументы
-
◆ SPI_SlaveTransferCreateHandle()
Инициализация slave SPI дескриптор
- Заметки
- Функция инициализирует дескриптор slave SPI. Для указанного модуля SPI достаточно вызвать один раз эту функцию, чтобы получить инициализированный дескриптор.
- Аргументы
-
| base | Базовый адрес SPI. |
| handle | SPI структура дескриптора для работы по прерыванию. |
| callback | Callback-функция. |
| userData | Данные пользователя. |
- Возвращаемые значения
-
◆ SPI_SlaveTransferCreateHandleDMA()
Функция инициализации дескриптора SPI-DMA.
- Аргументы
-
| base | Базовый адрес SPI slave |
| handle | Дескриптор SPI-DMA |
| callback | Функция обратного вызова |
| user_data | Пользовательские данные |
| tx_handle | DMA дескриптор отправки |
| rx_handle | DMA дескриптор приема |
- Возвращаемые значения
-
| #SPI_DMA_Status_InvalidArgument | |
| #SPI_DMA_Status_Success | |
◆ SPI_SlaveTransferDMA()
Функция для SPI slave приема/передачи данных в полнодуплексном режиме через DMA каналы в порт SPI.
- Аргументы
-
| base | Базовый адрес SPI slave |
| handle | Дескриптор SPI-DMA |
| xfer | Параметры передачи SPI |
- Возвращаемые значения
-
| #SPI_DMA_Status_InvalidArgument | |
| #SPI_DMA_Status_Busy | |
| #SPI_DMA_Status_SPINotExist | |
| #SPI_DMA_Status_Success | |
◆ SPI_SlaveTransferGetByte()
Получение количества байт для обмена
- Аргументы
-
| handle | SPI структура дескриптора для работы по прерыванию. |
| count | Количество байтов, переданных с помощью неблокирующей транзакции. |
- Возвращаемые значения
-
◆ SPI_SlaveTransferHandleIRQ()
Обработчик прерываний для SPI.
- Аргументы
-
| base | Базовый адрес SPI. |
| handle | SPI структура дескриптора для работы по прерыванию. |
◆ SPI_SlaveTransferNonBlocking()
Неблокирующая дуплексная передача данных (без ожидания завершения операции)
- Аргументы
-
| base | Базовый адрес SPI. |
| handle | Структура, сохраняющая состояние приемо-передачи. |
| xfer | Структура для приемо-передачи. |
- Возвращаемые значения
-
◆ SPI_TakeDownInterrupts()
| static void SPI_TakeDownInterrupts |
( |
SPI_Type * | base, |
|
|
uint32_t | irqs ) |
|
inlinestatic |
Сброс флагов прерывания
- Заметки
- Флаги @SPI_IRQ_RxFifoTrigger и @SPI_IRQ_TxFifoTrigger таким образом сбросить нельзя, по этой причине использование @SPI_IRQ_All для сброса всех прерываний недопустимо.
-
Прерывания @SPI_IRQ_RxFifoTrigger и @SPI_IRQ_TxFifoTrigger можно сбросить, вычитав RxFifo и TxFifo соответственно.
- Аргументы
-
| base | Базовый адрес SPI |
| irqs | Источники прерываний |
◆ SPI_WriteData()
| void SPI_WriteData |
( |
SPI_Type * | base, |
|
|
uint32_t | data ) |
Запись данных в регистр данных SPI.
- Аргументы
-
| base | Базовый адрес SPI |
| data | Данные для записи |