20#ifndef STM32F4xx_LL_SPI_H
21#define STM32F4xx_LL_SPI_H
34#if defined (SPI1) || defined (SPI2) || defined (SPI3) || defined (SPI4) || defined (SPI5) || defined(SPI6)
45#if defined(USE_FULL_LL_DRIVER)
55 uint32_t TransferDirection;
73 uint32_t ClockPolarity;
107 uint32_t CRCCalculation;
135#define LL_SPI_SR_RXNE SPI_SR_RXNE
136#define LL_SPI_SR_TXE SPI_SR_TXE
137#define LL_SPI_SR_BSY SPI_SR_BSY
138#define LL_SPI_SR_CRCERR SPI_SR_CRCERR
139#define LL_SPI_SR_MODF SPI_SR_MODF
140#define LL_SPI_SR_OVR SPI_SR_OVR
141#define LL_SPI_SR_FRE SPI_SR_FRE
150#define LL_SPI_CR2_RXNEIE SPI_CR2_RXNEIE
151#define LL_SPI_CR2_TXEIE SPI_CR2_TXEIE
152#define LL_SPI_CR2_ERRIE SPI_CR2_ERRIE
160#define LL_SPI_MODE_MASTER (SPI_CR1_MSTR | SPI_CR1_SSI)
161#define LL_SPI_MODE_SLAVE 0x00000000U
169#define LL_SPI_PROTOCOL_MOTOROLA 0x00000000U
170#define LL_SPI_PROTOCOL_TI (SPI_CR2_FRF)
178#define LL_SPI_PHASE_1EDGE 0x00000000U
179#define LL_SPI_PHASE_2EDGE (SPI_CR1_CPHA)
187#define LL_SPI_POLARITY_LOW 0x00000000U
188#define LL_SPI_POLARITY_HIGH (SPI_CR1_CPOL)
196#define LL_SPI_BAUDRATEPRESCALER_DIV2 0x00000000U
197#define LL_SPI_BAUDRATEPRESCALER_DIV4 (SPI_CR1_BR_0)
198#define LL_SPI_BAUDRATEPRESCALER_DIV8 (SPI_CR1_BR_1)
199#define LL_SPI_BAUDRATEPRESCALER_DIV16 (SPI_CR1_BR_1 | SPI_CR1_BR_0)
200#define LL_SPI_BAUDRATEPRESCALER_DIV32 (SPI_CR1_BR_2)
201#define LL_SPI_BAUDRATEPRESCALER_DIV64 (SPI_CR1_BR_2 | SPI_CR1_BR_0)
202#define LL_SPI_BAUDRATEPRESCALER_DIV128 (SPI_CR1_BR_2 | SPI_CR1_BR_1)
203#define LL_SPI_BAUDRATEPRESCALER_DIV256 (SPI_CR1_BR_2 | SPI_CR1_BR_1 | SPI_CR1_BR_0)
211#define LL_SPI_LSB_FIRST (SPI_CR1_LSBFIRST)
212#define LL_SPI_MSB_FIRST 0x00000000U
220#define LL_SPI_FULL_DUPLEX 0x00000000U
221#define LL_SPI_SIMPLEX_RX (SPI_CR1_RXONLY)
222#define LL_SPI_HALF_DUPLEX_RX (SPI_CR1_BIDIMODE)
223#define LL_SPI_HALF_DUPLEX_TX (SPI_CR1_BIDIMODE | SPI_CR1_BIDIOE)
231#define LL_SPI_NSS_SOFT (SPI_CR1_SSM)
232#define LL_SPI_NSS_HARD_INPUT 0x00000000U
233#define LL_SPI_NSS_HARD_OUTPUT (((uint32_t)SPI_CR2_SSOE << 16U))
241#define LL_SPI_DATAWIDTH_8BIT 0x00000000U
242#define LL_SPI_DATAWIDTH_16BIT (SPI_CR1_DFF)
246#if defined(USE_FULL_LL_DRIVER)
251#define LL_SPI_CRCCALCULATION_DISABLE 0x00000000U
252#define LL_SPI_CRCCALCULATION_ENABLE (SPI_CR1_CRCEN)
278#define LL_SPI_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__))
286#define LL_SPI_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
310__STATIC_INLINE
void LL_SPI_Enable(SPI_TypeDef *SPIx)
312 SET_BIT(SPIx->CR1, SPI_CR1_SPE);
322__STATIC_INLINE
void LL_SPI_Disable(SPI_TypeDef *SPIx)
324 CLEAR_BIT(SPIx->CR1, SPI_CR1_SPE);
333__STATIC_INLINE uint32_t LL_SPI_IsEnabled(
const SPI_TypeDef *SPIx)
335 return ((READ_BIT(SPIx->CR1, SPI_CR1_SPE) == (SPI_CR1_SPE)) ? 1UL : 0UL);
349__STATIC_INLINE
void LL_SPI_SetMode(SPI_TypeDef *SPIx, uint32_t Mode)
351 MODIFY_REG(SPIx->CR1, SPI_CR1_MSTR | SPI_CR1_SSI, Mode);
363__STATIC_INLINE uint32_t LL_SPI_GetMode(
const SPI_TypeDef *SPIx)
365 return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_MSTR | SPI_CR1_SSI));
378__STATIC_INLINE
void LL_SPI_SetStandard(SPI_TypeDef *SPIx, uint32_t Standard)
380 MODIFY_REG(SPIx->CR2, SPI_CR2_FRF, Standard);
391__STATIC_INLINE uint32_t LL_SPI_GetStandard(
const SPI_TypeDef *SPIx)
393 return (uint32_t)(READ_BIT(SPIx->CR2, SPI_CR2_FRF));
407__STATIC_INLINE
void LL_SPI_SetClockPhase(SPI_TypeDef *SPIx, uint32_t ClockPhase)
409 MODIFY_REG(SPIx->CR1, SPI_CR1_CPHA, ClockPhase);
420__STATIC_INLINE uint32_t LL_SPI_GetClockPhase(
const SPI_TypeDef *SPIx)
422 return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_CPHA));
436__STATIC_INLINE
void LL_SPI_SetClockPolarity(SPI_TypeDef *SPIx, uint32_t ClockPolarity)
438 MODIFY_REG(SPIx->CR1, SPI_CR1_CPOL, ClockPolarity);
449__STATIC_INLINE uint32_t LL_SPI_GetClockPolarity(
const SPI_TypeDef *SPIx)
451 return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_CPOL));
470__STATIC_INLINE
void LL_SPI_SetBaudRatePrescaler(SPI_TypeDef *SPIx, uint32_t BaudRate)
472 MODIFY_REG(SPIx->CR1, SPI_CR1_BR, BaudRate);
489__STATIC_INLINE uint32_t LL_SPI_GetBaudRatePrescaler(
const SPI_TypeDef *SPIx)
491 return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_BR));
504__STATIC_INLINE
void LL_SPI_SetTransferBitOrder(SPI_TypeDef *SPIx, uint32_t BitOrder)
506 MODIFY_REG(SPIx->CR1, SPI_CR1_LSBFIRST, BitOrder);
517__STATIC_INLINE uint32_t LL_SPI_GetTransferBitOrder(
const SPI_TypeDef *SPIx)
519 return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_LSBFIRST));
537__STATIC_INLINE
void LL_SPI_SetTransferDirection(SPI_TypeDef *SPIx, uint32_t TransferDirection)
539 MODIFY_REG(SPIx->CR1, SPI_CR1_RXONLY | SPI_CR1_BIDIMODE | SPI_CR1_BIDIOE, TransferDirection);
554__STATIC_INLINE uint32_t LL_SPI_GetTransferDirection(
const SPI_TypeDef *SPIx)
556 return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_RXONLY | SPI_CR1_BIDIMODE | SPI_CR1_BIDIOE));
568__STATIC_INLINE
void LL_SPI_SetDataWidth(SPI_TypeDef *SPIx, uint32_t DataWidth)
570 MODIFY_REG(SPIx->CR1, SPI_CR1_DFF, DataWidth);
581__STATIC_INLINE uint32_t LL_SPI_GetDataWidth(
const SPI_TypeDef *SPIx)
583 return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_DFF));
601__STATIC_INLINE
void LL_SPI_EnableCRC(SPI_TypeDef *SPIx)
603 SET_BIT(SPIx->CR1, SPI_CR1_CRCEN);
613__STATIC_INLINE
void LL_SPI_DisableCRC(SPI_TypeDef *SPIx)
615 CLEAR_BIT(SPIx->CR1, SPI_CR1_CRCEN);
625__STATIC_INLINE uint32_t LL_SPI_IsEnabledCRC(
const SPI_TypeDef *SPIx)
627 return ((READ_BIT(SPIx->CR1, SPI_CR1_CRCEN) == (SPI_CR1_CRCEN)) ? 1UL : 0UL);
637__STATIC_INLINE
void LL_SPI_SetCRCNext(SPI_TypeDef *SPIx)
639 SET_BIT(SPIx->CR1, SPI_CR1_CRCNEXT);
649__STATIC_INLINE
void LL_SPI_SetCRCPolynomial(SPI_TypeDef *SPIx, uint32_t CRCPoly)
651 WRITE_REG(SPIx->CRCPR, (uint16_t)CRCPoly);
660__STATIC_INLINE uint32_t LL_SPI_GetCRCPolynomial(
const SPI_TypeDef *SPIx)
662 return (uint32_t)(READ_REG(SPIx->CRCPR));
671__STATIC_INLINE uint32_t LL_SPI_GetRxCRC(
const SPI_TypeDef *SPIx)
673 return (uint32_t)(READ_REG(SPIx->RXCRCR));
682__STATIC_INLINE uint32_t LL_SPI_GetTxCRC(
const SPI_TypeDef *SPIx)
684 return (uint32_t)(READ_REG(SPIx->TXCRCR));
707__STATIC_INLINE
void LL_SPI_SetNSSMode(SPI_TypeDef *SPIx, uint32_t NSS)
709 MODIFY_REG(SPIx->CR1, SPI_CR1_SSM, NSS);
710 MODIFY_REG(SPIx->CR2, SPI_CR2_SSOE, ((uint32_t)(NSS >> 16U)));
723__STATIC_INLINE uint32_t LL_SPI_GetNSSMode(
const SPI_TypeDef *SPIx)
725 uint32_t Ssm = (READ_BIT(SPIx->CR1, SPI_CR1_SSM));
726 uint32_t Ssoe = (READ_BIT(SPIx->CR2, SPI_CR2_SSOE) << 16U);
744__STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_RXNE(
const SPI_TypeDef *SPIx)
746 return ((READ_BIT(SPIx->SR, SPI_SR_RXNE) == (SPI_SR_RXNE)) ? 1UL : 0UL);
755__STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_TXE(
const SPI_TypeDef *SPIx)
757 return ((READ_BIT(SPIx->SR, SPI_SR_TXE) == (SPI_SR_TXE)) ? 1UL : 0UL);
766__STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_CRCERR(
const SPI_TypeDef *SPIx)
768 return ((READ_BIT(SPIx->SR, SPI_SR_CRCERR) == (SPI_SR_CRCERR)) ? 1UL : 0UL);
777__STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_MODF(
const SPI_TypeDef *SPIx)
779 return ((READ_BIT(SPIx->SR, SPI_SR_MODF) == (SPI_SR_MODF)) ? 1UL : 0UL);
788__STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_OVR(
const SPI_TypeDef *SPIx)
790 return ((READ_BIT(SPIx->SR, SPI_SR_OVR) == (SPI_SR_OVR)) ? 1UL : 0UL);
806__STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_BSY(
const SPI_TypeDef *SPIx)
808 return ((READ_BIT(SPIx->SR, SPI_SR_BSY) == (SPI_SR_BSY)) ? 1UL : 0UL);
817__STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_FRE(
const SPI_TypeDef *SPIx)
819 return ((READ_BIT(SPIx->SR, SPI_SR_FRE) == (SPI_SR_FRE)) ? 1UL : 0UL);
828__STATIC_INLINE
void LL_SPI_ClearFlag_CRCERR(SPI_TypeDef *SPIx)
830 CLEAR_BIT(SPIx->SR, SPI_SR_CRCERR);
841__STATIC_INLINE
void LL_SPI_ClearFlag_MODF(SPI_TypeDef *SPIx)
843 __IO uint32_t tmpreg_sr;
844 tmpreg_sr = SPIx->SR;
846 CLEAR_BIT(SPIx->CR1, SPI_CR1_SPE);
857__STATIC_INLINE
void LL_SPI_ClearFlag_OVR(
const SPI_TypeDef *SPIx)
859 __IO uint32_t tmpreg;
873__STATIC_INLINE
void LL_SPI_ClearFlag_FRE(
const SPI_TypeDef *SPIx)
875 __IO uint32_t tmpreg;
896__STATIC_INLINE
void LL_SPI_EnableIT_ERR(SPI_TypeDef *SPIx)
898 SET_BIT(SPIx->CR2, SPI_CR2_ERRIE);
907__STATIC_INLINE
void LL_SPI_EnableIT_RXNE(SPI_TypeDef *SPIx)
909 SET_BIT(SPIx->CR2, SPI_CR2_RXNEIE);
918__STATIC_INLINE
void LL_SPI_EnableIT_TXE(SPI_TypeDef *SPIx)
920 SET_BIT(SPIx->CR2, SPI_CR2_TXEIE);
931__STATIC_INLINE
void LL_SPI_DisableIT_ERR(SPI_TypeDef *SPIx)
933 CLEAR_BIT(SPIx->CR2, SPI_CR2_ERRIE);
942__STATIC_INLINE
void LL_SPI_DisableIT_RXNE(SPI_TypeDef *SPIx)
944 CLEAR_BIT(SPIx->CR2, SPI_CR2_RXNEIE);
953__STATIC_INLINE
void LL_SPI_DisableIT_TXE(SPI_TypeDef *SPIx)
955 CLEAR_BIT(SPIx->CR2, SPI_CR2_TXEIE);
964__STATIC_INLINE uint32_t LL_SPI_IsEnabledIT_ERR(
const SPI_TypeDef *SPIx)
966 return ((READ_BIT(SPIx->CR2, SPI_CR2_ERRIE) == (SPI_CR2_ERRIE)) ? 1UL : 0UL);
975__STATIC_INLINE uint32_t LL_SPI_IsEnabledIT_RXNE(
const SPI_TypeDef *SPIx)
977 return ((READ_BIT(SPIx->CR2, SPI_CR2_RXNEIE) == (SPI_CR2_RXNEIE)) ? 1UL : 0UL);
986__STATIC_INLINE uint32_t LL_SPI_IsEnabledIT_TXE(
const SPI_TypeDef *SPIx)
988 return ((READ_BIT(SPIx->CR2, SPI_CR2_TXEIE) == (SPI_CR2_TXEIE)) ? 1UL : 0UL);
1005__STATIC_INLINE
void LL_SPI_EnableDMAReq_RX(SPI_TypeDef *SPIx)
1007 SET_BIT(SPIx->CR2, SPI_CR2_RXDMAEN);
1016__STATIC_INLINE
void LL_SPI_DisableDMAReq_RX(SPI_TypeDef *SPIx)
1018 CLEAR_BIT(SPIx->CR2, SPI_CR2_RXDMAEN);
1027__STATIC_INLINE uint32_t LL_SPI_IsEnabledDMAReq_RX(
const SPI_TypeDef *SPIx)
1029 return ((READ_BIT(SPIx->CR2, SPI_CR2_RXDMAEN) == (SPI_CR2_RXDMAEN)) ? 1UL : 0UL);
1038__STATIC_INLINE
void LL_SPI_EnableDMAReq_TX(SPI_TypeDef *SPIx)
1040 SET_BIT(SPIx->CR2, SPI_CR2_TXDMAEN);
1049__STATIC_INLINE
void LL_SPI_DisableDMAReq_TX(SPI_TypeDef *SPIx)
1051 CLEAR_BIT(SPIx->CR2, SPI_CR2_TXDMAEN);
1060__STATIC_INLINE uint32_t LL_SPI_IsEnabledDMAReq_TX(
const SPI_TypeDef *SPIx)
1062 return ((READ_BIT(SPIx->CR2, SPI_CR2_TXDMAEN) == (SPI_CR2_TXDMAEN)) ? 1UL : 0UL);
1071__STATIC_INLINE uint32_t LL_SPI_DMA_GetRegAddr(
const SPI_TypeDef *SPIx)
1073 return (uint32_t) &(SPIx->DR);
1090__STATIC_INLINE uint8_t LL_SPI_ReceiveData8(SPI_TypeDef *SPIx)
1092 return (*((__IO uint8_t *)&SPIx->DR));
1101__STATIC_INLINE uint16_t LL_SPI_ReceiveData16(SPI_TypeDef *SPIx)
1103 return (uint16_t)(READ_REG(SPIx->DR));
1113__STATIC_INLINE
void LL_SPI_TransmitData8(SPI_TypeDef *SPIx, uint8_t TxData)
1115#if defined (__GNUC__)
1116 __IO uint8_t *spidr = ((__IO uint8_t *)&SPIx->DR);
1119 *((__IO uint8_t *)&SPIx->DR) = TxData;
1130__STATIC_INLINE
void LL_SPI_TransmitData16(SPI_TypeDef *SPIx, uint16_t TxData)
1132#if defined (__GNUC__)
1133 __IO uint16_t *spidr = ((__IO uint16_t *)&SPIx->DR);
1143#if defined(USE_FULL_LL_DRIVER)
1148ErrorStatus LL_SPI_DeInit(
const SPI_TypeDef *SPIx);
1149ErrorStatus LL_SPI_Init(SPI_TypeDef *SPIx, LL_SPI_InitTypeDef *SPI_InitStruct);
1150void LL_SPI_StructInit(LL_SPI_InitTypeDef *SPI_InitStruct);
1173#if defined(USE_FULL_LL_DRIVER)
1195 uint32_t DataFormat;
1201 uint32_t MCLKOutput;
1214 uint32_t ClockPolarity;
1219} LL_I2S_InitTypeDef;
1235#define LL_I2S_SR_RXNE LL_SPI_SR_RXNE
1236#define LL_I2S_SR_TXE LL_SPI_SR_TXE
1237#define LL_I2S_SR_BSY LL_SPI_SR_BSY
1238#define LL_I2S_SR_UDR SPI_SR_UDR
1239#define LL_I2S_SR_OVR LL_SPI_SR_OVR
1240#define LL_I2S_SR_FRE LL_SPI_SR_FRE
1249#define LL_I2S_CR2_RXNEIE LL_SPI_CR2_RXNEIE
1250#define LL_I2S_CR2_TXEIE LL_SPI_CR2_TXEIE
1251#define LL_I2S_CR2_ERRIE LL_SPI_CR2_ERRIE
1259#define LL_I2S_DATAFORMAT_16B 0x00000000U
1260#define LL_I2S_DATAFORMAT_16B_EXTENDED (SPI_I2SCFGR_CHLEN)
1261#define LL_I2S_DATAFORMAT_24B (SPI_I2SCFGR_CHLEN | SPI_I2SCFGR_DATLEN_0)
1262#define LL_I2S_DATAFORMAT_32B (SPI_I2SCFGR_CHLEN | SPI_I2SCFGR_DATLEN_1)
1270#define LL_I2S_POLARITY_LOW 0x00000000U
1271#define LL_I2S_POLARITY_HIGH (SPI_I2SCFGR_CKPOL)
1279#define LL_I2S_STANDARD_PHILIPS 0x00000000U
1280#define LL_I2S_STANDARD_MSB (SPI_I2SCFGR_I2SSTD_0)
1281#define LL_I2S_STANDARD_LSB (SPI_I2SCFGR_I2SSTD_1)
1282#define LL_I2S_STANDARD_PCM_SHORT (SPI_I2SCFGR_I2SSTD_0 | SPI_I2SCFGR_I2SSTD_1)
1283#define LL_I2S_STANDARD_PCM_LONG (SPI_I2SCFGR_I2SSTD_0 | SPI_I2SCFGR_I2SSTD_1 | SPI_I2SCFGR_PCMSYNC)
1291#define LL_I2S_MODE_SLAVE_TX 0x00000000U
1292#define LL_I2S_MODE_SLAVE_RX (SPI_I2SCFGR_I2SCFG_0)
1293#define LL_I2S_MODE_MASTER_TX (SPI_I2SCFGR_I2SCFG_1)
1294#define LL_I2S_MODE_MASTER_RX (SPI_I2SCFGR_I2SCFG_0 | SPI_I2SCFGR_I2SCFG_1)
1302#define LL_I2S_PRESCALER_PARITY_EVEN 0x00000000U
1303#define LL_I2S_PRESCALER_PARITY_ODD (SPI_I2SPR_ODD >> 8U)
1308#if defined(USE_FULL_LL_DRIVER)
1313#define LL_I2S_MCLK_OUTPUT_DISABLE 0x00000000U
1314#define LL_I2S_MCLK_OUTPUT_ENABLE (SPI_I2SPR_MCKOE)
1323#define LL_I2S_AUDIOFREQ_192K 192000U
1324#define LL_I2S_AUDIOFREQ_96K 96000U
1325#define LL_I2S_AUDIOFREQ_48K 48000U
1326#define LL_I2S_AUDIOFREQ_44K 44100U
1327#define LL_I2S_AUDIOFREQ_32K 32000U
1328#define LL_I2S_AUDIOFREQ_22K 22050U
1329#define LL_I2S_AUDIOFREQ_16K 16000U
1330#define LL_I2S_AUDIOFREQ_11K 11025U
1331#define LL_I2S_AUDIOFREQ_8K 8000U
1332#define LL_I2S_AUDIOFREQ_DEFAULT 2U
1358#define LL_I2S_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__))
1366#define LL_I2S_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
1393__STATIC_INLINE
void LL_I2S_Enable(SPI_TypeDef *SPIx)
1395 SET_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_I2SMOD | SPI_I2SCFGR_I2SE);
1404__STATIC_INLINE
void LL_I2S_Disable(SPI_TypeDef *SPIx)
1406 CLEAR_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_I2SMOD | SPI_I2SCFGR_I2SE);
1415__STATIC_INLINE uint32_t LL_I2S_IsEnabled(
const SPI_TypeDef *SPIx)
1417 return ((READ_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_I2SE) == (SPI_I2SCFGR_I2SE)) ? 1UL : 0UL);
1432__STATIC_INLINE
void LL_I2S_SetDataFormat(SPI_TypeDef *SPIx, uint32_t DataFormat)
1434 MODIFY_REG(SPIx->I2SCFGR, SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN, DataFormat);
1448__STATIC_INLINE uint32_t LL_I2S_GetDataFormat(
const SPI_TypeDef *SPIx)
1450 return (uint32_t)(READ_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN));
1462__STATIC_INLINE
void LL_I2S_SetClockPolarity(SPI_TypeDef *SPIx, uint32_t ClockPolarity)
1464 SET_BIT(SPIx->I2SCFGR, ClockPolarity);
1475__STATIC_INLINE uint32_t LL_I2S_GetClockPolarity(
const SPI_TypeDef *SPIx)
1477 return (uint32_t)(READ_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_CKPOL));
1493__STATIC_INLINE
void LL_I2S_SetStandard(SPI_TypeDef *SPIx, uint32_t Standard)
1495 MODIFY_REG(SPIx->I2SCFGR, SPI_I2SCFGR_I2SSTD | SPI_I2SCFGR_PCMSYNC, Standard);
1510__STATIC_INLINE uint32_t LL_I2S_GetStandard(
const SPI_TypeDef *SPIx)
1512 return (uint32_t)(READ_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_I2SSTD | SPI_I2SCFGR_PCMSYNC));
1526__STATIC_INLINE
void LL_I2S_SetTransferMode(SPI_TypeDef *SPIx, uint32_t Mode)
1528 MODIFY_REG(SPIx->I2SCFGR, SPI_I2SCFGR_I2SCFG, Mode);
1541__STATIC_INLINE uint32_t LL_I2S_GetTransferMode(
const SPI_TypeDef *SPIx)
1543 return (uint32_t)(READ_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_I2SCFG));
1553__STATIC_INLINE
void LL_I2S_SetPrescalerLinear(SPI_TypeDef *SPIx, uint8_t PrescalerLinear)
1555 MODIFY_REG(SPIx->I2SPR, SPI_I2SPR_I2SDIV, PrescalerLinear);
1564__STATIC_INLINE uint32_t LL_I2S_GetPrescalerLinear(
const SPI_TypeDef *SPIx)
1566 return (uint32_t)(READ_BIT(SPIx->I2SPR, SPI_I2SPR_I2SDIV));
1578__STATIC_INLINE
void LL_I2S_SetPrescalerParity(SPI_TypeDef *SPIx, uint32_t PrescalerParity)
1580 MODIFY_REG(SPIx->I2SPR, SPI_I2SPR_ODD, PrescalerParity << 8U);
1591__STATIC_INLINE uint32_t LL_I2S_GetPrescalerParity(
const SPI_TypeDef *SPIx)
1593 return (uint32_t)(READ_BIT(SPIx->I2SPR, SPI_I2SPR_ODD) >> 8U);
1602__STATIC_INLINE
void LL_I2S_EnableMasterClock(SPI_TypeDef *SPIx)
1604 SET_BIT(SPIx->I2SPR, SPI_I2SPR_MCKOE);
1613__STATIC_INLINE
void LL_I2S_DisableMasterClock(SPI_TypeDef *SPIx)
1615 CLEAR_BIT(SPIx->I2SPR, SPI_I2SPR_MCKOE);
1624__STATIC_INLINE uint32_t LL_I2S_IsEnabledMasterClock(
const SPI_TypeDef *SPIx)
1626 return ((READ_BIT(SPIx->I2SPR, SPI_I2SPR_MCKOE) == (SPI_I2SPR_MCKOE)) ? 1UL : 0UL);
1629#if defined(SPI_I2SCFGR_ASTRTEN)
1636__STATIC_INLINE
void LL_I2S_EnableAsyncStart(SPI_TypeDef *SPIx)
1638 SET_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_ASTRTEN);
1647__STATIC_INLINE
void LL_I2S_DisableAsyncStart(SPI_TypeDef *SPIx)
1649 CLEAR_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_ASTRTEN);
1658__STATIC_INLINE uint32_t LL_I2S_IsEnabledAsyncStart(
const SPI_TypeDef *SPIx)
1660 return ((READ_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_ASTRTEN) == (SPI_I2SCFGR_ASTRTEN)) ? 1UL : 0UL);
1678__STATIC_INLINE uint32_t LL_I2S_IsActiveFlag_RXNE(
const SPI_TypeDef *SPIx)
1680 return LL_SPI_IsActiveFlag_RXNE(SPIx);
1689__STATIC_INLINE uint32_t LL_I2S_IsActiveFlag_TXE(
const SPI_TypeDef *SPIx)
1691 return LL_SPI_IsActiveFlag_TXE(SPIx);
1700__STATIC_INLINE uint32_t LL_I2S_IsActiveFlag_BSY(
const SPI_TypeDef *SPIx)
1702 return LL_SPI_IsActiveFlag_BSY(SPIx);
1711__STATIC_INLINE uint32_t LL_I2S_IsActiveFlag_OVR(
const SPI_TypeDef *SPIx)
1713 return LL_SPI_IsActiveFlag_OVR(SPIx);
1722__STATIC_INLINE uint32_t LL_I2S_IsActiveFlag_UDR(
const SPI_TypeDef *SPIx)
1724 return ((READ_BIT(SPIx->SR, SPI_SR_UDR) == (SPI_SR_UDR)) ? 1UL : 0UL);
1733__STATIC_INLINE uint32_t LL_I2S_IsActiveFlag_FRE(
const SPI_TypeDef *SPIx)
1735 return LL_SPI_IsActiveFlag_FRE(SPIx);
1747__STATIC_INLINE uint32_t LL_I2S_IsActiveFlag_CHSIDE(
const SPI_TypeDef *SPIx)
1749 return ((READ_BIT(SPIx->SR, SPI_SR_CHSIDE) == (SPI_SR_CHSIDE)) ? 1UL : 0UL);
1758__STATIC_INLINE
void LL_I2S_ClearFlag_OVR(SPI_TypeDef *SPIx)
1760 LL_SPI_ClearFlag_OVR(SPIx);
1769__STATIC_INLINE
void LL_I2S_ClearFlag_UDR(
const SPI_TypeDef *SPIx)
1771 __IO uint32_t tmpreg;
1782__STATIC_INLINE
void LL_I2S_ClearFlag_FRE(
const SPI_TypeDef *SPIx)
1784 LL_SPI_ClearFlag_FRE(SPIx);
1802__STATIC_INLINE
void LL_I2S_EnableIT_ERR(SPI_TypeDef *SPIx)
1804 LL_SPI_EnableIT_ERR(SPIx);
1813__STATIC_INLINE
void LL_I2S_EnableIT_RXNE(SPI_TypeDef *SPIx)
1815 LL_SPI_EnableIT_RXNE(SPIx);
1824__STATIC_INLINE
void LL_I2S_EnableIT_TXE(SPI_TypeDef *SPIx)
1826 LL_SPI_EnableIT_TXE(SPIx);
1836__STATIC_INLINE
void LL_I2S_DisableIT_ERR(SPI_TypeDef *SPIx)
1838 LL_SPI_DisableIT_ERR(SPIx);
1847__STATIC_INLINE
void LL_I2S_DisableIT_RXNE(SPI_TypeDef *SPIx)
1849 LL_SPI_DisableIT_RXNE(SPIx);
1858__STATIC_INLINE
void LL_I2S_DisableIT_TXE(SPI_TypeDef *SPIx)
1860 LL_SPI_DisableIT_TXE(SPIx);
1869__STATIC_INLINE uint32_t LL_I2S_IsEnabledIT_ERR(
const SPI_TypeDef *SPIx)
1871 return LL_SPI_IsEnabledIT_ERR(SPIx);
1880__STATIC_INLINE uint32_t LL_I2S_IsEnabledIT_RXNE(
const SPI_TypeDef *SPIx)
1882 return LL_SPI_IsEnabledIT_RXNE(SPIx);
1891__STATIC_INLINE uint32_t LL_I2S_IsEnabledIT_TXE(
const SPI_TypeDef *SPIx)
1893 return LL_SPI_IsEnabledIT_TXE(SPIx);
1910__STATIC_INLINE
void LL_I2S_EnableDMAReq_RX(SPI_TypeDef *SPIx)
1912 LL_SPI_EnableDMAReq_RX(SPIx);
1921__STATIC_INLINE
void LL_I2S_DisableDMAReq_RX(SPI_TypeDef *SPIx)
1923 LL_SPI_DisableDMAReq_RX(SPIx);
1932__STATIC_INLINE uint32_t LL_I2S_IsEnabledDMAReq_RX(
const SPI_TypeDef *SPIx)
1934 return LL_SPI_IsEnabledDMAReq_RX(SPIx);
1943__STATIC_INLINE
void LL_I2S_EnableDMAReq_TX(SPI_TypeDef *SPIx)
1945 LL_SPI_EnableDMAReq_TX(SPIx);
1954__STATIC_INLINE
void LL_I2S_DisableDMAReq_TX(SPI_TypeDef *SPIx)
1956 LL_SPI_DisableDMAReq_TX(SPIx);
1965__STATIC_INLINE uint32_t LL_I2S_IsEnabledDMAReq_TX(
const SPI_TypeDef *SPIx)
1967 return LL_SPI_IsEnabledDMAReq_TX(SPIx);
1984__STATIC_INLINE uint16_t LL_I2S_ReceiveData16(SPI_TypeDef *SPIx)
1986 return LL_SPI_ReceiveData16(SPIx);
1996__STATIC_INLINE
void LL_I2S_TransmitData16(SPI_TypeDef *SPIx, uint16_t TxData)
1998 LL_SPI_TransmitData16(SPIx, TxData);
2005#if defined(USE_FULL_LL_DRIVER)
2010ErrorStatus LL_I2S_DeInit(
const SPI_TypeDef *SPIx);
2011ErrorStatus LL_I2S_Init(SPI_TypeDef *SPIx, LL_I2S_InitTypeDef *I2S_InitStruct);
2012void LL_I2S_StructInit(LL_I2S_InitTypeDef *I2S_InitStruct);
2013void LL_I2S_ConfigPrescaler(SPI_TypeDef *SPIx, uint32_t PrescalerLinear, uint32_t PrescalerParity);
2014#if defined (SPI_I2S_FULLDUPLEX_SUPPORT)
2015ErrorStatus LL_I2S_InitFullDuplex(SPI_TypeDef *I2Sxext, LL_I2S_InitTypeDef *I2S_InitStruct);