summaryrefslogtreecommitdiff
path: root/components/drivers/i2c
diff options
context:
space:
mode:
authorkurisaw <[email protected]>2025-01-09 10:05:52 +0800
committerMeco Man <[email protected]>2025-01-08 22:07:03 -0500
commit1b76eccb37de8e01cf50a7c507de423c07f309ad (patch)
tree55c02a1c607487be7c7b07051f7781af263fbda3 /components/drivers/i2c
parent97b9cc50000bc427df9bdd9fd99ede9a0c6215b0 (diff)
[drivers] merge the software i2c driver
Diffstat (limited to 'components/drivers/i2c')
-rw-r--r--components/drivers/i2c/Kconfig414
-rw-r--r--components/drivers/i2c/dev_soft_i2c.c12
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,