ELIOT1 HAL
Загрузка...
Поиск...
Не найдено
hal_spi.h
См. документацию.
1
23#ifndef HAL_SPI_H
24#define HAL_SPI_H
25
26#include "hal_common.h"
27
31#define HAL_SPI_DRIVER_VERSION (MAKE_VERSION(1, 1, 0))
32
38#ifndef SPI_DUMMYDATA
39#define SPI_DUMMYDATA (0xA5U)
40#endif
41
42#ifndef SPI_RETRY_TIMES
43#define SPI_RETRY_TIMES 0U
44#endif
45
66
74
88
102
138
164
192
204
213
222
232
250
259
267
276 SPI_TxNotFullFlag = SPI_SR_TFNF_Msk,
277 SPI_TxEmptyFlag = SPI_SR_TFE_Msk,
278 SPI_RxNotEmptyFlag = SPI_SR_RFNE_Msk,
279 SPI_RxFullFlag = SPI_SR_RFF_Msk,
280};
281
305
320
333
343 SPI_IRQ_MultiMaster = SPI_IMR_MSTIM_Msk,
344 SPI_IRQ_RxFifoTrigger = SPI_IMR_RXFIM_Msk,
345 SPI_IRQ_RxFifoOverflow = SPI_IMR_RXOIM_Msk,
346 SPI_IRQ_RxFifoUnderflow = SPI_IMR_RXUIM_Msk,
347 SPI_IRQ_TxFifoOverflow = SPI_IMR_TXOIM_Msk,
348 SPI_IRQ_TxFifoTrigger = SPI_IMR_TXEIM_Msk,
351 = SPI_IRQ_MultiMaster /* Мультимастер */
352 | SPI_IRQ_TxFifoOverflow /* Переполнение TxFIFO */
353 | SPI_IRQ_TxFifoTrigger, /* Прерывание по триггеру уровня TxFIFO */
354
356 = SPI_IRQ_MultiMaster /* Мультимастер */
357 | SPI_IRQ_RxFifoTrigger /* Прерывание по триггеру уровня RxFIFO */
358 | SPI_IRQ_RxFifoOverflow /* Переполнение RxFIFO */
359 | SPI_IRQ_RxFifoUnderflow, /* Чтение из пустого RxFIFO */
360
368};
369
377typedef struct {
378 uint8_t *tx_data;
379 uint8_t *rx_data;
380 size_t data_size;
382
386typedef struct {
387 uint8_t *tx_data;
388 uint8_t *rx_data;
392
401
405struct spi_handle;
406
411
416
420typedef void (*spi_master_callback_t)(SPI_Type *base,
421 spi_master_handle_t *handle, uint32_t status, void *user_data);
422
426typedef void (*spi_slave_callback_t)(SPI_Type *base, spi_slave_handle_t *handle,
427 uint32_t status, void *user_data);
428
451
452#if defined(__cplusplus)
453extern "C" {
454#endif
455
463uint8_t SPI_GetInstance(SPI_Type *base);
464
486
513enum spi_status SPI_MasterInit(SPI_Type *base, const spi_config_t *config,
514 uint32_t src_clock_hz);
515
533
556enum spi_status SPI_SlaveInit(SPI_Type *base, const spi_config_t *config);
557
566void SPI_Deinit(SPI_Type *base);
567
574static inline void SPI_Enable(SPI_Type *base, bool enable)
575{
576 /* Включить/выключить SPI (SSIENR.SSI_EN). */
577 SET_VAL_MSK(base->SSIENR, SPI_SSIENR_SSI_EN_Msk, SPI_SSIENR_SSI_EN_Pos,
578 enable);
579}
580
589static inline bool SPI_IsEnable(SPI_Type *base)
590{
591 /* SPI включено/выключено (SSIENR.SSI_EN). */
592 return (bool)GET_VAL_MSK(base->SSIENR, SPI_SSIENR_SSI_EN_Msk,
593 SPI_SSIENR_SSI_EN_Pos);
594}
595
604static inline void SPI_Reset(SPI_Type *base)
605{
606 /* Выключить SPI. */
607 SET_VAL_MSK(base->SSIENR, SPI_SSIENR_SSI_EN_Msk, SPI_SSIENR_SSI_EN_Pos, 0U);
608
609 /* Включить SPI. */
610 SET_VAL_MSK(base->SSIENR, SPI_SSIENR_SSI_EN_Msk, SPI_SSIENR_SSI_EN_Pos, 1U);
611}
612
632static inline uint32_t SPI_GetStatusFlags(SPI_Type *base)
633{
634 assert(NULL != base);
635 return base->SR;
636}
637
663static inline void SPI_EnableInterrupts(SPI_Type *base, uint32_t irqs)
664{
665 assert(NULL != base);
666
667 /*
668 * IMR - регистр маскирования прерываний:
669 * 0 - прерывание замаскировано, 1 - активно.
670 */
671 base->IMR |= irqs;
672}
673
690static inline void SPI_DisableInterrupts(SPI_Type *base, uint32_t irqs)
691{
692 assert(NULL != base);
693
694 /*
695 * IMR - регистр маскирования прерываний:
696 * 0 - прерывание замаскировано, 1 - активно.
697 */
698 base->IMR &= ~irqs;
699}
700
708static inline uint32_t SPI_CurrentStatusInterrupts(SPI_Type *base)
709{
710
711 assert(NULL != base);
712
713 /* ISR - регистр статуса прерываний после маскирования. */
714 return (base->ISR & SPI_IRQ_All);
715}
716
730static inline void SPI_TakeDownInterrupts(SPI_Type *base, uint32_t irqs)
731{
732 assert(NULL != base);
733 assert(0 == (irqs & SPI_IRQ_RxFifoTrigger));
734 assert(0 == (irqs & SPI_IRQ_TxFifoTrigger));
735
736 volatile uint32_t temp = 0;
737 UNUSED(temp);
738
739 /* xxxICR - Регистры снятия прерываний. */
740
741 /* Требуется сброс всех прерываний (допустимых для сброса таким образом). */
745 | SPI_IRQ_TxFifoOverflow) == irqs) {
746 temp = GET_VAL_MSK(base->ICR, SPI_ICR_ICR_Msk, SPI_ICR_ICR_Pos);
747 }
748 /* Требуется сброс некоторых прерываний. */
749 else {
750 if (0 != (irqs & SPI_IRQ_MultiMaster)) {
751 /* MSTICR - Регистр сброса прерывания: “Возможный конфликт master устройств”. */
752 temp = GET_VAL_MSK(base->MSTICR, SPI_MSTICR_MSTICR_Msk, SPI_MSTICR_MSTICR_Pos);
753 }
754
755 if (0 != (irqs & SPI_IRQ_RxFifoOverflow)) {
756 /* RXOICR - Регистр сброса прерывания: “Переполнен FIFO приемника”. */
757 temp = GET_VAL_MSK(base->RXOICR, SPI_RXOICR_RXOICR_Msk, SPI_RXOICR_RXOICR_Pos);
758 }
759
760 if (0 != (irqs & SPI_IRQ_RxFifoUnderflow)) {
761 /* RXUICR - Регистр сброса прерывания: “FIFO приемника пуст”. */
762 temp = GET_VAL_MSK(base->RXUICR, SPI_RXUICR_RXUICR_Msk, SPI_RXUICR_RXUICR_Pos);
763 }
764
765 if (0 != (irqs & SPI_IRQ_TxFifoOverflow)) {
766 /* TXOICR - Регистр сброса прерывания: “Переполнен FIFO передатчика”.*/
767 temp = GET_VAL_MSK(base->TXOICR, SPI_TXOICR_TXOICR_Msk, SPI_TXOICR_TXOICR_Pos);
768 }
769 }
770
771 return;
772}
773
789void SPI_EnableTxDMA(SPI_Type *base, bool enable);
790
797void SPI_EnableRxDMA(SPI_Type *base, bool enable);
798
816
828enum spi_status SPI_MasterSetBaud(SPI_Type *base, uint32_t baudrate_bps,
829 uint32_t src_clock_hz);
830
837void SPI_WriteData(SPI_Type *base, uint32_t data);
838
846uint32_t SPI_ReadData(SPI_Type *base);
847
857void SPI_SetDummyData(SPI_Type *base, uint8_t dummy_data);
858
881 void *user_data);
882
901 spi_transfer_t *xfer);
902
927 spi_master_handle_t *handle, spi_transfer_t *xfer);
928
946
963 spi_master_handle_t *handle,
965
976
987 size_t *count);
988
999 size_t *count);
1000
1009void SPI_MasterTransferAbort(SPI_Type *base, spi_master_handle_t *handle);
1010
1018
1033static inline status_t SPI_SlaveTransferCreateHandle(SPI_Type *base,
1034 spi_slave_handle_t *handle,
1035 spi_slave_callback_t callback,
1036 void *userData)
1037{
1038 return SPI_MasterTransferCreateHandle(base, handle, callback, userData);
1039}
1040
1053static inline status_t SPI_SlaveTransferNonBlocking(SPI_Type *base,
1054 spi_slave_handle_t *handle, spi_transfer_t *xfer)
1055{
1056 return SPI_MasterTransferNonBlocking(base, handle, xfer);
1057}
1058
1059static inline status_t SPI_SlaveHalfDuplexTransferNonBlocking(SPI_Type *base,
1061{
1062 return SPI_MasterHalfDuplexTransferNonBlocking(base, handle, xfer);
1063}
1074 size_t *count)
1075{
1076 return SPI_MasterTransferGetByte((spi_master_handle_t *) handle, count);
1077}
1078
1085static inline void SPI_SlaveTransferAbort(SPI_Type *base, spi_slave_handle_t *handle)
1086{
1088}
1089
1096static inline void SPI_SlaveTransferHandleIRQ(SPI_Type *base,
1097 spi_slave_handle_t *handle)
1098{
1099 SPI_MasterTransferHandleIRQ(base, handle);
1100}
1101
1106#if defined(__cplusplus)
1107}
1108#endif
1109
1110#endif /* HAL_SPI_H */
1111
#define UNUSED(x)
Definition hal_common.h:45
int32_t status_t
Тип, используемый для всех возвращаемых значений статуса и ошибок
Definition hal_common.h:61
spi_interrupt_enable
Источники прерываний SPI.
Definition hal_spi.h:342
spi_trans_status
Состояния приемо-передачи SPI.
Definition hal_spi.h:324
spi_motorola_cap_data_t
Выбор фронта для захвата данных для формата кадра передачи данных Motorola SPI.
Definition hal_spi.h:255
void SPI_SetDummyData(SPI_Type *base, uint8_t dummy_data)
Запись фиктивных данных для передачи
microwire_ctrlword_len_t
Выбор длины управляющего слова для формата кадра передачи данных National Semiconductor Micorwire.
Definition hal_spi.h:174
static void SPI_Reset(SPI_Type *base)
Останов всех операций SPI.
Definition hal_spi.h:604
enum spi_status SPI_MasterTransferBlocking(SPI_Type *base, spi_transfer_t *xfer)
Блокирующая дуплексная передача данных (с ожиданием завершения операции)
status_t SPI_MasterTransferGetTotalByte(spi_master_handle_t *handle, size_t *count)
Получение общего количества байт на передачу и прием
spi_motorola_clk_pol_t
Выбор полярности тактового сигнала при отсутствия передаваемых данных в режиме Master для формата кад...
Definition hal_spi.h:246
void SPI_MasterGetDefaultConfig(spi_config_t *config)
Инициализация конфигурации SPI значениями по умолчанию
enum spi_status SPI_MasterSetBaud(SPI_Type *base, uint32_t baudrate_bps, uint32_t src_clock_hz)
Установка скорости передачи для SPI Master.
enum spi_status SPI_MasterTransferCreateHandle(SPI_Type *base, spi_master_handle_t *handle, spi_master_callback_t callback, void *user_data)
Инициализация дескриптора SPI Master.
status_t SPI_MasterTransferGetRemainingByte(spi_master_handle_t *handle, size_t *count)
Получение количества оставшихся байт для передачи и приема
spi_frame_format_t
Формат кадра передачи данных
Definition hal_spi.h:159
enum spi_status SPI_SlaveInit(SPI_Type *base, const spi_config_t *config)
Инициализация SPI заданной конфигурацией
static void SPI_DisableInterrupts(SPI_Type *base, uint32_t irqs)
Отключение прерываний SPI.
Definition hal_spi.h:690
void SPI_WriteData(SPI_Type *base, uint32_t data)
Запись данных в регистр данных SPI.
void SPI_MasterTransferHandleIRQ(SPI_Type *base, spi_master_handle_t *handle)
status_t SPI_MasterTransferGetByte(spi_master_handle_t *handle, size_t *count)
Получение количества переданных и принятых байт
static bool SPI_IsEnable(SPI_Type *base)
Получение статуса модуля SPI включено/выключено
Definition hal_spi.h:589
void SPI_EnableRxDMA(SPI_Type *base, bool enable)
Включение или отключение запроса DMA от SPI RxFIFO.
static void SPI_Enable(SPI_Type *base, bool enable)
Включение или отключение модуль SPI Master или Slave.
Definition hal_spi.h:574
void SPI_EnableTxDMA(SPI_Type *base, bool enable)
Включение или отключение запроса DMA от SPI TxFIFO.
static status_t SPI_SlaveTransferGetByte(spi_slave_handle_t *handle, size_t *count)
Получение количества байт для обмена
Definition hal_spi.h:1073
spi_rxfifo_watermark_t
Триггер уровня заполнения RxFIFO.
Definition hal_spi.h:92
spi_status
Статусы возврата из функций для драйвера SPI.
Definition hal_spi.h:49
spi_config_internal_t * SPI_GetConfig(SPI_Type *base)
Получение внутренней конфигурации
spi_txfifo_watermark_t
Триггер уровня заполнения TxFIFO.
Definition hal_spi.h:78
static uint32_t SPI_GetStatusFlags(SPI_Type *base)
Получение флага состояния SPI.
Definition hal_spi.h:632
void SPI_SlaveGetDefaultConfig(spi_config_t *config)
Заполнение структуры конфигурации SPI Slave-устройства значениями по умолчанию
spi_shift_direction_t
Формат передачи данных (MSB или LSB)
Definition hal_spi.h:70
void SPI_Deinit(SPI_Type *base)
Деинициализация SPI.
uint32_t SPI_ReadData(SPI_Type *base)
Получение данных из регистра данных SPI.
void(* spi_master_callback_t)(SPI_Type *base, spi_master_handle_t *handle, uint32_t status, void *user_data)
Прототип пользовательской функции обратного вызова Master SPI для вызова по окончанию обмена
Definition hal_spi.h:420
microwire_single_serial_t
Выбор типа передачи (одиночная или последовательная) для формата кадра передачи данных National Semic...
Definition hal_spi.h:218
static status_t SPI_SlaveTransferCreateHandle(SPI_Type *base, spi_slave_handle_t *handle, spi_slave_callback_t callback, void *userData)
Инициализация slave SPI дескриптор
Definition hal_spi.h:1033
static void SPI_EnableInterrupts(SPI_Type *base, uint32_t irqs)
Включение прерываний SPI.
Definition hal_spi.h:663
static void SPI_TakeDownInterrupts(SPI_Type *base, uint32_t irqs)
Сброс флагов прерывания
Definition hal_spi.h:730
enum spi_status SPI_MasterInit(SPI_Type *base, const spi_config_t *config, uint32_t src_clock_hz)
Инициализация SPI модуля как Master с заданной конфигурацией
static void SPI_SlaveTransferHandleIRQ(SPI_Type *base, spi_slave_handle_t *handle)
Обработчик прерываний для SPI.
Definition hal_spi.h:1096
spi_mode_t
Режим передачи (CTRLR0.TMOD)
Definition hal_spi.h:299
uint8_t SPI_GetInstance(SPI_Type *base)
Получение индекса модуля SPI.
enum spi_status SPI_MasterTransferNonBlocking(SPI_Type *base, spi_master_handle_t *handle, spi_transfer_t *xfer)
Неблокирующий SPI обмен по прерыванию
static uint32_t SPI_CurrentStatusInterrupts(SPI_Type *base)
Получение статуса прерываний
Definition hal_spi.h:708
static status_t SPI_SlaveTransferNonBlocking(SPI_Type *base, spi_slave_handle_t *handle, spi_transfer_t *xfer)
Неблокирующая дуплексная передача данных (без ожидания завершения операции)
Definition hal_spi.h:1053
static void SPI_SlaveTransferAbort(SPI_Type *base, spi_slave_handle_t *handle)
Останов передачи для режима Slave по прерыванию.
Definition hal_spi.h:1085
void SPI_MasterTransferAbort(SPI_Type *base, spi_master_handle_t *handle)
Останов передачи для мастер режима
spi_status_flags
SPI флаги статусов
Definition hal_spi.h:275
enum spi_status SPI_MasterHalfDuplexTransferBlocking(SPI_Type *base, spi_half_duplex_transfer_t *xfer)
Блокирующая полудуплексная передача данных (с ожиданием завершения операции)
microwire_busy_ready_check_t
Включить/отключить проверку busy/ready флага (регистр SR) для формата кадра передачи данных National ...
Definition hal_spi.h:200
void(* spi_slave_callback_t)(SPI_Type *base, spi_slave_handle_t *handle, uint32_t status, void *user_data)
Прототип пользовательской функции обратного вызова Slave SPI для вызова по окончанию обмена
Definition hal_spi.h:426
spi_frame_width_t
Размер кадра данных в 32-х битном режиме передачи данных (CTRLR0.DFS_32)
Definition hal_spi.h:107
status_t SPI_MasterHalfDuplexTransferNonBlocking(SPI_Type *base, spi_master_handle_t *handle, spi_half_duplex_transfer_t *xfer)
Выполнение неблокирующего SPI обмена по прерыванию
microwire_tx_rx_t
Направление передачи слова данных для формата кадра передачи данных National Semiconductor Microwire.
Definition hal_spi.h:209
@ SPI_IRQ_MultiMaster
Definition hal_spi.h:343
@ SPI_IRQ_TxFifoOverflow
Definition hal_spi.h:347
@ SPI_IRQ_RxFifoOverflow
Definition hal_spi.h:345
@ SPI_IRQ_RxFifoUnderflow
Definition hal_spi.h:346
@ SPI_IRQ_RxOnly
Definition hal_spi.h:355
@ SPI_IRQ_TxFifoTrigger
Definition hal_spi.h:348
@ SPI_IRQ_TxOnly
Definition hal_spi.h:350
@ SPI_IRQ_All
Definition hal_spi.h:361
@ SPI_IRQ_RxFifoTrigger
Definition hal_spi.h:344
@ SPI_TransStatus_Error_2
Definition hal_spi.h:329
@ SPI_TransStatus_Idle
Definition hal_spi.h:326
@ SPI_TransStatus_Error_3
Definition hal_spi.h:330
@ SPI_TransStatus_Busy
Definition hal_spi.h:325
@ SPI_TransStatus_Error_4
Definition hal_spi.h:331
@ SPI_TransStatus_Error_1
Definition hal_spi.h:328
@ SPI_TransStatus_Error
Definition hal_spi.h:327
@ SPI_MotorolaCapDataFalling
Definition hal_spi.h:257
@ SPI_MotorolaCapDataRising
Definition hal_spi.h:256
@ SPI_MicrowireCtrlWordLen7Bit
Definition hal_spi.h:181
@ SPI_MicrowireCtrlWordLen8Bit
Definition hal_spi.h:182
@ SPI_MicrowireCtrlWordLen11Bit
Definition hal_spi.h:185
@ SPI_MicrowireCtrlWordLen9Bit
Definition hal_spi.h:183
@ SPI_MicrowireCtrlWordLen2Bit
Definition hal_spi.h:176
@ SPI_MicrowireCtrlWordLen3Bit
Definition hal_spi.h:177
@ SPI_MicrowireCtrlWordLen5Bit
Definition hal_spi.h:179
@ SPI_MicrowireCtrlWordLen12Bit
Definition hal_spi.h:186
@ SPI_MicrowireCtrlWordLen4Bit
Definition hal_spi.h:178
@ SPI_MicrowireCtrlWordLen13Bit
Definition hal_spi.h:187
@ SPI_MicrowireCtrlWordLen6Bit
Definition hal_spi.h:180
@ SPI_MicrowireCtrlWordLen16Bit
Definition hal_spi.h:190
@ SPI_MicrowireCtrlWordLen14Bit
Definition hal_spi.h:188
@ SPI_MicrowireCtrlWordLen10Bit
Definition hal_spi.h:184
@ SPI_MicrowireCtrlWordLen1Bit
Definition hal_spi.h:175
@ SPI_MicrowireCtrlWordLen15Bit
Definition hal_spi.h:189
@ SPI_MotorolaClkPolHi
Definition hal_spi.h:248
@ SPI_MotorolaClkPolLow
Definition hal_spi.h:247
@ SPI_FfTexas
Definition hal_spi.h:161
@ SPI_FfMicrowire
Definition hal_spi.h:162
@ SPI_FfMotorola
Definition hal_spi.h:160
@ SPI_RxFifoWatermark3
Definition hal_spi.h:95
@ SPI_RxFifoWatermark2
Definition hal_spi.h:94
@ SPI_RxFifoWatermark8
Definition hal_spi.h:100
@ SPI_RxFifoWatermark6
Definition hal_spi.h:98
@ SPI_RxFifoWatermark5
Definition hal_spi.h:97
@ SPI_RxFifoWatermark4
Definition hal_spi.h:96
@ SPI_RxFifoWatermark1
Definition hal_spi.h:93
@ SPI_RxFifoWatermark7
Definition hal_spi.h:99
@ SPI_Status_IncorrectCall
Definition hal_spi.h:63
@ SPI_Status_RxRingBufferOverrun
Definition hal_spi.h:60
@ SPI_Status_NoTransferInProgress
Definition hal_spi.h:62
@ SPI_Status_Busy
Definition hal_spi.h:56
@ SPI_Status_Timeout
Definition hal_spi.h:54
@ SPI_Status_RxError
Definition hal_spi.h:59
@ SPI_Status_UnexpectedState
Definition hal_spi.h:64
@ SPI_Status_TxError
Definition hal_spi.h:58
@ SPI_Status_ReadOnly
Definition hal_spi.h:52
@ SPI_Status_Ok
Definition hal_spi.h:50
@ SPI_Status_RxFifoBufferOverrun
Definition hal_spi.h:61
@ SPI_Status_Idle
Definition hal_spi.h:57
@ SPI_Status_BaudrateNotSupport
Definition hal_spi.h:55
@ SPI_Status_InvalidArgument
Definition hal_spi.h:53
@ SPI_Status_Fail
Definition hal_spi.h:51
@ SPI_TxFifoWatermark0
Definition hal_spi.h:79
@ SPI_TxFifoWatermark7
Definition hal_spi.h:86
@ SPI_TxFifoWatermark2
Definition hal_spi.h:81
@ SPI_TxFifoWatermark4
Definition hal_spi.h:83
@ SPI_TxFifoWatermark3
Definition hal_spi.h:82
@ SPI_TxFifoWatermark1
Definition hal_spi.h:80
@ SPI_TxFifoWatermark6
Definition hal_spi.h:85
@ SPI_TxFifoWatermark5
Definition hal_spi.h:84
@ SPI_ShiftDirLsbFirst
Definition hal_spi.h:72
@ SPI_ShiftDirMsbFirst
Definition hal_spi.h:71
@ SPI_MicrowireSingle
Definition hal_spi.h:219
@ SPI_MicrowireSerial
Definition hal_spi.h:220
@ SPI_ModeSimplexRx
Definition hal_spi.h:302
@ SPI_ModeSimplexTx
Definition hal_spi.h:301
@ SPI_ModeHalfDuplex
Definition hal_spi.h:303
@ SPI_ModeDuplex
Definition hal_spi.h:300
@ SPI_RxFullFlag
Definition hal_spi.h:279
@ SPI_TxEmptyFlag
Definition hal_spi.h:277
@ SPI_RxNotEmptyFlag
Definition hal_spi.h:278
@ SPI_TxNotFullFlag
Definition hal_spi.h:276
@ SPI_MicrowireBusyReadyCheckEnable
Definition hal_spi.h:202
@ SPI_MicrowireBusyReadyCheckDisable
Definition hal_spi.h:201
@ SPI_Data21Bits
Definition hal_spi.h:125
@ SPI_Data17Bits
Definition hal_spi.h:121
@ SPI_Data10Bits
Definition hal_spi.h:114
@ SPI_Data16Bits
Definition hal_spi.h:120
@ SPI_Data19Bits
Definition hal_spi.h:123
@ SPI_Data24Bits
Definition hal_spi.h:128
@ SPI_Data28Bits
Definition hal_spi.h:132
@ SPI_Data25Bits
Definition hal_spi.h:129
@ SPI_Data20Bits
Definition hal_spi.h:124
@ SPI_Data6Bits
Definition hal_spi.h:110
@ SPI_Data13Bits
Definition hal_spi.h:117
@ SPI_Data7Bits
Definition hal_spi.h:111
@ SPI_Data11Bits
Definition hal_spi.h:115
@ SPI_Data15Bits
Definition hal_spi.h:119
@ SPI_Data8Bits
Definition hal_spi.h:112
@ SPI_Data22Bits
Definition hal_spi.h:126
@ SPI_Data29Bits
Definition hal_spi.h:133
@ SPI_Data27Bits
Definition hal_spi.h:131
@ SPI_Data4Bits
Definition hal_spi.h:108
@ SPI_Data18Bits
Definition hal_spi.h:122
@ SPI_Data9Bits
Definition hal_spi.h:113
@ SPI_Data26Bits
Definition hal_spi.h:130
@ SPI_Data30Bits
Definition hal_spi.h:134
@ SPI_Data32Bits
Definition hal_spi.h:136
@ SPI_Data31Bits
Definition hal_spi.h:135
@ SPI_Data5Bits
Definition hal_spi.h:109
@ SPI_Data14Bits
Definition hal_spi.h:118
@ SPI_Data12Bits
Definition hal_spi.h:116
@ SPI_Data23Bits
Definition hal_spi.h:127
@ SPI_MicrowireTx
Definition hal_spi.h:210
@ SPI_MicrowireRx
Definition hal_spi.h:211
Внутренняя структура конфигурации модуля SPI.
Definition hal_spi.h:396
spi_shift_direction_t shift_dir
Definition hal_spi.h:397
uint8_t frame_width_bytes
Definition hal_spi.h:399
uint8_t frame_width_bits
Definition hal_spi.h:398
Структура конфигурации для Master SPI.
Definition hal_spi.h:309
uint32_t baud_rate_bps
Definition hal_spi.h:312
bool loopback_enable
Definition hal_spi.h:311
spi_frame_format_t frame_format
Definition hal_spi.h:316
spi_shift_direction_t direction
Definition hal_spi.h:315
spi_motorola_cfg_t motorola_cfg
Definition hal_spi.h:318
spi_frame_width_t data_width_bits
Definition hal_spi.h:314
spi_microwire_cfg_t microwire_cfg
Definition hal_spi.h:317
Структура SPI для полудуплексной приемо-передачи в режиме Master.
Definition hal_spi.h:386
size_t tx_data_size
Definition hal_spi.h:389
uint8_t * tx_data
Definition hal_spi.h:387
size_t rx_data_size
Definition hal_spi.h:390
uint8_t * rx_data
Definition hal_spi.h:388
SPI структура дескриптора для работы по прерыванию
Definition hal_spi.h:437
uint8_t frame_width_bits
Definition hal_spi.h:447
volatile uint8_t * tx_data
Definition hal_spi.h:438
spi_master_callback_t callback
Definition hal_spi.h:445
volatile uint8_t * rx_data
Definition hal_spi.h:439
size_t total_byte_to_transfer
Definition hal_spi.h:443
volatile size_t rx_remaining_bytes
Definition hal_spi.h:441
volatile size_t tx_remaining_bytes
Definition hal_spi.h:440
int8_t instance
Definition hal_spi.h:442
spi_mode_t mode
Definition hal_spi.h:449
uint8_t frame_width_bytes
Definition hal_spi.h:448
void * user_data
Definition hal_spi.h:446
int32_t state
Definition hal_spi.h:444
Конфигурация для протокола Microwire National Semiconductor.
Definition hal_spi.h:226
microwire_busy_ready_check_t busy_ready_check
Definition hal_spi.h:228
microwire_tx_rx_t tx_rx
Definition hal_spi.h:229
microwire_single_serial_t single_serial
Definition hal_spi.h:230
microwire_ctrlword_len_t ctrl_word_len
Definition hal_spi.h:227
Конфигурация для протокола Motorola SPI.
Definition hal_spi.h:263
spi_motorola_clk_pol_t clk_pol
Definition hal_spi.h:264
spi_motorola_cap_data_t cap_data
Definition hal_spi.h:265
Структура SPI для приемо-передачи
Definition hal_spi.h:377
uint8_t * rx_data
Definition hal_spi.h:379
uint8_t * tx_data
Definition hal_spi.h:378
size_t data_size
Definition hal_spi.h:380