i2c_config.h 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331
  1. /*
  2. * Copyright (C) 2022-2024, Xiaohua Semiconductor Co., Ltd.
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2022-04-28 CDT first version
  9. */
  10. #ifndef __I2C_CONFIG_H__
  11. #define __I2C_CONFIG_H__
  12. #include <rtthread.h>
  13. #include "irq_config.h"
  14. #ifdef __cplusplus
  15. extern "C" {
  16. #endif
  17. #if defined(BSP_USING_I2C1)
  18. #ifndef I2C1_CONFIG
  19. #define I2C1_CONFIG \
  20. { \
  21. .name = "i2c1", \
  22. .Instance = CM_I2C1, \
  23. .clock = FCG1_PERIPH_I2C1, \
  24. .baudrate = 100000UL, \
  25. .timeout = 10000UL, \
  26. }
  27. #endif /* I2C1_CONFIG */
  28. #endif
  29. #if defined(BSP_I2C1_USING_DMA)
  30. #ifndef I2C1_TX_DMA_CONFIG
  31. #define I2C1_TX_DMA_CONFIG \
  32. { \
  33. .Instance = I2C1_TX_DMA_INSTANCE, \
  34. .channel = I2C1_TX_DMA_CHANNEL, \
  35. .clock = I2C1_TX_DMA_CLOCK, \
  36. .trigger_select = I2C1_TX_DMA_TRIG_SELECT, \
  37. .trigger_event = EVT_SRC_I2C1_TEI, \
  38. .flag = I2C1_TX_DMA_TRANS_FLAG, \
  39. .irq_config = \
  40. { \
  41. .irq_num = I2C1_TX_DMA_IRQn, \
  42. .irq_prio = I2C1_TX_DMA_INT_PRIO, \
  43. .int_src = I2C1_TX_DMA_INT_SRC, \
  44. }, \
  45. }
  46. #endif /* I2C1_TX_DMA_CONFIG */
  47. #ifndef I2C1_RX_DMA_CONFIG
  48. #define I2C1_RX_DMA_CONFIG \
  49. { \
  50. .Instance = I2C1_RX_DMA_INSTANCE, \
  51. .channel = I2C1_RX_DMA_CHANNEL, \
  52. .clock = I2C1_RX_DMA_CLOCK, \
  53. .trigger_select = I2C1_RX_DMA_TRIG_SELECT, \
  54. .trigger_event = EVT_SRC_I2C1_RXI, \
  55. .flag = I2C1_RX_DMA_TRANS_FLAG, \
  56. .irq_config = \
  57. { \
  58. .irq_num = I2C1_RX_DMA_IRQn, \
  59. .irq_prio = I2C1_RX_DMA_INT_PRIO, \
  60. .int_src = I2C1_RX_DMA_INT_SRC, \
  61. }, \
  62. }
  63. #endif /* I2C1_RX_DMA_CONFIG */
  64. #endif /* BSP_I2C1_USING_DMA */
  65. #if defined(BSP_USING_I2C2)
  66. #ifndef I2C2_CONFIG
  67. #define I2C2_CONFIG \
  68. { \
  69. .name = "i2c2", \
  70. .Instance = CM_I2C2, \
  71. .clock = FCG1_PERIPH_I2C2, \
  72. .baudrate = 100000UL, \
  73. .timeout = 10000UL, \
  74. }
  75. #endif /* I2C2_CONFIG */
  76. #if defined(BSP_I2C2_USING_DMA)
  77. #ifndef I2C2_TX_DMA_CONFIG
  78. #define I2C2_TX_DMA_CONFIG \
  79. { \
  80. .Instance = I2C2_TX_DMA_INSTANCE, \
  81. .channel = I2C2_TX_DMA_CHANNEL, \
  82. .clock = I2C2_TX_DMA_CLOCK, \
  83. .trigger_select = I2C2_TX_DMA_TRIG_SELECT, \
  84. .trigger_event = EVT_SRC_I2C2_TEI, \
  85. .flag = I2C2_TX_DMA_TRANS_FLAG, \
  86. .irq_config = \
  87. { \
  88. .irq_num = I2C2_TX_DMA_IRQn, \
  89. .irq_prio = I2C2_TX_DMA_INT_PRIO, \
  90. .int_src = I2C2_TX_DMA_INT_SRC, \
  91. }, \
  92. }
  93. #endif /* I2C2_TX_DMA_CONFIG */
  94. #ifndef I2C2_RX_DMA_CONFIG
  95. #define I2C2_RX_DMA_CONFIG \
  96. { \
  97. .Instance = I2C2_RX_DMA_INSTANCE, \
  98. .channel = I2C2_RX_DMA_CHANNEL, \
  99. .clock = I2C2_RX_DMA_CLOCK, \
  100. .trigger_select = I2C2_RX_DMA_TRIG_SELECT, \
  101. .trigger_event = EVT_SRC_I2C2_RXI, \
  102. .flag = I2C2_RX_DMA_TRANS_FLAG, \
  103. .irq_config = \
  104. { \
  105. .irq_num = I2C2_RX_DMA_IRQn, \
  106. .irq_prio = I2C2_RX_DMA_INT_PRIO, \
  107. .int_src = I2C2_RX_DMA_INT_SRC, \
  108. }, \
  109. }
  110. #endif /* I2C2_RX_DMA_CONFIG */
  111. #endif /* BSP_I2C2_USING_DMA */
  112. #endif
  113. #if defined(BSP_USING_I2C3)
  114. #ifndef I2C3_CONFIG
  115. #define I2C3_CONFIG \
  116. { \
  117. .name = "i2c3", \
  118. .Instance = CM_I2C3, \
  119. .clock = FCG1_PERIPH_I2C3, \
  120. .baudrate = 100000UL, \
  121. .timeout = 10000UL, \
  122. }
  123. #endif /* I2C3_CONFIG */
  124. #if defined(BSP_I2C3_USING_DMA)
  125. #ifndef I2C3_TX_DMA_CONFIG
  126. #define I2C3_TX_DMA_CONFIG \
  127. { \
  128. .Instance = I2C3_TX_DMA_INSTANCE, \
  129. .channel = I2C3_TX_DMA_CHANNEL, \
  130. .clock = I2C3_TX_DMA_CLOCK, \
  131. .trigger_select = I2C3_TX_DMA_TRIG_SELECT, \
  132. .trigger_event = EVT_SRC_I2C3_TEI, \
  133. .flag = I2C3_TX_DMA_TRANS_FLAG, \
  134. .irq_config = \
  135. { \
  136. .irq_num = I2C3_TX_DMA_IRQn, \
  137. .irq_prio = I2C3_TX_DMA_INT_PRIO, \
  138. .int_src = I2C3_TX_DMA_INT_SRC, \
  139. }, \
  140. }
  141. #endif /* I2C3_TX_DMA_CONFIG */
  142. #ifndef I2C3_RX_DMA_CONFIG
  143. #define I2C3_RX_DMA_CONFIG \
  144. { \
  145. .Instance = I2C3_RX_DMA_INSTANCE, \
  146. .channel = I2C3_RX_DMA_CHANNEL, \
  147. .clock = I2C3_RX_DMA_CLOCK, \
  148. .trigger_select = I2C3_RX_DMA_TRIG_SELECT, \
  149. .trigger_event = EVT_SRC_I2C3_RXI, \
  150. .flag = I2C3_RX_DMA_TRANS_FLAG, \
  151. .irq_config = \
  152. { \
  153. .irq_num = I2C3_RX_DMA_IRQn, \
  154. .irq_prio = I2C3_RX_DMA_INT_PRIO, \
  155. .int_src = I2C3_RX_DMA_INT_SRC, \
  156. }, \
  157. }
  158. #endif /* I2C3_RX_DMA_CONFIG */
  159. #endif /* BSP_I2C3_USING_DMA */
  160. #endif
  161. #if defined(BSP_USING_I2C4)
  162. #ifndef I2C4_CONFIG
  163. #define I2C4_CONFIG \
  164. { \
  165. .name = "i2c4", \
  166. .Instance = CM_I2C4, \
  167. .clock = FCG1_PERIPH_I2C4, \
  168. .baudrate = 100000UL, \
  169. .timeout = 10000UL, \
  170. }
  171. #endif /* I2C4_CONFIG */
  172. #if defined(BSP_I2C4_USING_DMA)
  173. #ifndef I2C4_TX_DMA_CONFIG
  174. #define I2C4_TX_DMA_CONFIG \
  175. { \
  176. .Instance = I2C4_TX_DMA_INSTANCE, \
  177. .channel = I2C4_TX_DMA_CHANNEL, \
  178. .clock = I2C4_TX_DMA_CLOCK, \
  179. .trigger_select = I2C4_TX_DMA_TRIG_SELECT, \
  180. .trigger_event = EVT_SRC_I2C4_TEI, \
  181. .flag = I2C4_TX_DMA_TRANS_FLAG, \
  182. .irq_config = \
  183. { \
  184. .irq_num = I2C4_TX_DMA_IRQn, \
  185. .irq_prio = I2C4_TX_DMA_INT_PRIO, \
  186. .int_src = I2C4_TX_DMA_INT_SRC, \
  187. }, \
  188. }
  189. #endif /* I2C4_TX_DMA_CONFIG */
  190. #ifndef I2C4_RX_DMA_CONFIG
  191. #define I2C4_RX_DMA_CONFIG \
  192. { \
  193. .Instance = I2C4_RX_DMA_INSTANCE, \
  194. .channel = I2C4_RX_DMA_CHANNEL, \
  195. .clock = I2C4_RX_DMA_CLOCK, \
  196. .trigger_select = I2C4_RX_DMA_TRIG_SELECT, \
  197. .trigger_event = EVT_SRC_I2C4_RXI, \
  198. .flag = I2C4_RX_DMA_TRANS_FLAG, \
  199. .irq_config = \
  200. { \
  201. .irq_num = I2C4_RX_DMA_IRQn, \
  202. .irq_prio = I2C4_RX_DMA_INT_PRIO, \
  203. .int_src = I2C4_RX_DMA_INT_SRC, \
  204. }, \
  205. }
  206. #endif /* I2C4_RX_DMA_CONFIG */
  207. #endif /* BSP_I2C4_USING_DMA */
  208. #endif
  209. #if defined(BSP_USING_I2C5)
  210. #ifndef I2C5_CONFIG
  211. #define I2C5_CONFIG \
  212. { \
  213. .name = "i2c5", \
  214. .Instance = CM_I2C5, \
  215. .clock = FCG1_PERIPH_I2C5, \
  216. .baudrate = 100000UL, \
  217. .timeout = 10000UL, \
  218. }
  219. #endif /* I2C5_CONFIG */
  220. #if defined(BSP_I2C5_USING_DMA)
  221. #ifndef I2C5_TX_DMA_CONFIG
  222. #define I2C5_TX_DMA_CONFIG \
  223. { \
  224. .Instance = I2C5_TX_DMA_INSTANCE, \
  225. .channel = I2C5_TX_DMA_CHANNEL, \
  226. .clock = I2C5_TX_DMA_CLOCK, \
  227. .trigger_select = I2C5_TX_DMA_TRIG_SELECT, \
  228. .trigger_event = EVT_SRC_I2C5_TEI, \
  229. .flag = I2C5_TX_DMA_TRANS_FLAG, \
  230. .irq_config = \
  231. { \
  232. .irq_num = I2C5_TX_DMA_IRQn, \
  233. .irq_prio = I2C5_TX_DMA_INT_PRIO, \
  234. .int_src = I2C5_TX_DMA_INT_SRC, \
  235. }, \
  236. }
  237. #endif /* I2C5_TX_DMA_CONFIG */
  238. #ifndef I2C5_RX_DMA_CONFIG
  239. #define I2C5_RX_DMA_CONFIG \
  240. { \
  241. .Instance = I2C5_RX_DMA_INSTANCE, \
  242. .channel = I2C5_RX_DMA_CHANNEL, \
  243. .clock = I2C5_RX_DMA_CLOCK, \
  244. .trigger_select = I2C5_RX_DMA_TRIG_SELECT, \
  245. .trigger_event = EVT_SRC_I2C5_RXI, \
  246. .flag = I2C5_RX_DMA_TRANS_FLAG, \
  247. .irq_config = \
  248. { \
  249. .irq_num = I2C5_RX_DMA_IRQn, \
  250. .irq_prio = I2C5_RX_DMA_INT_PRIO, \
  251. .int_src = I2C5_RX_DMA_INT_SRC, \
  252. }, \
  253. }
  254. #endif /* I2C5_RX_DMA_CONFIG */
  255. #endif /* BSP_I2C5_USING_DMA */
  256. #endif
  257. #if defined(BSP_USING_I2C6)
  258. #ifndef I2C6_CONFIG
  259. #define I2C6_CONFIG \
  260. { \
  261. .name = "i2c6", \
  262. .Instance = CM_I2C6, \
  263. .clock = FCG1_PERIPH_I2C6, \
  264. .baudrate = 100000UL, \
  265. .timeout = 10000UL, \
  266. }
  267. #endif /* I2C6_CONFIG */
  268. #if defined(BSP_I2C6_USING_DMA)
  269. #ifndef I2C6_TX_DMA_CONFIG
  270. #define I2C6_TX_DMA_CONFIG \
  271. { \
  272. .Instance = I2C6_TX_DMA_INSTANCE, \
  273. .channel = I2C6_TX_DMA_CHANNEL, \
  274. .clock = I2C6_TX_DMA_CLOCK, \
  275. .trigger_select = I2C6_TX_DMA_TRIG_SELECT, \
  276. .trigger_event = EVT_SRC_I2C6_TEI, \
  277. .flag = I2C6_TX_DMA_TRANS_FLAG, \
  278. .irq_config = \
  279. { \
  280. .irq_num = I2C6_TX_DMA_IRQn, \
  281. .irq_prio = I2C6_TX_DMA_INT_PRIO, \
  282. .int_src = I2C6_TX_DMA_INT_SRC, \
  283. }, \
  284. }
  285. #endif /* I2C6_TX_DMA_CONFIG */
  286. #ifndef I2C6_RX_DMA_CONFIG
  287. #define I2C6_RX_DMA_CONFIG \
  288. { \
  289. .Instance = I2C6_RX_DMA_INSTANCE, \
  290. .channel = I2C6_RX_DMA_CHANNEL, \
  291. .clock = I2C6_RX_DMA_CLOCK, \
  292. .trigger_select = I2C6_RX_DMA_TRIG_SELECT, \
  293. .trigger_event = EVT_SRC_I2C6_RXI, \
  294. .flag = I2C6_RX_DMA_TRANS_FLAG, \
  295. .irq_config = \
  296. { \
  297. .irq_num = I2C6_RX_DMA_IRQn, \
  298. .irq_prio = I2C6_RX_DMA_INT_PRIO, \
  299. .int_src = I2C6_RX_DMA_INT_SRC, \
  300. }, \
  301. }
  302. #endif /* I2C6_RX_DMA_CONFIG */
  303. #endif /* BSP_I2C6_USING_DMA */
  304. #endif
  305. #ifdef __cplusplus
  306. }
  307. #endif
  308. #endif