reg_usb_otg_fs.h 60 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923
  1. ////////////////////////////////////////////////////////////////////////////////
  2. /// @file reg_usb_otg_fs.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_USB_OTG_FS_H
  20. #define __REG_USB_OTG_FS_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 USB Base Address Definition
  30. ////////////////////////////////////////////////////////////////////////////////
  31. #define USB_OTG_FS_BASE (AHB2PERIPH_BASE + 0x0000) ///< Base Address: 0x50000000
  32. ////////////////////////////////////////////////////////////////////////////////
  33. /// @brief USB Register Structure Definition
  34. ////////////////////////////////////////////////////////////////////////////////
  35. typedef struct {
  36. __IO u32 PER_ID; ///< Peripheral ID register offset: 0x00
  37. __IO u32 ID_COMP; ///< Peripheral ID complement register offset: 0x04
  38. __IO u32 REV; ///< Peripheral revision register offset: 0x08
  39. __IO u32 ADD_INFO; ///< Peripheral additional info register offset: 0x0C
  40. __IO u32 OTG_ISTAT; ///< OTG Interrupt Status Register offset: 0x10
  41. __IO u32 OTG_ICTRL; ///< OTG Interrupt Control Register offset: 0x14
  42. __IO u32 OTG_STAT; ///< OTG Status Register offset: 0x18
  43. __IO u32 OTG_CTRL; ///< OTG Control register offset: 0x1C
  44. __IO u32 RESERVED0[24]; ///< Reserved offset: 0x20
  45. __IO u32 INT_STAT; ///< Interrupt status register offset: 0x80
  46. __IO u32 INT_ENB; ///< Interrupt enable register offset: 0x84
  47. __IO u32 ERR_STAT; ///< Error interrupt status register offset: 0x88
  48. __IO u32 ERR_ENB; ///< Error interrupt enable register offset: 0x8C
  49. __IO u32 STAT; ///< Status register offset: 0x90
  50. __IO u32 CTL; ///< Control register offset: 0x94
  51. __IO u32 ADDR; ///< Address register offset: 0x98
  52. __IO u32 BDT_PAGE_01; ///< BDT page register 1 offset: 0x9C
  53. __IO u32 FRM_NUML; ///< Frame number register offset: 0xA0
  54. __IO u32 FRM_NUMH; ///< Frame number register offset: 0xA4
  55. __IO u32 TOKEN; ///< Token register offset: 0xA8
  56. __IO u32 SOF_THLD; ///< SOF threshold register offset: 0xAC
  57. __IO u32 BDT_PAGE_02; ///< BDT page register 2 offset: 0xB0
  58. __IO u32 BDT_PAGE_03; ///< BDT page register 3 offset: 0xB4
  59. __IO u32 RESERVED1; ///< Reserved offset: 0xB8
  60. __IO u32 RESERVED2; ///< Reserved offset: 0xBC
  61. __IO u32 EP_CTL[16]; ///< Endpoint control register offset: 0xC0
  62. } USB_OTG_FS_TypeDef;
  63. ////////////////////////////////////////////////////////////////////////////////
  64. /// @brief USBD type pointer Definition
  65. ////////////////////////////////////////////////////////////////////////////////
  66. #define USB_OTG_FS ((USB_OTG_FS_TypeDef*) USB_OTG_FS_BASE )
  67. ////////////////////////////////////////////////////////////////////////////////
  68. /// @brief OTG_FS_PER_ID Register Bit Definition
  69. ////////////////////////////////////////////////////////////////////////////////
  70. #define OTG_FS_PER_ID_ID_Pos (0)
  71. #define OTG_FS_PER_ID_ID (0x3FU << OTG_FS_PER_ID_ID_Pos)
  72. ////////////////////////////////////////////////////////////////////////////////
  73. /// @brief OTG_FS_ID_COMP Register Bit Definition
  74. ////////////////////////////////////////////////////////////////////////////////
  75. #define OTG_FS_ID_COMP_NID_Pos (0)
  76. #define OTG_FS_ID_COMP_NID (0x3FU << OTG_FS_ID_COMP_NID_Pos)
  77. ////////////////////////////////////////////////////////////////////////////////
  78. /// @brief OTG_FS_REV Register Bit Definition
  79. ////////////////////////////////////////////////////////////////////////////////
  80. #define OTG_FS_REV_REV_Pos (0)
  81. #define OTG_FS_REV_REV (0xFFU << OTG_FS_REV_REV_Pos)
  82. ////////////////////////////////////////////////////////////////////////////////
  83. /// @brief OTG_FS_ADD_INFO Register Bit Definition
  84. ////////////////////////////////////////////////////////////////////////////////
  85. #define OTG_FS_ADD_INFO_HOST_Pos (0)
  86. #define OTG_FS_ADD_INFO_HOST (0x01U << OTG_FS_ADD_INFO_HOST_Pos)
  87. #define OTG_FS_ADD_INFO_IRQ_NUM_Pos (3)
  88. #define OTG_FS_ADD_INFO_IRQ_NUM (0x1FU << OTG_FS_ADD_INFO_IRQ_NUM_Pos)
  89. ////////////////////////////////////////////////////////////////////////////////
  90. /// @brief OTG_FS_OTG_ISTAT Register Bit Definition
  91. ////////////////////////////////////////////////////////////////////////////////
  92. #define OTG_FS_OTG_ISTAT_A_VBUS_VLD_CHG_Pos (0)
  93. #define OTG_FS_OTG_ISTAT_A_VBUS_VLD_CHG (0x01U << OTG_FS_OTG_ISTAT_A_VBUS_VLD_CHG_Pos)
  94. #define OTG_FS_OTG_ISTAT_B_SESS_END_CHG_Pos (2)
  95. #define OTG_FS_OTG_ISTAT_B_SESS_END_CHG (0x01U << OTG_FS_OTG_ISTAT_B_SESS_END_CHG_Pos)
  96. #define OTG_FS_OTG_ISTAT_SESS_VLD_CHG_Pos (3)
  97. #define OTG_FS_OTG_ISTAT_SESS_VLD_CHG (0x01U << OTG_FS_OTG_ISTAT_SESS_VLD_CHG_Pos)
  98. #define OTG_FS_OTG_ISTAT_LINE_STATE_CHG_Pos (5)
  99. #define OTG_FS_OTG_ISTAT_LINE_STATE_CHG (0x01U << OTG_FS_OTG_ISTAT_LINE_STATE_CHG_Pos)
  100. #define OTG_FS_OTG_ISTAT_1_MSEC_Pos (6)
  101. #define OTG_FS_OTG_ISTAT_1_MSEC (0x01U << OTG_FS_OTG_ISTAT_1_MSEC_Pos)
  102. #define OTG_FS_OTG_ISTAT_ID_CHG_Pos (7)
  103. #define OTG_FS_OTG_ISTAT_ID_CHG (0x01U << OTG_FS_OTG_ISTAT_ID_CHG_Pos)
  104. ////////////////////////////////////////////////////////////////////////////////
  105. /// @brief OTG_FS_OTG_ICTRL Register Bit Definition
  106. ////////////////////////////////////////////////////////////////////////////////
  107. #define OTG_FS_OTG_ICTRL_A_VBUS_VLD_EN_Pos (0)
  108. #define OTG_FS_OTG_ICTRL_A_VBUS_VLD_EN (0x01U << OTG_FS_OTG_ICTRL_A_VBUS_VLD_EN_Pos)
  109. #define OTG_FS_OTG_ICTRL_B_SESS_END_EN_Pos (2)
  110. #define OTG_FS_OTG_ICTRL_B_SESS_END_EN (0x01U << OTG_FS_OTG_ICTRL_B_SESS_END_EN_Pos)
  111. #define OTG_FS_OTG_ICTRL_SESS_VLD_EN_Pos (3)
  112. #define OTG_FS_OTG_ICTRL_SESS_VLD_EN (0x01U << OTG_FS_OTG_ICTRL_SESS_VLD_EN_Pos)
  113. #define OTG_FS_OTG_ICTRL_LINE_STATE_EN_Pos (5)
  114. #define OTG_FS_OTG_ICTRL_LINE_STATE_EN (0x01U << OTG_FS_OTG_ICTRL_LINE_STATE_EN_Pos)
  115. #define OTG_FS_OTG_ICTRL_1_MSEC_EN_Pos (6)
  116. #define OTG_FS_OTG_ICTRL_1_MSEC_EN (0x01U << OTG_FS_OTG_ICTRL_1_MSEC_EN_Pos)
  117. #define OTG_FS_OTG_ICTRL_ID_EN_Pos (7)
  118. #define OTG_FS_OTG_ICTRL_ID_EN (0x01U << OTG_FS_OTG_ICTRL_ID_EN_Pos)
  119. ////////////////////////////////////////////////////////////////////////////////
  120. /// @brief OTG_FS_OTG_STAT Register Bit Definition
  121. ////////////////////////////////////////////////////////////////////////////////
  122. #define OTG_FS_OTG_STAT_A_VBUS_VLD_Pos (0)
  123. #define OTG_FS_OTG_STAT_A_VBUS_VLD (0x01U << OTG_FS_OTG_STAT_A_VBUS_VLD_Pos)
  124. #define OTG_FS_OTG_STAT_B_SESS_END_Pos (2)
  125. #define OTG_FS_OTG_STAT_B_SESS_END (0x01U << OTG_FS_OTG_STAT_B_SESS_END_Pos)
  126. #define OTG_FS_OTG_STAT_SESS_VLD_Pos (3)
  127. #define OTG_FS_OTG_STAT_SESS_VLD (0x01U << OTG_FS_OTG_STAT_SESS_VLD_Pos)
  128. #define OTG_FS_OTG_STAT_LINE_STATE_STABLE_Pos (5)
  129. #define OTG_FS_OTG_STAT_LINE_STATE_STABLE (0x01U << OTG_FS_OTG_STAT_LINE_STATE_STABLE_Pos)
  130. #define OTG_FS_OTG_STAT_1_MSEC_Pos (6)
  131. #define OTG_FS_OTG_STAT_1_MSEC (0x01U << OTG_FS_OTG_STAT_1_MSEC_Pos)
  132. #define OTG_FS_OTG_STAT_ID_Pos (7)
  133. #define OTG_FS_OTG_STAT_ID (0x01U << OTG_FS_OTG_STAT_ID_Pos)
  134. ////////////////////////////////////////////////////////////////////////////////
  135. /// @brief OTG_FS_OTG_CTRL Register Bit Definition
  136. ////////////////////////////////////////////////////////////////////////////////
  137. #define OTG_FS_OTG_CTRL_VBUS_DSCHG_Pos (0)
  138. #define OTG_FS_OTG_CTRL_VBUS_DSCHG (0x01U << OTG_FS_OTG_CTRL_VBUS_DSCHG_Pos)
  139. #define OTG_FS_OTG_CTRL_VBUS_CHG_Pos (1)
  140. #define OTG_FS_OTG_CTRL_VBUS_CHG (0x01U << OTG_FS_OTG_CTRL_VBUS_CHG_Pos)
  141. #define OTG_FS_OTG_CTRL_OTG_EN_Pos (2)
  142. #define OTG_FS_OTG_CTRL_OTG_EN (0x01U << OTG_FS_OTG_CTRL_OTG_EN_Pos)
  143. #define OTG_FS_OTG_CTRL_VBUS_ON_Pos (3)
  144. #define OTG_FS_OTG_CTRL_VBUS_ON (0x01U << OTG_FS_OTG_CTRL_VBUS_ON_Pos)
  145. #define OTG_FS_OTG_CTRL_DM_LOW_Pos (4)
  146. #define OTG_FS_OTG_CTRL_DM_LOW (0x01U << OTG_FS_OTG_CTRL_DM_LOW_Pos)
  147. #define OTG_FS_OTG_CTRL_DP_LOW_Pos (5)
  148. #define OTG_FS_OTG_CTRL_DP_LOW (0x01U << OTG_FS_OTG_CTRL_DP_LOW_Pos)
  149. #define OTG_FS_OTG_CTRL_DM_HIGH_Pos (6)
  150. #define OTG_FS_OTG_CTRL_DM_HIGH (0x01U << OTG_FS_OTG_CTRL_DM_HIGH_Pos)
  151. #define OTG_FS_OTG_CTRL_DP_HIGH_Pos (7)
  152. #define OTG_FS_OTG_CTRL_DP_HIGH (0x01U << OTG_FS_OTG_CTRL_DP_HIGH_Pos)
  153. ////////////////////////////////////////////////////////////////////////////////
  154. /// @brief OTG_FS_INT_STAT Register Bit Definition
  155. ////////////////////////////////////////////////////////////////////////////////
  156. #define OTG_FS_INT_STAT_USB_RST_Pos (0)
  157. #define OTG_FS_INT_STAT_USB_RST (0x01U << OTG_FS_INT_STAT_USB_RST_Pos)
  158. #define OTG_FS_INT_STAT_ERROR_Pos (1)
  159. #define OTG_FS_INT_STAT_ERROR (0x01U << OTG_FS_INT_STAT_ERROR_Pos)
  160. #define OTG_FS_INT_STAT_SOF_TOK_Pos (2)
  161. #define OTG_FS_INT_STAT_SOF_TOK (0x01U << OTG_FS_INT_STAT_SOF_TOK_Pos)
  162. #define OTG_FS_INT_STAT_TOK_DNE_Pos (3)
  163. #define OTG_FS_INT_STAT_TOK_DNE (0x01U << OTG_FS_INT_STAT_TOK_DNE_Pos)
  164. #define OTG_FS_INT_STAT_SLEEP_Pos (4)
  165. #define OTG_FS_INT_STAT_SLEEP (0x01U << OTG_FS_INT_STAT_SLEEP_Pos)
  166. #define OTG_FS_INT_STAT_RESUME_Pos (5)
  167. #define OTG_FS_INT_STAT_RESUME (0x01U << OTG_FS_INT_STAT_RESUME_Pos)
  168. #define OTG_FS_INT_STAT_ATTACH_Pos (6)
  169. #define OTG_FS_INT_STAT_ATTACH (0x01U << OTG_FS_INT_STAT_ATTACH_Pos)
  170. #define OTG_FS_INT_STAT_STALL_Pos (7)
  171. #define OTG_FS_INT_STAT_STALL (0x01U << OTG_FS_INT_STAT_STALL_Pos)
  172. ////////////////////////////////////////////////////////////////////////////////
  173. /// @brief OTG_FS_INT_ENB Register Bit Definition
  174. ////////////////////////////////////////////////////////////////////////////////
  175. #define OTG_FS_INT_ENB_USB_RST_EN_Pos (0)
  176. #define OTG_FS_INT_ENB_USB_RST_EN (0x01U << OTG_FS_INT_ENB_USB_RST_EN_Pos)
  177. #define OTG_FS_INT_ENB_ERROR_EN_Pos (1)
  178. #define OTG_FS_INT_ENB_ERROR_EN (0x01U << OTG_FS_INT_ENB_ERROR_EN_Pos)
  179. #define OTG_FS_INT_ENB_SOF_TOK_EN_Pos (2)
  180. #define OTG_FS_INT_ENB_SOF_TOK_EN (0x01U << OTG_FS_INT_ENB_SOF_TOK_EN_Pos)
  181. #define OTG_FS_INT_ENB_TOK_DNE_EN_Pos (3)
  182. #define OTG_FS_INT_ENB_TOK_DNE_EN (0x01U << OTG_FS_INT_ENB_TOK_DNE_EN_Pos)
  183. #define OTG_FS_INT_ENB_SLEEP_EN_Pos (4)
  184. #define OTG_FS_INT_ENB_SLEEP_EN (0x01U << OTG_FS_INT_ENB_SLEEP_EN_Pos)
  185. #define OTG_FS_INT_ENB_RESUME_EN_Pos (5)
  186. #define OTG_FS_INT_ENB_RESUME_EN (0x01U << OTG_FS_INT_ENB_RESUME_EN_Pos)
  187. #define OTG_FS_INT_ENB_ATTACH_EN_Pos (6)
  188. #define OTG_FS_INT_ENB_ATTACH_EN (0x01U << OTG_FS_INT_ENB_ATTACH_EN_Pos)
  189. #define OTG_FS_INT_ENB_STALL_EN_Pos (7)
  190. #define OTG_FS_INT_ENB_STALL_EN (0x01U << OTG_FS_INT_ENB_STALL_EN_Pos)
  191. ////////////////////////////////////////////////////////////////////////////////
  192. /// @brief OTG_FS_ERR_STAT Register Bit Definition
  193. ////////////////////////////////////////////////////////////////////////////////
  194. #define OTG_FS_ERR_STAT_PID_ERR_Pos (0)
  195. #define OTG_FS_ERR_STAT_PID_ERR (0x01U << OTG_FS_ERR_STAT_PID_ERR_Pos)
  196. #define OTG_FS_ERR_STAT_CRC5_EOF_Pos (1)
  197. #define OTG_FS_ERR_STAT_CRC5_EOF (0x01U << OTG_FS_ERR_STAT_CRC5_EOF_Pos)
  198. #define OTG_FS_ERR_STAT_CRC16_Pos (2)
  199. #define OTG_FS_ERR_STAT_CRC16 (0x01U << OTG_FS_ERR_STAT_CRC16_Pos)
  200. #define OTG_FS_ERR_STAT_DFN8_Pos (3)
  201. #define OTG_FS_ERR_STAT_DFN8 (0x01U << OTG_FS_ERR_STAT_DFN8_Pos)
  202. #define OTG_FS_ERR_STAT_BTO_ERR_Pos (4)
  203. #define OTG_FS_ERR_STAT_BTO_ERR (0x01U << OTG_FS_ERR_STAT_BTO_ERR_Pos)
  204. #define OTG_FS_ERR_STAT_DMA_ERR_Pos (5)
  205. #define OTG_FS_ERR_STAT_DMA_ERR (0x01U << OTG_FS_ERR_STAT_DMA_ERR_Pos)
  206. #define OTG_FS_ERR_STAT_BTS_ERR_Pos (7)
  207. #define OTG_FS_ERR_STAT_BTS_ERR (0x01U << OTG_FS_ERR_STAT_BTS_ERR_Pos)
  208. ////////////////////////////////////////////////////////////////////////////////
  209. /// @brief OTG_FS_ERR_ENB Register Bit Definition
  210. ////////////////////////////////////////////////////////////////////////////////
  211. #define OTG_FS_ERR_ENB_PID_ERR_EN_Pos (0)
  212. #define OTG_FS_ERR_ENB_PID_ERR_EN (0x01U << OTG_FS_ERR_ENB_PID_ERR_EN_Pos)
  213. #define OTG_FS_ERR_ENB_CRC5_EOF_EN_Pos (1)
  214. #define OTG_FS_ERR_ENB_CRC5_EOF_EN (0x01U << OTG_FS_ERR_ENB_CRC5_EOF_EN_Pos)
  215. #define OTG_FS_ERR_ENB_CRC16_EN_Pos (2)
  216. #define OTG_FS_ERR_ENB_CRC16_EN (0x01U << OTG_FS_ERR_ENB_CRC16_EN_Pos)
  217. #define OTG_FS_ERR_ENB_DFN8_EN_Pos (3)
  218. #define OTG_FS_ERR_ENB_DFN8_EN (0x01U << OTG_FS_ERR_ENB_DFN8_EN_Pos)
  219. #define OTG_FS_ERR_ENB_BTO_ERR_EN_Pos (4)
  220. #define OTG_FS_ERR_ENB_BTO_ERR_EN (0x01U << OTG_FS_ERR_ENB_BTO_ERR_EN_Pos)
  221. #define OTG_FS_ERR_ENB_DMA_ERR_EN_Pos (5)
  222. #define OTG_FS_ERR_ENB_DMA_ERR_EN (0x01U << OTG_FS_ERR_ENB_DMA_ERR_EN_Pos)
  223. #define OTG_FS_ERR_ENB_BTS_ERR_EN_Pos (7)
  224. #define OTG_FS_ERR_ENB_BTS_ERR_EN (0x01U << OTG_FS_ERR_ENB_BTS_ERR_EN_Pos)
  225. ////////////////////////////////////////////////////////////////////////////////
  226. /// @brief OTG_FS_STAT Register Bit Definition
  227. ////////////////////////////////////////////////////////////////////////////////
  228. #define OTG_FS_STAT_ODD_Pos (2)
  229. #define OTG_FS_STAT_ODD (0x01U << OTG_FS_STAT_ODD_Pos)
  230. #define OTG_FS_STAT_TX_Pos (3)
  231. #define OTG_FS_STAT_TX (0x01U << OTG_FS_STAT_TX_Pos)
  232. #define OTG_FS_STAT_ENDP_Pos (4)
  233. #define OTG_FS_STAT_ENDP (0x0FU << OTG_FS_STAT_ENDP_Pos)
  234. ////////////////////////////////////////////////////////////////////////////////
  235. /// @brief OTG_FS_CTL Register Bit Definition
  236. ////////////////////////////////////////////////////////////////////////////////
  237. #define OTG_FS_CTL_USB_EN_SOF_EN_Pos (0)
  238. #define OTG_FS_CTL_USB_EN_SOF_EN (0x01U << OTG_FS_CTL_USB_EN_SOF_EN_Pos)
  239. #define OTG_FS_CTL_ODD_RST_Pos (1)
  240. #define OTG_FS_CTL_ODD_RST (0x01U << OTG_FS_CTL_ODD_RST_Pos)
  241. #define OTG_FS_CTL_RESUME_Pos (2)
  242. #define OTG_FS_CTL_RESUME (0x01U << OTG_FS_CTL_RESUME_Pos)
  243. #define OTG_FS_CTL_HOST_MODE_EN_Pos (3)
  244. #define OTG_FS_CTL_HOST_MODE_EN (0x01U << OTG_FS_CTL_HOST_MODE_EN_Pos)
  245. #define OTG_FS_CTL_RESET_Pos (4)
  246. #define OTG_FS_CTL_RESET (0x01U << OTG_FS_CTL_RESET_Pos)
  247. #define OTG_FS_CTL_TXDSUSPEND_TOKENBUSY_Pos (5)
  248. #define OTG_FS_CTL_TXDSUSPEND_TOKENBUSY (0x01U << OTG_FS_CTL_TXDSUSPEND_TOKENBUSY_Pos)
  249. #define OTG_FS_CTL_SE0_Pos (6)
  250. #define OTG_FS_CTL_SE0 (0x01U << OTG_FS_CTL_SE0_Pos)
  251. #define OTG_FS_CTL_JSTATE_Pos (7)
  252. #define OTG_FS_CTL_JSTATE (0x01U << OTG_FS_CTL_JSTATE_Pos)
  253. ////////////////////////////////////////////////////////////////////////////////
  254. /// @brief OTG_FS_ADDR Register Bit Definition
  255. ////////////////////////////////////////////////////////////////////////////////
  256. #define OTG_FS_ADDR_ADDR_Pos (0)
  257. #define OTG_FS_ADDR_ADDR (0x7FU << OTG_FS_ADDR_ADDR_Pos)
  258. #define OTG_FS_ADDR_LS_EN_Pos (7)
  259. #define OTG_FS_ADDR_LS_EN (0x01U << OTG_FS_ADDR_LS_EN_Pos)
  260. ////////////////////////////////////////////////////////////////////////////////
  261. /// @brief OTG_FS_BDT_PAGE_01 Register Bit Definition
  262. ////////////////////////////////////////////////////////////////////////////////
  263. #define OTG_FS_BDT_PAGE_01_BDT_BA_15_9_Pos (1)
  264. #define OTG_FS_BDT_PAGE_01_BDT_BA_15_9 (0x7FU << OTG_FS_BDT_PAGE_01_BDT_BA_15_9_Pos)
  265. ////////////////////////////////////////////////////////////////////////////////
  266. /// @brief OTG_FS_FRM_NUML Register Bit Definition
  267. ////////////////////////////////////////////////////////////////////////////////
  268. #define OTG_FS_FRM_NUML_FRM_Pos (0)
  269. #define OTG_FS_FRM_NUML_FRM (0xFFU << OTG_FS_FRM_NUML_FRM_Pos)
  270. ////////////////////////////////////////////////////////////////////////////////
  271. /// @brief OTG_FS_FRM_NUMH Register Bit Definition
  272. ////////////////////////////////////////////////////////////////////////////////
  273. #define OTG_FS_FRM_NUMH_FRM_Pos (0)
  274. #define OTG_FS_FRM_NUMH_FRM (0x07U << OTG_FS_FRM_NUMH_FRM_Pos)
  275. ////////////////////////////////////////////////////////////////////////////////
  276. /// @brief OTG_FS_TOKEN Register Bit Definition
  277. ////////////////////////////////////////////////////////////////////////////////
  278. #define OTG_FS_TOKEN_TOKEN_ENDPT_Pos (0)
  279. #define OTG_FS_TOKEN_TOKEN_ENDPT (0x0FU << OTG_FS_TOKEN_TOKEN_ENDPT_Pos)
  280. #define OTG_FS_TOKEN_TOKEN_PID_Pos (4)
  281. #define OTG_FS_TOKEN_TOKEN_PID (0x0FU << OTG_FS_TOKEN_TOKEN_PID_Pos)
  282. ////////////////////////////////////////////////////////////////////////////////
  283. /// @brief OTG_FS_SOF_THLD Register Bit Definition
  284. ////////////////////////////////////////////////////////////////////////////////
  285. #define OTG_FS_SOF_THLD_CNT_Pos (0)
  286. #define OTG_FS_SOF_THLD_CNT (0xFFU << OTG_FS_SOF_THLD_CNT_Pos)
  287. ////////////////////////////////////////////////////////////////////////////////
  288. /// @brief OTG_FS_BDT_PAGE_02 Register Bit Definition
  289. ////////////////////////////////////////////////////////////////////////////////
  290. #define OTG_FS_BDT_PAGE_02_BDT_BA_23_16_Pos (0)
  291. #define OTG_FS_BDT_PAGE_02_BDT_BA_23_16 (0xFFU << OTG_FS_BDT_PAGE_02_BDT_BA_23_16_Pos)
  292. ////////////////////////////////////////////////////////////////////////////////
  293. /// @brief OTG_FS_BDT_PAGE_03 Register Bit Definition
  294. ////////////////////////////////////////////////////////////////////////////////
  295. #define OTG_FS_BDT_PAGE_03_BDT_BA_31_24_Pos (0)
  296. #define OTG_FS_BDT_PAGE_03_BDT_BA_31_24 (0xFFU << OTG_FS_BDT_PAGE_03_BDT_BA_31_24_Pos)
  297. ////////////////////////////////////////////////////////////////////////////////
  298. /// @brief OTG_FS_EP_CTL Register Bit Definition
  299. ////////////////////////////////////////////////////////////////////////////////
  300. #define OTG_FS_EP_CTL_EP_HSHK_Pos (0)
  301. #define OTG_FS_EP_CTL_EP_HSHK (0x01U << OTG_FS_EP_CTL_EP_HSHK_Pos)
  302. #define OTG_FS_EP_CTL_EP_STALL_Pos (1)
  303. #define OTG_FS_EP_CTL_EP_STALL (0x01U << OTG_FS_EP_CTL_EP_STALL_Pos)
  304. #define OTG_FS_EP_CTL_EP_TX_EN_Pos (2)
  305. #define OTG_FS_EP_CTL_EP_TX_EN (0x01U << OTG_FS_EP_CTL_EP_TX_EN_Pos)
  306. #define OTG_FS_EP_CTL_EP_RX_EN_Pos (3)
  307. #define OTG_FS_EP_CTL_EP_RX_EN (0x01U << OTG_FS_EP_CTL_EP_RX_EN_Pos)
  308. #define OTG_FS_EP_CTL_EP_CTL_DIS_Pos (4)
  309. #define OTG_FS_EP_CTL_EP_CTL_DIS (0x01U << OTG_FS_EP_CTL_EP_CTL_DIS_Pos)
  310. #define OTG_FS_EP_CTL_RETRY_DIS_Pos (6)
  311. #define OTG_FS_EP_CTL_RETRY_DIS (0x01U << OTG_FS_EP_CTL_RETRY_DIS_Pos)
  312. #define OTG_FS_EP_CTL_HOST_WO_HUB_Pos (7)
  313. #define OTG_FS_EP_CTL_HOST_WO_HUB (0x01U << OTG_FS_EP_CTL_HOST_WO_HUB_Pos)
  314. ////////////////////////////////////////////////////////////////////////////////
  315. /// @brief OTG_FS Buffer Descriptor Bit Definition
  316. ////////////////////////////////////////////////////////////////////////////////
  317. #define OTG_FS_BD_TOK_PID_Pos (2)
  318. #define OTG_FS_BD_TOK_PID (0x0FU << OTG_FS_BD_TOK_PID_Pos)
  319. #define OTG_FS_BD_DATA01_Pos (6)
  320. #define OTG_FS_BD_DATA01 (0x01U << OTG_FS_BD_DATA01_Pos)
  321. #define OTG_FS_BD_OWN_Pos (7)
  322. #define OTG_FS_BD_OWN (0x01U << OTG_FS_BD_OWN_Pos)
  323. #define OTG_FS_BD_BC_Pos (16)
  324. #define OTG_FS_BD_BC (0x3FFU << OTG_FS_BD_BC_Pos)
  325. #define OTG_FS_BD_ADDRESS_Pos (0)
  326. #define OTG_FS_BD_ADDRESS (0xFFFFFFFFU << OTG_FS_BD_ADDRESS_Pos)
  327. /**
  328. * @}
  329. */
  330. //#define OTG_FS_INT_STAT_RST ((uint32_t)0x01)
  331. //#define OTG_FS_INT_STAT_ERROR ((uint32_t)0x02)
  332. //#define OTG_FS_INT_STAT_SOF ((uint32_t)0x04)
  333. //#define OTG_FS_INT_STAT_DNE ((uint32_t)0x08)
  334. //#define OTG_FS_INT_STAT_SLEEP ((uint32_t)0x10)
  335. //#define OTG_FS_INT_STAT_RESUME ((uint32_t)0x20)
  336. //#define OTG_FS_INT_STAT_ATTACH ((uint32_t)0x40)
  337. //#define OTG_FS_INT_STAT_STALL ((uint32_t)0x80)
  338. //TEMP
  339. #define USB_INT_STAT_RST 0x01
  340. #define USB_INT_STAT_ERROR 0x02
  341. #define USB_INT_STAT_SOF_TOK 0x04
  342. #define USB_INT_STAT_TOK_DNE 0x08
  343. #define USB_INT_STAT_SLEEP 0x10
  344. #define USB_INT_STAT_RESUME 0x20
  345. #define USB_INT_STAT_ATTACH 0x40
  346. #define USB_INT_STAT_STALL 0x80
  347. /*! @name PERID - Peripheral ID register */
  348. #define USB_PERID_ID_MASK (0x3FU)
  349. #define USB_PERID_ID_SHIFT (0U)
  350. #define USB_PERID_ID(x) (((uint8_t)(((uint8_t)(x)) << USB_PERID_ID_SHIFT)) & USB_PERID_ID_MASK)
  351. /*! @name IDCOMP - Peripheral ID Complement register */
  352. #define USB_IDCOMP_NID_MASK (0x3FU)
  353. #define USB_IDCOMP_NID_SHIFT (0U)
  354. #define USB_IDCOMP_NID(x) (((uint8_t)(((uint8_t)(x)) << USB_IDCOMP_NID_SHIFT)) & USB_IDCOMP_NID_MASK)
  355. /*! @name REV - Peripheral Revision register */
  356. #define USB_REV_REV_MASK (0xFFU)
  357. #define USB_REV_REV_SHIFT (0U)
  358. #define USB_REV_REV(x) (((uint8_t)(((uint8_t)(x)) << USB_REV_REV_SHIFT)) & USB_REV_REV_MASK)
  359. /*! @name ADDINFO - Peripheral Additional Info register */
  360. #define USB_ADDINFO_IEHOST_MASK (0x1U)
  361. #define USB_ADDINFO_IEHOST_SHIFT (0U)
  362. #define USB_ADDINFO_IEHOST(x) (((uint8_t)(((uint8_t)(x)) << USB_ADDINFO_IEHOST_SHIFT)) & USB_ADDINFO_IEHOST_MASK)
  363. /*! @name OTGISTAT - OTG Interrupt Status register */
  364. #define USB_OTGISTAT_LINE_STATE_CHG_MASK (0x20U)
  365. #define USB_OTGISTAT_LINE_STATE_CHG_SHIFT (5U)
  366. #define USB_OTGISTAT_LINE_STATE_CHG(x) (((uint8_t)(((uint8_t)(x)) << USB_OTGISTAT_LINE_STATE_CHG_SHIFT)) & USB_OTGISTAT_LINE_STATE_CHG_MASK)
  367. #define USB_OTGISTAT_ONEMSEC_MASK (0x40U)
  368. #define USB_OTGISTAT_ONEMSEC_SHIFT (6U)
  369. #define USB_OTGISTAT_ONEMSEC(x) (((uint8_t)(((uint8_t)(x)) << USB_OTGISTAT_ONEMSEC_SHIFT)) & USB_OTGISTAT_ONEMSEC_MASK)
  370. /*! @name OTGICR - OTG Interrupt Control register */
  371. #define USB_OTGICR_LINESTATEEN_MASK (0x20U)
  372. #define USB_OTGICR_LINESTATEEN_SHIFT (5U)
  373. #define USB_OTGICR_LINESTATEEN(x) (((uint8_t)(((uint8_t)(x)) << USB_OTGICR_LINESTATEEN_SHIFT)) & USB_OTGICR_LINESTATEEN_MASK)
  374. #define USB_OTGICR_ONEMSECEN_MASK (0x40U)
  375. #define USB_OTGICR_ONEMSECEN_SHIFT (6U)
  376. #define USB_OTGICR_ONEMSECEN(x) (((uint8_t)(((uint8_t)(x)) << USB_OTGICR_ONEMSECEN_SHIFT)) & USB_OTGICR_ONEMSECEN_MASK)
  377. /*! @name OTGSTAT - OTG Status register */
  378. #define USB_OTGSTAT_LINESTATESTABLE_MASK (0x20U)
  379. #define USB_OTGSTAT_LINESTATESTABLE_SHIFT (5U)
  380. #define USB_OTGSTAT_LINESTATESTABLE(x) (((uint8_t)(((uint8_t)(x)) << USB_OTGSTAT_LINESTATESTABLE_SHIFT)) & USB_OTGSTAT_LINESTATESTABLE_MASK)
  381. #define USB_OTGSTAT_ONEMSECEN_MASK (0x40U)
  382. #define USB_OTGSTAT_ONEMSECEN_SHIFT (6U)
  383. #define USB_OTGSTAT_ONEMSECEN(x) (((uint8_t)(((uint8_t)(x)) << USB_OTGSTAT_ONEMSECEN_SHIFT)) & USB_OTGSTAT_ONEMSECEN_MASK)
  384. /*! @name OTGCTL - OTG Control register */
  385. #define USB_OTGCTL_OTGEN_MASK (0x4U)
  386. #define USB_OTGCTL_OTGEN_SHIFT (2U)
  387. #define USB_OTGCTL_OTGEN(x) (((uint8_t)(((uint8_t)(x)) << USB_OTGCTL_OTGEN_SHIFT)) & USB_OTGCTL_OTGEN_MASK)
  388. #define USB_OTGCTL_DMLOW_MASK (0x10U)
  389. #define USB_OTGCTL_DMLOW_SHIFT (4U)
  390. #define USB_OTGCTL_DMLOW(x) (((uint8_t)(((uint8_t)(x)) << USB_OTGCTL_DMLOW_SHIFT)) & USB_OTGCTL_DMLOW_MASK)
  391. #define USB_OTGCTL_DPLOW_MASK (0x20U)
  392. #define USB_OTGCTL_DPLOW_SHIFT (5U)
  393. #define USB_OTGCTL_DPLOW(x) (((uint8_t)(((uint8_t)(x)) << USB_OTGCTL_DPLOW_SHIFT)) & USB_OTGCTL_DPLOW_MASK)
  394. #define USB_OTGCTL_DPHIGH_MASK (0x80U)
  395. #define USB_OTGCTL_DPHIGH_SHIFT (7U)
  396. #define USB_OTGCTL_DPHIGH(x) (((uint8_t)(((uint8_t)(x)) << USB_OTGCTL_DPHIGH_SHIFT)) & USB_OTGCTL_DPHIGH_MASK)
  397. /*! @name ISTAT - Interrupt Status register */
  398. #define USB_ISTAT_USBRST_MASK (0x1U)
  399. #define USB_ISTAT_USBRST_SHIFT (0U)
  400. #define USB_ISTAT_USBRST(x) (((uint8_t)(((uint8_t)(x)) << USB_ISTAT_USBRST_SHIFT)) & USB_ISTAT_USBRST_MASK)
  401. #define USB_ISTAT_ERROR_MASK (0x2U)
  402. #define USB_ISTAT_ERROR_SHIFT (1U)
  403. #define USB_ISTAT_ERROR(x) (((uint8_t)(((uint8_t)(x)) << USB_ISTAT_ERROR_SHIFT)) & USB_ISTAT_ERROR_MASK)
  404. #define USB_ISTAT_SOFTOK_MASK (0x4U)
  405. #define USB_ISTAT_SOFTOK_SHIFT (2U)
  406. #define USB_ISTAT_SOFTOK(x) (((uint8_t)(((uint8_t)(x)) << USB_ISTAT_SOFTOK_SHIFT)) & USB_ISTAT_SOFTOK_MASK)
  407. #define USB_ISTAT_TOKDNE_MASK (0x8U)
  408. #define USB_ISTAT_TOKDNE_SHIFT (3U)
  409. #define USB_ISTAT_TOKDNE(x) (((uint8_t)(((uint8_t)(x)) << USB_ISTAT_TOKDNE_SHIFT)) & USB_ISTAT_TOKDNE_MASK)
  410. #define USB_ISTAT_SLEEP_MASK (0x10U)
  411. #define USB_ISTAT_SLEEP_SHIFT (4U)
  412. #define USB_ISTAT_SLEEP(x) (((uint8_t)(((uint8_t)(x)) << USB_ISTAT_SLEEP_SHIFT)) & USB_ISTAT_SLEEP_MASK)
  413. #define USB_ISTAT_RESUME_MASK (0x20U)
  414. #define USB_ISTAT_RESUME_SHIFT (5U)
  415. #define USB_ISTAT_RESUME(x) (((uint8_t)(((uint8_t)(x)) << USB_ISTAT_RESUME_SHIFT)) & USB_ISTAT_RESUME_MASK)
  416. #define USB_ISTAT_ATTACH_MASK (0x40U)
  417. #define USB_ISTAT_ATTACH_SHIFT (6U)
  418. #define USB_ISTAT_ATTACH(x) (((uint8_t)(((uint8_t)(x)) << USB_ISTAT_ATTACH_SHIFT)) & USB_ISTAT_ATTACH_MASK)
  419. #define USB_ISTAT_STALL_MASK (0x80U)
  420. #define USB_ISTAT_STALL_SHIFT (7U)
  421. #define USB_ISTAT_STALL(x) (((uint8_t)(((uint8_t)(x)) << USB_ISTAT_STALL_SHIFT)) & USB_ISTAT_STALL_MASK)
  422. /*! @name INTEN - Interrupt Enable register */
  423. #define USB_INTEN_USBRSTEN_MASK (0x1U)
  424. #define USB_INTEN_USBRSTEN_SHIFT (0U)
  425. #define USB_INTEN_USBRSTEN(x) (((uint8_t)(((uint8_t)(x)) << USB_INTEN_USBRSTEN_SHIFT)) & USB_INTEN_USBRSTEN_MASK)
  426. #define USB_INTEN_ERROREN_MASK (0x2U)
  427. #define USB_INTEN_ERROREN_SHIFT (1U)
  428. #define USB_INTEN_ERROREN(x) (((uint8_t)(((uint8_t)(x)) << USB_INTEN_ERROREN_SHIFT)) & USB_INTEN_ERROREN_MASK)
  429. #define USB_INTEN_SOFTOKEN_MASK (0x4U)
  430. #define USB_INTEN_SOFTOKEN_SHIFT (2U)
  431. #define USB_INTEN_SOFTOKEN(x) (((uint8_t)(((uint8_t)(x)) << USB_INTEN_SOFTOKEN_SHIFT)) & USB_INTEN_SOFTOKEN_MASK)
  432. #define USB_INTEN_TOKDNEEN_MASK (0x8U)
  433. #define USB_INTEN_TOKDNEEN_SHIFT (3U)
  434. #define USB_INTEN_TOKDNEEN(x) (((uint8_t)(((uint8_t)(x)) << USB_INTEN_TOKDNEEN_SHIFT)) & USB_INTEN_TOKDNEEN_MASK)
  435. #define USB_INTEN_SLEEPEN_MASK (0x10U)
  436. #define USB_INTEN_SLEEPEN_SHIFT (4U)
  437. #define USB_INTEN_SLEEPEN(x) (((uint8_t)(((uint8_t)(x)) << USB_INTEN_SLEEPEN_SHIFT)) & USB_INTEN_SLEEPEN_MASK)
  438. #define USB_INTEN_RESUMEEN_MASK (0x20U)
  439. #define USB_INTEN_RESUMEEN_SHIFT (5U)
  440. #define USB_INTEN_RESUMEEN(x) (((uint8_t)(((uint8_t)(x)) << USB_INTEN_RESUMEEN_SHIFT)) & USB_INTEN_RESUMEEN_MASK)
  441. #define USB_INTEN_ATTACHEN_MASK (0x40U)
  442. #define USB_INTEN_ATTACHEN_SHIFT (6U)
  443. #define USB_INTEN_ATTACHEN(x) (((uint8_t)(((uint8_t)(x)) << USB_INTEN_ATTACHEN_SHIFT)) & USB_INTEN_ATTACHEN_MASK)
  444. #define USB_INTEN_STALLEN_MASK (0x80U)
  445. #define USB_INTEN_STALLEN_SHIFT (7U)
  446. #define USB_INTEN_STALLEN(x) (((uint8_t)(((uint8_t)(x)) << USB_INTEN_STALLEN_SHIFT)) & USB_INTEN_STALLEN_MASK)
  447. /*! @name ERRSTAT - Error Interrupt Status register */
  448. #define USB_ERRSTAT_PIDERR_MASK (0x1U)
  449. #define USB_ERRSTAT_PIDERR_SHIFT (0U)
  450. #define USB_ERRSTAT_PIDERR(x) (((uint8_t)(((uint8_t)(x)) << USB_ERRSTAT_PIDERR_SHIFT)) & USB_ERRSTAT_PIDERR_MASK)
  451. #define USB_ERRSTAT_CRC5EOF_MASK (0x2U)
  452. #define USB_ERRSTAT_CRC5EOF_SHIFT (1U)
  453. #define USB_ERRSTAT_CRC5EOF(x) (((uint8_t)(((uint8_t)(x)) << USB_ERRSTAT_CRC5EOF_SHIFT)) & USB_ERRSTAT_CRC5EOF_MASK)
  454. #define USB_ERRSTAT_CRC16_MASK (0x4U)
  455. #define USB_ERRSTAT_CRC16_SHIFT (2U)
  456. #define USB_ERRSTAT_CRC16(x) (((uint8_t)(((uint8_t)(x)) << USB_ERRSTAT_CRC16_SHIFT)) & USB_ERRSTAT_CRC16_MASK)
  457. #define USB_ERRSTAT_DFN8_MASK (0x8U)
  458. #define USB_ERRSTAT_DFN8_SHIFT (3U)
  459. #define USB_ERRSTAT_DFN8(x) (((uint8_t)(((uint8_t)(x)) << USB_ERRSTAT_DFN8_SHIFT)) & USB_ERRSTAT_DFN8_MASK)
  460. #define USB_ERRSTAT_BTOERR_MASK (0x10U)
  461. #define USB_ERRSTAT_BTOERR_SHIFT (4U)
  462. #define USB_ERRSTAT_BTOERR(x) (((uint8_t)(((uint8_t)(x)) << USB_ERRSTAT_BTOERR_SHIFT)) & USB_ERRSTAT_BTOERR_MASK)
  463. #define USB_ERRSTAT_DMAERR_MASK (0x20U)
  464. #define USB_ERRSTAT_DMAERR_SHIFT (5U)
  465. #define USB_ERRSTAT_DMAERR(x) (((uint8_t)(((uint8_t)(x)) << USB_ERRSTAT_DMAERR_SHIFT)) & USB_ERRSTAT_DMAERR_MASK)
  466. #define USB_ERRSTAT_OWNERR_MASK (0x40U)
  467. #define USB_ERRSTAT_OWNERR_SHIFT (6U)
  468. #define USB_ERRSTAT_OWNERR(x) (((uint8_t)(((uint8_t)(x)) << USB_ERRSTAT_OWNERR_SHIFT)) & USB_ERRSTAT_OWNERR_MASK)
  469. #define USB_ERRSTAT_BTSERR_MASK (0x80U)
  470. #define USB_ERRSTAT_BTSERR_SHIFT (7U)
  471. #define USB_ERRSTAT_BTSERR(x) (((uint8_t)(((uint8_t)(x)) << USB_ERRSTAT_BTSERR_SHIFT)) & USB_ERRSTAT_BTSERR_MASK)
  472. /*! @name ERREN - Error Interrupt Enable register */
  473. #define USB_ERREN_PIDERREN_MASK (0x1U)
  474. #define USB_ERREN_PIDERREN_SHIFT (0U)
  475. #define USB_ERREN_PIDERREN(x) (((uint8_t)(((uint8_t)(x)) << USB_ERREN_PIDERREN_SHIFT)) & USB_ERREN_PIDERREN_MASK)
  476. #define USB_ERREN_CRC5EOFEN_MASK (0x2U)
  477. #define USB_ERREN_CRC5EOFEN_SHIFT (1U)
  478. #define USB_ERREN_CRC5EOFEN(x) (((uint8_t)(((uint8_t)(x)) << USB_ERREN_CRC5EOFEN_SHIFT)) & USB_ERREN_CRC5EOFEN_MASK)
  479. #define USB_ERREN_CRC16EN_MASK (0x4U)
  480. #define USB_ERREN_CRC16EN_SHIFT (2U)
  481. #define USB_ERREN_CRC16EN(x) (((uint8_t)(((uint8_t)(x)) << USB_ERREN_CRC16EN_SHIFT)) & USB_ERREN_CRC16EN_MASK)
  482. #define USB_ERREN_DFN8EN_MASK (0x8U)
  483. #define USB_ERREN_DFN8EN_SHIFT (3U)
  484. #define USB_ERREN_DFN8EN(x) (((uint8_t)(((uint8_t)(x)) << USB_ERREN_DFN8EN_SHIFT)) & USB_ERREN_DFN8EN_MASK)
  485. #define USB_ERREN_BTOERREN_MASK (0x10U)
  486. #define USB_ERREN_BTOERREN_SHIFT (4U)
  487. #define USB_ERREN_BTOERREN(x) (((uint8_t)(((uint8_t)(x)) << USB_ERREN_BTOERREN_SHIFT)) & USB_ERREN_BTOERREN_MASK)
  488. #define USB_ERREN_DMAERREN_MASK (0x20U)
  489. #define USB_ERREN_DMAERREN_SHIFT (5U)
  490. #define USB_ERREN_DMAERREN(x) (((uint8_t)(((uint8_t)(x)) << USB_ERREN_DMAERREN_SHIFT)) & USB_ERREN_DMAERREN_MASK)
  491. #define USB_ERREN_OWNERREN_MASK (0x40U)
  492. #define USB_ERREN_OWNERREN_SHIFT (6U)
  493. #define USB_ERREN_OWNERREN(x) (((uint8_t)(((uint8_t)(x)) << USB_ERREN_OWNERREN_SHIFT)) & USB_ERREN_OWNERREN_MASK)
  494. #define USB_ERREN_BTSERREN_MASK (0x80U)
  495. #define USB_ERREN_BTSERREN_SHIFT (7U)
  496. #define USB_ERREN_BTSERREN(x) (((uint8_t)(((uint8_t)(x)) << USB_ERREN_BTSERREN_SHIFT)) & USB_ERREN_BTSERREN_MASK)
  497. /*! @name STAT - Status register */
  498. #define USB_STAT_ODD_MASK (0x4U)
  499. #define USB_STAT_ODD_SHIFT (2U)
  500. #define USB_STAT_ODD(x) (((uint8_t)(((uint8_t)(x)) << USB_STAT_ODD_SHIFT)) & USB_STAT_ODD_MASK)
  501. #define USB_STAT_TX_MASK (0x8U)
  502. #define USB_STAT_TX_SHIFT (3U)
  503. #define USB_STAT_TX(x) (((uint8_t)(((uint8_t)(x)) << USB_STAT_TX_SHIFT)) & USB_STAT_TX_MASK)
  504. #define USB_STAT_ENDP_MASK (0xF0U)
  505. #define USB_STAT_ENDP_SHIFT (4U)
  506. #define USB_STAT_ENDP(x) (((uint8_t)(((uint8_t)(x)) << USB_STAT_ENDP_SHIFT)) & USB_STAT_ENDP_MASK)
  507. /*! @name CTL - Control register */
  508. #define USB_CTL_USBENSOFEN_MASK (0x1U)
  509. #define USB_CTL_USBENSOFEN_SHIFT (0U)
  510. #define USB_CTL_USBENSOFEN(x) (((uint8_t)(((uint8_t)(x)) << USB_CTL_USBENSOFEN_SHIFT)) & USB_CTL_USBENSOFEN_MASK)
  511. #define USB_CTL_ODDRST_MASK (0x2U)
  512. #define USB_CTL_ODDRST_SHIFT (1U)
  513. #define USB_CTL_ODDRST(x) (((uint8_t)(((uint8_t)(x)) << USB_CTL_ODDRST_SHIFT)) & USB_CTL_ODDRST_MASK)
  514. #define USB_CTL_RESUME_MASK (0x4U)
  515. #define USB_CTL_RESUME_SHIFT (2U)
  516. #define USB_CTL_RESUME(x) (((uint8_t)(((uint8_t)(x)) << USB_CTL_RESUME_SHIFT)) & USB_CTL_RESUME_MASK)
  517. #define USB_CTL_HOSTMODEEN_MASK (0x8U)
  518. #define USB_CTL_HOSTMODEEN_SHIFT (3U)
  519. #define USB_CTL_HOSTMODEEN(x) (((uint8_t)(((uint8_t)(x)) << USB_CTL_HOSTMODEEN_SHIFT)) & USB_CTL_HOSTMODEEN_MASK)
  520. #define USB_CTL_RESET_MASK (0x10U)
  521. #define USB_CTL_RESET_SHIFT (4U)
  522. #define USB_CTL_RESET(x) (((uint8_t)(((uint8_t)(x)) << USB_CTL_RESET_SHIFT)) & USB_CTL_RESET_MASK)
  523. #define USB_CTL_TXSUSPENDTOKENBUSY_MASK (0x20U)
  524. #define USB_CTL_TXSUSPENDTOKENBUSY_SHIFT (5U)
  525. #define USB_CTL_TXSUSPENDTOKENBUSY(x) (((uint8_t)(((uint8_t)(x)) << USB_CTL_TXSUSPENDTOKENBUSY_SHIFT)) & USB_CTL_TXSUSPENDTOKENBUSY_MASK)
  526. #define USB_CTL_SE0_MASK (0x40U)
  527. #define USB_CTL_SE0_SHIFT (6U)
  528. #define USB_CTL_SE0(x) (((uint8_t)(((uint8_t)(x)) << USB_CTL_SE0_SHIFT)) & USB_CTL_SE0_MASK)
  529. #define USB_CTL_JSTATE_MASK (0x80U)
  530. #define USB_CTL_JSTATE_SHIFT (7U)
  531. #define USB_CTL_JSTATE(x) (((uint8_t)(((uint8_t)(x)) << USB_CTL_JSTATE_SHIFT)) & USB_CTL_JSTATE_MASK)
  532. /*! @name ADDR - Address register */
  533. #define USB_ADDR_ADDR_MASK (0x7FU)
  534. #define USB_ADDR_ADDR_SHIFT (0U)
  535. #define USB_ADDR_ADDR(x) (((uint8_t)(((uint8_t)(x)) << USB_ADDR_ADDR_SHIFT)) & USB_ADDR_ADDR_MASK)
  536. #define USB_ADDR_LSEN_MASK (0x80U)
  537. #define USB_ADDR_LSEN_SHIFT (7U)
  538. #define USB_ADDR_LSEN(x) (((uint8_t)(((uint8_t)(x)) << USB_ADDR_LSEN_SHIFT)) & USB_ADDR_LSEN_MASK)
  539. /*! @name BDTPAGE1 - BDT Page register 1 */
  540. #define USB_BDTPAGE1_BDTBA_MASK (0xFEU)
  541. #define USB_BDTPAGE1_BDTBA_SHIFT (1U)
  542. #define USB_BDTPAGE1_BDTBA(x) (((uint8_t)(((uint8_t)(x)) << USB_BDTPAGE1_BDTBA_SHIFT)) & USB_BDTPAGE1_BDTBA_MASK)
  543. /*! @name FRMNUML - Frame Number register Low */
  544. #define USB_FRMNUML_FRM_MASK (0xFFU)
  545. #define USB_FRMNUML_FRM_SHIFT (0U)
  546. #define USB_FRMNUML_FRM(x) (((uint8_t)(((uint8_t)(x)) << USB_FRMNUML_FRM_SHIFT)) & USB_FRMNUML_FRM_MASK)
  547. /*! @name FRMNUMH - Frame Number register High */
  548. #define USB_FRMNUMH_FRM_MASK (0x7U)
  549. #define USB_FRMNUMH_FRM_SHIFT (0U)
  550. #define USB_FRMNUMH_FRM(x) (((uint8_t)(((uint8_t)(x)) << USB_FRMNUMH_FRM_SHIFT)) & USB_FRMNUMH_FRM_MASK)
  551. /*! @name TOKEN - Token register */
  552. #define USB_TOKEN_TOKENENDPT_MASK (0xFU)
  553. #define USB_TOKEN_TOKENENDPT_SHIFT (0U)
  554. #define USB_TOKEN_TOKENENDPT(x) (((uint8_t)(((uint8_t)(x)) << USB_TOKEN_TOKENENDPT_SHIFT)) & USB_TOKEN_TOKENENDPT_MASK)
  555. #define USB_TOKEN_TOKENPID_MASK (0xF0U)
  556. #define USB_TOKEN_TOKENPID_SHIFT (4U)
  557. #define USB_TOKEN_TOKENPID(x) (((uint8_t)(((uint8_t)(x)) << USB_TOKEN_TOKENPID_SHIFT)) & USB_TOKEN_TOKENPID_MASK)
  558. /*! @name SOFTHLD - SOF Threshold register */
  559. #define USB_SOFTHLD_CNT_MASK (0xFFU)
  560. #define USB_SOFTHLD_CNT_SHIFT (0U)
  561. #define USB_SOFTHLD_CNT(x) (((uint8_t)(((uint8_t)(x)) << USB_SOFTHLD_CNT_SHIFT)) & USB_SOFTHLD_CNT_MASK)
  562. /*! @name BDTPAGE2 - BDT Page Register 2 */
  563. #define USB_BDTPAGE2_BDTBA_MASK (0xFFU)
  564. #define USB_BDTPAGE2_BDTBA_SHIFT (0U)
  565. #define USB_BDTPAGE2_BDTBA(x) (((uint8_t)(((uint8_t)(x)) << USB_BDTPAGE2_BDTBA_SHIFT)) & USB_BDTPAGE2_BDTBA_MASK)
  566. /*! @name BDTPAGE3 - BDT Page Register 3 */
  567. #define USB_BDTPAGE3_BDTBA_MASK (0xFFU)
  568. #define USB_BDTPAGE3_BDTBA_SHIFT (0U)
  569. #define USB_BDTPAGE3_BDTBA(x) (((uint8_t)(((uint8_t)(x)) << USB_BDTPAGE3_BDTBA_SHIFT)) & USB_BDTPAGE3_BDTBA_MASK)
  570. /*! @name ENDPT - Endpoint Control register */
  571. #define USB_ENDPT_EPHSHK_MASK (0x1U)
  572. #define USB_ENDPT_EPHSHK_SHIFT (0U)
  573. #define USB_ENDPT_EPHSHK(x) (((uint8_t)(((uint8_t)(x)) << USB_ENDPT_EPHSHK_SHIFT)) & USB_ENDPT_EPHSHK_MASK)
  574. #define USB_ENDPT_EPSTALL_MASK (0x2U)
  575. #define USB_ENDPT_EPSTALL_SHIFT (1U)
  576. #define USB_ENDPT_EPSTALL(x) (((uint8_t)(((uint8_t)(x)) << USB_ENDPT_EPSTALL_SHIFT)) & USB_ENDPT_EPSTALL_MASK)
  577. #define USB_ENDPT_EPTXEN_MASK (0x4U)
  578. #define USB_ENDPT_EPTXEN_SHIFT (2U)
  579. #define USB_ENDPT_EPTXEN(x) (((uint8_t)(((uint8_t)(x)) << USB_ENDPT_EPTXEN_SHIFT)) & USB_ENDPT_EPTXEN_MASK)
  580. #define USB_ENDPT_EPRXEN_MASK (0x8U)
  581. #define USB_ENDPT_EPRXEN_SHIFT (3U)
  582. #define USB_ENDPT_EPRXEN(x) (((uint8_t)(((uint8_t)(x)) << USB_ENDPT_EPRXEN_SHIFT)) & USB_ENDPT_EPRXEN_MASK)
  583. #define USB_ENDPT_EPCTLDIS_MASK (0x10U)
  584. #define USB_ENDPT_EPCTLDIS_SHIFT (4U)
  585. #define USB_ENDPT_EPCTLDIS(x) (((uint8_t)(((uint8_t)(x)) << USB_ENDPT_EPCTLDIS_SHIFT)) & USB_ENDPT_EPCTLDIS_MASK)
  586. #define USB_ENDPT_RETRYDIS_MASK (0x40U)
  587. #define USB_ENDPT_RETRYDIS_SHIFT (6U)
  588. #define USB_ENDPT_RETRYDIS(x) (((uint8_t)(((uint8_t)(x)) << USB_ENDPT_RETRYDIS_SHIFT)) & USB_ENDPT_RETRYDIS_MASK)
  589. #define USB_ENDPT_HOSTWOHUB_MASK (0x80U)
  590. #define USB_ENDPT_HOSTWOHUB_SHIFT (7U)
  591. #define USB_ENDPT_HOSTWOHUB(x) (((uint8_t)(((uint8_t)(x)) << USB_ENDPT_HOSTWOHUB_SHIFT)) & USB_ENDPT_HOSTWOHUB_MASK)
  592. /* The count of USB_ENDPT */
  593. #define USB_ENDPT_COUNT (16U)
  594. /*! @name USBCTRL - USB Control register */
  595. #define USB_USBCTRL_UARTSEL_MASK (0x10U)
  596. #define USB_USBCTRL_UARTSEL_SHIFT (4U)
  597. #define USB_USBCTRL_UARTSEL(x) (((uint8_t)(((uint8_t)(x)) << USB_USBCTRL_UARTSEL_SHIFT)) & USB_USBCTRL_UARTSEL_MASK)
  598. #define USB_USBCTRL_UARTCHLS_MASK (0x20U)
  599. #define USB_USBCTRL_UARTCHLS_SHIFT (5U)
  600. #define USB_USBCTRL_UARTCHLS(x) (((uint8_t)(((uint8_t)(x)) << USB_USBCTRL_UARTCHLS_SHIFT)) & USB_USBCTRL_UARTCHLS_MASK)
  601. #define USB_USBCTRL_PDE_MASK (0x40U)
  602. #define USB_USBCTRL_PDE_SHIFT (6U)
  603. #define USB_USBCTRL_PDE(x) (((uint8_t)(((uint8_t)(x)) << USB_USBCTRL_PDE_SHIFT)) & USB_USBCTRL_PDE_MASK)
  604. #define USB_USBCTRL_SUSP_MASK (0x80U)
  605. #define USB_USBCTRL_SUSP_SHIFT (7U)
  606. #define USB_USBCTRL_SUSP(x) (((uint8_t)(((uint8_t)(x)) << USB_USBCTRL_SUSP_SHIFT)) & USB_USBCTRL_SUSP_MASK)
  607. /*! @name OBSERVE - USB OTG Observe register */
  608. #define USB_OBSERVE_DMPD_MASK (0x10U)
  609. #define USB_OBSERVE_DMPD_SHIFT (4U)
  610. #define USB_OBSERVE_DMPD(x) (((uint8_t)(((uint8_t)(x)) << USB_OBSERVE_DMPD_SHIFT)) & USB_OBSERVE_DMPD_MASK)
  611. #define USB_OBSERVE_DPPD_MASK (0x40U)
  612. #define USB_OBSERVE_DPPD_SHIFT (6U)
  613. #define USB_OBSERVE_DPPD(x) (((uint8_t)(((uint8_t)(x)) << USB_OBSERVE_DPPD_SHIFT)) & USB_OBSERVE_DPPD_MASK)
  614. #define USB_OBSERVE_DPPU_MASK (0x80U)
  615. #define USB_OBSERVE_DPPU_SHIFT (7U)
  616. #define USB_OBSERVE_DPPU(x) (((uint8_t)(((uint8_t)(x)) << USB_OBSERVE_DPPU_SHIFT)) & USB_OBSERVE_DPPU_MASK)
  617. /*! @name CONTROL - USB OTG Control register */
  618. #define USB_CONTROL_DPPULLUPNONOTG_MASK (0x10U)
  619. #define USB_CONTROL_DPPULLUPNONOTG_SHIFT (4U)
  620. #define USB_CONTROL_DPPULLUPNONOTG(x) (((uint8_t)(((uint8_t)(x)) << USB_CONTROL_DPPULLUPNONOTG_SHIFT)) & USB_CONTROL_DPPULLUPNONOTG_MASK)
  621. /*! @name USBTRC0 - USB Transceiver Control register 0 */
  622. #define USB_USBTRC0_USB_RESUME_INT_MASK (0x1U)
  623. #define USB_USBTRC0_USB_RESUME_INT_SHIFT (0U)
  624. #define USB_USBTRC0_USB_RESUME_INT(x) (((uint8_t)(((uint8_t)(x)) << USB_USBTRC0_USB_RESUME_INT_SHIFT)) & USB_USBTRC0_USB_RESUME_INT_MASK)
  625. #define USB_USBTRC0_SYNC_DET_MASK (0x2U)
  626. #define USB_USBTRC0_SYNC_DET_SHIFT (1U)
  627. #define USB_USBTRC0_SYNC_DET(x) (((uint8_t)(((uint8_t)(x)) << USB_USBTRC0_SYNC_DET_SHIFT)) & USB_USBTRC0_SYNC_DET_MASK)
  628. #define USB_USBTRC0_USB_CLK_RECOVERY_INT_MASK (0x4U)
  629. #define USB_USBTRC0_USB_CLK_RECOVERY_INT_SHIFT (2U)
  630. #define USB_USBTRC0_USB_CLK_RECOVERY_INT(x) (((uint8_t)(((uint8_t)(x)) << USB_USBTRC0_USB_CLK_RECOVERY_INT_SHIFT)) & USB_USBTRC0_USB_CLK_RECOVERY_INT_MASK)
  631. #define USB_USBTRC0_VREDG_DET_MASK (0x8U)
  632. #define USB_USBTRC0_VREDG_DET_SHIFT (3U)
  633. #define USB_USBTRC0_VREDG_DET(x) (((uint8_t)(((uint8_t)(x)) << USB_USBTRC0_VREDG_DET_SHIFT)) & USB_USBTRC0_VREDG_DET_MASK)
  634. #define USB_USBTRC0_VFEDG_DET_MASK (0x10U)
  635. #define USB_USBTRC0_VFEDG_DET_SHIFT (4U)
  636. #define USB_USBTRC0_VFEDG_DET(x) (((uint8_t)(((uint8_t)(x)) << USB_USBTRC0_VFEDG_DET_SHIFT)) & USB_USBTRC0_VFEDG_DET_MASK)
  637. #define USB_USBTRC0_USBRESMEN_MASK (0x20U)
  638. #define USB_USBTRC0_USBRESMEN_SHIFT (5U)
  639. #define USB_USBTRC0_USBRESMEN(x) (((uint8_t)(((uint8_t)(x)) << USB_USBTRC0_USBRESMEN_SHIFT)) & USB_USBTRC0_USBRESMEN_MASK)
  640. #define USB_USBTRC0_USBRESET_MASK (0x80U)
  641. #define USB_USBTRC0_USBRESET_SHIFT (7U)
  642. #define USB_USBTRC0_USBRESET(x) (((uint8_t)(((uint8_t)(x)) << USB_USBTRC0_USBRESET_SHIFT)) & USB_USBTRC0_USBRESET_MASK)
  643. /*! @name USBFRMADJUST - Frame Adjust Register */
  644. #define USB_USBFRMADJUST_ADJ_MASK (0xFFU)
  645. #define USB_USBFRMADJUST_ADJ_SHIFT (0U)
  646. #define USB_USBFRMADJUST_ADJ(x) (((uint8_t)(((uint8_t)(x)) << USB_USBFRMADJUST_ADJ_SHIFT)) & USB_USBFRMADJUST_ADJ_MASK)
  647. /*! @name MISCCTRL - Miscellaneous Control register */
  648. #define USB_MISCCTRL_SOFDYNTHLD_MASK (0x1U)
  649. #define USB_MISCCTRL_SOFDYNTHLD_SHIFT (0U)
  650. #define USB_MISCCTRL_SOFDYNTHLD(x) (((uint8_t)(((uint8_t)(x)) << USB_MISCCTRL_SOFDYNTHLD_SHIFT)) & USB_MISCCTRL_SOFDYNTHLD_MASK)
  651. #define USB_MISCCTRL_SOFBUSSET_MASK (0x2U)
  652. #define USB_MISCCTRL_SOFBUSSET_SHIFT (1U)
  653. #define USB_MISCCTRL_SOFBUSSET(x) (((uint8_t)(((uint8_t)(x)) << USB_MISCCTRL_SOFBUSSET_SHIFT)) & USB_MISCCTRL_SOFBUSSET_MASK)
  654. #define USB_MISCCTRL_OWNERRISODIS_MASK (0x4U)
  655. #define USB_MISCCTRL_OWNERRISODIS_SHIFT (2U)
  656. #define USB_MISCCTRL_OWNERRISODIS(x) (((uint8_t)(((uint8_t)(x)) << USB_MISCCTRL_OWNERRISODIS_SHIFT)) & USB_MISCCTRL_OWNERRISODIS_MASK)
  657. #define USB_MISCCTRL_VREDG_EN_MASK (0x8U)
  658. #define USB_MISCCTRL_VREDG_EN_SHIFT (3U)
  659. #define USB_MISCCTRL_VREDG_EN(x) (((uint8_t)(((uint8_t)(x)) << USB_MISCCTRL_VREDG_EN_SHIFT)) & USB_MISCCTRL_VREDG_EN_MASK)
  660. #define USB_MISCCTRL_VFEDG_EN_MASK (0x10U)
  661. #define USB_MISCCTRL_VFEDG_EN_SHIFT (4U)
  662. #define USB_MISCCTRL_VFEDG_EN(x) (((uint8_t)(((uint8_t)(x)) << USB_MISCCTRL_VFEDG_EN_SHIFT)) & USB_MISCCTRL_VFEDG_EN_MASK)
  663. #define USB_MISCCTRL_STL_ADJ_EN_MASK (0x80U)
  664. #define USB_MISCCTRL_STL_ADJ_EN_SHIFT (7U)
  665. #define USB_MISCCTRL_STL_ADJ_EN(x) (((uint8_t)(((uint8_t)(x)) << USB_MISCCTRL_STL_ADJ_EN_SHIFT)) & USB_MISCCTRL_STL_ADJ_EN_MASK)
  666. /*! @name STALL_IL_DIS - Peripheral mode stall disable for endpoints 7 to 0 in IN direction */
  667. #define USB_STALL_IL_DIS_STALL_I_DIS0_MASK (0x1U)
  668. #define USB_STALL_IL_DIS_STALL_I_DIS0_SHIFT (0U)
  669. #define USB_STALL_IL_DIS_STALL_I_DIS0(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_IL_DIS_STALL_I_DIS0_SHIFT)) & USB_STALL_IL_DIS_STALL_I_DIS0_MASK)
  670. #define USB_STALL_IL_DIS_STALL_I_DIS1_MASK (0x2U)
  671. #define USB_STALL_IL_DIS_STALL_I_DIS1_SHIFT (1U)
  672. #define USB_STALL_IL_DIS_STALL_I_DIS1(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_IL_DIS_STALL_I_DIS1_SHIFT)) & USB_STALL_IL_DIS_STALL_I_DIS1_MASK)
  673. #define USB_STALL_IL_DIS_STALL_I_DIS2_MASK (0x4U)
  674. #define USB_STALL_IL_DIS_STALL_I_DIS2_SHIFT (2U)
  675. #define USB_STALL_IL_DIS_STALL_I_DIS2(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_IL_DIS_STALL_I_DIS2_SHIFT)) & USB_STALL_IL_DIS_STALL_I_DIS2_MASK)
  676. #define USB_STALL_IL_DIS_STALL_I_DIS3_MASK (0x8U)
  677. #define USB_STALL_IL_DIS_STALL_I_DIS3_SHIFT (3U)
  678. #define USB_STALL_IL_DIS_STALL_I_DIS3(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_IL_DIS_STALL_I_DIS3_SHIFT)) & USB_STALL_IL_DIS_STALL_I_DIS3_MASK)
  679. #define USB_STALL_IL_DIS_STALL_I_DIS4_MASK (0x10U)
  680. #define USB_STALL_IL_DIS_STALL_I_DIS4_SHIFT (4U)
  681. #define USB_STALL_IL_DIS_STALL_I_DIS4(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_IL_DIS_STALL_I_DIS4_SHIFT)) & USB_STALL_IL_DIS_STALL_I_DIS4_MASK)
  682. #define USB_STALL_IL_DIS_STALL_I_DIS5_MASK (0x20U)
  683. #define USB_STALL_IL_DIS_STALL_I_DIS5_SHIFT (5U)
  684. #define USB_STALL_IL_DIS_STALL_I_DIS5(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_IL_DIS_STALL_I_DIS5_SHIFT)) & USB_STALL_IL_DIS_STALL_I_DIS5_MASK)
  685. #define USB_STALL_IL_DIS_STALL_I_DIS6_MASK (0x40U)
  686. #define USB_STALL_IL_DIS_STALL_I_DIS6_SHIFT (6U)
  687. #define USB_STALL_IL_DIS_STALL_I_DIS6(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_IL_DIS_STALL_I_DIS6_SHIFT)) & USB_STALL_IL_DIS_STALL_I_DIS6_MASK)
  688. #define USB_STALL_IL_DIS_STALL_I_DIS7_MASK (0x80U)
  689. #define USB_STALL_IL_DIS_STALL_I_DIS7_SHIFT (7U)
  690. #define USB_STALL_IL_DIS_STALL_I_DIS7(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_IL_DIS_STALL_I_DIS7_SHIFT)) & USB_STALL_IL_DIS_STALL_I_DIS7_MASK)
  691. /*! @name STALL_IH_DIS - Peripheral mode stall disable for endpoints 15 to 8 in IN direction */
  692. #define USB_STALL_IH_DIS_STALL_I_DIS8_MASK (0x1U)
  693. #define USB_STALL_IH_DIS_STALL_I_DIS8_SHIFT (0U)
  694. #define USB_STALL_IH_DIS_STALL_I_DIS8(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_IH_DIS_STALL_I_DIS8_SHIFT)) & USB_STALL_IH_DIS_STALL_I_DIS8_MASK)
  695. #define USB_STALL_IH_DIS_STALL_I_DIS9_MASK (0x2U)
  696. #define USB_STALL_IH_DIS_STALL_I_DIS9_SHIFT (1U)
  697. #define USB_STALL_IH_DIS_STALL_I_DIS9(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_IH_DIS_STALL_I_DIS9_SHIFT)) & USB_STALL_IH_DIS_STALL_I_DIS9_MASK)
  698. #define USB_STALL_IH_DIS_STALL_I_DIS10_MASK (0x4U)
  699. #define USB_STALL_IH_DIS_STALL_I_DIS10_SHIFT (2U)
  700. #define USB_STALL_IH_DIS_STALL_I_DIS10(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_IH_DIS_STALL_I_DIS10_SHIFT)) & USB_STALL_IH_DIS_STALL_I_DIS10_MASK)
  701. #define USB_STALL_IH_DIS_STALL_I_DIS11_MASK (0x8U)
  702. #define USB_STALL_IH_DIS_STALL_I_DIS11_SHIFT (3U)
  703. #define USB_STALL_IH_DIS_STALL_I_DIS11(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_IH_DIS_STALL_I_DIS11_SHIFT)) & USB_STALL_IH_DIS_STALL_I_DIS11_MASK)
  704. #define USB_STALL_IH_DIS_STALL_I_DIS12_MASK (0x10U)
  705. #define USB_STALL_IH_DIS_STALL_I_DIS12_SHIFT (4U)
  706. #define USB_STALL_IH_DIS_STALL_I_DIS12(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_IH_DIS_STALL_I_DIS12_SHIFT)) & USB_STALL_IH_DIS_STALL_I_DIS12_MASK)
  707. #define USB_STALL_IH_DIS_STALL_I_DIS13_MASK (0x20U)
  708. #define USB_STALL_IH_DIS_STALL_I_DIS13_SHIFT (5U)
  709. #define USB_STALL_IH_DIS_STALL_I_DIS13(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_IH_DIS_STALL_I_DIS13_SHIFT)) & USB_STALL_IH_DIS_STALL_I_DIS13_MASK)
  710. #define USB_STALL_IH_DIS_STALL_I_DIS14_MASK (0x40U)
  711. #define USB_STALL_IH_DIS_STALL_I_DIS14_SHIFT (6U)
  712. #define USB_STALL_IH_DIS_STALL_I_DIS14(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_IH_DIS_STALL_I_DIS14_SHIFT)) & USB_STALL_IH_DIS_STALL_I_DIS14_MASK)
  713. #define USB_STALL_IH_DIS_STALL_I_DIS15_MASK (0x80U)
  714. #define USB_STALL_IH_DIS_STALL_I_DIS15_SHIFT (7U)
  715. #define USB_STALL_IH_DIS_STALL_I_DIS15(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_IH_DIS_STALL_I_DIS15_SHIFT)) & USB_STALL_IH_DIS_STALL_I_DIS15_MASK)
  716. /*! @name STALL_OL_DIS - Peripheral mode stall disable for endpoints 7 to 0 in OUT direction */
  717. #define USB_STALL_OL_DIS_STALL_O_DIS0_MASK (0x1U)
  718. #define USB_STALL_OL_DIS_STALL_O_DIS0_SHIFT (0U)
  719. #define USB_STALL_OL_DIS_STALL_O_DIS0(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_OL_DIS_STALL_O_DIS0_SHIFT)) & USB_STALL_OL_DIS_STALL_O_DIS0_MASK)
  720. #define USB_STALL_OL_DIS_STALL_O_DIS1_MASK (0x2U)
  721. #define USB_STALL_OL_DIS_STALL_O_DIS1_SHIFT (1U)
  722. #define USB_STALL_OL_DIS_STALL_O_DIS1(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_OL_DIS_STALL_O_DIS1_SHIFT)) & USB_STALL_OL_DIS_STALL_O_DIS1_MASK)
  723. #define USB_STALL_OL_DIS_STALL_O_DIS2_MASK (0x4U)
  724. #define USB_STALL_OL_DIS_STALL_O_DIS2_SHIFT (2U)
  725. #define USB_STALL_OL_DIS_STALL_O_DIS2(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_OL_DIS_STALL_O_DIS2_SHIFT)) & USB_STALL_OL_DIS_STALL_O_DIS2_MASK)
  726. #define USB_STALL_OL_DIS_STALL_O_DIS3_MASK (0x8U)
  727. #define USB_STALL_OL_DIS_STALL_O_DIS3_SHIFT (3U)
  728. #define USB_STALL_OL_DIS_STALL_O_DIS3(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_OL_DIS_STALL_O_DIS3_SHIFT)) & USB_STALL_OL_DIS_STALL_O_DIS3_MASK)
  729. #define USB_STALL_OL_DIS_STALL_O_DIS4_MASK (0x10U)
  730. #define USB_STALL_OL_DIS_STALL_O_DIS4_SHIFT (4U)
  731. #define USB_STALL_OL_DIS_STALL_O_DIS4(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_OL_DIS_STALL_O_DIS4_SHIFT)) & USB_STALL_OL_DIS_STALL_O_DIS4_MASK)
  732. #define USB_STALL_OL_DIS_STALL_O_DIS5_MASK (0x20U)
  733. #define USB_STALL_OL_DIS_STALL_O_DIS5_SHIFT (5U)
  734. #define USB_STALL_OL_DIS_STALL_O_DIS5(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_OL_DIS_STALL_O_DIS5_SHIFT)) & USB_STALL_OL_DIS_STALL_O_DIS5_MASK)
  735. #define USB_STALL_OL_DIS_STALL_O_DIS6_MASK (0x40U)
  736. #define USB_STALL_OL_DIS_STALL_O_DIS6_SHIFT (6U)
  737. #define USB_STALL_OL_DIS_STALL_O_DIS6(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_OL_DIS_STALL_O_DIS6_SHIFT)) & USB_STALL_OL_DIS_STALL_O_DIS6_MASK)
  738. #define USB_STALL_OL_DIS_STALL_O_DIS7_MASK (0x80U)
  739. #define USB_STALL_OL_DIS_STALL_O_DIS7_SHIFT (7U)
  740. #define USB_STALL_OL_DIS_STALL_O_DIS7(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_OL_DIS_STALL_O_DIS7_SHIFT)) & USB_STALL_OL_DIS_STALL_O_DIS7_MASK)
  741. /*! @name STALL_OH_DIS - Peripheral mode stall disable for endpoints 15 to 8 in OUT direction */
  742. #define USB_STALL_OH_DIS_STALL_O_DIS8_MASK (0x1U)
  743. #define USB_STALL_OH_DIS_STALL_O_DIS8_SHIFT (0U)
  744. #define USB_STALL_OH_DIS_STALL_O_DIS8(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_OH_DIS_STALL_O_DIS8_SHIFT)) & USB_STALL_OH_DIS_STALL_O_DIS8_MASK)
  745. #define USB_STALL_OH_DIS_STALL_O_DIS9_MASK (0x2U)
  746. #define USB_STALL_OH_DIS_STALL_O_DIS9_SHIFT (1U)
  747. #define USB_STALL_OH_DIS_STALL_O_DIS9(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_OH_DIS_STALL_O_DIS9_SHIFT)) & USB_STALL_OH_DIS_STALL_O_DIS9_MASK)
  748. #define USB_STALL_OH_DIS_STALL_O_DIS10_MASK (0x4U)
  749. #define USB_STALL_OH_DIS_STALL_O_DIS10_SHIFT (2U)
  750. #define USB_STALL_OH_DIS_STALL_O_DIS10(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_OH_DIS_STALL_O_DIS10_SHIFT)) & USB_STALL_OH_DIS_STALL_O_DIS10_MASK)
  751. #define USB_STALL_OH_DIS_STALL_O_DIS11_MASK (0x8U)
  752. #define USB_STALL_OH_DIS_STALL_O_DIS11_SHIFT (3U)
  753. #define USB_STALL_OH_DIS_STALL_O_DIS11(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_OH_DIS_STALL_O_DIS11_SHIFT)) & USB_STALL_OH_DIS_STALL_O_DIS11_MASK)
  754. #define USB_STALL_OH_DIS_STALL_O_DIS12_MASK (0x10U)
  755. #define USB_STALL_OH_DIS_STALL_O_DIS12_SHIFT (4U)
  756. #define USB_STALL_OH_DIS_STALL_O_DIS12(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_OH_DIS_STALL_O_DIS12_SHIFT)) & USB_STALL_OH_DIS_STALL_O_DIS12_MASK)
  757. #define USB_STALL_OH_DIS_STALL_O_DIS13_MASK (0x20U)
  758. #define USB_STALL_OH_DIS_STALL_O_DIS13_SHIFT (5U)
  759. #define USB_STALL_OH_DIS_STALL_O_DIS13(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_OH_DIS_STALL_O_DIS13_SHIFT)) & USB_STALL_OH_DIS_STALL_O_DIS13_MASK)
  760. #define USB_STALL_OH_DIS_STALL_O_DIS14_MASK (0x40U)
  761. #define USB_STALL_OH_DIS_STALL_O_DIS14_SHIFT (6U)
  762. #define USB_STALL_OH_DIS_STALL_O_DIS14(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_OH_DIS_STALL_O_DIS14_SHIFT)) & USB_STALL_OH_DIS_STALL_O_DIS14_MASK)
  763. #define USB_STALL_OH_DIS_STALL_O_DIS15_MASK (0x80U)
  764. #define USB_STALL_OH_DIS_STALL_O_DIS15_SHIFT (7U)
  765. #define USB_STALL_OH_DIS_STALL_O_DIS15(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_OH_DIS_STALL_O_DIS15_SHIFT)) & USB_STALL_OH_DIS_STALL_O_DIS15_MASK)
  766. /*! @name CLK_RECOVER_CTRL - USB Clock recovery control */
  767. #define USB_CLK_RECOVER_CTRL_RESTART_IFRTRIM_EN_MASK (0x20U)
  768. #define USB_CLK_RECOVER_CTRL_RESTART_IFRTRIM_EN_SHIFT (5U)
  769. #define USB_CLK_RECOVER_CTRL_RESTART_IFRTRIM_EN(x) (((uint8_t)(((uint8_t)(x)) << USB_CLK_RECOVER_CTRL_RESTART_IFRTRIM_EN_SHIFT)) & USB_CLK_RECOVER_CTRL_RESTART_IFRTRIM_EN_MASK)
  770. #define USB_CLK_RECOVER_CTRL_RESET_RESUME_ROUGH_EN_MASK (0x40U)
  771. #define USB_CLK_RECOVER_CTRL_RESET_RESUME_ROUGH_EN_SHIFT (6U)
  772. #define USB_CLK_RECOVER_CTRL_RESET_RESUME_ROUGH_EN(x) (((uint8_t)(((uint8_t)(x)) << USB_CLK_RECOVER_CTRL_RESET_RESUME_ROUGH_EN_SHIFT)) & USB_CLK_RECOVER_CTRL_RESET_RESUME_ROUGH_EN_MASK)
  773. #define USB_CLK_RECOVER_CTRL_CLOCK_RECOVER_EN_MASK (0x80U)
  774. #define USB_CLK_RECOVER_CTRL_CLOCK_RECOVER_EN_SHIFT (7U)
  775. #define USB_CLK_RECOVER_CTRL_CLOCK_RECOVER_EN(x) (((uint8_t)(((uint8_t)(x)) << USB_CLK_RECOVER_CTRL_CLOCK_RECOVER_EN_SHIFT)) & USB_CLK_RECOVER_CTRL_CLOCK_RECOVER_EN_MASK)
  776. /*! @name CLK_RECOVER_IRC_EN - IRC48M oscillator enable register */
  777. #define USB_CLK_RECOVER_IRC_EN_REG_EN_MASK (0x1U)
  778. #define USB_CLK_RECOVER_IRC_EN_REG_EN_SHIFT (0U)
  779. #define USB_CLK_RECOVER_IRC_EN_REG_EN(x) (((uint8_t)(((uint8_t)(x)) << USB_CLK_RECOVER_IRC_EN_REG_EN_SHIFT)) & USB_CLK_RECOVER_IRC_EN_REG_EN_MASK)
  780. #define USB_CLK_RECOVER_IRC_EN_IRC_EN_MASK (0x2U)
  781. #define USB_CLK_RECOVER_IRC_EN_IRC_EN_SHIFT (1U)
  782. #define USB_CLK_RECOVER_IRC_EN_IRC_EN(x) (((uint8_t)(((uint8_t)(x)) << USB_CLK_RECOVER_IRC_EN_IRC_EN_SHIFT)) & USB_CLK_RECOVER_IRC_EN_IRC_EN_MASK)
  783. /*! @name CLK_RECOVER_INT_EN - Clock recovery combined interrupt enable */
  784. #define USB_CLK_RECOVER_INT_EN_OVF_ERROR_EN_MASK (0x10U)
  785. #define USB_CLK_RECOVER_INT_EN_OVF_ERROR_EN_SHIFT (4U)
  786. #define USB_CLK_RECOVER_INT_EN_OVF_ERROR_EN(x) (((uint8_t)(((uint8_t)(x)) << USB_CLK_RECOVER_INT_EN_OVF_ERROR_EN_SHIFT)) & USB_CLK_RECOVER_INT_EN_OVF_ERROR_EN_MASK)
  787. /*! @name CLK_RECOVER_INT_STATUS - Clock recovery separated interrupt status */
  788. #define USB_CLK_RECOVER_INT_STATUS_OVF_ERROR_MASK (0x10U)
  789. #define USB_CLK_RECOVER_INT_STATUS_OVF_ERROR_SHIFT (4U)
  790. #define USB_CLK_RECOVER_INT_STATUS_OVF_ERROR(x) (((uint8_t)(((uint8_t)(x)) << USB_CLK_RECOVER_INT_STATUS_OVF_ERROR_SHIFT)) & USB_CLK_RECOVER_INT_STATUS_OVF_ERROR_MASK)
  791. #define USB0_BASE ((0x50000000))
  792. #define USB_BASE_ADDRS { USB0_BASE }
  793. /// @}
  794. /// @}
  795. /// @}
  796. ////////////////////////////////////////////////////////////////////////////////
  797. #endif //__REG_USB_OTG_FS_H
  798. ////////////////////////////////////////////////////////////////////////////////