G32R430 Device Driver Layer v1.0.4
G32R4xx Device Driver Layer API Reference
g32r4xx_ddl_spi.h
Go to the documentation of this file.
1
42
43/* Define to prevent recursive inclusion -------------------------------------*/
44#ifndef g32r4xx_DDL_SPI_H
45#define g32r4xx_DDL_SPI_H
46
47#ifdef __cplusplus
48extern "C" {
49#endif
50
51/* Includes ------------------------------------------------------------------*/
52#include "g32r4xx.h"
53#include "g32r430.h"
54
58#if defined (SPI1)
59
63
64/* Private types -------------------------------------------------------------*/
65/* Private variables ---------------------------------------------------------*/
66/* Private macros ------------------------------------------------------------*/
67
68/* Exported types ------------------------------------------------------------*/
69#if defined(USE_FULL_DDL_DRIVER)
73
77typedef struct
78{
83
84 uint32_t Mode;
88
89 uint32_t DataWidth;
93
94 uint32_t ClockPolarity;
98
99 uint32_t ClockPhase;
103
104 uint32_t NSS;
108
109 uint32_t BaudRate;
114
115 uint32_t BitOrder;
119
120 uint32_t CRCCalculation;
124
125 uint32_t CRCPoly;
129
131
135#endif /* USE_FULL_DDL_DRIVER */
136
137/* Exported constants --------------------------------------------------------*/
141
146#define DDL_SPI_STS_RXBNEFLG SPI_STS_RXBNEFLG
147#define DDL_SPI_STS_TXBEFLG SPI_STS_TXBEFLG
148#define DDL_SPI_STS_BSYFLG SPI_STS_BSYFLG
149#define DDL_SPI_STS_CRCEFLG SPI_STS_CRCEFLG
150#define DDL_SPI_STS_MEFLG SPI_STS_MEFLG
151#define DDL_SPI_STS_OVRFLG SPI_STS_OVRFLG
152#define DDL_SPI_STS_FREFLG SPI_STS_FREFLG
156
161#define DDL_SPI_CTRL2_RXBNEIEN SPI_CTRL2_RXBNEIEN
162#define DDL_SPI_CTRL2_TXBEIEN SPI_CTRL2_TXBEIEN
163#define DDL_SPI_CTRL2_ERRIEN SPI_CTRL2_ERRIEN
167
171#define DDL_SPI_MODE_MASTER (SPI_CTRL1_MSMCFG | SPI_CTRL1_ISSEL)
172#define DDL_SPI_MODE_SLAVE 0x00000000U
176
180#define DDL_SPI_PROTOCOL_MOTOROLA 0x00000000U
181#define DDL_SPI_PROTOCOL_TI (SPI_CTRL2_FRFCFG)
185
189#define DDL_SPI_PHASE_1EDGE 0x00000000U
190#define DDL_SPI_PHASE_2EDGE (SPI_CTRL1_CPHA)
194
198#define DDL_SPI_POLARITY_LOW 0x00000000U
199#define DDL_SPI_POLARITY_HIGH (SPI_CTRL1_CPOL)
203
207#define DDL_SPI_BAUDRATEPRESCALER_DIV2 (0x00000000U)
208#define DDL_SPI_BAUDRATEPRESCALER_DIV4 (SPI_CTRL1_BRSEL_0)
209#define DDL_SPI_BAUDRATEPRESCALER_DIV8 (SPI_CTRL1_BRSEL_1)
210#define DDL_SPI_BAUDRATEPRESCALER_DIV16 (SPI_CTRL1_BRSEL_1 | SPI_CTRL1_BRSEL_0)
211#define DDL_SPI_BAUDRATEPRESCALER_DIV32 (SPI_CTRL1_BRSEL_2)
212#define DDL_SPI_BAUDRATEPRESCALER_DIV64 (SPI_CTRL1_BRSEL_2 | SPI_CTRL1_BRSEL_0)
213#define DDL_SPI_BAUDRATEPRESCALER_DIV128 (SPI_CTRL1_BRSEL_2 | SPI_CTRL1_BRSEL_1)
214#define DDL_SPI_BAUDRATEPRESCALER_DIV256 (SPI_CTRL1_BRSEL)
218
222#define DDL_SPI_LSB_FIRST (SPI_CTRL1_LSBSEL)
223#define DDL_SPI_MSB_FIRST 0x00000000U
227
231#define DDL_SPI_FULL_DUPLEX 0x00000000U
232#define DDL_SPI_SIMPLEX_RX (SPI_CTRL1_RXOMEN)
233#define DDL_SPI_HALF_DUPLEX_RX (SPI_CTRL1_BMEN)
234#define DDL_SPI_HALF_DUPLEX_TX (SPI_CTRL1_BMEN | SPI_CTRL1_BMOEN)
238
242#define DDL_SPI_NSS_SOFT (SPI_CTRL1_SSEN)
243#define DDL_SPI_NSS_HARD_INPUT 0x00000000U
244#define DDL_SPI_NSS_HARD_OUTPUT (((uint32_t)SPI_CTRL2_SSOEN << 16U))
248
252#define DDL_SPI_DATAWIDTH_8BIT 0x00000000U
253#define DDL_SPI_DATAWIDTH_16BIT (SPI_CTRL1_DFLSEL)
257#if defined(USE_FULL_DDL_DRIVER)
258
262#define DDL_SPI_CRCCALCULATION_DISABLE 0x00000000U
263#define DDL_SPI_CRCCALCULATION_ENABLE (SPI_CTRL1_CRCEN)
267#endif /* USE_FULL_DDL_DRIVER */
268
272
273/* Exported macro ------------------------------------------------------------*/
277
281
289#define DDL_SPI_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__))
290
297#define DDL_SPI_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
301
305
306/* Exported functions --------------------------------------------------------*/
310
314
320__STATIC_INLINE void DDL_SPI_Enable(SPI_TypeDef *SPIx)
321{
322 SET_BIT(SPIx->CTRL1, SPI_CTRL1_SPIEN);
323}
324
331__STATIC_INLINE void DDL_SPI_Disable(SPI_TypeDef *SPIx)
332{
333 CLEAR_BIT(SPIx->CTRL1, SPI_CTRL1_SPIEN);
334}
335
341__STATIC_INLINE uint32_t DDL_SPI_IsEnabled(SPI_TypeDef *SPIx)
342{
343 return ((READ_BIT(SPIx->CTRL1, SPI_CTRL1_SPIEN) == (SPI_CTRL1_SPIEN)) ? 1UL : 0UL);
344}
345
355__STATIC_INLINE void DDL_SPI_SetMode(SPI_TypeDef *SPIx, uint32_t Mode)
356{
357 MODIFY_REG(SPIx->CTRL1, SPI_CTRL1_MSMCFG | SPI_CTRL1_ISSEL, Mode);
358}
359
367__STATIC_INLINE uint32_t DDL_SPI_GetMode(SPI_TypeDef *SPIx)
368{
369 return (uint32_t)(READ_BIT(SPIx->CTRL1, SPI_CTRL1_MSMCFG | SPI_CTRL1_ISSEL));
370}
371
381__STATIC_INLINE void DDL_SPI_SetStandard(SPI_TypeDef *SPIx, uint32_t Standard)
382{
383 MODIFY_REG(SPIx->CTRL2, SPI_CTRL2_FRFCFG, Standard);
384}
385
393__STATIC_INLINE uint32_t DDL_SPI_GetStandard(SPI_TypeDef *SPIx)
394{
395 return (uint32_t)(READ_BIT(SPIx->CTRL2, SPI_CTRL2_FRFCFG));
396}
397
408__STATIC_INLINE void DDL_SPI_SetClockPhase(SPI_TypeDef *SPIx, uint32_t ClockPhase)
409{
410 MODIFY_REG(SPIx->CTRL1, SPI_CTRL1_CPHA, ClockPhase);
411}
412
420__STATIC_INLINE uint32_t DDL_SPI_GetClockPhase(SPI_TypeDef *SPIx)
421{
422 return (uint32_t)(READ_BIT(SPIx->CTRL1, SPI_CTRL1_CPHA));
423}
424
435__STATIC_INLINE void DDL_SPI_SetClockPolarity(SPI_TypeDef *SPIx, uint32_t ClockPolarity)
436{
437 MODIFY_REG(SPIx->CTRL1, SPI_CTRL1_CPOL, ClockPolarity);
438}
439
447__STATIC_INLINE uint32_t DDL_SPI_GetClockPolarity(SPI_TypeDef *SPIx)
448{
449 return (uint32_t)(READ_BIT(SPIx->CTRL1, SPI_CTRL1_CPOL));
450}
451
467__STATIC_INLINE void DDL_SPI_SetBaudRatePrescaler(SPI_TypeDef *SPIx, uint32_t BaudRate)
468{
469 MODIFY_REG(SPIx->CTRL1, SPI_CTRL1_BRSEL, BaudRate);
470}
471
485__STATIC_INLINE uint32_t DDL_SPI_GetBaudRatePrescaler(SPI_TypeDef *SPIx)
486{
487 return (uint32_t)(READ_BIT(SPIx->CTRL1, SPI_CTRL1_BRSEL));
488}
489
499__STATIC_INLINE void DDL_SPI_SetTransferBitOrder(SPI_TypeDef *SPIx, uint32_t BitOrder)
500{
501 MODIFY_REG(SPIx->CTRL1, SPI_CTRL1_LSBSEL, BitOrder);
502}
503
511__STATIC_INLINE uint32_t DDL_SPI_GetTransferBitOrder(SPI_TypeDef *SPIx)
512{
513 return (uint32_t)(READ_BIT(SPIx->CTRL1, SPI_CTRL1_LSBSEL));
514}
515
528__STATIC_INLINE void DDL_SPI_SetTransferDirection(SPI_TypeDef *SPIx, uint32_t TransferDirection)
529{
530 MODIFY_REG(SPIx->CTRL1, SPI_CTRL1_RXOMEN | SPI_CTRL1_BMEN | SPI_CTRL1_BMOEN, TransferDirection);
531}
532
542__STATIC_INLINE uint32_t DDL_SPI_GetTransferDirection(SPI_TypeDef *SPIx)
543{
544 return (uint32_t)(READ_BIT(SPIx->CTRL1, SPI_CTRL1_RXOMEN | SPI_CTRL1_BMEN | SPI_CTRL1_BMOEN));
545}
546
555__STATIC_INLINE void DDL_SPI_SetDataWidth(SPI_TypeDef *SPIx, uint32_t DataWidth)
556{
557 MODIFY_REG(SPIx->CTRL1, SPI_CTRL1_DFLSEL, DataWidth);
558}
559
567__STATIC_INLINE uint32_t DDL_SPI_GetDataWidth(SPI_TypeDef *SPIx)
568{
569 return (uint32_t)(READ_BIT(SPIx->CTRL1, SPI_CTRL1_DFLSEL));
570}
571
575
579
585__STATIC_INLINE void DDL_SPI_BISS_EnableBiss(SPI_TypeDef *SPIx)
586{
587 SET_BIT(SPIx->BCR, SPI_BCR_BISS_EN);
588}
589
595__STATIC_INLINE void DDL_SPI_BISS_DisableBiss(SPI_TypeDef *SPIx)
596{
597 CLEAR_BIT(SPIx->BCR, SPI_BCR_BISS_EN);
598}
599
605__STATIC_INLINE uint32_t DDL_SPI_BISS_IsEnabledBiss(SPI_TypeDef *SPIx)
606{
607 return ((READ_BIT(SPIx->BCR, SPI_BCR_BISS_EN) == SPI_BCR_BISS_EN) ? 1UL : 0UL);
608}
609
615__STATIC_INLINE void DDL_SPI_BISS_EnableSsi(SPI_TypeDef *SPIx)
616{
617 SET_BIT(SPIx->BCR, SPI_BCR_SSI_EN);
618}
619
625__STATIC_INLINE void DDL_SPI_BISS_DisableSsi(SPI_TypeDef *SPIx)
626{
627 CLEAR_BIT(SPIx->BCR, SPI_BCR_SSI_EN);
628}
629
635__STATIC_INLINE uint32_t DDL_SPI_BISS_IsEnabledSsi(SPI_TypeDef *SPIx)
636{
637 return ((READ_BIT(SPIx->BCR, SPI_BCR_SSI_EN) == SPI_BCR_SSI_EN) ? 1UL : 0UL);
638}
639
645__STATIC_INLINE void DDL_SPI_BISS_EnableStop(SPI_TypeDef *SPIx)
646{
647 SET_BIT(SPIx->BCR, SPI_BCR_STOP_EN);
648}
649
655__STATIC_INLINE void DDL_SPI_BISS_DisableStop(SPI_TypeDef *SPIx)
656{
657 CLEAR_BIT(SPIx->BCR, SPI_BCR_STOP_EN);
658}
659
665__STATIC_INLINE uint32_t DDL_SPI_BISS_IsEnabledStop(SPI_TypeDef *SPIx)
666{
667 return ((READ_BIT(SPIx->BCR, SPI_BCR_STOP_EN) == SPI_BCR_STOP_EN) ? 1UL : 0UL);
668}
669
676__STATIC_INLINE void DDL_SPI_BISS_SetTimeout(SPI_TypeDef *SPIx, uint32_t Timeout)
677{
678 MODIFY_REG(SPIx->BCFG, SPI_BCFG_TOPER, (Timeout << SPI_BCFG_TOPER_Pos) );
679}
680
686__STATIC_INLINE uint32_t DDL_SPI_BISS_GetTimeout(SPI_TypeDef *SPIx)
687{
688 return (uint32_t)(READ_BIT(SPIx->BCFG, SPI_BCFG_TOPER) >> SPI_BCFG_TOPER_Pos);
689}
690
697__STATIC_INLINE void DDL_SPI_BISS_SetFrequency(SPI_TypeDef *SPIx, uint32_t Frequency)
698{
699 MODIFY_REG(SPIx->BCFG, SPI_BCFG_SPISYSCLK, Frequency);
700}
701
707__STATIC_INLINE uint32_t DDL_SPI_BISS_GetFrequency(SPI_TypeDef *SPIx)
708{
709 return (uint32_t)(READ_BIT(SPIx->BCFG, SPI_BCFG_SPISYSCLK));
710}
711
717__STATIC_INLINE uint32_t DDL_SPI_BISS_ReceiveCDMData(SPI_TypeDef *SPIx)
718{
719 return (uint32_t)(READ_BIT(SPIx->CDMDATA, SPI_CDMDATA_DATA));
720}
721
725
729
736__STATIC_INLINE void DDL_SPI_EnableCRC(SPI_TypeDef *SPIx)
737{
738 SET_BIT(SPIx->CTRL1, SPI_CTRL1_CRCEN);
739}
740
747__STATIC_INLINE void DDL_SPI_DisableCRC(SPI_TypeDef *SPIx)
748{
749 CLEAR_BIT(SPIx->CTRL1, SPI_CTRL1_CRCEN);
750}
751
758__STATIC_INLINE uint32_t DDL_SPI_IsEnabledCRC(SPI_TypeDef *SPIx)
759{
760 return ((READ_BIT(SPIx->CTRL1, SPI_CTRL1_CRCEN) == (SPI_CTRL1_CRCEN)) ? 1UL : 0UL);
761}
762
769__STATIC_INLINE void DDL_SPI_SetCRCNext(SPI_TypeDef *SPIx)
770{
771 SET_BIT(SPIx->CTRL1, SPI_CTRL1_CRCNXT);
772}
773
780__STATIC_INLINE void DDL_SPI_SetCRCPolynomial(SPI_TypeDef *SPIx, uint32_t CRCPoly)
781{
782 WRITE_REG(SPIx->CRCPOLY, (uint16_t)CRCPoly);
783}
784
790__STATIC_INLINE uint32_t DDL_SPI_GetCRCPolynomial(SPI_TypeDef *SPIx)
791{
792 return (uint32_t)(READ_REG(SPIx->CRCPOLY));
793}
794
800__STATIC_INLINE uint32_t DDL_SPI_GetRxCRC(SPI_TypeDef *SPIx)
801{
802 return (uint32_t)(READ_REG(SPIx->RXCRC));
803}
804
810__STATIC_INLINE uint32_t DDL_SPI_GetTxCRC(SPI_TypeDef *SPIx)
811{
812 return (uint32_t)(READ_REG(SPIx->TXCRC));
813}
814
818
822
833__STATIC_INLINE void DDL_SPI_SetNSSMode(SPI_TypeDef *SPIx, uint32_t NSS)
834{
835 MODIFY_REG(SPIx->CTRL1, SPI_CTRL1_SSEN, NSS);
836 MODIFY_REG(SPIx->CTRL2, SPI_CTRL2_SSOEN, ((uint32_t)(NSS >> 16U)));
837}
838
847__STATIC_INLINE uint32_t DDL_SPI_GetNSSMode(SPI_TypeDef *SPIx)
848{
849 uint32_t Ssm = (READ_BIT(SPIx->CTRL1, SPI_CTRL1_SSEN));
850 uint32_t Ssoe = (READ_BIT(SPIx->CTRL2, SPI_CTRL2_SSOEN) << 16U);
851 return (Ssm | Ssoe);
852}
853
857
861
867__STATIC_INLINE uint32_t DDL_SPI_IsActiveFlag_RXNE(SPI_TypeDef *SPIx)
868{
869 return ((READ_BIT(SPIx->STS, SPI_STS_RXBNEFLG) == (SPI_STS_RXBNEFLG)) ? 1UL : 0UL);
870}
871
877__STATIC_INLINE uint32_t DDL_SPI_IsActiveFlag_TXE(SPI_TypeDef *SPIx)
878{
879 return ((READ_BIT(SPIx->STS, SPI_STS_TXBEFLG) == (SPI_STS_TXBEFLG)) ? 1UL : 0UL);
880}
881
887__STATIC_INLINE uint32_t DDL_SPI_IsActiveFlag_CRCERR(SPI_TypeDef *SPIx)
888{
889 return ((READ_BIT(SPIx->STS, SPI_STS_CRCEFLG) == (SPI_STS_CRCEFLG)) ? 1UL : 0UL);
890}
891
897__STATIC_INLINE void DDL_SPI_ClearFlag_CRCERR(SPI_TypeDef *SPIx)
898{
899 CLEAR_BIT(SPIx->STS, SPI_STS_CRCEFLG);
900}
901
907__STATIC_INLINE uint32_t DDL_SPI_IsActiveFlag_MODF(SPI_TypeDef *SPIx)
908{
909 return ((READ_BIT(SPIx->STS, SPI_STS_MEFLG) == (SPI_STS_MEFLG)) ? 1UL : 0UL);
910}
911
919__STATIC_INLINE void DDL_SPI_ClearFlag_MODF(SPI_TypeDef *SPIx)
920{
921 __IO uint32_t tmpreg_sr;
922 tmpreg_sr = SPIx->STS;
923 (void) tmpreg_sr;
924 CLEAR_BIT(SPIx->CTRL1, SPI_CTRL1_SPIEN);
925}
926
932__STATIC_INLINE uint32_t DDL_SPI_IsActiveFlag_OVR(SPI_TypeDef *SPIx)
933{
934 return ((READ_BIT(SPIx->STS, SPI_STS_OVRFLG) == (SPI_STS_OVRFLG)) ? 1UL : 0UL);
935}
936
944__STATIC_INLINE void DDL_SPI_ClearFlag_OVR(SPI_TypeDef *SPIx)
945{
946 __IO uint32_t tmpreg;
947 tmpreg = SPIx->DATA;
948 (void) tmpreg;
949 tmpreg = SPIx->STS;
950 (void) tmpreg;
951}
952
965__STATIC_INLINE uint32_t DDL_SPI_IsActiveFlag_BSY(SPI_TypeDef *SPIx)
966{
967 return ((READ_BIT(SPIx->STS, SPI_STS_BSYFLG) == (SPI_STS_BSYFLG)) ? 1UL : 0UL);
968}
969
975__STATIC_INLINE uint32_t DDL_SPI_IsActiveFlag_FRE(SPI_TypeDef *SPIx)
976{
977 return ((READ_BIT(SPIx->STS, SPI_STS_FREFLG) == (SPI_STS_FREFLG)) ? 1UL : 0UL);
978}
979
986__STATIC_INLINE void DDL_SPI_ClearFlag_FRE(SPI_TypeDef *SPIx)
987{
988 __IO uint32_t tmpreg;
989 tmpreg = SPIx->STS;
990 (void) tmpreg;
991}
992
998__STATIC_INLINE uint32_t DDL_SPI_IsActiveFlag_CDM_NE(SPI_TypeDef *SPIx)
999{
1000 return ((READ_BIT(SPIx->STS, SPI_STS_CDM_NE) == (SPI_STS_CDM_NE)) ? 1UL : 0UL);
1001}
1002
1008__STATIC_INLINE uint32_t DDL_SPI_IsActiveFlag_BSBUSY(SPI_TypeDef *SPIx)
1009{
1010 return ((READ_BIT(SPIx->STS, SPI_STS_BSBUSY) == (SPI_STS_BSBUSY)) ? 1UL : 0UL);
1011}
1012
1016
1020
1027__STATIC_INLINE void DDL_SPI_EnableIT_ERR(SPI_TypeDef *SPIx)
1028{
1029 SET_BIT(SPIx->CTRL2, SPI_CTRL2_ERRIEN);
1030}
1031
1038__STATIC_INLINE void DDL_SPI_DisableIT_ERR(SPI_TypeDef *SPIx)
1039{
1040 CLEAR_BIT(SPIx->CTRL2, SPI_CTRL2_ERRIEN);
1041}
1042
1048__STATIC_INLINE uint32_t DDL_SPI_IsEnabledIT_ERR(SPI_TypeDef *SPIx)
1049{
1050 return ((READ_BIT(SPIx->CTRL2, SPI_CTRL2_ERRIEN) == (SPI_CTRL2_ERRIEN)) ? 1UL : 0UL);
1051}
1052
1058__STATIC_INLINE void DDL_SPI_EnableIT_RXNE(SPI_TypeDef *SPIx)
1059{
1060 SET_BIT(SPIx->CTRL2, SPI_CTRL2_RXBNEIEN);
1061}
1062
1068__STATIC_INLINE void DDL_SPI_DisableIT_RXNE(SPI_TypeDef *SPIx)
1069{
1070 CLEAR_BIT(SPIx->CTRL2, SPI_CTRL2_RXBNEIEN);
1071}
1072
1078__STATIC_INLINE uint32_t DDL_SPI_IsEnabledIT_RXNE(SPI_TypeDef *SPIx)
1079{
1080 return ((READ_BIT(SPIx->CTRL2, SPI_CTRL2_RXBNEIEN) == (SPI_CTRL2_RXBNEIEN)) ? 1UL : 0UL);
1081}
1082
1088__STATIC_INLINE void DDL_SPI_EnableIT_TXE(SPI_TypeDef *SPIx)
1089{
1090 SET_BIT(SPIx->CTRL2, SPI_CTRL2_TXBEIEN);
1091}
1092
1098__STATIC_INLINE void DDL_SPI_DisableIT_TXE(SPI_TypeDef *SPIx)
1099{
1100 CLEAR_BIT(SPIx->CTRL2, SPI_CTRL2_TXBEIEN);
1101}
1102
1108__STATIC_INLINE uint32_t DDL_SPI_IsEnabledIT_TXE(SPI_TypeDef *SPIx)
1109{
1110 return ((READ_BIT(SPIx->CTRL2, SPI_CTRL2_TXBEIEN) == (SPI_CTRL2_TXBEIEN)) ? 1UL : 0UL);
1111}
1112
1118__STATIC_INLINE void DDL_SPI_EnableIT_CDM(SPI_TypeDef *SPIx)
1119{
1120 SET_BIT(SPIx->BCR, SPI_BCR_CDM_IE);
1121}
1122
1128__STATIC_INLINE void DDL_SPI_DisableIT_CDM(SPI_TypeDef *SPIx)
1129{
1130 CLEAR_BIT(SPIx->BCR, SPI_BCR_CDM_IE);
1131}
1132
1138__STATIC_INLINE uint32_t DDL_SPI_IsEnabledIT_CDM(SPI_TypeDef *SPIx)
1139{
1140 return ((READ_BIT(SPIx->BCR, SPI_BCR_CDM_IE) == SPI_BCR_CDM_IE) ? 1UL : 0UL);
1141}
1142
1146
1150
1156__STATIC_INLINE void DDL_SPI_EnableDMAReq_RX(SPI_TypeDef *SPIx)
1157{
1158 SET_BIT(SPIx->CTRL2, SPI_CTRL2_RXDEN);
1159}
1160
1166__STATIC_INLINE void DDL_SPI_DisableDMAReq_RX(SPI_TypeDef *SPIx)
1167{
1168 CLEAR_BIT(SPIx->CTRL2, SPI_CTRL2_RXDEN);
1169}
1170
1176__STATIC_INLINE uint32_t DDL_SPI_IsEnabledDMAReq_RX(SPI_TypeDef *SPIx)
1177{
1178 return ((READ_BIT(SPIx->CTRL2, SPI_CTRL2_RXDEN) == (SPI_CTRL2_RXDEN)) ? 1UL : 0UL);
1179}
1180
1186__STATIC_INLINE void DDL_SPI_EnableDMAReq_TX(SPI_TypeDef *SPIx)
1187{
1188 SET_BIT(SPIx->CTRL2, SPI_CTRL2_TXDEN);
1189}
1190
1196__STATIC_INLINE void DDL_SPI_DisableDMAReq_TX(SPI_TypeDef *SPIx)
1197{
1198 CLEAR_BIT(SPIx->CTRL2, SPI_CTRL2_TXDEN);
1199}
1200
1206__STATIC_INLINE uint32_t DDL_SPI_IsEnabledDMAReq_TX(SPI_TypeDef *SPIx)
1207{
1208 return ((READ_BIT(SPIx->CTRL2, SPI_CTRL2_TXDEN) == (SPI_CTRL2_TXDEN)) ? 1UL : 0UL);
1209}
1210
1216__STATIC_INLINE void DDL_SPI_EnableDMAReq_CDM(SPI_TypeDef *SPIx)
1217{
1218 SET_BIT(SPIx->BCR, SPI_BCR_CDM_DMAEN);
1219}
1220
1226__STATIC_INLINE void DDL_SPI_DisableDMAReq_CDM(SPI_TypeDef *SPIx)
1227{
1228 CLEAR_BIT(SPIx->BCR, SPI_BCR_CDM_DMAEN);
1229}
1230
1236__STATIC_INLINE uint32_t DDL_SPI_IsEnabledDMAReq_CDM(SPI_TypeDef *SPIx)
1237{
1238 return ((READ_BIT(SPIx->BCR, SPI_BCR_CDM_DMAEN) == SPI_BCR_CDM_DMAEN) ? 1UL : 0UL);
1239}
1240
1246__STATIC_INLINE uint32_t DDL_SPI_DMA_GetRegAddr(SPI_TypeDef *SPIx)
1247{
1248 return (uint32_t) &(SPIx->DATA);
1249}
1250
1254
1258
1264__STATIC_INLINE uint8_t DDL_SPI_ReceiveData8(SPI_TypeDef *SPIx)
1265{
1266 return (*((__IO uint8_t *)&SPIx->DATA));
1267}
1268
1274__STATIC_INLINE uint16_t DDL_SPI_ReceiveData16(SPI_TypeDef *SPIx)
1275{
1276 return (uint16_t)(READ_REG(SPIx->DATA));
1277}
1278
1285__STATIC_INLINE void DDL_SPI_TransmitData8(SPI_TypeDef *SPIx, uint8_t TxData)
1286{
1287#if defined (__GNUC__)
1288 __IO uint8_t *spidr = ((__IO uint8_t *)&SPIx->DATA);
1289 *spidr = TxData;
1290#else
1291 *((__IO uint8_t *)&SPIx->DATA) = TxData;
1292#endif /* __GNUC__ */
1293}
1294
1301__STATIC_INLINE void DDL_SPI_TransmitData16(SPI_TypeDef *SPIx, uint16_t TxData)
1302{
1303#if defined (__GNUC__)
1304 __IO uint16_t *spidr = ((__IO uint16_t *)&SPIx->DATA);
1305 *spidr = TxData;
1306#else
1307 SPIx->DATA = TxData;
1308#endif /* __GNUC__ */
1309}
1310
1314#if defined(USE_FULL_DDL_DRIVER)
1318
1319ErrorStatus DDL_SPI_DeInit(SPI_TypeDef *SPIx);
1320ErrorStatus DDL_SPI_Init(SPI_TypeDef *SPIx, DDL_SPI_InitTypeDef *SPI_InitStruct);
1321void DDL_SPI_StructInit(DDL_SPI_InitTypeDef *SPI_InitStruct);
1322
1326#endif /* USE_FULL_DDL_DRIVER */
1330
1334
1335#endif /* SPI1 */
1339
1340#ifdef __cplusplus
1341}
1342#endif
1343
1344#endif /* G32R4xx_DDL_SPI_H */
1345
__STATIC_INLINE void DDL_SPI_BISS_EnableStop(SPI_TypeDef *SPIx)
Enable Stop mode.
__STATIC_INLINE void DDL_SPI_BISS_SetFrequency(SPI_TypeDef *SPIx, uint32_t Frequency)
Set BISS frequency.
__STATIC_INLINE void DDL_SPI_BISS_DisableBiss(SPI_TypeDef *SPIx)
Disable Biss-c mode.
__STATIC_INLINE uint32_t DDL_SPI_BISS_GetTimeout(SPI_TypeDef *SPIx)
Get BISS timeout.
__STATIC_INLINE uint32_t DDL_SPI_BISS_IsEnabledBiss(SPI_TypeDef *SPIx)
Check Biss-c mode is enable.
__STATIC_INLINE uint32_t DDL_SPI_BISS_IsEnabledStop(SPI_TypeDef *SPIx)
Check Stop mode is enable.
__STATIC_INLINE void DDL_SPI_BISS_SetTimeout(SPI_TypeDef *SPIx, uint32_t Timeout)
Set BISS timeout.
__STATIC_INLINE uint32_t DDL_SPI_BISS_IsEnabledSsi(SPI_TypeDef *SPIx)
Check Ssi mode is enable.
__STATIC_INLINE void DDL_SPI_BISS_DisableStop(SPI_TypeDef *SPIx)
Disable Stop mode.
__STATIC_INLINE void DDL_SPI_BISS_DisableSsi(SPI_TypeDef *SPIx)
Disable Ssi mode.
__STATIC_INLINE uint32_t DDL_SPI_BISS_GetFrequency(SPI_TypeDef *SPIx)
Get BISS frequency.
__STATIC_INLINE void DDL_SPI_BISS_EnableBiss(SPI_TypeDef *SPIx)
Enable Biss-c mode.
__STATIC_INLINE uint32_t DDL_SPI_BISS_ReceiveCDMData(SPI_TypeDef *SPIx)
Receive CDM data.
__STATIC_INLINE void DDL_SPI_BISS_EnableSsi(SPI_TypeDef *SPIx)
Enable Ssi mode.
__STATIC_INLINE uint32_t DDL_SPI_GetRxCRC(SPI_TypeDef *SPIx)
Get Rx CRC.
__STATIC_INLINE void DDL_SPI_DisableCRC(SPI_TypeDef *SPIx)
Disable CRC.
__STATIC_INLINE uint32_t DDL_SPI_GetTxCRC(SPI_TypeDef *SPIx)
Get Tx CRC.
__STATIC_INLINE void DDL_SPI_SetCRCNext(SPI_TypeDef *SPIx)
Set CRCNext to transfer CRC on the line.
__STATIC_INLINE void DDL_SPI_EnableCRC(SPI_TypeDef *SPIx)
Enable CRC.
__STATIC_INLINE void DDL_SPI_SetCRCPolynomial(SPI_TypeDef *SPIx, uint32_t CRCPoly)
Set polynomial for CRC calculation.
__STATIC_INLINE uint32_t DDL_SPI_IsEnabledCRC(SPI_TypeDef *SPIx)
Check if CRC is enabled.
__STATIC_INLINE uint32_t DDL_SPI_GetCRCPolynomial(SPI_TypeDef *SPIx)
Get polynomial for CRC calculation.
__STATIC_INLINE void DDL_SPI_SetStandard(SPI_TypeDef *SPIx, uint32_t Standard)
Set serial protocol used.
__STATIC_INLINE uint32_t DDL_SPI_GetTransferDirection(SPI_TypeDef *SPIx)
Get transfer direction mode.
__STATIC_INLINE void DDL_SPI_Disable(SPI_TypeDef *SPIx)
Disable SPI peripheral.
__STATIC_INLINE void DDL_SPI_SetBaudRatePrescaler(SPI_TypeDef *SPIx, uint32_t BaudRate)
Set baud rate prescaler.
__STATIC_INLINE uint32_t DDL_SPI_GetTransferBitOrder(SPI_TypeDef *SPIx)
Get transfer bit order.
__STATIC_INLINE uint32_t DDL_SPI_IsEnabled(SPI_TypeDef *SPIx)
Check if SPI peripheral is enabled.
__STATIC_INLINE void DDL_SPI_SetMode(SPI_TypeDef *SPIx, uint32_t Mode)
Set SPI operation mode to Master or Slave.
__STATIC_INLINE uint32_t DDL_SPI_GetClockPhase(SPI_TypeDef *SPIx)
Get clock phase.
__STATIC_INLINE uint32_t DDL_SPI_GetDataWidth(SPI_TypeDef *SPIx)
Get frame data width.
__STATIC_INLINE void DDL_SPI_Enable(SPI_TypeDef *SPIx)
Enable SPI peripheral.
__STATIC_INLINE void DDL_SPI_SetClockPhase(SPI_TypeDef *SPIx, uint32_t ClockPhase)
Set clock phase.
__STATIC_INLINE uint32_t DDL_SPI_GetMode(SPI_TypeDef *SPIx)
Get SPI operation mode (Master or Slave).
__STATIC_INLINE void DDL_SPI_SetTransferDirection(SPI_TypeDef *SPIx, uint32_t TransferDirection)
Set transfer direction mode.
__STATIC_INLINE uint32_t DDL_SPI_GetStandard(SPI_TypeDef *SPIx)
Get serial protocol used.
__STATIC_INLINE void DDL_SPI_SetClockPolarity(SPI_TypeDef *SPIx, uint32_t ClockPolarity)
Set clock polarity.
__STATIC_INLINE void DDL_SPI_SetTransferBitOrder(SPI_TypeDef *SPIx, uint32_t BitOrder)
Set transfer bit order.
__STATIC_INLINE uint32_t DDL_SPI_GetClockPolarity(SPI_TypeDef *SPIx)
Get clock polarity.
__STATIC_INLINE uint32_t DDL_SPI_GetBaudRatePrescaler(SPI_TypeDef *SPIx)
Get baud rate prescaler.
__STATIC_INLINE void DDL_SPI_SetDataWidth(SPI_TypeDef *SPIx, uint32_t DataWidth)
Set frame data width.
__STATIC_INLINE void DDL_SPI_TransmitData8(SPI_TypeDef *SPIx, uint8_t TxData)
Write 8-Bits in the data register.
__STATIC_INLINE uint8_t DDL_SPI_ReceiveData8(SPI_TypeDef *SPIx)
Read 8-Bits in the data register.
__STATIC_INLINE void DDL_SPI_TransmitData16(SPI_TypeDef *SPIx, uint16_t TxData)
Write 16-Bits in the data register.
__STATIC_INLINE uint16_t DDL_SPI_ReceiveData16(SPI_TypeDef *SPIx)
Read 16-Bits in the data register.
__STATIC_INLINE void DDL_SPI_DisableDMAReq_RX(SPI_TypeDef *SPIx)
Disable DMA Rx.
__STATIC_INLINE void DDL_SPI_EnableDMAReq_TX(SPI_TypeDef *SPIx)
Enable DMA Tx.
__STATIC_INLINE void DDL_SPI_DisableDMAReq_TX(SPI_TypeDef *SPIx)
Disable DMA Tx.
__STATIC_INLINE uint32_t DDL_SPI_IsEnabledDMAReq_TX(SPI_TypeDef *SPIx)
Check if DMA Tx is enabled.
__STATIC_INLINE uint32_t DDL_SPI_IsEnabledDMAReq_RX(SPI_TypeDef *SPIx)
Check if DMA Rx is enabled.
__STATIC_INLINE void DDL_SPI_EnableDMAReq_RX(SPI_TypeDef *SPIx)
Enable DMA Rx.
__STATIC_INLINE void DDL_SPI_DisableDMAReq_CDM(SPI_TypeDef *SPIx)
Disable CDM dma require.
__STATIC_INLINE void DDL_SPI_EnableDMAReq_CDM(SPI_TypeDef *SPIx)
Enable CDM dma require.
__STATIC_INLINE uint32_t DDL_SPI_IsEnabledDMAReq_CDM(SPI_TypeDef *SPIx)
Check if CDM dma require is enabled.
__STATIC_INLINE uint32_t DDL_SPI_DMA_GetRegAddr(SPI_TypeDef *SPIx)
Get the data register address used for DMA transfer.
__STATIC_INLINE uint32_t DDL_SPI_IsActiveFlag_RXNE(SPI_TypeDef *SPIx)
Check if Rx buffer is not empty.
__STATIC_INLINE uint32_t DDL_SPI_IsActiveFlag_OVR(SPI_TypeDef *SPIx)
Get overrun error flag.
__STATIC_INLINE uint32_t DDL_SPI_IsActiveFlag_TXE(SPI_TypeDef *SPIx)
Check if Tx buffer is empty.
__STATIC_INLINE void DDL_SPI_ClearFlag_CRCERR(SPI_TypeDef *SPIx)
Clear CRC error flag.
__STATIC_INLINE void DDL_SPI_ClearFlag_MODF(SPI_TypeDef *SPIx)
Clear mode fault error flag.
__STATIC_INLINE uint32_t DDL_SPI_IsActiveFlag_MODF(SPI_TypeDef *SPIx)
Get mode fault error flag.
__STATIC_INLINE uint32_t DDL_SPI_IsActiveFlag_BSBUSY(SPI_TypeDef *SPIx)
Get Biss busy flag.
__STATIC_INLINE uint32_t DDL_SPI_IsActiveFlag_CDM_NE(SPI_TypeDef *SPIx)
Check if CDM is not empty.
__STATIC_INLINE uint32_t DDL_SPI_IsActiveFlag_BSY(SPI_TypeDef *SPIx)
Get busy flag.
__STATIC_INLINE uint32_t DDL_SPI_IsActiveFlag_CRCERR(SPI_TypeDef *SPIx)
Get CRC error flag.
__STATIC_INLINE void DDL_SPI_ClearFlag_OVR(SPI_TypeDef *SPIx)
Clear overrun error flag.
__STATIC_INLINE void DDL_SPI_ClearFlag_FRE(SPI_TypeDef *SPIx)
Clear frame format error flag.
__STATIC_INLINE uint32_t DDL_SPI_IsActiveFlag_FRE(SPI_TypeDef *SPIx)
Get frame format error flag.
__STATIC_INLINE void DDL_SPI_EnableIT_ERR(SPI_TypeDef *SPIx)
Enable error interrupt.
__STATIC_INLINE uint32_t DDL_SPI_IsEnabledIT_ERR(SPI_TypeDef *SPIx)
Check if error interrupt is enabled.
__STATIC_INLINE void DDL_SPI_DisableIT_ERR(SPI_TypeDef *SPIx)
Disable error interrupt.
__STATIC_INLINE void DDL_SPI_EnableIT_CDM(SPI_TypeDef *SPIx)
Enable CDM interrupt.
__STATIC_INLINE uint32_t DDL_SPI_IsEnabledIT_TXE(SPI_TypeDef *SPIx)
Check if Tx buffer empty interrupt.
__STATIC_INLINE void DDL_SPI_DisableIT_CDM(SPI_TypeDef *SPIx)
Disable CDM interrupt.
__STATIC_INLINE void DDL_SPI_EnableIT_TXE(SPI_TypeDef *SPIx)
Enable Tx buffer empty interrupt.
__STATIC_INLINE void DDL_SPI_DisableIT_TXE(SPI_TypeDef *SPIx)
Disable Tx buffer empty interrupt.
__STATIC_INLINE void DDL_SPI_EnableIT_RXNE(SPI_TypeDef *SPIx)
Enable Rx buffer not empty interrupt.
__STATIC_INLINE uint32_t DDL_SPI_IsEnabledIT_RXNE(SPI_TypeDef *SPIx)
Check if Rx buffer not empty interrupt is enabled.
__STATIC_INLINE void DDL_SPI_DisableIT_RXNE(SPI_TypeDef *SPIx)
Disable Rx buffer not empty interrupt.
__STATIC_INLINE uint32_t DDL_SPI_IsEnabledIT_CDM(SPI_TypeDef *SPIx)
Check if CDM interrupt is enabled.
ErrorStatus DDL_SPI_Init(SPI_TypeDef *SPIx, DDL_SPI_InitTypeDef *SPI_InitStruct)
Initialize the SPI registers according to the specified parameters in SPI_InitStruct.
void DDL_SPI_StructInit(DDL_SPI_InitTypeDef *SPI_InitStruct)
Set each DDL_SPI_InitTypeDef field to default value.
ErrorStatus DDL_SPI_DeInit(SPI_TypeDef *SPIx)
De-initialize the SPI registers to their default reset values.
__STATIC_INLINE uint32_t DDL_SPI_GetNSSMode(SPI_TypeDef *SPIx)
Get NSS mode.
__STATIC_INLINE void DDL_SPI_SetNSSMode(SPI_TypeDef *SPIx, uint32_t NSS)
Set NSS mode.
SPI Init structures definition.