i2c_hard_config.h 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. /*
  2. * Copyright (c) 2006-2023, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2024-02-06 Dyyt587 first version
  9. * 2024-04-23 Zeidan Add I2Cx_xx_DMA_CONFIG
  10. */
  11. #ifndef __I2C_HARD_CONFIG_H__
  12. #define __I2C_HARD_CONFIG_H__
  13. #include <rtthread.h>
  14. #ifdef __cplusplus
  15. extern "C" {
  16. #endif
  17. #ifdef BSP_USING_HARD_I2C1
  18. #ifndef I2C1_BUS_CONFIG
  19. #define I2C1_BUS_CONFIG \
  20. { \
  21. .Instance = I2C1, \
  22. .timing=0x10707DBC, \
  23. .timeout=0x1000, \
  24. .name = "hwi2c1", \
  25. .evirq_type = I2C1_EV_IRQn, \
  26. .erirq_type = I2C1_ER_IRQn, \
  27. }
  28. #endif /* I2C1_BUS_CONFIG */
  29. #endif /* BSP_USING_HARD_I2C1 */
  30. #ifdef BSP_I2C1_TX_USING_DMA
  31. #ifndef I2C1_TX_DMA_CONFIG
  32. #if defined(SOC_SERIES_STM32F2) || defined(SOC_SERIES_STM32F4) || defined(SOC_SERIES_STM32F7)
  33. #define I2C1_TX_DMA_CONFIG \
  34. { \
  35. .dma_rcc = I2C1_TX_DMA_RCC, \
  36. .Instance = I2C1_TX_DMA_INSTANCE, \
  37. .dma_irq = I2C1_TX_DMA_IRQ, \
  38. .channel = I2C1_TX_DMA_CHANNEL \
  39. }
  40. #elif defined(SOC_SERIES_STM32L4) || defined(SOC_SERIES_STM32G0) || defined(SOC_SERIES_STM32MP1) || defined(SOC_SERIES_STM32WB) || defined(SOC_SERIES_STM32H7)
  41. #define I2C1_TX_DMA_CONFIG \
  42. { \
  43. .dma_rcc = I2C1_TX_DMA_RCC, \
  44. .Instance = I2C1_TX_DMA_INSTANCE, \
  45. .dma_irq = I2C1_TX_DMA_IRQ, \
  46. .request = DMA_REQUEST_I2C1_TX \
  47. }
  48. #endif /* defined(SOC_SERIES_STM32F2) || defined(SOC_SERIES_STM32F4) || defined(SOC_SERIES_STM32F7) */
  49. #endif /* I2C1_TX_DMA_CONFIG */
  50. #endif /* BSP_I2C1_TX_USING_DMA */
  51. #ifdef BSP_I2C1_RX_USING_DMA
  52. #ifndef I2C1_RX_DMA_CONFIG
  53. #if defined(SOC_SERIES_STM32F2) || defined(SOC_SERIES_STM32F4) || defined(SOC_SERIES_STM32F7)
  54. #define I2C1_RX_DMA_CONFIG \
  55. { \
  56. .dma_rcc = I2C1_RX_DMA_RCC, \
  57. .Instance = I2C1_RX_DMA_INSTANCE, \
  58. .dma_irq = I2C1_RX_DMA_IRQ, \
  59. .channel = I2C1_RX_DMA_CHANNEL, \
  60. }
  61. #elif defined(SOC_SERIES_STM32L4) || defined(SOC_SERIES_STM32G0) || defined(SOC_SERIES_STM32MP1) || defined(SOC_SERIES_STM32WB) || defined(SOC_SERIES_STM32H7)
  62. #define I2C1_RX_DMA_CONFIG \
  63. { \
  64. .dma_rcc = I2C1_RX_DMA_RCC, \
  65. .Instance = I2C1_RX_DMA_INSTANCE, \
  66. .dma_irq = I2C1_RX_DMA_IRQ, \
  67. .request = DMA_REQUEST_I2C1_RX \
  68. }
  69. #endif /* defined(SOC_SERIES_STM32F2) || defined(SOC_SERIES_STM32F4) || defined(SOC_SERIES_STM32F7) */
  70. #endif /* I2C1_RX_DMA_CONFIG */
  71. #endif /* BSP_I2C1_RX_USING_DMA */
  72. #ifdef BSP_USING_HARD_I2C2
  73. #ifndef I2C2_BUS_CONFIG
  74. #define I2C2_BUS_CONFIG \
  75. { \
  76. .Instance = I2C2, \
  77. .timing=0x10707DBC, \
  78. .timeout=0x1000, \
  79. .name = "hwi2c2", \
  80. .evirq_type = I2C2_EV_IRQn, \
  81. .erirq_type = I2C2_ER_IRQn, \
  82. }
  83. #endif /* I2C2_BUS_CONFIG */
  84. #endif /* BSP_USING_HARD_I2C2 */
  85. #ifdef BSP_I2C2_TX_USING_DMA
  86. #ifndef I2C2_TX_DMA_CONFIG
  87. #if defined(SOC_SERIES_STM32F2) || defined(SOC_SERIES_STM32F4) || defined(SOC_SERIES_STM32F7)
  88. #define I2C2_TX_DMA_CONFIG \
  89. { \
  90. .dma_rcc = I2C2_TX_DMA_RCC, \
  91. .Instance = I2C2_TX_DMA_INSTANCE, \
  92. .dma_irq = I2C2_TX_DMA_IRQ, \
  93. .channel = I2C2_TX_DMA_CHANNEL, \
  94. }
  95. #elif defined(SOC_SERIES_STM32L4) || defined(SOC_SERIES_STM32G0) || defined(SOC_SERIES_STM32MP1) || defined(SOC_SERIES_STM32WB) || defined(SOC_SERIES_STM32H7)
  96. #define I2C2_TX_DMA_CONFIG \
  97. { \
  98. .dma_rcc = I2C2_TX_DMA_RCC, \
  99. .Instance = I2C2_TX_DMA_INSTANCE, \
  100. .dma_irq = I2C2_TX_DMA_IRQ, \
  101. .request = DMA_REQUEST_I2C2_TX \
  102. }
  103. #endif /* defined(SOC_SERIES_STM32F2) || defined(SOC_SERIES_STM32F4) || defined(SOC_SERIES_STM32F7) */
  104. #endif /* I2C2_TX_DMA_CONFIG */
  105. #endif /* BSP_I2C2_TX_USING_DMA */
  106. #ifdef BSP_I2C2_RX_USING_DMA
  107. #ifndef I2C2_RX_DMA_CONFIG
  108. #if defined(SOC_SERIES_STM32F2) || defined(SOC_SERIES_STM32F4) || defined(SOC_SERIES_STM32F7)
  109. #define I2C2_RX_DMA_CONFIG \
  110. { \
  111. .dma_rcc = I2C2_RX_DMA_RCC, \
  112. .Instance = I2C2_RX_DMA_INSTANCE, \
  113. .dma_irq = I2C2_RX_DMA_IRQ, \
  114. .channel = I2C2_RX_DMA_CHANNEL, \
  115. }
  116. #elif defined(SOC_SERIES_STM32L4) || defined(SOC_SERIES_STM32G0) || defined(SOC_SERIES_STM32MP1) || defined(SOC_SERIES_STM32WB) || defined(SOC_SERIES_STM32H7)
  117. #define I2C2_RX_DMA_CONFIG \
  118. { \
  119. .dma_rcc = I2C2_RX_DMA_RCC, \
  120. .Instance = I2C2_RX_DMA_INSTANCE, \
  121. .dma_irq = I2C2_RX_DMA_IRQ, \
  122. .request = DMA_REQUEST_I2C2_RX \
  123. }
  124. #endif /* defined(SOC_SERIES_STM32F2) || defined(SOC_SERIES_STM32F4) || defined(SOC_SERIES_STM32F7) */
  125. #endif /* I2C2_RX_DMA_CONFIG */
  126. #endif /* BSP_I2C2_RX_USING_DMA */
  127. #ifdef BSP_USING_HARD_I2C3
  128. #ifndef I2C3_BUS_CONFIG
  129. #define I2C3_BUS_CONFIG \
  130. { \
  131. .Instance = I2C3, \
  132. .timing=0x10707DBC, \
  133. .timeout=0x1000, \
  134. .name = "hwi2c3", \
  135. .evirq_type = I2C3_EV_IRQn, \
  136. .erirq_type = I2C3_ER_IRQn, \
  137. }
  138. #endif /* I2C3_BUS_CONFIG */
  139. #endif /* BSP_USING_HARD_I2C3 */
  140. #ifdef BSP_I2C3_TX_USING_DMA
  141. #ifndef I2C3_TX_DMA_CONFIG
  142. #if defined(SOC_SERIES_STM32F2) || defined(SOC_SERIES_STM32F4) || defined(SOC_SERIES_STM32F7)
  143. #define I2C3_TX_DMA_CONFIG \
  144. { \
  145. .dma_rcc = I2C3_TX_DMA_RCC, \
  146. .Instance = I2C3_TX_DMA_INSTANCE, \
  147. .dma_irq = I2C3_TX_DMA_IRQ, \
  148. .channel = I2C3_TX_DMA_CHANNEL, \
  149. }
  150. #elif defined(SOC_SERIES_STM32L4) || defined(SOC_SERIES_STM32G0) || defined(SOC_SERIES_STM32MP1) || defined(SOC_SERIES_STM32WB) || defined(SOC_SERIES_STM32H7)
  151. #define I2C3_TX_DMA_CONFIG \
  152. { \
  153. .dma_rcc = I2C3_TX_DMA_RCC, \
  154. .Instance = I2C3_TX_DMA_INSTANCE, \
  155. .dma_irq = I2C3_TX_DMA_IRQ, \
  156. .request = DMA_REQUEST_I2C3_TX \
  157. }
  158. #endif /* defined(SOC_SERIES_STM32F2) || defined(SOC_SERIES_STM32F4) || defined(SOC_SERIES_STM32F7) */
  159. #endif /* I2C3_TX_DMA_CONFIG */
  160. #endif /* BSP_I2C3_TX_USING_DMA */
  161. #ifdef BSP_I2C3_RX_USING_DMA
  162. #ifndef I2C3_RX_DMA_CONFIG
  163. #if defined(SOC_SERIES_STM32F2) || defined(SOC_SERIES_STM32F4) || defined(SOC_SERIES_STM32F7)
  164. #define I2C3_RX_DMA_CONFIG \
  165. { \
  166. .dma_rcc = I2C3_RX_DMA_RCC, \
  167. .Instance = I2C3_RX_DMA_INSTANCE, \
  168. .dma_irq = I2C3_RX_DMA_IRQ, \
  169. .channel = I2C3_RX_DMA_CHANNEL, \
  170. }
  171. #elif defined(SOC_SERIES_STM32L4) || defined(SOC_SERIES_STM32G0) || defined(SOC_SERIES_STM32MP1) || defined(SOC_SERIES_STM32WB) || defined(SOC_SERIES_STM32H7)
  172. #define I2C3_RX_DMA_CONFIG \
  173. { \
  174. .dma_rcc = I2C3_RX_DMA_RCC, \
  175. .Instance = I2C3_RX_DMA_INSTANCE, \
  176. .dma_irq = I2C3_RX_DMA_IRQ, \
  177. .request = DMA_REQUEST_I2C3_RX \
  178. }
  179. #endif /* defined(SOC_SERIES_STM32F2) || defined(SOC_SERIES_STM32F4) || defined(SOC_SERIES_STM32F7) */
  180. #endif /* I2C3_RX_DMA_CONFIG */
  181. #endif /* BSP_I2C3_RX_USING_DMA */
  182. #ifdef __cplusplus
  183. }
  184. #endif
  185. #endif /*__I2C_CONFIG_H__ */