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