reg_spi.h 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359
  1. ////////////////////////////////////////////////////////////////////////////////
  2. /// @file reg_spi.h
  3. /// @author AE TEAM
  4. /// @brief THIS FILE CONTAINS ALL THE FUNCTIONS PROTOTYPES FOR THE SERIES OF
  5. /// MM32 FIRMWARE LIBRARY.
  6. ////////////////////////////////////////////////////////////////////////////////
  7. /// @attention
  8. ///
  9. /// THE EXISTING FIRMWARE IS ONLY FOR REFERENCE, WHICH IS DESIGNED TO PROVIDE
  10. /// CUSTOMERS WITH CODING INFORMATION ABOUT THEIR PRODUCTS SO THEY CAN SAVE
  11. /// TIME. THEREFORE, MINDMOTION SHALL NOT BE LIABLE FOR ANY DIRECT, INDIRECT OR
  12. /// CONSEQUENTIAL DAMAGES ABOUT ANY CLAIMS ARISING OUT OF THE CONTENT OF SUCH
  13. /// HARDWARE AND/OR THE USE OF THE CODING INFORMATION CONTAINED HEREIN IN
  14. /// CONNECTION WITH PRODUCTS MADE BY CUSTOMERS.
  15. ///
  16. /// <H2><CENTER>&COPY; COPYRIGHT MINDMOTION </CENTER></H2>
  17. ////////////////////////////////////////////////////////////////////////////////
  18. // Define to prevent recursive inclusion
  19. #ifndef __REG_SPI_H
  20. #define __REG_SPI_H
  21. // Files includes
  22. #include <stdint.h>
  23. #include <stdbool.h>
  24. #include "types.h"
  25. #if defined ( __CC_ARM )
  26. #pragma anon_unions
  27. #endif
  28. ////////////////////////////////////////////////////////////////////////////////
  29. /// @brief SPI Base Address Definition
  30. ////////////////////////////////////////////////////////////////////////////////
  31. #define SPI2_BASE (APB1PERIPH_BASE + 0x3800) ///< Base Address: 0x40003800
  32. #define SPI1_BASE (APB2PERIPH_BASE + 0x3000) ///< Base Address: 0x400013000
  33. #define SPI3_BASE (APB1PERIPH_BASE + 0x3C00) ///< Base Address: 0x40003C000
  34. ////////////////////////////////////////////////////////////////////////////////
  35. /// @brief SPI Register Structure Definition
  36. ////////////////////////////////////////////////////////////////////////////////
  37. #undef USENCOMBINEREGISTER
  38. #undef USENNEWREGISTER
  39. #undef USENOLDREGISTER
  40. #define USENCOMBINEREGISTER
  41. #ifdef USENCOMBINEREGISTER
  42. typedef struct {
  43. union {
  44. __IO u32 TDR; ///< SPI transmit data register, offset: 0x00
  45. __IO u32 TXREG;
  46. };
  47. union {
  48. __IO u32 RDR; ///< SPI receive data register, offset: 0x04
  49. __IO u32 RXREG;
  50. };
  51. union {
  52. __IO u32 SR; ///< SPI current state register, offset: 0x08
  53. __IO u32 CSTAT;
  54. };
  55. union {
  56. __IO u32 ISR; ///< SPI interruput state register, offset: 0x0C
  57. __IO u32 INTSTAT;
  58. };
  59. union {
  60. __IO u32 IER; ///< SPI interruput enable register, offset: 0x10
  61. __IO u32 INTEN;
  62. };
  63. union {
  64. __IO u32 ICR; ///< SPI interruput control register, offset: 0x14
  65. __IO u32 INTCLR;
  66. };
  67. union {
  68. __IO u32 GCR; ///< SPI global control register, offset: 0x18
  69. __IO u32 GCTL;
  70. };
  71. union {
  72. __IO u32 CCR; ///< SPI common control register, offset: 0x1C
  73. __IO u32 CCTL;
  74. };
  75. union {
  76. __IO u32 BRR; ///< SPI baud rate control register, offset: 0x20
  77. __IO u32 SPBRG;
  78. };
  79. union {
  80. __IO u32 RDNR; ///< SPI receive data number register, offset: 0x24
  81. __IO u32 RXDNR;
  82. };
  83. union {
  84. __IO u32 NSSR; ///< SPI chip select register, offset: 0x28
  85. __IO u32 SCSR;
  86. };
  87. union {
  88. __IO u32 ECR; ///< SPI extand control register, offset: 0x2C
  89. __IO u32 EXTCTL;
  90. };
  91. __IO u32 CFGR; ///< I2S configuration register, offset: 0x30
  92. } SPI_TypeDef;
  93. #endif
  94. #ifdef USENNEWREGISTER
  95. typedef struct {
  96. __IO u32 TDR; ///< SPI transmit data register, offset: 0x00
  97. __IO u32 RDR; ///< SPI receive data register, offset: 0x04
  98. __IO u32 SR; ///< SPI current state register, offset: 0x08
  99. __IO u32 ISR; ///< SPI interruput state register, offset: 0x0C
  100. __IO u32 IER; ///< SPI interruput enable register, offset: 0x10
  101. __IO u32 ICR; ///< SPI interruput control register, offset: 0x14
  102. __IO u32 GCR; ///< SPI global control register, offset: 0x18
  103. __IO u32 CCR; ///< SPI common control register, offset: 0x1C
  104. __IO u32 BRR; ///< SPI baud rate control register, offset: 0x20
  105. __IO u32 RDNR; ///< SPI receive data number register, offset: 0x24
  106. __IO u32 NSSR; ///< SPI chip select register, offset: 0x28
  107. __IO u32 ECR; ///< SPI extand control register, offset: 0x2C
  108. } SPI_TypeDef;
  109. #endif
  110. #ifdef USENOLDREGISTER
  111. typedef struct {
  112. __IO u32 TXREG; ///< SPI transmit data register, offset: 0x00
  113. __IO u32 RXREG; ///< SPI receive data register, offset: 0x04
  114. __IO u32 CSTAT; ///< SPI current state register, offset: 0x08
  115. __IO u32 INTSTAT; ///< SPI interruput state register, offset: 0x0C
  116. __IO u32 INTEN; ///< SPI interruput enable register, offset: 0x10
  117. __IO u32 INTCLR; ///< SPI interruput control register, offset: 0x14
  118. __IO u32 GCTL; ///< SPI global control register, offset: 0x18
  119. __IO u32 CCTL; ///< SPI common control register, offset: 0x1C
  120. __IO u32 SPBRG; ///< SPI baud rate control register, offset: 0x20
  121. __IO u32 RXDNR; ///< SPI receive data number register, offset: 0x24
  122. __IO u32 NSSR; ///< SPI chip select register, offset: 0x28
  123. __IO u32 EXTCTL; ///< SPI extand control register, offset: 0x2C
  124. } SPI_TypeDef;
  125. #endif
  126. ////////////////////////////////////////////////////////////////////////////////
  127. /// @brief SPI type pointer Definition
  128. ////////////////////////////////////////////////////////////////////////////////
  129. #define SPI2 ((SPI_TypeDef*) SPI2_BASE)
  130. #define SPI1 ((SPI_TypeDef*) SPI1_BASE)
  131. #define SPI3 ((SPI_TypeDef*) SPI3_BASE)
  132. ////////////////////////////////////////////////////////////////////////////////
  133. /// @brief SPI_TDR Register Bit Definition
  134. ////////////////////////////////////////////////////////////////////////////////
  135. #define SPI_TDR_TXREG_Pos (0)
  136. #define SPI_TDR_TXREG (0xFFFFFFFFU << SPI_TDR_TXREG_Pos) ///< Transmit data register
  137. ////////////////////////////////////////////////////////////////////////////////
  138. /// @brief SPI_RDR Register Bit Definition
  139. ////////////////////////////////////////////////////////////////////////////////
  140. #define SPI_RDR_RXREG_Pos (0)
  141. #define SPI_RDR_RXREG (0xFFFFFFFFU << SPI_RDR_RXREG_Pos) ///< Receive data register
  142. ////////////////////////////////////////////////////////////////////////////////
  143. /// @brief SPI_SR Register Bit Definition
  144. ////////////////////////////////////////////////////////////////////////////////
  145. #define SPI_SR_TXEPT_Pos (0)
  146. #define SPI_SR_TXEPT (0x01U << SPI_SR_TXEPT_Pos) ///< Transmitter empty bit
  147. #define SPI_SR_RXAVL_Pos (1)
  148. #define SPI_SR_RXAVL (0x01U << SPI_SR_RXAVL_Pos) ///< Receive available byte data message
  149. #define SPI_SR_TXFULL_Pos (2)
  150. #define SPI_SR_TXFULL (0x01U << SPI_SR_TXFULL_Pos) ///< Transmitter FIFO full status bit
  151. #define SPI_SR_RXAVL_4BYTE_Pos (3)
  152. #define SPI_SR_RXAVL_4BYTE (0x01U << SPI_SR_RXAVL_4BYTE_Pos) ///< Receive available 4 byte data message
  153. #define SPI_SR_TXFADDR_Pos (4)
  154. #define SPI_SR_TXFADDR (0x0FU << SPI_SR_TXFADDR_Pos) ///< Transmit FIFO address
  155. #define SPI_SR_RXFADDR_Pos (8)
  156. #define SPI_SR_RXFADDR (0x0FU << SPI_SR_RXFADDR_Pos) ///< Receive FIFO address
  157. #define SPI_SR_BUSY_Pos (12)
  158. #define SPI_SR_BUSY (0x01U << SPI_SR_BUSY_Pos) ///< Data transfer flag
  159. #define SPI_SR_CHSIDE_Pos (13)
  160. #define SPI_SR_CHSIDE (0x01U << SPI_SR_CHSIDE_Pos) ///< transmission channel
  161. ////////////////////////////////////////////////////////////////////////////////
  162. /// @brief SPI_ISR Register Bit Definition
  163. ////////////////////////////////////////////////////////////////////////////////
  164. #define SPI_ISR_TX_INTF_Pos (0)
  165. #define SPI_ISR_TX_INTF (0x01U << SPI_ISR_TX_INTF_Pos) ///< Transmit FIFO available interrupt flag bit
  166. #define SPI_ISR_RX_INTF_Pos (1)
  167. #define SPI_ISR_RX_INTF (0x01U << SPI_ISR_RX_INTF_Pos) ///< Receive data available interrupt flag bit
  168. #define SPI_ISR_UNDERRUN_INTF_Pos (2)
  169. #define SPI_ISR_UNDERRUN_INTF (0x01U << SPI_ISR_UNDERRUN_INTF_Pos) ///< SPI underrun interrupt flag bit
  170. #define SPI_ISR_RXOERR_INTF_Pos (3)
  171. #define SPI_ISR_RXOERR_INTF (0x01U << SPI_ISR_RXOERR_INTF_Pos) ///< Receive overrun error interrupt flag bit
  172. #define SPI_ISR_RXMATCH_INTF_Pos (4)
  173. #define SPI_ISR_RXMATCH_INTF (0x01U << SPI_ISR_RXMATCH_INTF_Pos) ///< Receive data match the RXDNR number, the receive process will be completed and generate the interrupt
  174. #define SPI_ISR_RXFULL_INTF_Pos (5)
  175. #define SPI_ISR_RXFULL_INTF (0x01U << SPI_ISR_RXFULL_INTF_Pos) ///< RX FIFO full interrupt flag bit
  176. #define SPI_ISR_TXEPT_INTF_Pos (6)
  177. #define SPI_ISR_TXEPT_INTF (0x01U << SPI_ISR_TXEPT_INTF_Pos) ///< Transmitter empty interrupt flag bit
  178. #define SPI_ISR_FRE_INTF_Pos (7)
  179. #define SPI_ISR_FRE_INTF (0x01U << SPI_ISR_FRE_INTF_Pos) ///< I2S frame transmission error flag bit
  180. ////////////////////////////////////////////////////////////////////////////////
  181. /// @brief SPI_IER Register Bit Definition
  182. ////////////////////////////////////////////////////////////////////////////////
  183. #define SPI_IER_TX_IEN_Pos (0)
  184. #define SPI_IER_TX_IEN (0x01U << SPI_IER_TX_IEN_Pos) ///< Transmit FIFO empty interrupt enable bit
  185. #define SPI_IER_RX_IEN_Pos (1)
  186. #define SPI_IER_RX_IEN (0x01U << SPI_IER_RX_IEN_Pos) ///< Receive FIFO interrupt enable bit
  187. #define SPI_IER_UNDERRUN_IEN_Pos (2)
  188. #define SPI_IER_UNDERRUN_IEN (0x01U << SPI_IER_UNDERRUN_IEN_Pos) ///< Transmitter underrun interrupt enable bit
  189. #define SPI_IER_RXOERR_IEN_Pos (3)
  190. #define SPI_IER_RXOERR_IEN (0x01U << SPI_IER_RXOERR_IEN_Pos) ///< Overrun error interrupt enable bit
  191. #define SPI_IER_RXMATCH_IEN_Pos (4)
  192. #define SPI_IER_RXMATCH_IEN (0x01U << SPI_IER_RXMATCH_IEN_Pos) ///< Receive data complete interrupt enable bit
  193. #define SPI_IER_RXFULL_IEN_Pos (5)
  194. #define SPI_IER_RXFULL_IEN (0x01U << SPI_IER_RXFULL_IEN_Pos) ///< Receive FIFO full interrupt enable bit
  195. #define SPI_IER_TXEPT_IEN_Pos (6)
  196. #define SPI_IER_TXEPT_IEN (0x01U << SPI_IER_TXEPT_IEN_Pos) ///< Transmit empty interrupt enable bit
  197. #define SPI_IER_FRE_IEN_Pos (7)
  198. #define SPI_IER_FRE_IEN (0x01U << SPI_IER_FRE_IEN_Pos) ///< I2S frame transmission interrupt enable bit
  199. ////////////////////////////////////////////////////////////////////////////////
  200. /// @brief SPI_ICR Register Bit Definition
  201. ////////////////////////////////////////////////////////////////////////////////
  202. #define SPI_ICR_TX_ICLR_Pos (0)
  203. #define SPI_ICR_TX_ICLR (0x01U << SPI_ICR_TX_ICLR_Pos) ///< Transmitter FIFO empty interrupt clear bit
  204. #define SPI_ICR_RX_ICLR_Pos (1)
  205. #define SPI_ICR_RX_ICLR (0x01U << SPI_ICR_RX_ICLR_Pos) ///< Receive interrupt clear bit
  206. #define SPI_ICR_UNDERRUN_ICLR_Pos (2)
  207. #define SPI_ICR_UNDERRUN_ICLR (0x01U << SPI_ICR_UNDERRUN_ICLR_Pos) ///< Transmitter underrun interrupt clear bit
  208. #define SPI_ICR_RXOERR_ICLR_Pos (3)
  209. #define SPI_ICR_RXOERR_ICLR (0x01U << SPI_ICR_RXOERR_ICLR_Pos) ///< Overrun error interrupt clear bit
  210. #define SPI_ICR_RXMATCH_ICLR_Pos (4)
  211. #define SPI_ICR_RXMATCH_ICLR (0x01U << SPI_ICR_RXMATCH_ICLR_Pos) ///< Receive completed interrupt clear bit
  212. #define SPI_ICR_RXFULL_ICLR_Pos (5)
  213. #define SPI_ICR_RXFULL_ICLR (0x01U << SPI_ICR_RXFULL_ICLR_Pos) ///< Receiver buffer full interrupt clear bit
  214. #define SPI_ICR_TXEPT_ICLR_Pos (6)
  215. #define SPI_ICR_TXEPT_ICLR (0x01U << SPI_ICR_TXEPT_ICLR_Pos) ///< Transmitter empty interrupt clear bit
  216. #define SPI_ICR_FRE_ICLR_Pos (7)
  217. #define SPI_ICR_FRE_ICLR (0x01U << SPI_ICR_FRE_ICLR_Pos) ///< I2S frame transmission interrupt clear bit
  218. ////////////////////////////////////////////////////////////////////////////////
  219. /// @brief SPI_GCR Register Bit Definition
  220. ////////////////////////////////////////////////////////////////////////////////
  221. #define SPI_GCR_SPIEN_Pos (0)
  222. #define SPI_GCR_SPIEN (0x01U << SPI_GCR_SPIEN_Pos) ///< SPI select bit
  223. #define SPI_GCR_IEN_Pos (1)
  224. #define SPI_GCR_IEN (0x01U << SPI_GCR_IEN_Pos) ///< SPI interrupt enable bit
  225. #define SPI_GCR_MODE_Pos (2)
  226. #define SPI_GCR_MODE (0x01U << SPI_GCR_MODE_Pos) ///< Master mode bit
  227. #define SPI_GCR_TXEN_Pos (3)
  228. #define SPI_GCR_TXEN (0x01U << SPI_GCR_TXEN_Pos) ///< Transmit enable bit
  229. #define SPI_GCR_RXEN_Pos (4)
  230. #define SPI_GCR_RXEN (0x01U << SPI_GCR_RXEN_Pos) ///< Receive enable bit
  231. #define SPI_GCR_RXTLF_Pos (5)
  232. #define SPI_GCR_RXTLF (0x03U << SPI_GCR_RXTLF_Pos) ///< RX FIFO trigger level bit
  233. #define SPI_GCR_RXTLF_One (0x00U << SPI_GCR_RXTLF_Pos) ///<
  234. #define SPI_GCR_RXTLF_Half (0x01U << SPI_GCR_RXTLF_Pos) ///<
  235. #define SPI_GCR_TXTLF_Pos (7)
  236. #define SPI_GCR_TXTLF (0x03U << SPI_GCR_TXTLF_Pos) ///< TX FIFO trigger level bit
  237. #define SPI_GCR_TXTLF_One (0x00U << SPI_GCR_TXTLF_Pos) ///<
  238. #define SPI_GCR_TXTLF_Half (0x01U << SPI_GCR_TXTLF_Pos) ///<
  239. #define SPI_GCR_DMAEN_Pos (9)
  240. #define SPI_GCR_DMAEN (0x01U << SPI_GCR_DMAEN_Pos) ///< DMA access mode enable
  241. #define SPI_GCR_NSS_Pos (10)
  242. #define SPI_GCR_NSS (0x01U << SPI_GCR_NSS_Pos) ///< NSS select signal that from software or hardware
  243. #define SPI_GCR_DWSEL_Pos (11)
  244. #define SPI_GCR_DWSEL (0x01U << SPI_GCR_DWSEL_Pos) ///< Valid byte or double-word data select signal
  245. #define SPI_GCR_NSSTOG_Pos (12)
  246. #define SPI_GCR_NSSTOG (0x01U << SPI_GCR_NSSTOG_Pos) ///< Slave select toggle
  247. #define SPI_GCR_PAD_SEL_Pos (13)
  248. #define SPI_GCR_PAD_SEL (0x1FU << SPI_GCR_PAD_SEL_Pos) ///< Bus mapping transformation
  249. ////////////////////////////////////////////////////////////////////////////////
  250. /// @brief SPI_CCR Register Bit Definition
  251. ////////////////////////////////////////////////////////////////////////////////
  252. #define SPI_CCR_CPHA_Pos (0)
  253. #define SPI_CCR_CPHA (0x01U << SPI_CCR_CPHA_Pos) ///< Clock phase select bit
  254. #define SPI_CCR_CPOL_Pos (1)
  255. #define SPI_CCR_CPOL (0x01U << SPI_CCR_CPOL_Pos) ///< Clock polarity select bit
  256. #define SPI_CCR_LSBFE_Pos (2)
  257. #define SPI_CCR_LSBFE (0x01U << SPI_CCR_LSBFE_Pos) ///< LSI first enable bit
  258. #define SPI_CCR_SPILEN_Pos (3)
  259. #define SPI_CCR_SPILEN (0x01U << SPI_CCR_SPILEN_Pos) ///< SPI character length bit
  260. #define SPI_CCR_RXEDGE_Pos (4)
  261. #define SPI_CCR_RXEDGE (0x01U << SPI_CCR_RXEDGE_Pos) ///< Receive data edge select
  262. #define SPI_CCR_TXEDGE_Pos (5)
  263. #define SPI_CCR_TXEDGE (0x01U << SPI_CCR_TXEDGE_Pos) ///< Transmit data edge select
  264. #define SPI_CCR_CPHASEL_Pos (6)
  265. #define SPI_CCR_CPHASEL (0x01U << SPI_CCR_CPHASEL) ///< CPHA polarity select
  266. #define SPI_CCR_HISPD_Pos (7)
  267. #define SPI_CCR_HISPD (0x01U << SPI_CCR_HISPD) ///< High speed slave mode
  268. ////////////////////////////////////////////////////////////////////////////////
  269. /// @brief SPI_BRR Register Bit Definition
  270. ////////////////////////////////////////////////////////////////////////////////
  271. #define SPI_BRR_DIVF_Pos (0)
  272. #define SPI_BRR_DIVF (0xFFFFU << SPI_BRR_DIVF_Pos) ///< SPI baud rate control register for baud rate
  273. ////////////////////////////////////////////////////////////////////////////////
  274. /// @brief SPI_RDNR Register Bit Definition
  275. ////////////////////////////////////////////////////////////////////////////////
  276. #define SPI_RDNR_RDN_Pos (0)
  277. #define SPI_RDNR_RDN (0xFFFFU << SPI_RDNR_RDN_Pos) ///< The register is used to hold a count of to be received bytes in next receive process
  278. ////////////////////////////////////////////////////////////////////////////////
  279. /// @brief SPI_NSSR Register Bit Definition
  280. ////////////////////////////////////////////////////////////////////////////////
  281. #define SPI_NSSR_NSS_Pos (0)
  282. #define SPI_NSSR_NSS (0xFFU << SPI_NSSR_NSS_Pos) ///< Chip select output signal in Master mode
  283. ////////////////////////////////////////////////////////////////////////////////
  284. /// @brief SPI_ECR Register Bit Definition
  285. ////////////////////////////////////////////////////////////////////////////////
  286. #define SPI_ECR_EXTLEN_Pos (0)
  287. #define SPI_ECR_EXTLEN (0x1FU << SPI_ECR_EXTLEN_Pos) ///< control SPI data length
  288. ////////////////////////////////////////////////////////////////////////////////
  289. /// @brief I2S_CFGR Register Bit Definition
  290. ////////////////////////////////////////////////////////////////////////////////
  291. #define I2SCFGR_CLEAR_Mask ((u32)0xFE00F388)
  292. #define I2S_CFGR_CHLEN_Pos (0)
  293. #define I2S_CFGR_CHLEN (0x01U << I2S_CFGR_CHLEN_Pos) ///< Vocal tract length
  294. #define I2S_CFGR_DATLEN_Pos (1)
  295. #define I2S_CFGR_DATLEN_16 (0x00U << I2S_CFGR_DATLEN_Pos) ///< Audio data width 16
  296. #define I2S_CFGR_DATLEN_24 (0x01U << I2S_CFGR_DATLEN_Pos) ///< Audio data width 24
  297. #define I2S_CFGR_DATLEN_32 (0x02U << I2S_CFGR_DATLEN_Pos) ///< Audio data width 32
  298. #define I2S_CFGR_I2SSTD_Pos (4)
  299. #define I2S_CFGR_I2SSTD_PCM (0x00U << I2S_CFGR_I2SSTD_Pos) ///< I2S selection PCM standard
  300. #define I2S_CFGR_I2SSTD_MSB_R (0x01U << I2S_CFGR_I2SSTD_Pos) ///< I2S selection Right alignment (MSB) standard
  301. #define I2S_CFGR_I2SSTD_MSB_L (0x02U << I2S_CFGR_I2SSTD_Pos) ///< I2S selection Left aligned (MSB) standard
  302. #define I2S_CFGR_I2SSTD_Philips (0x03U << I2S_CFGR_I2SSTD_Pos) ///< I2S selection Philips standard
  303. #define I2S_CFGR_PCMSYNC_Pos (6)
  304. #define I2S_CFGR_PCMSYNC (0x01U << I2S_CFGR_PCMSYNC_Pos) ///< PCM frame synchronization mode
  305. #define I2S_CFGR_SPI_I2S_Pos (10)
  306. #define I2S_CFGR_SPI_I2S (0x01U << I2S_CFGR_SPI_I2S_Pos) ///< SPI/I2S module function selection
  307. #define I2S_CFGR_MCKOE_Pos (11)
  308. #define I2S_CFGR_MCKOE (0x01U << I2S_CFGR_MCKOE_Pos) ///< I2S master clock output enable
  309. #define I2S_CFGR_I2SDIV_Pos (16)
  310. #define I2S_CFGR_I2SDIV (0x1FFU << I2S_CFGR_I2SDIV_Pos) ///< The frequency division
  311. /// @}
  312. /// @}
  313. /// @}
  314. ////////////////////////////////////////////////////////////////////////////////
  315. #endif
  316. ////////////////////////////////////////////////////////////////////////////////