reg_sdio.h 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391
  1. ////////////////////////////////////////////////////////////////////////////////
  2. /// @file reg_sdio.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_SDIO_H
  20. #define __REG_SDIO_H
  21. // Files includes
  22. #include <stdint.h>
  23. #include <stdbool.h>
  24. //#include "types.h"
  25. #include "mm32_reg.h"
  26. //#if defined ( __CC_ARM )
  27. //#pragma anon_unions
  28. //#endif
  29. ////////////////////////////////////////////////////////////////////////////////
  30. /// @brief SDIO Base Address Definition
  31. ////////////////////////////////////////////////////////////////////////////////
  32. #define SDIO_BASE (0x40018000U) ///< Base Address: 0x40018000
  33. ////////////////////////////////////////////////////////////////////////////////
  34. /// @brief SDIO Register Structure Definition
  35. ////////////////////////////////////////////////////////////////////////////////
  36. typedef struct {
  37. __IO u32 MMC_CTRL; ///< SDIO transmit data register, offset: 0x00
  38. __IO u32 MMC_IO; ///< SDIO receive data register, offset: 0x04
  39. __IO u32 MMC_BYTECNTL; ///< SDIO current state register, offset: 0x08
  40. __IO u32 MMC_TR_BLOCKCNT; ///< SDIO interruput state register, offset: 0x0C
  41. __IO u32 MMC_CRCCTL; ///< SDIO interruput enable register, offset: 0x10
  42. __IO u32 CMD_CRC; ///< SDIO interruput control register, offset: 0x14
  43. __IO u32 DAT_CRCL; ///< SDIO global control register, offset: 0x18
  44. __IO u32 DAT_CRCH; ///< SDIO common control register, offset: 0x1C
  45. __IO u32 MMC_PORT; ///< SDIO baud rate control register, offset: 0x20
  46. __IO u32 MMC_INT_MASK; ///< SDIO receive data number register, offset: 0x24
  47. __IO u32 CLR_MMC_INT; ///< SDIO chip select register, offset: 0x28
  48. __IO u32 MMC_CARDSEL; ///< SDIO extand control register, offset: 0x2C
  49. __IO u32 MMC_SIG; ///< 0ffset: 0x30
  50. __IO u32 MMC_IO_MBCTL; ///< 0ffset: 0x34
  51. __IO u32 MMC_BLOCKCNT; ///< 0ffset: 0x38
  52. __IO u32 MMC_TIMEOUTCNT; ///< 0ffset: 0x3C
  53. __IO u32 CMD_BUF0; ///< 0ffset: 0x40
  54. __IO u32 CMD_BUF1; ///< 0ffset: 0x44
  55. __IO u32 CMD_BUF2; ///< 0ffset: 0x48
  56. __IO u32 CMD_BUF3; ///< 0ffset: 0x4C
  57. __IO u32 CMD_BUF4; ///< 0ffset: 0x50
  58. __IO u32 CMD_BUF5; ///< 0ffset: 0x54
  59. __IO u32 CMD_BUF6; ///< 0ffset: 0x58
  60. __IO u32 CMD_BUF7; ///< 0ffset: 0x5C
  61. __IO u32 CMD_BUF8; ///< 0ffset: 0x60
  62. __IO u32 CMD_BUF9; ///< 0ffset: 0x64
  63. __IO u32 CMD_BUF10; ///< 0ffset: 0x68
  64. __IO u32 CMD_BUF11; ///< 0ffset: 0x6C
  65. __IO u32 CMD_BUF12; ///< 0ffset: 0x70
  66. __IO u32 CMD_BUF13; ///< 0ffset: 0x74
  67. __IO u32 CMD_BUF14; ///< 0ffset: 0x78
  68. __IO u32 CMD_BUF15; ///< 0ffset: 0x7C
  69. __IO u32 BUF_CTL; ///< 0ffset: 0x80
  70. __IO u32 RESERVED[31]; ///< 0ffset: 0x84
  71. union {
  72. __IO u32 DATA_BUF0; ///< 0ffset: 0x100
  73. __IO u32 FIFO;
  74. };
  75. __IO u32 DATA_BUF1; ///< 0ffset: 0x104
  76. __IO u32 DATA_BUF2; ///< 0ffset: 0x108
  77. __IO u32 DATA_BUF3; ///< 0ffset: 0x10C
  78. __IO u32 DATA_BUF4; ///< 0ffset: 0x110
  79. } SDIO_TypeDef;
  80. ////////////////////////////////////////////////////////////////////////////////
  81. /// @brief SDIO type pointer Definition
  82. ////////////////////////////////////////////////////////////////////////////////
  83. #define SDIO ((SDIO_TypeDef*) SDIO_BASE)
  84. ////////////////////////////////////////////////////////////////////////////////
  85. /// @brief SDIO_MMC_CTRL Register Bit Definition
  86. ////////////////////////////////////////////////////////////////////////////////
  87. #define SDIO_MMC_CTRL_OPMSel_Pos (0)
  88. #define SDIO_MMC_CTRL_OPMSel (0x01U << SDIO_MMC_CTRL_OPMSel_Pos) ///< SD/MMC/SDIO port operation mode select
  89. #define SDIO_MMC_CTRL_SelSM_Pos (1)
  90. #define SDIO_MMC_CTRL_SelSM (0x01U << SDIO_MMC_CTRL_SelSM_Pos) ///< Select automatic mode
  91. #define SDIO_MMC_CTRL_OUTM_Pos (2)
  92. #define SDIO_MMC_CTRL_OUTM (0x01U << SDIO_MMC_CTRL_OUTM_Pos) ///< SD/MMC/SDIO port CMD line output driver mode selection Open drain
  93. #define SDIO_MMC_CTRL_CLKSP_Pos (3)
  94. #define SDIO_MMC_CTRL_CLKSP2 (0x00U << SDIO_MMC_CTRL_CLKSP_Pos) ///< SD/MMC/SDIO port CLK linespeedselection 1/2 baseclock
  95. #define SDIO_MMC_CTRL_CLKSP4 (0x01U << SDIO_MMC_CTRL_CLKSP_Pos) ///< SD/MMC/SDIO port CLK linespeedselection 1/4 baseclock
  96. #define SDIO_MMC_CTRL_CLKSP6 (0x02U << SDIO_MMC_CTRL_CLKSP_Pos) ///< SD/MMC/SDIO port CLK linespeedselection 1/6 baseclock
  97. #define SDIO_MMC_CTRL_CLKSP8 (0x03U << SDIO_MMC_CTRL_CLKSP_Pos) ///< SD/MMC/SDIO port CLK linespeedselection 1/8 baseclock
  98. #define SDIO_MMC_CTRL_CLKSP10 (0x04U << SDIO_MMC_CTRL_CLKSP_Pos) ///< SD/MMC/SDIO port CLK linespeedselection 1/10 baseclock
  99. #define SDIO_MMC_CTRL_CLKSP12 (0x05U << SDIO_MMC_CTRL_CLKSP_Pos) ///< SD/MMC/SDIO port CLK linespeedselection 1/12 baseclock
  100. #define SDIO_MMC_CTRL_CLKSP14 (0x06U << SDIO_MMC_CTRL_CLKSP_Pos) ///< SD/MMC/SDIO port CLK linespeedselection 1/14 baseclock
  101. #define SDIO_MMC_CTRL_CLKSP16 (0x07U << SDIO_MMC_CTRL_CLKSP_Pos) ///< SD/MMC/SDIO port CLK linespeedselection 1/16 baseclock
  102. #define SDIO_MMC_CTRL_SelPTSM_Pos (6)
  103. #define SDIO_MMC_CTRL_SelPTSM (0x01U << SDIO_MMC_CTRL_SelPTSM_Pos) ///< SelectSD/MMC/SDIO port transfer high speed mode
  104. #define SDIO_MMC_CTRL_DATWT_Pos (7)
  105. #define SDIO_MMC_CTRL_DATWT (0x01U << SDIO_MMC_CTRL_DATWT_Pos) ///< Definethe bus width of SD/MMC/SDIO port DAT line
  106. #define SDIO_MMC_CTRL_MDEN_Pos (8)
  107. #define SDIO_MMC_CTRL_MDEN (0x01U << SDIO_MMC_CTRL_MDEN_Pos) ///< SDIO mode enable
  108. #define SDIO_MMC_CTRL_INTEN_Pos (9)
  109. #define SDIO_MMC_CTRL_INTEN (0x01U << SDIO_MMC_CTRL_INTEN_Pos) ///< SDIO interrupt enale signal
  110. #define SDIO_MMC_CTRL_RDWTEN_Pos (10)
  111. #define SDIO_MMC_CTRL_RDWTEN (0x01U << SDIO_MMC_CTRL_RDWTEN_Pos) ///< SDIO read wait enable signal
  112. ////////////////////////////////////////////////////////////////////////////////
  113. /// @brief SDIO_MMC_IO Register Bit Definition
  114. ////////////////////////////////////////////////////////////////////////////////
  115. #define SDIO_MMC_IO_AUTODATTR_Pos (0)
  116. #define SDIO_MMC_IO_AUTODATTR (0x01U << SDIO_MMC_IO_AUTODATTR_Pos) ///< Set up automatic data transfer
  117. #define SDIO_MMC_IO_TRANSFDIR_Pos (1)
  118. #define SDIO_MMC_IO_TRANSFDIR (0x01U << SDIO_MMC_IO_TRANSFDIR_Pos) ///< Set the direction of data transfer
  119. #define SDIO_MMC_IO_AUTOTR_Pos (2)
  120. #define SDIO_MMC_IO_AUTOTR (0x01U << SDIO_MMC_IO_AUTOTR_Pos) ///< Set up automatic 8-bit/command/response transmission.
  121. #define SDIO_MMC_IO_RESPCMDSEL_Pos (3)
  122. #define SDIO_MMC_IO_RESPCMDSEL (0x01U << SDIO_MMC_IO_RESPCMDSEL_Pos) ///< Receive response
  123. #define SDIO_MMC_IO_CID_CSDRD_Pos (4)
  124. #define SDIO_MMC_IO_CID_CSDRD (0x01U << SDIO_MMC_IO_CID_CSDRD_Pos) ///< CID and CSD reads
  125. #define SDIO_MMC_IO_PCLKG_Pos (5)
  126. #define SDIO_MMC_IO_PCLKG (0x01U << SDIO_MMC_IO_PCLKG_Pos) ///< SD/MMC/SDIO port CLK line 8 empty clock generated
  127. #define SDIO_MMC_IO_ENRRESP_Pos (6)
  128. #define SDIO_MMC_IO_ENRRESP (0x01U << SDIO_MMC_IO_ENRRESP_Pos) ///< Enable automatic receiving of responses after a command
  129. #define SDIO_MMC_IO_AUTOCLKG_Pos (7)
  130. #define SDIO_MMC_IO_AUTOCLKG (0x01U << SDIO_MMC_IO_AUTOCLKG_Pos) ///< Enable automatic conversion of the 8 empty clock after a response/command or a single block of data
  131. #define SDIO_MMC_IO_CMDCH_Pos (8)
  132. #define SDIO_MMC_IO_CMDCH (0x01U << SDIO_MMC_IO_CMDCH_Pos) ///< SDIO mode enable
  133. #define SDIO_MMC_IO_CMDAF_Pos (9)
  134. #define SDIO_MMC_IO_CMDAF (0x01U << SDIO_MMC_IO_CMDAF_Pos) ///< SDIO CMD12 / IO abort flag
  135. ////////////////////////////////////////////////////////////////////////////////
  136. /// @brief SDIO_MMC_BYTECNTL Register Bit Definition
  137. ////////////////////////////////////////////////////////////////////////////////
  138. #define SDIO_MMC_BYTECNTL_CNT (0xFFFFU) ///< Data transfer byte count register
  139. ////////////////////////////////////////////////////////////////////////////////
  140. /// @brief SDIO_MMC_TR_BLOCKCNT Register Bit Definition
  141. ////////////////////////////////////////////////////////////////////////////////
  142. #define SDIO_MMC_TR_BLOCKCNT_CNT (0xFFFFU) ///< The value of the counter that completes the transfer when multiple blocks are transferred.
  143. ////////////////////////////////////////////////////////////////////////////////
  144. /// @brief SDIO_MMC_CRCCTL Register Bit Definition
  145. ////////////////////////////////////////////////////////////////////////////////
  146. #define SDIO_MMC_CRCCTL_DAT_CRCE_Pos (0)
  147. #define SDIO_MMC_CRCCTL_DAT_CRCE (0x01U << SDIO_MMC_CRCCTL_DAT_CRCE_Pos) ///< DAT CRC error
  148. #define SDIO_MMC_CRCCTL_CMD_CRCE_Pos (1)
  149. #define SDIO_MMC_CRCCTL_CMD_CRCE (0x01U << SDIO_MMC_CRCCTL_CMD_CRCE_Pos) ///< CMD CRC error
  150. #define SDIO_MMC_CRCCTL_DAT_CRCS_Pos (2)
  151. #define SDIO_MMC_CRCCTL_DAT_CRCS (0x03U << SDIO_MMC_CRCCTL_DAT_CRCS_Pos) ///< DAT CRC selection
  152. #define SDIO_MMC_CRCCTL_ENRDMB_Pos (4)
  153. #define SDIO_MMC_CRCCTL_ENRDMB (0x01U << SDIO_MMC_CRCCTL_ENRDMB_Pos) ///< Enable reading multiple blocks of data before responding
  154. #define SDIO_MMC_CRCCTL_ENCHK_Pos (5)
  155. #define SDIO_MMC_CRCCTL_ENCHK (0x01U << SDIO_MMC_CRCCTL_ENCHK_Pos) ///< Enable automatic checking
  156. #define SDIO_MMC_CRCCTL_DAT_CRCEN_Pos (6)
  157. #define SDIO_MMC_CRCCTL_DAT_CRCEN (0x01U << SDIO_MMC_CRCCTL_DAT_CRCEN_Pos) ///< SD/MMC/SDIO PORT DAT line CRC circuit enablement
  158. #define SDIO_MMC_CRCCTL_CMD_CRCEN_Pos (7)
  159. #define SDIO_MMC_CRCCTL_CMD_CRCEN (0x01U << SDIO_MMC_CRCCTL_CMD_CRCEN_Pos) ///< SD/MMC/SDIO port CMD line CRC circuit enablement
  160. ////////////////////////////////////////////////////////////////////////////////
  161. /// @brief SDIO_CMD_CRC Register Bit Definition
  162. ////////////////////////////////////////////////////////////////////////////////
  163. #define SDIO_CMD_CRC_CMD_CRCV (0x7FU) ///< CMD_CRCV register value
  164. ////////////////////////////////////////////////////////////////////////////////
  165. /// @brief SDIO_DAT_CRCL Register Bit Definition
  166. ////////////////////////////////////////////////////////////////////////////////
  167. #define SDIO_DAT_CRCL_DAT_CRCLV (0xFFU) ///< CMD_CRCV low register value
  168. ////////////////////////////////////////////////////////////////////////////////
  169. /// @brief SDIO_DAT_CRCH Register Bit Definition
  170. ////////////////////////////////////////////////////////////////////////////////
  171. #define SDIO_DAT_CRCL_DAT_CRCHV (0xFFU) ///< CMD_CRCV high register value
  172. ////////////////////////////////////////////////////////////////////////////////
  173. /// @brief SDIO_MMC_PORT Register Bit Definition
  174. ////////////////////////////////////////////////////////////////////////////////
  175. #define SDIO_MMC_PORT_NTCR_Pos (0)
  176. #define SDIO_MMC_PORT_NTCR (0x0FU << SDIO_MMC_PORT_NTCR_Pos) ///< Ncr timeout count register
  177. #define SDIO_MMC_PORT_AUTONTEN_Pos (4)
  178. #define SDIO_MMC_PORT_AUTONTEN (0x01U << SDIO_MMC_PORT_AUTONTEN_Pos) ///< Automatic Ncr timer output enablement
  179. #define SDIO_MMC_PORT_PDATS_Pos (5)
  180. #define SDIO_MMC_PORT_PDATS (0x01U << SDIO_MMC_PORT_PDATS_Pos) ///< SD/MMC/SDIO port DAT line signal
  181. #define SDIO_MMC_PORT_PCMDS_Pos (6)
  182. #define SDIO_MMC_PORT_PCMDS (0x01U << SDIO_MMC_PORT_PCMDS_Pos) ///< SD/MMC/SDIO port CMD line signal
  183. #define SDIO_MMC_PORT_PCLKS_Pos (7)
  184. #define SDIO_MMC_PORT_PCLKS (0x01U << SDIO_MMC_PORT_PCLKS_Pos) ///< SD/MMC/SDIO port CLK line signal
  185. ////////////////////////////////////////////////////////////////////////////////
  186. /// @brief SDIO_MMC_INT_MASK Register Bit Definition
  187. ////////////////////////////////////////////////////////////////////////////////
  188. #define SDIO_MMC_INT_MASK_CMDDINT_Pos (0)
  189. #define SDIO_MMC_INT_MASK_CMDDINT (0x01U << SDIO_MMC_INT_MASK_CMDDINT_Pos) ///<CMD completes interrupt shielding
  190. #define SDIO_MMC_INT_MASK_DATDINT_Pos (1)
  191. #define SDIO_MMC_INT_MASK_DATDINT (0x01U << SDIO_MMC_INT_MASK_DATDINT_Pos) ///< DAT completes interrupt shielding
  192. #define SDIO_MMC_INT_MASK_DATEINT_Pos (2)
  193. #define SDIO_MMC_INT_MASK_DATEINT (0x01U << SDIO_MMC_INT_MASK_DATEINT_Pos) ///< DAT CRC error interrupt masking
  194. #define SDIO_MMC_INT_MASK_CMDEINT_Pos (3)
  195. #define SDIO_MMC_INT_MASK_CMDEINT (0x01U << SDIO_MMC_INT_MASK_CMDEINT_Pos) ///< CMD CRC error interrupt masking
  196. #define SDIO_MMC_INT_MASK_MBDINTM_Pos (4)
  197. #define SDIO_MMC_INT_MASK_MBDINTM (0x01U << SDIO_MMC_INT_MASK_MBDINTM_Pos) ///< Multiple blocks complete interrupt shielding
  198. #define SDIO_MMC_INT_MASK_MBTINTM_Pos (5)
  199. #define SDIO_MMC_INT_MASK_MBTINTM (0x01U << SDIO_MMC_INT_MASK_MBTINTM_Pos) ///< Multiblock timeout interrupt shielding
  200. #define SDIO_MMC_INT_MASK_CRTINTM_Pos (6)
  201. #define SDIO_MMC_INT_MASK_CRTINTM (0x01U << SDIO_MMC_INT_MASK_CRTINTM_Pos) ///< Cmd and Resp Ncr timeout interrupt shielding
  202. #define SDIO_MMC_INT_MASK_CRCINTM_Pos (7)
  203. #define SDIO_MMC_INT_MASK_CRCINTM (0x01U << SDIO_MMC_INT_MASK_CRCINTM_Pos) ///< CRC status token error interrupt masking
  204. #define SDIO_MMC_INT_MASK_D1INTM_Pos (8)
  205. #define SDIO_MMC_INT_MASK_D1INTM (0x01U << SDIO_MMC_INT_MASK_D1INTM_Pos) ///< SDIO Data 1 Line Interrupt Mask
  206. ////////////////////////////////////////////////////////////////////////////////
  207. /// @brief SDIO_CLR_MMC_INT Register Bit Definition
  208. ////////////////////////////////////////////////////////////////////////////////
  209. #define SDIO_CLR_MMC_INT_CMDDMC_Pos (0)
  210. #define SDIO_CLR_MMC_INT_CMDDMC (0x01U << SDIO_CLR_MMC_INT_CMDDMC_Pos) ///< CMD completes interrupt mask bit
  211. #define SDIO_CLR_MMC_INT_DATDMC_Pos (1)
  212. #define SDIO_CLR_MMC_INT_DATDMC (0x01U << SDIO_CLR_MMC_INT_DATDMC_Pos) ///< DAT completes interrupt mask bit
  213. #define SDIO_CLR_MMC_INT_DATEMC_Pos (2)
  214. #define SDIO_CLR_MMC_INT_DATEMC (0x01U << SDIO_CLR_MMC_INT_DATEMC_Pos) ///< DAT CRC error interrupt mask bit
  215. #define SDIO_CLR_MMC_INT_CMDEMC_Pos (3)
  216. #define SDIO_CLR_MMC_INT_CMDEMC (0x01U << SDIO_CLR_MMC_INT_CMDEMC_Pos) ///< CMD CRC error interrupt mask bit
  217. #define SDIO_CLR_MMC_INT_MBDMC_Pos (4)
  218. #define SDIO_CLR_MMC_INT_MBDMC (0x01U << SDIO_CLR_MMC_INT_MBDMC_Pos) ///< Multi - block transmission completion interrupt mask bit
  219. #define SDIO_CLR_MMC_INT_MBTMC_Pos (5)
  220. #define SDIO_CLR_MMC_INT_MBTMC (0x01U << SDIO_CLR_MMC_INT_MBTMC_Pos) ///< Multiblock transmission timeout interrupt mask bit
  221. #define SDIO_CLR_MMC_INT_CRNTMC_Pos (6)
  222. #define SDIO_CLR_MMC_INT_CRNTMC (0x01U << SDIO_CLR_MMC_INT_CRNTMC_Pos) ///< Command and response Ncr timeout interrupt mask bit
  223. #define SDIO_CLR_MMC_INT_CRCEMC_Pos (7)
  224. #define SDIO_CLR_MMC_INT_CRCEMC (0x01U << SDIO_CLR_MMC_INT_CRCEMC_Pos) ///< CRC status error marks the interrupt mask bit
  225. #define SDIO_CLR_MMC_INT_D1MC_Pos (8)
  226. #define SDIO_CLR_MMC_INT_D1MC (0x01U << SDIO_CLR_MMC_INT_D1MC_Pos) ///< SDIO DatA1 line interrupt flag/clear bit
  227. #define SDIO_CLR_MMC_INT_MASK (0XFFU)
  228. ////////////////////////////////////////////////////////////////////////////////
  229. /// @brief SDIO_MMC_CARDSEL Register Bit Definition
  230. ////////////////////////////////////////////////////////////////////////////////
  231. #define SDIO_MMC_CARDSEL_TSCALE_Pos (0)
  232. #define SDIO_MMC_CARDSEL_TSCALE (0x01U << SDIO_MMC_CARDSEL_TSCALE_Pos) ///< SD/MMC/SDIO clock frequency division factor (based on 1MHz
  233. #define SDIO_MMC_CARDSEL_ENPCLK_Pos (6)
  234. #define SDIO_MMC_CARDSEL_ENPCLK (0x01U << SDIO_MMC_CARDSEL_ENPCLK_Pos) ///< Enabling card's SD/MMC/SDIO port CLK clock
  235. #define SDIO_MMC_CARDSEL_CTREN_Pos (7)
  236. #define SDIO_MMC_CARDSEL_CTREN (0x01U << SDIO_MMC_CARDSEL_CTREN_Pos) ///< SD/MMC/SDIO controller enablement bit
  237. #define SDIO_MMC_CARDSEL_MASK (0XFFU)
  238. ////////////////////////////////////////////////////////////////////////////////
  239. /// @brief SDIO_MMC_SIQ Register Bit Definition
  240. ////////////////////////////////////////////////////////////////////////////////
  241. #define SDIO_MMC_SIQ_PDAT0S_Pos (0)
  242. #define SDIO_MMC_SIQ_PDAT0S (0x01U << SDIO_MMC_SIQ_PDAT0S_Pos) ///< SD/MMC/SDIO port DAT0 line signal
  243. #define SDIO_MMC_SIQ_PDAT1S_Pos (1)
  244. #define SDIO_MMC_SIQ_PDAT1S (0x01U << SDIO_MMC_SIQ_PDAT1S_Pos) ///< SD/MMC/SDIO port DAT1 line signal
  245. #define SDIO_MMC_SIQ_PDAT2S_Pos (2)
  246. #define SDIO_MMC_SIQ_PDAT2S (0x01U << SDIO_MMC_SIQ_PDAT2S_Pos) ///< SD/MMC/SDIO port DAT2 line signal
  247. #define SDIO_MMC_SIQ_PDAT3S_Pos (3)
  248. #define SDIO_MMC_SIQ_PDAT3S (0x01U << SDIO_MMC_SIQ_PDAT3S_Pos) ///< SD/MMC/SDIO port DAT3 line signal
  249. #define SDIO_MMC_SIQ_CRC_status_Pos (4)
  250. #define SDIO_MMC_SIQ_CRC_status (0x07U << SDIO_MMC_SIQ_CRC_status_Pos) ///< CRC state
  251. #define SDIO_MMC_SIQ_PCMDS_Pos (7)
  252. #define SDIO_MMC_SIQ_PCMDS (0x01U << SDIO_MMC_SIQ_PCMDS_Pos) ///< SD/MMC/SDIO port CMD line signal
  253. ////////////////////////////////////////////////////////////////////////////////
  254. /// @brief SDIO_MMC_IO_MBCTL Register Bit Definition
  255. ////////////////////////////////////////////////////////////////////////////////
  256. #define SDIO_MMC_IO_MBCTL_SPMBDTR_Pos (0)
  257. #define SDIO_MMC_IO_MBCTL_SPMBDTR (0x01U << SDIO_MMC_IO_MBCTL_SPMBDTR_Pos) ///< Set the SD/MMC/SDIO port to automatically multiblock data transfer bit
  258. #define SDIO_MMC_IO_MBCTL_SMBDTD_Pos (1)
  259. #define SDIO_MMC_IO_MBCTL_SMBDTD (0x01U << SDIO_MMC_IO_MBCTL_SMBDTD_Pos) //< Multi - block data transfer direction selection bit
  260. #define SDIO_MMC_IO_MBCTL_PAUTOTR_Pos (2)
  261. #define SDIO_MMC_IO_MBCTL_PAUTOTR (0x01U << SDIO_MMC_IO_MBCTL_PAUTOTR_Pos) ///< Set up SD/MMC/SDIO port automatic command and multi - block data transfer
  262. #define SDIO_MMC_IO_MBCTL_PCLKP_Pos (3)
  263. #define SDIO_MMC_IO_MBCTL_PCLKP (0x01U << SDIO_MMC_IO_MBCTL_PCLKP_Pos) ///< SD/MMC/SDIO port CLK line polarity selection bit
  264. #define SDIO_MMC_IO_MBCTL_BTSSel_Pos (4)
  265. #define SDIO_MMC_IO_MBCTL_BTSSel (0x03U << SDIO_MMC_SIQ_CRC_status_Pos) ///< SD/MMC/SDIO BUSY Timeout level selects bits
  266. #define SDIO_MMC_IO_MBCTL_BTSSel_2 (0x02U << SDIO_MMC_SIQ_CRC_status_Pos) ///< SD/MMC/SDIO BUSY Timeout level selects bits
  267. #define SDIO_MMC_IO_MBCTL_NTSSel_Pos (6)
  268. #define SDIO_MMC_IO_MBCTL_NTSSel (0x03U << SDIO_MMC_IO_MBCTL_NTSSel_Pos) ///< SD/MMC/SDIO NAC timeout level selection bit
  269. ////////////////////////////////////////////////////////////////////////////////
  270. /// @brief SDIO_MMC_BLOCKCNT Register Bit Definition
  271. ////////////////////////////////////////////////////////////////////////////////
  272. #define SDIO_MMC_BLOCKCNT_EN (0xFFFFU) ///< Block count register
  273. ////////////////////////////////////////////////////////////////////////////////
  274. /// @brief SDIO_MMC_TIMEOUTCNT Register Bit Definition
  275. ////////////////////////////////////////////////////////////////////////////////
  276. #define SDIO_MMC_TIMEOUTCNT_DTCNT (0xFFU) ///< Data transfer timeout count register
  277. ////////////////////////////////////////////////////////////////////////////////
  278. /// @brief SDIO_CMD_BUF0 Register Bit Definition
  279. ////////////////////////////////////////////////////////////////////////////////
  280. #define SDIO_CMD_BUF0_DAT (0xFFU) ///< Cmd_buf0 byte mapping bit
  281. ////////////////////////////////////////////////////////////////////////////////
  282. /// @brief SDIO_CMD_BUF1 Register Bit Definition
  283. ////////////////////////////////////////////////////////////////////////////////
  284. #define SDIO_CMD_BUF1_DAT (0xFFU) ///< Cmd_buf1 byte mapping bit
  285. ////////////////////////////////////////////////////////////////////////////////
  286. /// @brief SDIO_CMD_BUF2 Register Bit Definition
  287. ////////////////////////////////////////////////////////////////////////////////
  288. #define SDIO_CMD_BUF2_DAT (0xFFU) ///< Cmd_buf2 byte mapping bit
  289. ////////////////////////////////////////////////////////////////////////////////
  290. /// @brief SDIO_CMD_BUF3 Register Bit Definition
  291. ////////////////////////////////////////////////////////////////////////////////
  292. #define SDIO_CMD_BUF3_DAT (0xFFU) ///< Cmd_buf3 byte mapping bit
  293. ////////////////////////////////////////////////////////////////////////////////
  294. /// @brief SDIO_CMD_BUF4 Register Bit Definition
  295. ////////////////////////////////////////////////////////////////////////////////
  296. #define SDIO_CMD_BUF4_DAT (0xFFU) ///< Cmd_buf4 byte mapping bit
  297. ////////////////////////////////////////////////////////////////////////////////
  298. /// @brief SDIO_CMD_BUF5 Register Bit Definition
  299. ////////////////////////////////////////////////////////////////////////////////
  300. #define SDIO_CMD_BUF5_DAT (0xFFU) ///< Cmd_buf5 byte mapping bit
  301. ////////////////////////////////////////////////////////////////////////////////
  302. /// @brief SDIO_CMD_BUF6 Register Bit Definition
  303. ////////////////////////////////////////////////////////////////////////////////
  304. #define SDIO_CMD_BUF6_DAT (0xFFU) ///< Cmd_buf6 byte mapping bit
  305. ////////////////////////////////////////////////////////////////////////////////
  306. /// @brief SDIO_CMD_BUF7 Register Bit Definition
  307. ////////////////////////////////////////////////////////////////////////////////
  308. #define SDIO_CMD_BUF7_DAT (0xFFU) ///< Cmd_buf7 byte mapping bit
  309. ////////////////////////////////////////////////////////////////////////////////
  310. /// @brief SDIO_CMD_BUF8 Register Bit Definition
  311. ////////////////////////////////////////////////////////////////////////////////
  312. #define SDIO_CMD_BUF8_DAT (0xFFU) ///< Cmd_buf8 byte mapping bit
  313. ////////////////////////////////////////////////////////////////////////////////
  314. /// @brief SDIO_CMD_BUF9 Register Bit Definition
  315. ////////////////////////////////////////////////////////////////////////////////
  316. #define SDIO_CMD_BUF9_DAT (0xFFU) ///< Cmd_buf9 byte mapping bit
  317. ////////////////////////////////////////////////////////////////////////////////
  318. /// @brief SDIO_CMD_BUF10 Register Bit Definition
  319. ////////////////////////////////////////////////////////////////////////////////
  320. #define SDIO_CMD_BUF10_DAT (0xFFU) ///< Cmd_buf10 byte mapping bit
  321. ////////////////////////////////////////////////////////////////////////////////
  322. /// @brief SDIO_CMD_BUF11 Register Bit Definition
  323. ////////////////////////////////////////////////////////////////////////////////
  324. #define SDIO_CMD_BUF11_DAT (0xFFU) ///< Cmd_buf11 byte mapping bit
  325. ////////////////////////////////////////////////////////////////////////////////
  326. /// @brief SDIO_CMD_BUF12 Register Bit Definition
  327. ////////////////////////////////////////////////////////////////////////////////
  328. #define SDIO_CMD_BUF12_DAT (0xFFU) ///< Cmd_buf12 byte mapping bit
  329. ////////////////////////////////////////////////////////////////////////////////
  330. /// @brief SDIO_CMD_BUF13 Register Bit Definition
  331. ////////////////////////////////////////////////////////////////////////////////
  332. #define SDIO_CMD_BUF13_DAT (0xFFU) ///< Cmd_buf13 byte mapping bit
  333. ////////////////////////////////////////////////////////////////////////////////
  334. /// @brief SDIO_CMD_BUF14 Register Bit Definition
  335. ////////////////////////////////////////////////////////////////////////////////
  336. #define SDIO_CMD_BUF14_DAT (0xFFU) ///< Cmd_buf14 byte mapping bit
  337. ////////////////////////////////////////////////////////////////////////////////
  338. /// @brief SDIO_CMD_BUF15 Register Bit Definition
  339. ////////////////////////////////////////////////////////////////////////////////
  340. #define SDIO_CMD_BUF15_DAT (0xFFU) ///< Cmd_buf15 byte mapping bit
  341. ////////////////////////////////////////////////////////////////////////////////
  342. /// @brief SDIO_BUF_CTLL Register Bit Definition
  343. ////////////////////////////////////////////////////////////////////////////////
  344. #define SDIO_BUF_CTLL_DBF_Pos (0)
  345. #define SDIO_BUF_CTLL_DBF (0x01U << SDIO_BUF_CTLL_DBF_Pos) ///< The data cache is full
  346. #define SDIO_BUF_CTLL_DBE_Pos (1)
  347. #define SDIO_BUF_CTLL_DBE (0x01U << SDIO_BUF_CTLL_DBE_Pos) ///< Data buff is null
  348. #define SDIO_BUF_CTLL_DBML_Pos (2)
  349. #define SDIO_BUF_CTLL_DBML (0xFFU << SDIO_BUF_CTLL_DBML_Pos) ////< Data buff tags
  350. #define SDIO_BUF_CTLL_DMAHEN_Pos (10)
  351. #define SDIO_BUF_CTLL_DMAHEN (0x01U << SDIO_BUF_CTLL_DMAHEN_Pos) ///< DMA hardware interface enablement
  352. #define SDIO_BUF_CTLL_SBAD_Pos (11)
  353. #define SDIO_BUF_CTLL_SBAD (0x01U << SDIO_BUF_CTLL_SBAD_Pos) ///< Sets the access direction of the buff
  354. #define SDIO_BUF_CTLL_DFIFOSM_Pos (12)
  355. #define SDIO_BUF_CTLL_DFIFOSM (0x01U << SDIO_BUF_CTLL_DFIFOSM_Pos) ///< Data FIFO status signal shielding bit
  356. #define SDIO_BUF_CTLL_DRM_Pos (14)
  357. #define SDIO_BUF_CTLL_DRM (0x01U << SDIO_BUF_CTLL_DRM_Pos) ///< DMA request masking
  358. #define SDIO_BUF_CTLL_DBFEN_Pos (15)
  359. #define SDIO_BUF_CTLL_DBFEN (0x01U << SDIO_BUF_CTLL_DBFEN_Pos) ///< Data Buf empty enable bit
  360. ////////////////////////////////////////////////////////////////////////////////
  361. /// @brief SDIO_DATA_BUF Register Bit Definition
  362. ////////////////////////////////////////////////////////////////////////////////
  363. #define SDIO_DATA_BUF_DB (0xFFFFFFFFU) ///< Data buffer
  364. /// @}
  365. /// @}
  366. /// @}
  367. ////////////////////////////////////////////////////////////////////////////////
  368. #endif
  369. ////////////////////////////////////////////////////////////////////////////////