diff options
| author | kurisaw <[email protected]> | 2025-01-09 10:05:52 +0800 |
|---|---|---|
| committer | Meco Man <[email protected]> | 2025-01-08 22:07:03 -0500 |
| commit | 1b76eccb37de8e01cf50a7c507de423c07f309ad (patch) | |
| tree | 55c02a1c607487be7c7b07051f7781af263fbda3 /components/drivers/i2c | |
| parent | 97b9cc50000bc427df9bdd9fd99ede9a0c6215b0 (diff) | |
[drivers] merge the software i2c driver
Diffstat (limited to 'components/drivers/i2c')
| -rw-r--r-- | components/drivers/i2c/Kconfig | 414 | ||||
| -rw-r--r-- | components/drivers/i2c/dev_soft_i2c.c | 12 |
2 files changed, 230 insertions, 196 deletions
diff --git a/components/drivers/i2c/Kconfig b/components/drivers/i2c/Kconfig index 40f04d1d2f..bb4c90dba8 100644 --- a/components/drivers/i2c/Kconfig +++ b/components/drivers/i2c/Kconfig @@ -17,203 +17,227 @@ if RT_USING_I2C default n endif - config RT_USING_SOFT_I2C + menuconfig RT_USING_SOFT_I2C bool "Use GPIO to soft simulate I2C" default n select RT_USING_PIN select RT_USING_I2C_BITOPS - if RT_USING_SOFT_I2C - config RT_USING_SOFT_I2C1 - bool "Enable I2C1 Bus (software simulation)" - default y - if RT_USING_SOFT_I2C1 - config RT_SOFT_I2C1_SCL_PIN - int "SCL pin number" - range 0 32767 - default 1 - config RT_SOFT_I2C1_SDA_PIN - int "SDA pin number" - range 0 32767 - default 2 - config RT_SOFT_I2C1_BUS_NAME - string "Bus name" - default "i2c1" - config RT_SOFT_I2C1_TIMING_DELAY - int "Timing delay (us)" - range 0 32767 - default 10 - config RT_SOFT_I2C1_TIMING_TIMEOUT - int "Timing timeout (tick)" - range 0 32767 - default 10 - endif - config RT_USING_SOFT_I2C2 - bool "Enable I2C2 Bus (software simulation)" - default n - if RT_USING_SOFT_I2C2 - config RT_SOFT_I2C2_SCL_PIN - int "SCL pin number" - range 0 32767 - default 3 - config RT_SOFT_I2C2_SDA_PIN - int "SDA pin number" - range 0 32767 - default 4 - config RT_SOFT_I2C2_BUS_NAME - string "Bus name" - default "i2c2" - config RT_SOFT_I2C2_TIMING_DELAY - int "Timing delay (us)" - range 0 32767 - default 10 - config RT_SOFT_I2C2_TIMING_TIMEOUT - int "Timing timeout (tick)" - range 0 32767 - default 10 - endif - config RT_USING_SOFT_I2C3 - bool "Enable I2C3 Bus (software simulation)" - default n - if RT_USING_SOFT_I2C3 - config RT_SOFT_I2C3_SCL_PIN - int "SCL pin number" - range 0 32767 - default 5 - config RT_SOFT_I2C3_SDA_PIN - int "SDA pin number" - range 0 32767 - default 6 - config RT_SOFT_I2C3_BUS_NAME - string "Bus name" - default "i2c3" - config RT_SOFT_I2C3_TIMING_DELAY - int "Timing delay (us)" - range 0 32767 - default 10 - config RT_SOFT_I2C3_TIMING_TIMEOUT - int "Timing timeout (tick)" - range 0 32767 - default 10 - endif - config RT_USING_SOFT_I2C4 - bool "Enable I2C4 Bus (software simulation)" - default n - if RT_USING_SOFT_I2C4 - config RT_SOFT_I2C4_SCL_PIN - int "SCL pin number" - range 0 32767 - default 7 - config RT_SOFT_I2C4_SDA_PIN - int "SDA pin number" - range 0 32767 - default 8 - config RT_SOFT_I2C4_BUS_NAME - string "Bus name" - default "i2c4" - config RT_SOFT_I2C4_TIMING_DELAY - int "Timing delay (us)" - range 0 32767 - default 10 - config RT_SOFT_I2C4_TIMING_TIMEOUT - int "Timing timeout (tick)" - range 0 32767 - default 10 - endif - config RT_USING_SOFT_I2C5 - bool "Enable I2C5 Bus (software simulation)" - default n - if RT_USING_SOFT_I2C5 - config RT_SOFT_I2C5_SCL_PIN - int "SCL pin number" - range 0 32767 - default 9 - config RT_SOFT_I2C5_SDA_PIN - int "SDA pin number" - range 0 32767 - default 10 - config RT_SOFT_I2C5_BUS_NAME - string "Bus name" - default "i2c5" - config RT_SOFT_I2C5_TIMING_DELAY - int "Timing delay (us)" - range 0 32767 - default 10 - config RT_SOFT_I2C5_TIMING_TIMEOUT - int "Timing timeout (tick)" - range 0 32767 - default 10 - endif - config RT_USING_SOFT_I2C6 - bool "Enable I2C6 Bus (software simulation)" - default n - if RT_USING_SOFT_I2C6 - config RT_SOFT_I2C6_SCL_PIN - int "SCL pin number" - range 0 32767 - default 11 - config RT_SOFT_I2C6_SDA_PIN - int "SDA pin number" - range 0 32767 - default 12 - config RT_SOFT_I2C6_BUS_NAME - string "Bus name" - default "i2c6" - config RT_SOFT_I2C6_TIMING_DELAY - int "Timing delay (us)" - range 0 32767 - default 10 - config RT_SOFT_I2C6_TIMING_TIMEOUT - int "Timing timeout (tick)" - range 0 32767 - default 10 - endif - config RT_USING_SOFT_I2C7 - bool "Enable I2C7 Bus (software simulation)" - default n - if RT_USING_SOFT_I2C7 - config RT_SOFT_I2C7_SCL_PIN - int "SCL pin number" - range 0 32767 - default 13 - config RT_SOFT_I2C7_SDA_PIN - int "SDA pin number" - range 0 32767 - default 14 - config RT_SOFT_I2C7_BUS_NAME - string "Bus name" - default "i2c7" - config RT_SOFT_I2C7_TIMING_DELAY - int "Timing delay (us)" - range 0 32767 - default 10 - config RT_SOFT_I2C7_TIMING_TIMEOUT - int "Timing timeout (tick)" - range 0 32767 - default 10 - endif - config RT_USING_SOFT_I2C8 - bool "Enable I2C8 Bus (software simulation)" - default n - if RT_USING_SOFT_I2C8 - config RT_SOFT_I2C8_SCL_PIN - int "SCL pin number" - range 0 32767 - default 15 - config RT_SOFT_I2C8_SDA_PIN - int "SDA pin number" - range 0 32767 - default 16 - config RT_SOFT_I2C8_BUS_NAME - string "Bus name" - default "i2c8" - config RT_SOFT_I2C8_TIMING_DELAY - int "Timing delay (us)" - range 0 32767 - default 10 - config RT_SOFT_I2C8_TIMING_TIMEOUT - int "Timing timeout (tick)" - range 0 32767 - default 10 - endif - endif + if RT_USING_SOFT_I2C + menuconfig RT_USING_SOFT_I2C0 + bool "Enable I2C0 Bus (software simulation)" + default y + if RT_USING_SOFT_I2C0 + config RT_SOFT_I2C0_SCL_PIN + int "SCL pin number" + range 0 32767 + default 1 + config RT_SOFT_I2C0_SDA_PIN + int "SDA pin number" + range 0 32767 + default 2 + config RT_SOFT_I2C0_BUS_NAME + string "Bus name" + default "i2c0" + config RT_SOFT_I2C0_TIMING_DELAY + int "Timing delay (us)" + range 0 32767 + default 10 + config RT_SOFT_I2C0_TIMING_TIMEOUT + int "Timing timeout (tick)" + range 0 32767 + default 10 + endif + menuconfig RT_USING_SOFT_I2C1 + bool "Enable I2C1 Bus (software simulation)" + default y + if RT_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "SCL pin number" + range 0 32767 + default 3 + config RT_SOFT_I2C1_SDA_PIN + int "SDA pin number" + range 0 32767 + default 4 + config RT_SOFT_I2C1_BUS_NAME + string "Bus name" + default "i2c1" + config RT_SOFT_I2C1_TIMING_DELAY + int "Timing delay (us)" + range 0 32767 + default 10 + config RT_SOFT_I2C1_TIMING_TIMEOUT + int "Timing timeout (tick)" + range 0 32767 + default 10 + endif + menuconfig RT_USING_SOFT_I2C2 + bool "Enable I2C2 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "SCL pin number" + range 0 32767 + default 5 + config RT_SOFT_I2C2_SDA_PIN + int "SDA pin number" + range 0 32767 + default 6 + config RT_SOFT_I2C2_BUS_NAME + string "Bus name" + default "i2c2" + config RT_SOFT_I2C2_TIMING_DELAY + int "Timing delay (us)" + range 0 32767 + default 10 + config RT_SOFT_I2C2_TIMING_TIMEOUT + int "Timing timeout (tick)" + range 0 32767 + default 10 + endif + menuconfig RT_USING_SOFT_I2C3 + bool "Enable I2C3 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C3 + config RT_SOFT_I2C3_SCL_PIN + int "SCL pin number" + range 0 32767 + default 7 + config RT_SOFT_I2C3_SDA_PIN + int "SDA pin number" + range 0 32767 + default 8 + config RT_SOFT_I2C3_BUS_NAME + string "Bus name" + default "i2c3" + config RT_SOFT_I2C3_TIMING_DELAY + int "Timing delay (us)" + range 0 32767 + default 10 + config RT_SOFT_I2C3_TIMING_TIMEOUT + int "Timing timeout (tick)" + range 0 32767 + default 10 + endif + menuconfig RT_USING_SOFT_I2C4 + bool "Enable I2C4 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C4 + config RT_SOFT_I2C4_SCL_PIN + int "SCL pin number" + range 0 32767 + default 9 + config RT_SOFT_I2C4_SDA_PIN + int "SDA pin number" + range 0 32767 + default 10 + config RT_SOFT_I2C4_BUS_NAME + string "Bus name" + default "i2c4" + config RT_SOFT_I2C4_TIMING_DELAY + int "Timing delay (us)" + range 0 32767 + default 10 + config RT_SOFT_I2C4_TIMING_TIMEOUT + int "Timing timeout (tick)" + range 0 32767 + default 10 + endif + menuconfig RT_USING_SOFT_I2C5 + bool "Enable I2C5 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C5 + config RT_SOFT_I2C5_SCL_PIN + int "SCL pin number" + range 0 32767 + default 11 + config RT_SOFT_I2C5_SDA_PIN + int "SDA pin number" + range 0 32767 + default 12 + config RT_SOFT_I2C5_BUS_NAME + string "Bus name" + default "i2c5" + config RT_SOFT_I2C5_TIMING_DELAY + int "Timing delay (us)" + range 0 32767 + default 10 + config RT_SOFT_I2C5_TIMING_TIMEOUT + int "Timing timeout (tick)" + range 0 32767 + default 10 + endif + menuconfig RT_USING_SOFT_I2C6 + bool "Enable I2C6 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C6 + config RT_SOFT_I2C6_SCL_PIN + int "SCL pin number" + range 0 32767 + default 13 + config RT_SOFT_I2C6_SDA_PIN + int "SDA pin number" + range 0 32767 + default 14 + config RT_SOFT_I2C6_BUS_NAME + string "Bus name" + default "i2c6" + config RT_SOFT_I2C6_TIMING_DELAY + int "Timing delay (us)" + range 0 32767 + default 10 + config RT_SOFT_I2C6_TIMING_TIMEOUT + int "Timing timeout (tick)" + range 0 32767 + default 10 + endif + menuconfig RT_USING_SOFT_I2C7 + bool "Enable I2C7 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C7 + config RT_SOFT_I2C7_SCL_PIN + int "SCL pin number" + range 0 32767 + default 15 + config RT_SOFT_I2C7_SDA_PIN + int "SDA pin number" + range 0 32767 + default 16 + config RT_SOFT_I2C7_BUS_NAME + string "Bus name" + default "i2c7" + config RT_SOFT_I2C7_TIMING_DELAY + int "Timing delay (us)" + range 0 32767 + default 10 + config RT_SOFT_I2C7_TIMING_TIMEOUT + int "Timing timeout (tick)" + range 0 32767 + default 10 + endif + menuconfig RT_USING_SOFT_I2C8 + bool "Enable I2C8 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C8 + config RT_SOFT_I2C8_SCL_PIN + int "SCL pin number" + range 0 32767 + default 17 + config RT_SOFT_I2C8_SDA_PIN + int "SDA pin number" + range 0 32767 + default 18 + config RT_SOFT_I2C8_BUS_NAME + string "Bus name" + default "i2c8" + config RT_SOFT_I2C8_TIMING_DELAY + int "Timing delay (us)" + range 0 32767 + default 10 + config RT_SOFT_I2C8_TIMING_TIMEOUT + int "Timing timeout (tick)" + range 0 32767 + default 10 + endif + endif endif diff --git a/components/drivers/i2c/dev_soft_i2c.c b/components/drivers/i2c/dev_soft_i2c.c index 54c7395121..a9c661e5c6 100644 --- a/components/drivers/i2c/dev_soft_i2c.c +++ b/components/drivers/i2c/dev_soft_i2c.c @@ -11,7 +11,8 @@ #include <rtdevice.h> #ifdef RT_USING_SOFT_I2C -#if !defined(RT_USING_SOFT_I2C1) && !defined(RT_USING_SOFT_I2C2) &&\ +#if !defined(RT_USING_SOFT_I2C0) &&\ + !defined(RT_USING_SOFT_I2C1) && !defined(RT_USING_SOFT_I2C2) &&\ !defined(RT_USING_SOFT_I2C3) && !defined(RT_USING_SOFT_I2C4) &&\ !defined(RT_USING_SOFT_I2C5) && !defined(RT_USING_SOFT_I2C6) &&\ !defined(RT_USING_SOFT_I2C7) && !defined(RT_USING_SOFT_I2C8) @@ -48,6 +49,15 @@ struct rt_soft_i2c struct soft_i2c_config i2c_cfg[] = { + #ifdef RT_USING_SOFT_I2C0 + { + .scl_pin = RT_SOFT_I2C0_SCL_PIN, + .sda_pin = RT_SOFT_I2C0_SDA_PIN, + .bus_name = RT_SOFT_I2C0_BUS_NAME, + .timing_delay = RT_SOFT_I2C0_TIMING_DELAY, + .timing_timeout = RT_SOFT_I2C0_TIMING_TIMEOUT, + }, + #endif //RT_USING_SOFT_I2C0 #ifdef RT_USING_SOFT_I2C1 { .scl_pin = RT_SOFT_I2C1_SCL_PIN, |
