tae32f53xx_ll_dma.h 40 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193
  1. /**
  2. ******************************************************************************
  3. * @file tae32f53xx_ll_dma.h
  4. * @author MCD Application Team
  5. * @brief Header file for DMA LL module.
  6. *
  7. ******************************************************************************
  8. * @attention
  9. *
  10. * <h2><center>&copy; Copyright (c) 2020 Tai-Action.
  11. * All rights reserved.</center></h2>
  12. *
  13. * This software is licensed by Tai-Action under BSD 3-Clause license,
  14. * the "License"; You may not use this file except in compliance with the
  15. * License. You may obtain a copy of the License at:
  16. * opensource.org/licenses/BSD-3-Clause
  17. *
  18. ******************************************************************************
  19. */
  20. /* Define to prevent recursive inclusion -------------------------------------*/
  21. #ifndef _TAE32F53XX_LL_DMA_H_
  22. #define _TAE32F53XX_LL_DMA_H_
  23. #ifdef __cplusplus
  24. extern "C" {
  25. #endif /* __cplusplus */
  26. /* Includes ------------------------------------------------------------------*/
  27. #include "tae32f53xx_ll_def.h"
  28. /** @addtogroup TAE32F53xx_LL_Driver
  29. * @{
  30. */
  31. /** @addtogroup DMA_LL
  32. * @{
  33. */
  34. /* Exported constants --------------------------------------------------------*/
  35. /** @defgroup DMA_LL_Exported_Constants DMA LL Exported Constants
  36. * @brief DMA LL Exported Constants
  37. * @{
  38. */
  39. /**
  40. * @brief DMA block size max
  41. */
  42. #define LL_DMA_BLOCK_SIZE_MAX (0xfffU)
  43. /**
  44. * @brief SRAMBC address start
  45. */
  46. #define LL_DMA_SRMBC_ADDR_START (0x20004000UL)
  47. /**
  48. * @brief SRAMBC address end
  49. */
  50. #define LL_DMA_SRMBC_ADDR_END (0x20006000UL - 1)
  51. /**
  52. * @}
  53. */
  54. /* Exported types ------------------------------------------------------------*/
  55. /** @defgroup DMA_LL_Exported_Types DMA LL Exported Types
  56. * @brief DMA LL Exported Types
  57. * @{
  58. */
  59. /**
  60. * @brief DMA Source Peripheral bus type definition
  61. */
  62. typedef enum {
  63. DMA_SRC_PERIPH_BUS_AHB_MST1 = DMA_CH_CR0_SMS_AHB_MST1, /*!< Source Peripheral bus AHB Master1 */
  64. DMA_SRC_PERIPH_BUS_AHB_MST2 = DMA_CH_CR0_SMS_AHB_MST2, /*!< Source Peripheral bus AHB Master2 */
  65. } DMA_SrcPeriphBusETypeDef;
  66. /**
  67. * @brief DMA Destination Peripheral bus type definition
  68. */
  69. typedef enum {
  70. DMA_DST_PERIPH_BUS_AHB_MST1 = DMA_CH_CR0_DMS_AHB_MST1, /*!< Destination Peripheral bus AHB Master1 */
  71. DMA_DST_PERIPH_BUS_AHB_MST2 = DMA_CH_CR0_DMS_AHB_MST2, /*!< Destination Peripheral bus AHB Master2 */
  72. } DMA_DstPeriphBusETypeDef;
  73. /**
  74. * brief DMA transfer type type definition
  75. */
  76. typedef enum {
  77. DMA_TRANS_TYPE_M2M = DMA_CH_CR0_TTC_M2M, /*!< Transfer type M2M */
  78. DMA_TRANS_TYPE_M2P = DMA_CH_CR0_TTC_M2P, /*!< Transfer type M2P */
  79. DMA_TRANS_TYPE_P2M = DMA_CH_CR0_TTC_P2M, /*!< Transfer type P2M */
  80. DMA_TRANS_TYPE_P2P = DMA_CH_CR0_TTC_P2P, /*!< Transfer type P2P */
  81. } DMA_TransTypeETypeDef;
  82. /**
  83. * @brief DMA Source burst length type definition
  84. */
  85. typedef enum {
  86. DMA_SRC_BURST_LEN_1 = DMA_CH_CR0_SBTL_1, /*!< Source burst length 1 */
  87. DMA_SRC_BURST_LEN_4 = DMA_CH_CR0_SBTL_4, /*!< Source burst length 4 */
  88. DMA_SRC_BURST_LEN_8 = DMA_CH_CR0_SBTL_8, /*!< Source burst length 8 */
  89. } DMA_SrcBurstLenETypeDef;
  90. /**
  91. * @brief DMA Destination burst length type definition
  92. */
  93. typedef enum {
  94. DMA_DST_BURST_LEN_1 = DMA_CH_CR0_DBTL_1, /*!< Destination burst length 1 */
  95. DMA_DST_BURST_LEN_4 = DMA_CH_CR0_DBTL_4, /*!< Destination burst length 4 */
  96. DMA_DST_BURST_LEN_8 = DMA_CH_CR0_DBTL_8, /*!< Destination burst length 8 */
  97. } DMA_DstBurstLenETypeDef;
  98. /**
  99. * @brief DMA Source address mode type definition
  100. */
  101. typedef enum {
  102. DMA_SRC_ADDR_MODE_INC = DMA_CH_CR0_SINC_INC, /*!< Source address mode Increase */
  103. DMA_SRC_ADDR_MODE_DEC = DMA_CH_CR0_SINC_DEC, /*!< Source address mode Decrease */
  104. DMA_SRC_ADDR_MODE_FIX = DMA_CH_CR0_SINC_FIX, /*!< Source address mode Fixed */
  105. } DMA_SrcAddrModeETypeDef;
  106. /**
  107. * @brief DMA Destination address mode type definition
  108. */
  109. typedef enum {
  110. DMA_DST_ADDR_MODE_INC = DMA_CH_CR0_DINC_INC, /*!< Destination address mode Increase */
  111. DMA_DST_ADDR_MODE_DEC = DMA_CH_CR0_DINC_DEC, /*!< Destination address mode Decrease */
  112. DMA_DST_ADDR_MODE_FIX = DMA_CH_CR0_DINC_FIX, /*!< Destination address mode Fixed */
  113. } DMA_DstAddrModeETypeDef;
  114. /**
  115. * @brief DMA Source transfer width type definition
  116. */
  117. typedef enum {
  118. DMA_SRC_TRANS_WIDTH_8b = DMA_CH_CR0_STW_8b, /*!< Source transfer width 8bit */
  119. DMA_SRC_TRANS_WIDTH_16b = DMA_CH_CR0_STW_16b, /*!< Source transfer width 16bit */
  120. DMA_SRC_TRANS_WIDTH_32b = DMA_CH_CR0_STW_32b, /*!< Source transfer width 32bit */
  121. } DMA_SrcTransWidthETypeDef;
  122. /**
  123. * @brief DMA Destination transfer width type definition
  124. */
  125. typedef enum {
  126. DMA_DST_TRANS_WIDTH_8b = DMA_CH_CR0_DTW_8b, /*!< Destination transfer width 8bit */
  127. DMA_DST_TRANS_WIDTH_16b = DMA_CH_CR0_DTW_16b, /*!< Destination transfer width 16bit */
  128. DMA_DST_TRANS_WIDTH_32b = DMA_CH_CR0_DTW_32b, /*!< Destination transfer width 32bit */
  129. } DMA_DstTransWidthETypeDef;
  130. /**
  131. * @brief DMA Source handshaking interface type definition
  132. */
  133. typedef enum {
  134. DMA_SRC_HANDSHAKE_IFC_MEMORY = 0, /*!< Source handshaking interface MEMORY */
  135. DMA_SRC_HANDSHAKE_IFC_I2C0_TX = DMA_CH_CR3_SHSIF_I2C0_TX, /*!< Source handshaking interface I2C0_TX */
  136. DMA_SRC_HANDSHAKE_IFC_I2C0_RX = DMA_CH_CR3_SHSIF_I2C0_RX, /*!< Source handshaking interface I2C0_RX */
  137. DMA_SRC_HANDSHAKE_IFC_I2C1_TX = DMA_CH_CR3_SHSIF_I2C1_TX, /*!< Source handshaking interface I2C1_TX */
  138. DMA_SRC_HANDSHAKE_IFC_I2C1_RX = DMA_CH_CR3_SHSIF_I2C1_RX, /*!< Source handshaking interface I2C1_RX */
  139. DMA_SRC_HANDSHAKE_IFC_UART0_TX = DMA_CH_CR3_SHSIF_UART0_TX, /*!< Source handshaking interface UART0_TX */
  140. DMA_SRC_HANDSHAKE_IFC_UART0_RX = DMA_CH_CR3_SHSIF_UART0_RX, /*!< Source handshaking interface UART0_RX */
  141. DMA_SRC_HANDSHAKE_IFC_UART1_TX = DMA_CH_CR3_SHSIF_UART1_TX, /*!< Source handshaking interface UART1_TX */
  142. DMA_SRC_HANDSHAKE_IFC_UART1_RX = DMA_CH_CR3_SHSIF_UART1_RX, /*!< Source handshaking interface UART1_RX */
  143. } DMA_SrcHandshakeIfcETypeDef;
  144. /**
  145. * @brief DMA Destination handshaking interface type definition
  146. */
  147. typedef enum {
  148. DMA_DST_HANDSHAKE_IFC_MEMORY = 0, /*!< Destination handshaking interface MEMORY */
  149. DMA_DST_HANDSHAKE_IFC_I2C0_TX = DMA_CH_CR3_DHSIF_I2C0_TX, /*!< Destination handshaking interface I2C0_TX */
  150. DMA_DST_HANDSHAKE_IFC_I2C0_RX = DMA_CH_CR3_DHSIF_I2C0_RX, /*!< Destination handshaking interface I2C0_RX */
  151. DMA_DST_HANDSHAKE_IFC_I2C1_TX = DMA_CH_CR3_DHSIF_I2C1_TX, /*!< Destination handshaking interface I2C1_TX */
  152. DMA_DST_HANDSHAKE_IFC_I2C1_RX = DMA_CH_CR3_DHSIF_I2C1_RX, /*!< Destination handshaking interface I2C1_RX */
  153. DMA_DST_HANDSHAKE_IFC_UART0_TX = DMA_CH_CR3_DHSIF_UART0_TX, /*!< Destination handshaking interface UART0_TX */
  154. DMA_DST_HANDSHAKE_IFC_UART0_RX = DMA_CH_CR3_DHSIF_UART0_RX, /*!< Destination handshaking interface UART0_RX */
  155. DMA_DST_HANDSHAKE_IFC_UART1_TX = DMA_CH_CR3_DHSIF_UART1_TX, /*!< Destination handshaking interface UART1_TX */
  156. DMA_DST_HANDSHAKE_IFC_UART1_RX = DMA_CH_CR3_DHSIF_UART1_RX, /*!< Destination handshaking interface UART1_RX */
  157. } DMA_DstHandshakeIfcETypeDef;
  158. /**
  159. * @brief DMA channel type definition
  160. */
  161. typedef enum {
  162. DMA_CHANNEL_0 = 0U, /*!< DMA Channel 0 */
  163. DMA_CHANNEL_1 = 1U, /*!< DMA Channel 1 */
  164. DMA_CHANNEL_NUM = 2U, /*!< DMA Channel Number */
  165. DMA_CHANNEL_INVALID = 0xFFU, /*!< DMA Channel Invalid */
  166. } DMA_ChannelETypeDef;
  167. /**
  168. * @brief DMA State type definition
  169. */
  170. typedef enum {
  171. DMA_STATE_RESET = 0, /*!< DMA State Reset: not yet initialized or disabled */
  172. DMA_STATE_READY, /*!< DMA State Ready: initialized and ready for use */
  173. DMA_STATE_BUSY, /*!< DMA State Busy: process is ongoing */
  174. } DMA_StateETypeDef;
  175. /**
  176. * @brief DMA IRQ callback function type definition
  177. */
  178. typedef void (*DMA_IRQCallback)(void *arg);
  179. /**
  180. * @brief DMA user config type definition
  181. */
  182. typedef struct __DMA_UserCfgTypeDef {
  183. DMA_TransTypeETypeDef trans_type; /*!< transfer type */
  184. DMA_SrcAddrModeETypeDef src_addr_mode; /*!< source address mode */
  185. DMA_DstAddrModeETypeDef dst_addr_mode; /*!< destination address mode */
  186. DMA_SrcTransWidthETypeDef src_data_width; /*!< source data width */
  187. DMA_DstTransWidthETypeDef dst_data_width; /*!< destination data width */
  188. DMA_SrcHandshakeIfcETypeDef src_hs_ifc; /*!< source handshake interface */
  189. DMA_DstHandshakeIfcETypeDef dst_hs_ifc; /*!< destination handshake interface */
  190. void *end_arg; /*!< argument of transfer complete callback fucntion */
  191. DMA_IRQCallback end_callback; /*!< transfer complete callback fucntion */
  192. void *err_arg; /*!< argument of transfer error callback fucntion */
  193. DMA_IRQCallback err_callback; /*!< transfer error callback fucntion */
  194. } DMA_UserCfgTypeDef;
  195. /**
  196. * @}
  197. */
  198. /* Exported macro ------------------------------------------------------------*/
  199. /** @defgroup DMA_LL_Exported_Macros DMA LL Exported Macros
  200. * @brief DMA LL Exported Macros
  201. * @{
  202. */
  203. /**
  204. * @brief Source address set
  205. * @param __DMA__ Specifies DMA peripheral
  206. * @param ch DMA channel
  207. * @param addr Source address
  208. * @return None
  209. */
  210. #define __LL_DMA_SrcAddr_Set(__DMA__, ch, addr) WRITE_REG((__DMA__)->CH[(ch)].SAR, addr)
  211. /**
  212. * @brief Destination address set
  213. * @param __DMA__ Specifies DMA peripheral
  214. * @param ch DMA channel
  215. * @param addr Destination address
  216. * @return None
  217. */
  218. #define __LL_DMA_DstAddr_Set(__DMA__, ch, addr) WRITE_REG((__DMA__)->CH[(ch)].DAR, addr)
  219. /**
  220. * @brief Source peripheral bus set
  221. * @param __DMA__ Specifies DMA peripheral
  222. * @param ch DMA channel
  223. * @param bus Source peripheral bus
  224. * @return None
  225. */
  226. #define __LL_DMA_SrcPeriphBus_Set(__DMA__, ch, bus) MODIFY_REG((__DMA__)->CH[(ch)].CR0, DMA_CH_CR0_SMS_Msk, bus)
  227. /**
  228. * @brief Destination peripheral bus set
  229. * @param __DMA__ Specifies DMA peripheral
  230. * @param ch DMA channel
  231. * @param bus Destination peripheral bus
  232. * @return None
  233. */
  234. #define __LL_DMA_DstPeriphBus_Set(__DMA__, ch, bus) MODIFY_REG((__DMA__)->CH[(ch)].CR0, DMA_CH_CR0_DMS_Msk, bus)
  235. /**
  236. * @brief Transfer type set
  237. * @param __DMA__ Specifies DMA peripheral
  238. * @param ch DMA channel
  239. * @param type Transfer type
  240. * @return None
  241. */
  242. #define __LL_DMA_TransType_Set(__DMA__, ch, type) MODIFY_REG((__DMA__)->CH[(ch)].CR0, DMA_CH_CR0_TTC_Msk, type)
  243. /**
  244. * @brief Source burst length set
  245. * @param __DMA__ Specifies DMA peripheral
  246. * @param ch DMA channel
  247. * @param len Source burst length
  248. * @return None
  249. */
  250. #define __LL_DMA_SrcBurstLen_Set(__DMA__, ch, len) MODIFY_REG((__DMA__)->CH[(ch)].CR0, DMA_CH_CR0_SBTL_Msk, len)
  251. /**
  252. * @brief Destination burst length set
  253. * @param __DMA__ Specifies DMA peripheral
  254. * @param ch DMA channel
  255. * @param len Destination burst length
  256. * @return None
  257. */
  258. #define __LL_DMA_DstBurstLen_Set(__DMA__, ch, len) MODIFY_REG((__DMA__)->CH[(ch)].CR0, DMA_CH_CR0_DBTL_Msk, len)
  259. /**
  260. * @brief Source address mode set
  261. * @param __DMA__ Specifies DMA peripheral
  262. * @param ch DMA channel
  263. * @param mode Source address mode
  264. * @return None
  265. */
  266. #define __LL_DMA_SrcAddrMode_Set(__DMA__, ch, mode) MODIFY_REG((__DMA__)->CH[(ch)].CR0, DMA_CH_CR0_SINC_Msk, mode)
  267. /**
  268. * @brief Destination address mode set
  269. * @param __DMA__ Specifies DMA peripheral
  270. * @param ch DMA channel
  271. * @param mode Destination address mode
  272. * @return None
  273. */
  274. #define __LL_DMA_DstAddrMode_Set(__DMA__, ch, mode) MODIFY_REG((__DMA__)->CH[(ch)].CR0, DMA_CH_CR0_DINC_Msk, mode)
  275. /**
  276. * @brief Source transfer width set
  277. * @param __DMA__ Specifies DMA peripheral
  278. * @param ch DMA channel
  279. * @param width Source transfer width
  280. * @return None
  281. */
  282. #define __LL_DMA_SrcTransWidth_Set(__DMA__, ch, width) MODIFY_REG((__DMA__)->CH[(ch)].CR0, DMA_CH_CR0_STW_Msk, width)
  283. /**
  284. * @brief Source transfer width get
  285. * @param __DMA__ Specifies DMA peripheral
  286. * @param ch DMA channel
  287. * @retval 0 8 bits
  288. * @retval 1 16 bits
  289. * @retval 2 32 bits
  290. */
  291. #define __LL_DMA_SrcTransWidth_Get(__DMA__, ch) (READ_BIT((__DMA__)->CH[(ch)].CR0, DMA_CH_CR0_STW_Msk) >> DMA_CH_CR0_STW_Pos)
  292. /**
  293. * @brief Destination transfer width set
  294. * @param __DMA__ Specifies DMA peripheral
  295. * @param ch DMA channel
  296. * @param width Destination transfer width
  297. * @return None
  298. */
  299. #define __LL_DMA_DstTransWidth_Set(__DMA__, ch, width) MODIFY_REG((__DMA__)->CH[(ch)].CR0, DMA_CH_CR0_DTW_Msk, width)
  300. /**
  301. * @brief Channel interrupt enable
  302. * @param __DMA__ Specifies DMA peripheral
  303. * @param ch DMA channel
  304. * @return None
  305. */
  306. #define __LL_DMA_Channel_Int_En(__DMA__, ch) SET_BIT((__DMA__)->CH[(ch)].CR0, DMA_CH_CR0_CHIE_Msk)
  307. /**
  308. * @brief Channel interrupt disable
  309. * @param __DMA__ Specifies DMA peripheral
  310. * @param ch DMA channel
  311. * @return None
  312. */
  313. #define __LL_DMA_Channel_Int_Dis(__DMA__, ch) CLEAR_BIT((__DMA__)->CH[(ch)].CR0, DMA_CH_CR0_CHIE_Msk)
  314. /**
  315. * @brief Channel register CR0 write
  316. * @param __DMA__ Specifies DMA peripheral
  317. * @param ch DMA channel
  318. * @param val write value
  319. * @return None
  320. */
  321. #define __LL_DMA_ChannelRegCR0_Write(__DMA__, ch, val) WRITE_REG((__DMA__)->CH[(ch)].CR0, val)
  322. /**
  323. * @brief Judge is block transfer done or not
  324. * @param __DMA__ Specifies DMA peripheral
  325. * @param ch DMA channel
  326. * @retval 0 isn't block transfer done
  327. * @retval 1 is block transfer done
  328. */
  329. #define __LL_DMA_IsBlockTransDone(__DMA__, ch) (READ_BIT((__DMA__)->CH[(ch)].CR1, DMA_CH_CR1_DONE_Msk) >> DMA_CH_CR1_DONE_Pos)
  330. /**
  331. * @brief Block transfer done clear
  332. * @param __DMA__ Specifies DMA peripheral
  333. * @param ch DMA channel
  334. * @return None
  335. */
  336. #define __LL_DMA_BlockTransDone_Clr(__DMA__, ch) CLEAR_BIT((__DMA__)->CH[(ch)].CR1, DMA_CH_CR1_DONE_Msk)
  337. /**
  338. * @brief Block transfer count set
  339. * @param __DMA__ Specifies DMA peripheral
  340. * @param ch DMA channel
  341. * @param cnt Block transfer count
  342. * @return None
  343. */
  344. #define __LL_DMA_BlockTransCnt_Set(__DMA__, ch, cnt) \
  345. MODIFY_REG((__DMA__)->CH[(ch)].CR1, DMA_CH_CR1_BTCNT_Msk, (((cnt) & 0xfffUL) << DMA_CH_CR1_BTCNT_Pos))
  346. /**
  347. * @brief Channel register CR1 write
  348. * @param __DMA__ Specifies DMA peripheral
  349. * @param ch DMA channel
  350. * @param val write value
  351. * @return None
  352. */
  353. #define __LL_DAM_ChannelRegCR1_Write(__DMA__, ch, val) WRITE_REG((__DMA__)->CH[(ch)].CR1, val)
  354. /**
  355. * @brief Burst length max set
  356. * @param __DMA__ Specifies DMA peripheral
  357. * @param ch DMA channel
  358. * @param max Burst length max
  359. * @return None
  360. */
  361. #define __LL_DMA_BurstLenMax_Set(__DMA__, ch, max) \
  362. MODIFY_REG((__DMA__)->CH[(ch)].CR2, DMA_CH_CR2_MBL_Msk, (((max) & 0x3ffUL) << DMA_CH_CR2_MBL_Pos))
  363. /**
  364. * @brief Source handshake mode set
  365. * @param __DMA__ Specifies DMA peripheral
  366. * @param ch DMA channel
  367. * @return None
  368. */
  369. #define __LL_DMA_SrcHandshakeMode_Set(__DMA__, ch) SET_BIT((__DMA__)->CH[(ch)].CR2, DMA_CH_CR2_SHSM_Msk)
  370. /**
  371. * @brief Source handshake mode clear
  372. * @param __DMA__ Specifies DMA peripheral
  373. * @param ch DMA channel
  374. * @return None
  375. */
  376. #define __LL_DMA_SrcHandshakeMode_Clr(__DMA__, ch) CLEAR_BIT((__DMA__)->CH[(ch)].CR2, DMA_CH_CR2_SHSM_Msk)
  377. /**
  378. * @brief Destination handshake mode set
  379. * @param __DMA__ Specifies DMA peripheral
  380. * @param ch DMA channel
  381. * @return None
  382. */
  383. #define __LL_DMA_DstHandshakeMode_Set(__DMA__, ch) SET_BIT((__DMA__)->CH[(ch)].CR2, DMA_CH_CR2_DHSM_Msk)
  384. /**
  385. * @brief Destination handshake mode clear
  386. * @param __DMA__ Specifies DMA peripheral
  387. * @param ch DMA channel
  388. * @return None
  389. */
  390. #define __LL_DMA_DstHandshakeMode_Clr(__DMA__, ch) CLEAR_BIT((__DMA__)->CH[(ch)].CR2, DMA_CH_CR2_DHSM_Msk)
  391. /**
  392. * @brief Judge is channel FIFO empty or not
  393. * @param __DMA__ Specifies DMA peripheral
  394. * @param ch DMA channel
  395. * @retval 0 isn't channel FIFO empty
  396. * @retval 1 is channel FIFO empty
  397. */
  398. #define __LL_DMA_IsChannelFIFOEmpty(__DMA__, ch) \
  399. (READ_BIT((__DMA__)->CH[(ch)].CR2, DMA_CH_CR2_FIFO_EF_Msk) >> DMA_CH_CR2_FIFO_EF_Pos)
  400. /**
  401. * @brief Channel suspend set
  402. * @param __DMA__ Specifies DMA peripheral
  403. * @param ch DMA channel
  404. * @return None
  405. */
  406. #define __LL_DMA_ChannelSuspend_Set(__DMA__, ch) SET_BIT((__DMA__)->CH[(ch)].CR2, DMA_CH_CR2_SUSP_Msk)
  407. /**
  408. * @brief Channel suspend clear
  409. * @param __DMA__ Specifies DMA peripheral
  410. * @param ch DMA channel
  411. * @return None
  412. */
  413. #define __LL_DMA_ChannelSuspend_Clr(__DMA__, ch) CLEAR_BIT((__DMA__)->CH[(ch)].CR2, DMA_CH_CR2_SUSP_Msk)
  414. /**
  415. * @brief Channel priority set high
  416. * @param __DMA__ Specifies DMA peripheral
  417. * @param ch DMA channel
  418. * @return None
  419. */
  420. #define __LL_DMA_ChannelPriHigh_Set(__DMA__, ch) SET_BIT((__DMA__)->CH[(ch)].CR2, DMA_CH_CR2_PRI_Msk)
  421. /**
  422. * @brief Channel priority set low
  423. * @param __DMA__ Specifies DMA peripheral
  424. * @param ch DMA channel
  425. * @return None
  426. */
  427. #define __LL_DMA_ChannelPriLow_Set(__DMA__, ch) CLEAR_BIT((__DMA__)->CH[(ch)].CR2, DMA_CH_CR2_PRI_Msk)
  428. /**
  429. * @brief Channel register CR2 write
  430. * @param __DMA__ Specifies DMA peripheral
  431. * @param ch DMA channel
  432. * @param val write value
  433. * @return None
  434. */
  435. #define __LL_DAM_ChannelRegCR2_Write(__DMA__, ch, val) WRITE_REG((__DMA__)->CH[(ch)].CR2, val)
  436. /**
  437. * @brief Destination handshake interface set
  438. * @param __DMA__ Specifies DMA peripheral
  439. * @param ch DMA channel
  440. * @param ifc Destination handshake interface
  441. * @return None
  442. */
  443. #define __LL_DMA_DstHandshakeIfc_Set(__DMA__, ch, ifc) MODIFY_REG((__DMA__)->CH[(ch)].CR3, DMA_CH_CR3_DHSIF_Msk, ifc)
  444. /**
  445. * @brief Source handshake interface set
  446. * @param __DMA__ Specifies DMA peripheral
  447. * @param ch DMA channel
  448. * @param ifc Source handshake interface
  449. * @return None
  450. */
  451. #define __LL_DMA_SrcHandshakeIfc_Set(__DMA__, ch, ifc) MODIFY_REG((__DMA__)->CH[(ch)].CR3, DMA_CH_CR3_SHSIF_Msk, ifc)
  452. /**
  453. * @brief FIFO mode half set
  454. * @param __DMA__ Specifies DMA peripheral
  455. * @param ch DMA channel
  456. * @return None
  457. */
  458. #define __LL_DMA_FIFOModeHalf_Set(__DMA__, ch) SET_BIT((__DMA__)->CH[(ch)].CR3, DMA_CH_CR3_FMD_Msk)
  459. /**
  460. * @brief FIFO mode once set
  461. * @param __DMA__ Specifies DMA peripheral
  462. * @param ch DMA channel
  463. * @return None
  464. */
  465. #define __LL_DMA_FIFOModeOnce_Set(__DMA__, ch) CLEAR_BIT((__DMA__)->CH[(ch)].CR3, DMA_CH_CR3_FMD_Msk)
  466. /**
  467. * @brief Channel folw control mode source request set
  468. * @param __DMA__ Specifies DMA peripheral
  469. * @param ch DMA channel
  470. * @return None
  471. */
  472. #define __LL_DMA_ChFlowModeSrcReq_Set(__DMA__, ch) CLEAR_BIT((__DMA__)->CH[(ch)].CR3, DMA_CH_CR3_FCMD_Msk)
  473. /**
  474. * @brief Channel folw control mode destination request set
  475. * @param __DMA__ Specifies DMA peripheral
  476. * @param ch DMA channel
  477. * @return None
  478. */
  479. #define __LL_DMA_ChFlowModeDstReq_Set(__DMA__, ch) SET_BIT((__DMA__)->CH[(ch)].CR3, DMA_CH_CR3_FCMD_Msk)
  480. /**
  481. * @brief Channel register CR3 write
  482. * @param __DMA__ Specifies DMA peripheral
  483. * @param ch DMA channel
  484. * @param val write value
  485. * @return None
  486. */
  487. #define __LL_DAM_ChannelRegCR3_Write(__DMA__, ch, val) WRITE_REG((__DMA__)->CH[(ch)].CR3, val)
  488. /**
  489. * @brief Channel 1 transfer complete status get
  490. * @param __DMA__ Specifies DMA peripheral
  491. * @retval 0 Channel 1 transfer hasn't completed
  492. * @retval 1 Channel 1 transfer has completed
  493. */
  494. #define __LL_DMA_Ch1TransComSta_Get(__DMA__) (READ_BIT((__DMA__)->TSR, DMA_TSR_TS_CH1_Msk) >> DMA_TSR_TS_CH1_Pos)
  495. /**
  496. * @brief Channel 0 transfer complete status get
  497. * @param __DMA__ Specifies DMA peripheral
  498. * @retval 0 Channel 0 transfer hasn't completed
  499. * @retval 1 Channel 0 transfer has completed
  500. */
  501. #define __LL_DMA_Ch0TransComSta_Get(__DMA__) (READ_BIT((__DMA__)->TSR, DMA_TSR_TS_CH0_Msk) >> DMA_TSR_TS_CH0_Pos)
  502. /**
  503. * @brief Channel 1 block transfer complete status get
  504. * @param __DMA__ Specifies DMA peripheral
  505. * @retval 0 Channel 1 block transfer hasn't completed
  506. * @retval 1 Channel 1 block transfer has completed
  507. */
  508. #define __LL_DMA_Ch1BlockTransComSta_Get(__DMA__) (READ_BIT((__DMA__)->BTSR, DMA_BTSR_BTS_CH1_Msk) >> DMA_BTSR_BTS_CH1_Pos)
  509. /**
  510. * @brief Channel 0 block transfer complete status get
  511. * @param __DMA__ Specifies DMA peripheral
  512. * @retval 0 Channel 0 block transfer hasn't completed
  513. * @retval 1 Channel 0 block transfer has completed
  514. */
  515. #define __LL_DMA_Ch0BlockTransComSta_Get(__DMA__) (READ_BIT((__DMA__)->BTSR, DMA_BTSR_BTS_CH0_Msk) >> DMA_BTSR_BTS_CH0_Pos)
  516. /**
  517. * @brief Channel 1 source transfer complete status get
  518. * @param __DMA__ Specifies DMA peripheral
  519. * @retval 0 Channel 1 source transfer hasn't completed
  520. * @retval 1 Channel 1 source transfer has completed
  521. */
  522. #define __LL_DMA_Ch1SrcTransComSta_Get(__DMA__) (READ_BIT((__DMA__)->STSR, DMA_STSR_STS_CH1_Msk) >> DMA_STSR_STS_CH1_Pos)
  523. /**
  524. * @brief Channel 0 source transfer complete status get
  525. * @param __DMA__ Specifies DMA peripheral
  526. * @retval 0 Channel 0 source transfer hasn't completed
  527. * @retval 1 Channel 0 source transfer has completed
  528. */
  529. #define __LL_DMA_Ch0SrcTransComSta_Get(__DMA__) (READ_BIT((__DMA__)->STSR, DMA_STSR_STS_CH0_Msk) >> DMA_STSR_STS_CH0_Pos)
  530. /**
  531. * @brief Channel 1 destination transfer complete status get
  532. * @param __DMA__ Specifies DMA peripheral
  533. * @retval 0 Channel 1 destination transfer hasn't completed
  534. * @retval 1 Channel 1 destination transfer has completed
  535. */
  536. #define __LL_DMA_Ch1DstTransComSta_Get(__DMA__) (READ_BIT((__DMA__)->DTSR, DMA_DTSR_DTS_CH1_Msk) >> DMA_DTSR_DTS_CH1_Pos)
  537. /**
  538. * @brief Channel 0 destination transfer complete status get
  539. * @param __DMA__ Specifies DMA peripheral
  540. * @retval 0 Channel 0 destination transfer hasn't completed
  541. * @retval 1 Channel 0 destination transfer has completed
  542. */
  543. #define __LL_DMA_Ch0DstTransComSta_Get(__DMA__) (READ_BIT((__DMA__)->DTSR, DMA_DTSR_DTS_CH0_Msk) >> DMA_DTSR_DTS_CH0_Pos)
  544. /**
  545. * @brief Channel 1 transfer error status get
  546. * @param __DMA__ Specifies DMA peripheral
  547. * @retval 0 Channel 1 transfer normal
  548. * @retval 1 Channel 1 transfer error
  549. */
  550. #define __LL_DMA_Ch1TransErrSta_Get(__DMA__) (READ_BIT((__DMA__)->TESR, DMA_TESR_TES_CH1_Msk) >> DMA_TESR_TES_CH1_Pos)
  551. /**
  552. * @brief Channel 0 transfer error status get
  553. * @param __DMA__ Specifies DMA peripheral
  554. * @retval 0 Channel 0 transfer normal
  555. * @retval 1 Channel 0 transfer error
  556. */
  557. #define __LL_DMA_Ch0TransErrSta_Get(__DMA__) (READ_BIT((__DMA__)->TESR, DMA_TESR_TES_CH0_Msk) >> DMA_TESR_TES_CH0_Pos)
  558. /**
  559. * @brief Channel 1 transfer complete interrupt pending get
  560. * @param __DMA__ Specifies DMA peripheral
  561. * @retval 0 no pending
  562. * @retval 1 pending
  563. */
  564. #define __LL_DMA_Ch1TransComIntSta_Get(__DMA__) (READ_BIT((__DMA__)->TIPR, DMA_TIPR_TIP_CH1_Msk) >> DMA_TIPR_TIP_CH1_Pos)
  565. /**
  566. * @brief Channel 0 transfer complete interrupt pending get
  567. * @param __DMA__ Specifies DMA peripheral
  568. * @retval 0 no pending
  569. * @retval 1 pending
  570. */
  571. #define __LL_DMA_Ch0TransComIntSta_Get(__DMA__) (READ_BIT((__DMA__)->TIPR, DMA_TIPR_TIP_CH0_Msk) >> DMA_TIPR_TIP_CH0_Pos)
  572. /**
  573. * @brief Channel 1 block transfer complete interrupt pending get
  574. * @param __DMA__ Specifies DMA peripheral
  575. * @retval 0 no pending
  576. * @retval 1 pending
  577. */
  578. #define __LL_DMA_Ch1BlockTransComIntSta_Get(__DMA__) (READ_BIT((__DMA__)->BTIPR, DMA_BTIPR_BTIF_CH1_Msk) >> DMA_BTIPR_BTIF_CH1_Pos)
  579. /**
  580. * @brief Channel 0 block transfer complete interrupt pending get
  581. * @param __DMA__ Specifies DMA peripheral
  582. * @retval 0 no pending
  583. * @retval 1 pending
  584. */
  585. #define __LL_DMA_Ch0BlockTransComIntSta_Get(__DMA__) (READ_BIT((__DMA__)->BTIPR, DMA_BTIPR_BTIF_CH0_Msk) >> DMA_BTIPR_BTIF_CH0_Pos)
  586. /**
  587. * @brief Channel 1 source transfer complete interrupt pending get
  588. * @param __DMA__ Specifies DMA peripheral
  589. * @retval 0 no pending
  590. * @retval 1 pending
  591. */
  592. #define __LL_DMA_Ch1SrcTransComIntSta_Get(__DMA__) (READ_BIT((__DMA__)->STIPR, DMA_STIPR_STIF_CH1_Msk) >> DMA_STIPR_STIF_CH1_Pos)
  593. /**
  594. * @brief Channel 0 source transfer complete interrupt pending get
  595. * @param __DMA__ Specifies DMA peripheral
  596. * @retval 0 no pending
  597. * @retval 1 pending
  598. */
  599. #define __LL_DMA_Ch0SrcTransComIntSta_Get(__DMA__) (READ_BIT((__DMA__)->STIPR, DMA_STIPR_STIF_CH0_Msk) >> DMA_STIPR_STIF_CH0_Pos)
  600. /**
  601. * @brief Channel 1 destination transfer complete interrupt pending get
  602. * @param __DMA__ Specifies DMA peripheral
  603. * @retval 0 no pending
  604. * @retval 1 pending
  605. */
  606. #define __LL_DMA_Ch1DstTransComIntSta_Get(__DMA__) (READ_BIT((__DMA__)->DTIPR, DMA_DTIPR_DTIF_CH1_Msk) >> DMA_DTIPR_DTIF_CH1_Pos)
  607. /**
  608. * @brief Channel 0 destination transfer complete interrupt pending get
  609. * @param __DMA__ Specifies DMA peripheral
  610. * @retval 0 no pending
  611. * @retval 1 pending
  612. */
  613. #define __LL_DMA_Ch0DstTransComIntSta_Get(__DMA__) (READ_BIT((__DMA__)->DTIPR, DMA_DTIPR_DTIF_CH0_Msk) >> DMA_DTIPR_DTIF_CH0_Pos)
  614. /**
  615. * @brief Channel 1 transfer error interrupt pending get
  616. * @param __DMA__ Specifies DMA peripheral
  617. * @retval 0 no pending
  618. * @retval 1 pending
  619. */
  620. #define __LL_DMA_Ch1TransErrIntSta_Get(__DMA__) (READ_BIT((__DMA__)->TEIPR, DMA_TEIPR_TEIF_CH1_Msk) >> DMA_TEIPR_TEIF_CH1_Pos)
  621. /**
  622. * @brief Channel 0 transfer error interrupt pending get
  623. * @param __DMA__ Specifies DMA peripheral
  624. * @retval 0 no pending
  625. * @retval 1 pending
  626. */
  627. #define __LL_DMA_Ch0TransErrIntSta_Get(__DMA__) (READ_BIT((__DMA__)->TEIPR, DMA_TEIPR_TEIF_CH0_Msk) >> DMA_TEIPR_TEIF_CH0_Pos)
  628. /**
  629. * @brief Channel 1 transfer complete interrupt enable
  630. * @param __DMA__ Specifies DMA peripheral
  631. * @return None
  632. */
  633. #define __LL_DMA_Ch1TransCom_Int_En(__DMA__) SET_BIT((__DMA__)->TIMR, DMA_TIMR_TIWE_CH1_Msk | DMA_TIMR_TIE_CH1_Msk)
  634. /**
  635. * @brief Channel 1 transfer complete interrupt disable
  636. * @param __DMA__ Specifies DMA peripheral
  637. * @return None
  638. */
  639. #define __LL_DMA_Ch1TransCom_Int_Dis(__DMA__) \
  640. MODIFY_REG((__DMA__)->TIMR, DMA_TIMR_TIWE_CH1_Msk | DMA_TIMR_TIE_CH1_Msk, DMA_TIMR_TIWE_CH1_Msk | (0x0 << DMA_TIMR_TIE_CH1_Pos))
  641. /**
  642. * @brief Channel 0 transfer complete interrupt enable
  643. * @param __DMA__ Specifies DMA peripheral
  644. * @return None
  645. */
  646. #define __LL_DMA_Ch0TransCom_Int_En(__DMA__) SET_BIT((__DMA__)->TIMR, DMA_TIMR_TIWE_CH0_Msk | DMA_TIMR_TIE_CH0_Msk)
  647. /**
  648. * @brief Channel 0 transfer complete interrupt disable
  649. * @param __DMA__ Specifies DMA peripheral
  650. * @return None
  651. */
  652. #define __LL_DMA_Ch0TransCom_Int_Dis(__DMA__) \
  653. MODIFY_REG((__DMA__)->TIMR, DMA_TIMR_TIWE_CH0_Msk | DMA_TIMR_TIE_CH0_Msk, DMA_TIMR_TIWE_CH0_Msk | (0x0 << DMA_TIMR_TIE_CH0_Pos))
  654. /**
  655. * @brief Reg TIMR Write
  656. * @param __DMA__ Specifies DMA peripheral
  657. * @param val write value
  658. * @return None
  659. */
  660. #define __LL_DMA_RegTIMR_Write(__DMA__, val) WRITE_REG((__DMA__)->TIMR, val)
  661. /**
  662. * @brief Channel 1 block transfer complete interrupt enable
  663. * @param __DMA__ Specifies DMA peripheral
  664. * @return None
  665. */
  666. #define __LL_DMA_Ch1BlockTransCom_Int_En(__DMA__) SET_BIT((__DMA__)->BTIMR, DMA_BTIMR_BTIWE_CH1_Msk | DMA_BTIMR_BTIE_CH1_Msk)
  667. /**
  668. * @brief Channel 1 block transfer complete interrupt disable
  669. * @param __DMA__ Specifies DMA peripheral
  670. * @return None
  671. */
  672. #define __LL_DMA_Ch1BlockTransCom_Int_Dis(__DMA__) \
  673. MODIFY_REG((__DMA__)->BTIMR, DMA_BTIMR_BTIWE_CH1_Msk | DMA_BTIMR_BTIE_CH1_Msk, DMA_BTIMR_BTIWE_CH1_Msk | (0x0 << DMA_BTIMR_BTIE_CH1_Pos))
  674. /**
  675. * @brief Channel 0 block transfer complete interrupt enable
  676. * @param __DMA__ Specifies DMA peripheral
  677. * @return None
  678. */
  679. #define __LL_DMA_Ch0BlockTransCom_Int_En(__DMA__) SET_BIT((__DMA__)->BTIMR, DMA_BTIMR_BTIWE_CH0_Msk | DMA_BTIMR_BTIE_CH0_Msk)
  680. /**
  681. * @brief Channel 0 block transfer complete interrupt disable
  682. * @param __DMA__ Specifies DMA peripheral
  683. * @return None
  684. */
  685. #define __LL_DMA_Ch0BlockTransCom_Int_Dis(__DMA__) \
  686. MODIFY_REG((__DMA__)->BTIMR, DMA_BTIMR_BTIWE_CH0_Msk | DMA_BTIMR_BTIE_CH0_Msk, DMA_BTIMR_BTIWE_CH0_Msk | (0x0 << DMA_BTIMR_BTIE_CH0_Pos))
  687. /**
  688. * @brief Reg BTIMR Write
  689. * @param __DMA__ Specifies DMA peripheral
  690. * @param val write value
  691. * @return None
  692. */
  693. #define __LL_DMA_RegBTIMR_Write(__DMA__, val) WRITE_REG((__DMA__)->BTIMR, val)
  694. /**
  695. * @brief Channel 1 source transfer complete interrupt enable
  696. * @param __DMA__ Specifies DMA peripheral
  697. * @return None
  698. */
  699. #define __LL_DMA_Ch1SrcTransCom_Int_En(__DMA__) SET_BIT((__DMA__)->STIMR, DMA_STIMR_STIWE_CH1_Msk | DMA_STIMR_STIE_CH1_Msk)
  700. /**
  701. * @brief Channel 1 source transfer complete interrupt disable
  702. * @param __DMA__ Specifies DMA peripheral
  703. * @return None
  704. */
  705. #define __LL_DMA_Ch1SrcTransCom_Int_Dis(__DMA__) \
  706. MODIFY_REG((__DMA__)->STIMR, DMA_STIMR_STIWE_CH1_Msk | DMA_STIMR_STIE_CH1_Msk, DMA_STIMR_STIWE_CH1_Msk | (0x0 << DMA_STIMR_STIE_CH1_Pos))
  707. /**
  708. * @brief Channel 0 source transfer complete interrupt enable
  709. * @param __DMA__ Specifies DMA peripheral
  710. * @return None
  711. */
  712. #define __LL_DMA_Ch0SrcTransCom_Int_En(__DMA__) SET_BIT((__DMA__)->STIMR, DMA_STIMR_STIWE_CH0_Msk | DMA_STIMR_STIE_CH0_Msk)
  713. /**
  714. * @brief Channel 0 source transfer complete interrupt disable
  715. * @param __DMA__ Specifies DMA peripheral
  716. * @return None
  717. */
  718. #define __LL_DMA_Ch0SrcTransCom_Int_Dis(__DMA__) \
  719. MODIFY_REG((__DMA__)->STIMR, DMA_STIMR_STIWE_CH0_Msk | DMA_STIMR_STIE_CH0_Msk, DMA_STIMR_STIWE_CH0_Msk | (0x0 << DMA_STIMR_STIE_CH0_Pos))
  720. /**
  721. * @brief Reg STIMR Write
  722. * @param __DMA__ Specifies DMA peripheral
  723. * @param val write value
  724. * @return None
  725. */
  726. #define __LL_DMA_RegSTIMR_Write(__DMA__, val) WRITE_REG((__DMA__)->STIMR, val)
  727. /**
  728. * @brief Channel 1 destination transfer complete interrupt enable
  729. * @param __DMA__ Specifies DMA peripheral
  730. * @return None
  731. */
  732. #define __LL_DMA_Ch1DstTransCom_Int_En(__DMA__) SET_BIT((__DMA__)->DTIMR, DMA_DTIMR_DTIWE_CH1_Msk | DMA_DTIMR_DTIE_CH1_Msk)
  733. /**
  734. * @brief Channel 1 destination transfer complete interrupt disable
  735. * @param __DMA__ Specifies DMA peripheral
  736. * @return None
  737. */
  738. #define __LL_DMA_Ch1DstTransCom_Int_Dis(__DMA__) \
  739. MODIFY_REG((__DMA__)->DTIMR, DMA_DTIMR_DTIWE_CH1_Msk | DMA_DTIMR_DTIE_CH1_Msk, DMA_DTIMR_DTIWE_CH1_Msk | (0x0 << DMA_DTIMR_DTIE_CH1_Pos))
  740. /**
  741. * @brief Channel 0 destination transfer complete interrupt enable
  742. * @param __DMA__ Specifies DMA peripheral
  743. * @return None
  744. */
  745. #define __LL_DMA_Ch0DstTransCom_Int_En(__DMA__) SET_BIT((__DMA__)->DTIMR, DMA_DTIMR_DTIWE_CH0_Msk | DMA_DTIMR_DTIE_CH0_Msk)
  746. /**
  747. * @brief Channel 0 destination transfer complete interrupt disable
  748. * @param __DMA__ Specifies DMA peripheral
  749. * @return None
  750. */
  751. #define __LL_DMA_Ch0DstTransCom_Int_Dis(__DMA__) \
  752. MODIFY_REG((__DMA__)->DTIMR, DMA_DTIMR_DTIWE_CH0_Msk | DMA_DTIMR_DTIE_CH0_Msk, DMA_DTIMR_DTIWE_CH0_Msk | (0x0 << DMA_DTIMR_DTIE_CH0_Pos))
  753. /**
  754. * @brief Reg DTIMR Write
  755. * @param __DMA__ Specifies DMA peripheral
  756. * @param val write value
  757. * @return None
  758. */
  759. #define __LL_DMA_RegDTIMR_Write(__DMA__, val) WRITE_REG((__DMA__)->DTIMR, val)
  760. /**
  761. * @brief Channel 1 transfer error interrupt enable
  762. * @param __DMA__ Specifies DMA peripheral
  763. * @return None
  764. */
  765. #define __LL_DMA_Ch1TransErr_Int_En(__DMA__) SET_BIT((__DMA__)->TEIMR, DMA_TEIMR_TEIWE_CH1_Msk | DMA_TEIMR_TEIE_CH1_Msk)
  766. /**
  767. * @brief Channel 1 transfer error interrupt disable
  768. * @param __DMA__ Specifies DMA peripheral
  769. * @return None
  770. */
  771. #define __LL_DMA_Ch1TransErr_Int_Dis(__DMA__) \
  772. MODIFY_REG((__DMA__)->TEIMR, DMA_TEIMR_TEIWE_CH1_Msk | DMA_TEIMR_TEIE_CH1_Msk, DMA_TEIMR_TEIWE_CH1_Msk | (0x0 << DMA_TEIMR_TEIE_CH1_Pos))
  773. /**
  774. * @brief Channel 0 transfer error interrupt enable
  775. * @param __DMA__ Specifies DMA peripheral
  776. * @return None
  777. */
  778. #define __LL_DMA_Ch0TransErr_Int_En(__DMA__) SET_BIT((__DMA__)->TEIMR, DMA_TEIMR_TEIWE_CH0_Msk | DMA_TEIMR_TEIE_CH0_Msk)
  779. /**
  780. * @brief Channel 0 transfer error interrupt disable
  781. * @param __DMA__ Specifies DMA peripheral
  782. * @return None
  783. */
  784. #define __LL_DMA_Ch0TransErr_Int_Dis(__DMA__) \
  785. MODIFY_REG((__DMA__)->TEIMR, DMA_TEIMR_TEIWE_CH0_Msk | DMA_TEIMR_TEIE_CH0_Msk, DMA_TEIMR_TEIWE_CH0_Msk | (0x0 << DMA_TEIMR_TEIE_CH0_Pos))
  786. /**
  787. * @brief Reg TEIMR Write
  788. * @param __DMA__ Specifies DMA peripheral
  789. * @param val write value
  790. * @return None
  791. */
  792. #define __LL_DMA_RegTEIMR_Write(__DMA__, val) WRITE_REG((__DMA__)->TEIMR, val)
  793. /**
  794. * @brief Channel 1 transfer complete status clear
  795. * @param __DMA__ Specifies DMA peripheral
  796. * @return None
  797. */
  798. #define __LL_DMA_Ch1TransComSta_Clr(__DMA__) WRITE_REG((__DMA__)->TCR, DMA_TCR_TC_CH1_Msk)
  799. /**
  800. * @brief Channel 0 transfer complete status clear
  801. * @param __DMA__ Specifies DMA peripheral
  802. * @return None
  803. */
  804. #define __LL_DMA_Ch0TransComSta_Clr(__DMA__) WRITE_REG((__DMA__)->TCR, DMA_TCR_TC_CH0_Msk)
  805. /**
  806. * @brief Reg TCR Write
  807. * @param __DMA__ Specifies DMA peripheral
  808. * @param val write value
  809. * @return None
  810. */
  811. #define __LL_DMA_RegTCR_Write(__DMA__, val) WRITE_REG((__DMA__)->TCR, val)
  812. /**
  813. * @brief Channel 1 block transfer complete status clear
  814. * @param __DMA__ Specifies DMA peripheral
  815. * @return None
  816. */
  817. #define __LL_DMA_Ch1BlockTransComSta_Clr(__DMA__) WRITE_REG((__DMA__)->BTCR, DMA_BTCR_BTC_CH1_Msk)
  818. /**
  819. * @brief Channel 0 block transfer complete status clear
  820. * @param __DMA__ Specifies DMA peripheral
  821. * @return None
  822. */
  823. #define __LL_DMA_Ch0BlockTransComSta_Clr(__DMA__) WRITE_REG((__DMA__)->BTCR, DMA_BTCR_BTC_CH0_Msk)
  824. /**
  825. * @brief Reg BTCR Write
  826. * @param __DMA__ Specifies DMA peripheral
  827. * @param val write value
  828. * @return None
  829. */
  830. #define __LL_DMA_RegBTCR_Write(__DMA__, val) WRITE_REG((__DMA__)->BTCR, val)
  831. /**
  832. * @brief Channel 1 source transfer complete status clear
  833. * @param __DMA__ Specifies DMA peripheral
  834. * @return None
  835. */
  836. #define __LL_DMA_Ch1SrcTransComSta_Clr(__DMA__) WRITE_REG((__DMA__)->STCR, DMA_STCR_STC_CH1_Msk)
  837. /**
  838. * @brief Channel 0 source transfer complete status clear
  839. * @param __DMA__ Specifies DMA peripheral
  840. * @return None
  841. */
  842. #define __LL_DMA_Ch0SrcTransComSta_Clr(__DMA__) WRITE_REG((__DMA__)->STCR, DMA_STCR_STC_CH0_Msk)
  843. /**
  844. * @brief Reg STCR Write
  845. * @param __DMA__ Specifies DMA peripheral
  846. * @param val write value
  847. * @return None
  848. */
  849. #define __LL_DMA_RegSTCR_Write(__DMA__, val) WRITE_REG((__DMA__)->STCR, val)
  850. /**
  851. * @brief Channel 1 destination transfer complete status clear
  852. * @param __DMA__ Specifies DMA peripheral
  853. * @return None
  854. */
  855. #define __LL_DMA_Ch1DstTransComSta_Clr(__DMA__) WRITE_REG((__DMA__)->DTCR, DMA_DTCR_DTC_CH1_Msk)
  856. /**
  857. * @brief Channel 0 destination transfer complete status clear
  858. * @param __DMA__ Specifies DMA peripheral
  859. * @return None
  860. */
  861. #define __LL_DMA_Ch0DstTransComSta_Clr(__DMA__) WRITE_REG((__DMA__)->DTCR, DMA_DTCR_DTC_CH0_Msk)
  862. /**
  863. * @brief Reg DTCR Write
  864. * @param __DMA__ Specifies DMA peripheral
  865. * @param val write value
  866. * @return None
  867. */
  868. #define __LL_DMA_RegDTCR_Write(__DMA__, val) WRITE_REG((__DMA__)->DTCR, val)
  869. /**
  870. * @brief Channel 1 transfer error status clear
  871. * @param __DMA__ Specifies DMA peripheral
  872. * @return None
  873. */
  874. #define __LL_DMA_Ch1TransErrSta_Clr(__DMA__) WRITE_REG((__DMA__)->TECR, DMA_TECR_TEC_CH1_Msk)
  875. /**
  876. * @brief Channel 0 transfer error status clear
  877. * @param __DMA__ Specifies DMA peripheral
  878. * @return None
  879. */
  880. #define __LL_DMA_Ch0TransErrSta_Clr(__DMA__) WRITE_REG((__DMA__)->TECR, DMA_TECR_TEC_CH0_Msk)
  881. /**
  882. * @brief Reg TECR Write
  883. * @param __DMA__ Specifies DMA peripheral
  884. * @param val write value
  885. * @return None
  886. */
  887. #define __LL_DMA_RegTECR_Write(__DMA__, val) WRITE_REG((__DMA__)->TECR, val)
  888. /**
  889. * @brief Peripheral enable
  890. * @param __DMA__ Specifies DMA peripheral
  891. * @return None
  892. */
  893. #define __LL_DMA_Periph_En(__DMA__) SET_BIT((__DMA__)->CR0, DMA_CR0_PEN_Msk)
  894. /**
  895. * @brief Peripheral disable
  896. * @param __DMA__ Specifies DMA peripheral
  897. * @return None
  898. */
  899. #define __LL_DMA_Periph_Dis(__DMA__) CLEAR_BIT((__DMA__)->CR0, DMA_CR0_PEN_Msk)
  900. /**
  901. * @brief Reg CR0 Write
  902. * @param __DMA__ Specifies DMA peripheral
  903. * @param val write value
  904. * @return None
  905. */
  906. #define __LL_DMA_RegCR0_Write(__DMA__, val) WRITE_REG((__DMA__)->CR0, val)
  907. /**
  908. * @brief Channel 1 enable
  909. * @param __DMA__ Specifies DMA peripheral
  910. * @return None
  911. */
  912. #define __LL_DMA_Ch1_En(__DMA__) SET_BIT((__DMA__)->CR1, DMA_CR1_CHWE_CH1_Msk | DMA_CR1_CHEN_CH1_Msk)
  913. /**
  914. * @brief Channel 1 disable
  915. * @param __DMA__ Specifies DMA peripheral
  916. * @return None
  917. */
  918. #define __LL_DMA_Ch1_Dis(__DMA__) \
  919. MODIFY_REG((__DMA__)->CR1, DMA_CR1_CHWE_CH1_Msk | DMA_CR1_CHEN_CH1_Msk, DMA_CR1_CHWE_CH1_Msk | (0x0 << DMA_CR1_CHEN_CH1_Pos))
  920. /**
  921. * @brief Channel 0 enable
  922. * @param __DMA__ Specifies DMA peripheral
  923. * @return None
  924. */
  925. #define __LL_DMA_Ch0_En(__DMA__) SET_BIT((__DMA__)->CR1, DMA_CR1_CHWE_CH0_Msk | DMA_CR1_CHEN_CH0_Msk)
  926. /**
  927. * @brief Channel 0 disable
  928. * @param __DMA__ Specifies DMA peripheral
  929. * @return None
  930. */
  931. #define __LL_DMA_Ch0_Dis(__DMA__) \
  932. MODIFY_REG((__DMA__)->CR1, DMA_CR1_CHWE_CH0_Msk | DMA_CR1_CHEN_CH0_Msk, DMA_CR1_CHWE_CH0_Msk | (0x0 << DMA_CR1_CHEN_CH0_Pos))
  933. /**
  934. * @brief Reg CR1 Write
  935. * @param __DMA__ Specifies DMA peripheral
  936. * @param val write value
  937. * @return None
  938. */
  939. #define __LL_DMA_RegCR1_Write(__DMA__, val) WRITE_REG((__DMA__)->CR1, val)
  940. /**
  941. * @}
  942. */
  943. /* Exported functions --------------------------------------------------------*/
  944. /** @addtogroup DMA_LL_Exported_Functions
  945. * @{
  946. */
  947. /** @addtogroup DMA_LL_Exported_Functions_Group1
  948. * @{
  949. */
  950. LL_StatusETypeDef LL_DMA_Init(DMA_TypeDef *Instance, DMA_ChannelETypeDef ch, DMA_UserCfgTypeDef *user_cfg);
  951. LL_StatusETypeDef LL_DMA_DeInit(DMA_TypeDef *Instance, DMA_ChannelETypeDef ch);
  952. /**
  953. * @}
  954. */
  955. /** @addtogroup DMA_LL_Exported_Functions_Group2
  956. * @{
  957. */
  958. DMA_ChannelETypeDef LL_DMA_ChannelRequest(void);
  959. DMA_ChannelETypeDef LL_DMA_ChReqSpecific(DMA_ChannelETypeDef ch);
  960. void LL_DMA_ChannelRelease(DMA_ChannelETypeDef ch);
  961. /**
  962. * @}
  963. */
  964. /** @addtogroup DMA_LL_Exported_Functions_Group3
  965. * @{
  966. */
  967. LL_StatusETypeDef LL_DMA_Start_CPU(DMA_TypeDef *Instance, DMA_ChannelETypeDef ch,
  968. uint32_t src_addr, uint32_t dst_addr, uint32_t data_len);
  969. LL_StatusETypeDef LL_DMA_Start_IT(DMA_TypeDef *Instance, DMA_ChannelETypeDef ch,
  970. uint32_t src_addr, uint32_t dst_addr, uint32_t data_len);
  971. LL_StatusETypeDef LL_DMA_Stop_CPU(DMA_TypeDef *Instance, DMA_ChannelETypeDef ch);
  972. LL_StatusETypeDef LL_DMA_Stop_IT(DMA_TypeDef *Instance, DMA_ChannelETypeDef ch);
  973. LL_StatusETypeDef LL_DMA_WaitComplete_CPU(DMA_TypeDef *Instance, DMA_ChannelETypeDef ch, uint32_t timeout);
  974. /**
  975. * @}
  976. */
  977. /** @addtogroup DMA_LL_Exported_Functions_Interrupt
  978. * @{
  979. */
  980. void LL_DMA_IRQHandler(DMA_TypeDef *Instance);
  981. /**
  982. * @}
  983. */
  984. /**
  985. * @}
  986. */
  987. /* Private constants ---------------------------------------------------------*/
  988. /* Private variables ---------------------------------------------------------*/
  989. /* Private types -------------------------------------------------------------*/
  990. /* Private macros ------------------------------------------------------------*/
  991. /* Private functions ---------------------------------------------------------*/
  992. /**
  993. * @}
  994. */
  995. /**
  996. * @}
  997. */
  998. #ifdef __cplusplus
  999. }
  1000. #endif /* __cplusplus */
  1001. #endif /* _TAE32F53XX_LL_DMA_H_ */
  1002. /************************* (C) COPYRIGHT Tai-Action *****END OF FILE***********/