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 
28 #ifdef BSP_USING_HARD_I2C1
29 #define I2C1_CONFIG                                 \
30     {                                               \
31         .i2c_x = I2C1,                              \
32         .i2c_name = "hwi2c1",                       \
33         .timing = 100000,                           \
34         .ev_irqn = I2C1_EVT_IRQn,                   \
35         .er_irqn = I2C1_ERR_IRQn,                   \
36     }
37 #endif /* BSP_USING_HARD_I2C1 */
38 
39 #ifdef BSP_I2C1_RX_USING_DMA
40 #define I2C1_RX_DMA_CONFIG                          \
41     {                                               \
42         .dma_channel = I2C1_RX_DMA_CHANNEL,         \
43         .dma_clock = I2C1_RX_DMA_CLOCK,             \
44         .dma_irqn = I2C1_RX_DMA_IRQ,                \
45     }
46 #endif /* BSP_I2C1_RX_USING_DMA */
47 
48 #ifdef BSP_I2C1_TX_USING_DMA
49 #define I2C1_TX_DMA_CONFIG                          \
50     {                                               \
51         .dma_channel = I2C1_TX_DMA_CHANNEL,         \
52         .dma_clock = I2C1_TX_DMA_CLOCK,             \
53         .dma_irqn = I2C1_TX_DMA_IRQ,                \
54     }
55 #endif /* BSP_I2C1_TX_USING_DMA */
56 
57 #ifdef BSP_USING_HARD_I2C2
58 #define I2C2_CONFIG                                 \
59     {                                               \
60         .i2c_x = I2C2,                              \
61         .i2c_name = "hwi2c2",                       \
62         .timing = 100000,                           \
63         .ev_irqn = I2C2_EVT_IRQn,                   \
64         .er_irqn = I2C2_ERR_IRQn,                   \
65     }
66 #endif /* BSP_USING_HARD_I2C2 */
67 
68 #ifdef BSP_I2C2_RX_USING_DMA
69 #define I2C2_RX_DMA_CONFIG                          \
70     {                                               \
71         .dma_channel = I2C2_RX_DMA_CHANNEL,         \
72         .dma_clock = I2C2_RX_DMA_CLOCK,             \
73         .dma_irqn = I2C2_RX_DMA_IRQ,                \
74     }
75 #endif /* BSP_I2C2_RX_USING_DMA */
76 
77 #ifdef BSP_I2C2_TX_USING_DMA
78 #define I2C2_TX_DMA_CONFIG                          \
79     {                                               \
80         .dma_channel = I2C2_TX_DMA_CHANNEL,         \
81         .dma_clock = I2C2_TX_DMA_CLOCK,             \
82         .dma_irqn = I2C2_TX_DMA_IRQ,                \
83     }
84 #endif /* BSP_I2C2_TX_USING_DMA */
85 
86 #ifdef __cplusplus
87 }
88 #endif
89 
90 #endif /*__I2C_CONFIG_H__ */
91 
92