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