1 /* 2 * Copyright (C) 2022-2024, Xiaohua Semiconductor Co., Ltd. 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 * 6 * Change Logs: 7 * Date Author Notes 8 * 2022-04-28 CDT first version 9 */ 10 11 #ifndef __DRV_I2C_SOFT_H__ 12 #define __DRV_I2C_SOFT_H__ 13 14 /******************************************************************************* 15 * Include files 16 ******************************************************************************/ 17 #include <rtdevice.h> 18 19 /* C binding of definitions if building with C++ compiler */ 20 #ifdef __cplusplus 21 extern "C" 22 { 23 #endif 24 25 /******************************************************************************* 26 * Global type definitions ('typedef') 27 ******************************************************************************/ 28 struct hc32_soft_i2c_config 29 { 30 rt_uint16_t scl_pin; 31 rt_uint16_t sda_pin; 32 const char *bus_name; 33 }; 34 35 struct hc32_soft_i2c 36 { 37 struct rt_i2c_bit_ops ops; 38 struct rt_i2c_bus_device i2c_bus; 39 }; 40 41 #ifdef BSP_USING_I2C1_SW 42 #define I2C1_BUS_CONFIG \ 43 { \ 44 .scl_pin = BSP_I2C1_SCL_PIN, \ 45 .sda_pin = BSP_I2C1_SDA_PIN, \ 46 .bus_name = "i2c1_sw", \ 47 } 48 #endif 49 50 #ifdef BSP_USING_I2C2_SW 51 #define I2C2_BUS_CONFIG \ 52 { \ 53 .scl_pin = BSP_I2C2_SCL_PIN, \ 54 .sda_pin = BSP_I2C2_SDA_PIN, \ 55 .bus_name = "i2c2_sw", \ 56 } 57 #endif 58 59 #ifdef BSP_USING_I2C3_SW 60 #define I2C3_BUS_CONFIG \ 61 { \ 62 .scl_pin = BSP_I2C3_SCL_PIN, \ 63 .sda_pin = BSP_I2C3_SDA_PIN, \ 64 .bus_name = "i2c3_sw", \ 65 } 66 #endif 67 68 #ifdef BSP_USING_I2C4_SW 69 #define I2C4_BUS_CONFIG \ 70 { \ 71 .scl_pin = BSP_I2C4_SCL_PIN, \ 72 .sda_pin = BSP_I2C4_SDA_PIN, \ 73 .bus_name = "i2c4_sw", \ 74 } 75 #endif 76 77 #ifdef BSP_USING_I2C5_SW 78 #define I2C5_BUS_CONFIG \ 79 { \ 80 .scl_pin = BSP_I2C5_SCL_PIN, \ 81 .sda_pin = BSP_I2C5_SDA_PIN, \ 82 .bus_name = "i2c5_sw", \ 83 } 84 #endif 85 86 #ifdef BSP_USING_I2C6_SW 87 #define I2C6_BUS_CONFIG \ 88 { \ 89 .scl_pin = BSP_I2C6_SCL_PIN, \ 90 .sda_pin = BSP_I2C6_SDA_PIN, \ 91 .bus_name = "i2c6_sw", \ 92 } 93 #endif 94 95 #ifdef __cplusplus 96 } 97 #endif 98 99 #endif /* __DRV_SOFT_I2C_H__ */ 100 101 /******************************************************************************* 102 * EOF (not truncated) 103 ******************************************************************************/ 104