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 = 0x80E02E2E,                       \
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         .flex_channel = I2C1_RX_DMA_FLEX_CHANNEL,   \
46         .request_id = I2C1_RX_DMA_REQ_ID,           \
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         .flex_channel = I2C1_TX_DMA_FLEX_CHANNEL,   \
57         .request_id = I2C1_TX_DMA_REQ_ID,           \
58     }
59 #endif /* BSP_I2C1_TX_USING_DMA */
60 
61 #ifdef BSP_USING_HARD_I2C2
62 #define I2C2_CONFIG                                 \
63     {                                               \
64         .i2c_x = I2C2,                              \
65         .i2c_name = "hwi2c2",                       \
66         .timing = 0x80E02E2E,                       \
67         .ev_irqn = I2C2_EVT_IRQn,                   \
68         .er_irqn = I2C2_ERR_IRQn,                   \
69     }
70 #endif /* BSP_USING_HARD_I2C2 */
71 
72 #ifdef BSP_I2C2_RX_USING_DMA
73 #define I2C2_RX_DMA_CONFIG                          \
74     {                                               \
75         .dma_channel = I2C2_RX_DMA_CHANNEL,         \
76         .dma_clock = I2C2_RX_DMA_CLOCK,             \
77         .dma_irqn = I2C2_RX_DMA_IRQ,                \
78         .flex_channel = I2C2_RX_DMA_FLEX_CHANNEL,   \
79         .request_id = I2C2_RX_DMA_REQ_ID,           \
80     }
81 #endif /* BSP_I2C2_RX_USING_DMA */
82 
83 #ifdef BSP_I2C2_TX_USING_DMA
84 #define I2C2_TX_DMA_CONFIG                          \
85     {                                               \
86         .dma_channel = I2C2_TX_DMA_CHANNEL,         \
87         .dma_clock = I2C2_TX_DMA_CLOCK,             \
88         .dma_irqn = I2C2_TX_DMA_IRQ,                \
89         .flex_channel = I2C2_TX_DMA_FLEX_CHANNEL,   \
90         .request_id = I2C2_TX_DMA_REQ_ID,           \
91     }
92 #endif /* BSP_I2C2_TX_USING_DMA */
93 
94 #ifdef __cplusplus
95 }
96 #endif
97 
98 #endif /*__I2C_CONFIG_H__ */
99 
100