1 /*
2  * Copyright (c) 2006-2021, RT-Thread Development Team
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  *
6  * Change Logs:
7  * Date           Author       Notes
8  * 2024-07-31     shelton      first version
9  */
10 
11 #ifndef __I2C_CONFIG_H__
12 #define __I2C_CONFIG_H__
13 
14 #include <rtthread.h>
15 #include "dma_config.h"
16 
17 #ifdef __cplusplus
18 extern "C" {
19 #endif
20 
21 #define HWI2C_OWN_ADDRESS        0x0
22 
23 #define I2C1_EVT_IRQHandler      I2C1_EVT_IRQHandler
24 #define I2C1_ERR_IRQHandler      I2C1_ERR_IRQHandler
25 #define I2C2_EVT_IRQHandler      I2C2_EVT_IRQHandler
26 #define I2C2_ERR_IRQHandler      I2C2_ERR_IRQHandler
27 #define I2C3_EVT_IRQHandler      I2C3_EVT_IRQHandler
28 #define I2C3_ERR_IRQHandler      I2C3_ERR_IRQHandler
29 
30 #ifdef BSP_USING_HARD_I2C1
31 #define I2C1_CONFIG                                 \
32     {                                               \
33         .i2c_x = I2C1,                              \
34         .i2c_name = "hwi2c1",                       \
35         .timing = 100000,                           \
36         .ev_irqn = I2C1_EVT_IRQn,                   \
37         .er_irqn = I2C1_ERR_IRQn,                   \
38     }
39 #endif /* BSP_USING_HARD_I2C1 */
40 
41 #ifdef BSP_I2C1_RX_USING_DMA
42 #define I2C1_RX_DMA_CONFIG                          \
43     {                                               \
44         .dma_channel = I2C1_RX_DMA_CHANNEL,         \
45         .dma_clock = I2C1_RX_DMA_CLOCK,             \
46         .dma_irqn = I2C1_RX_DMA_IRQ,                \
47     }
48 #endif /* BSP_I2C1_RX_USING_DMA */
49 
50 #ifdef BSP_I2C1_TX_USING_DMA
51 #define I2C1_TX_DMA_CONFIG                          \
52     {                                               \
53         .dma_channel = I2C1_TX_DMA_CHANNEL,         \
54         .dma_clock = I2C1_TX_DMA_CLOCK,             \
55         .dma_irqn = I2C1_TX_DMA_IRQ,                \
56     }
57 #endif /* BSP_I2C1_TX_USING_DMA */
58 
59 #ifdef BSP_USING_HARD_I2C2
60 #define I2C2_CONFIG                                 \
61     {                                               \
62         .i2c_x = I2C2,                              \
63         .i2c_name = "hwi2c2",                       \
64         .timing = 100000,                           \
65         .ev_irqn = I2C2_EVT_IRQn,                   \
66         .er_irqn = I2C2_ERR_IRQn,                   \
67     }
68 #endif /* BSP_USING_HARD_I2C2 */
69 
70 #ifdef BSP_I2C2_RX_USING_DMA
71 #define I2C2_RX_DMA_CONFIG                          \
72     {                                               \
73         .dma_channel = I2C2_RX_DMA_CHANNEL,         \
74         .dma_clock = I2C2_RX_DMA_CLOCK,             \
75         .dma_irqn = I2C2_RX_DMA_IRQ,                \
76     }
77 #endif /* BSP_I2C2_RX_USING_DMA */
78 
79 #ifdef BSP_I2C2_TX_USING_DMA
80 #define I2C2_TX_DMA_CONFIG                          \
81     {                                               \
82         .dma_channel = I2C2_TX_DMA_CHANNEL,         \
83         .dma_clock = I2C2_TX_DMA_CLOCK,             \
84         .dma_irqn = I2C2_TX_DMA_IRQ,                \
85     }
86 #endif /* BSP_I2C2_TX_USING_DMA */
87 
88 #ifdef BSP_USING_HARD_I2C3
89 #define I2C3_CONFIG                                 \
90     {                                               \
91         .i2c_x = I2C3,                              \
92         .i2c_name = "hwi2c3",                       \
93         .timing = 100000,                           \
94         .ev_irqn = I2C3_EVT_IRQn,                   \
95         .er_irqn = I2C3_ERR_IRQn,                   \
96     }
97 #endif /* BSP_USING_HARD_I2C3 */
98 
99 #ifdef BSP_I2C3_RX_USING_DMA
100 #define I2C3_RX_DMA_CONFIG                          \
101     {                                               \
102         .dma_channel = I2C3_RX_DMA_CHANNEL,         \
103         .dma_clock = I2C3_RX_DMA_CLOCK,             \
104         .dma_irqn = I2C3_RX_DMA_IRQ,                \
105     }
106 #endif /* BSP_I2C3_RX_USING_DMA */
107 
108 #ifdef BSP_I2C3_TX_USING_DMA
109 #define I2C3_TX_DMA_CONFIG                          \
110     {                                               \
111         .dma_channel = I2C3_TX_DMA_CHANNEL,         \
112         .dma_clock = I2C3_TX_DMA_CLOCK,             \
113         .dma_irqn = I2C3_TX_DMA_IRQ,                \
114     }
115 #endif /* BSP_I2C3_TX_USING_DMA */
116 
117 #ifdef __cplusplus
118 }
119 #endif
120 
121 #endif /*__I2C_CONFIG_H__ */
122 
123