diff options
| author | CYFS <[email protected]> | 2026-07-15 17:54:33 +0800 |
|---|---|---|
| committer | Rbb666 <[email protected]> | 2026-07-16 13:19:57 +0800 |
| commit | 414ff7f3710168dbf99a398e18b2a4ff8448b005 (patch) | |
| tree | 4d29ff0dadc5cb4aa74941deb4e28bb46ff5ad6d /bsp/at32 | |
| parent | 997de9433af42aacb1988489ccb08b6688f440cc (diff) | |
[bsp][drivers][soft_i2c] unify the software I2C driver
Diffstat (limited to 'bsp/at32')
39 files changed, 1496 insertions, 974 deletions
diff --git a/bsp/at32/at32a403a-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32a403a-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 0000000000..f726ac2613 --- /dev/null +++ b/bsp/at32/at32a403a-start/.ci/attachconfig/ci.attachconfig.yml @@ -0,0 +1,16 @@ +devices.soft_i2c: + kconfig: + - CONFIG_RT_USING_I2C=y + - CONFIG_RT_USING_SOFT_I2C=y + - CONFIG_RT_USING_SOFT_I2C1=y + - CONFIG_RT_SOFT_I2C1_SCL_PIN=22 + - CONFIG_RT_SOFT_I2C1_SDA_PIN=23 + - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1" + - CONFIG_RT_USING_SOFT_I2C2=y + - CONFIG_RT_SOFT_I2C2_SCL_PIN=26 + - CONFIG_RT_SOFT_I2C2_SDA_PIN=27 + - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2" + - CONFIG_RT_USING_SOFT_I2C3=y + - CONFIG_RT_SOFT_I2C3_SCL_PIN=8 + - CONFIG_RT_SOFT_I2C3_SDA_PIN=41 + - CONFIG_RT_SOFT_I2C3_BUS_NAME="swi2c3" diff --git a/bsp/at32/at32a403a-start/board/Kconfig b/bsp/at32/at32a403a-start/board/Kconfig index b7d8486d27..af31ed0b23 100644 --- a/bsp/at32/at32a403a-start/board/Kconfig +++ b/bsp/at32/at32a403a-start/board/Kconfig @@ -237,51 +237,52 @@ menu "On-chip Peripheral Drivers" select BSP_SPI2_TX_USING_DMA default n endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 63 - default 8 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 63 - default 41 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 26 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 27 + endif + + menuconfig BSP_USING_SOFT_I2C3 + bool "Enable software I2C3 Bus (swi2c3)" + default n + select RT_USING_SOFT_I2C3 + if BSP_USING_SOFT_I2C3 + config RT_SOFT_I2C3_SCL_PIN + int "swi2c3 SCL pin number" + default 8 + config RT_SOFT_I2C3_SDA_PIN + int "swi2c3 SDA pin number" + default 41 + endif + endif + menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" @@ -381,4 +382,40 @@ menu "On-chip Peripheral Drivers" endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C3_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SCL_PIN_DEFAULT + int + default 8 if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SDA_PIN_DEFAULT + int + default 41 if RT_USING_SOFT_I2C3 + endmenu diff --git a/bsp/at32/at32a423-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32a423-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 0000000000..8b33403ed0 --- /dev/null +++ b/bsp/at32/at32a423-start/.ci/attachconfig/ci.attachconfig.yml @@ -0,0 +1,12 @@ +devices.soft_i2c: + kconfig: + - CONFIG_RT_USING_I2C=y + - CONFIG_RT_USING_SOFT_I2C=y + - CONFIG_RT_USING_SOFT_I2C1=y + - CONFIG_RT_SOFT_I2C1_SCL_PIN=22 + - CONFIG_RT_SOFT_I2C1_SDA_PIN=23 + - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1" + - CONFIG_RT_USING_SOFT_I2C2=y + - CONFIG_RT_SOFT_I2C2_SCL_PIN=26 + - CONFIG_RT_SOFT_I2C2_SDA_PIN=27 + - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2" diff --git a/bsp/at32/at32a423-start/board/Kconfig b/bsp/at32/at32a423-start/board/Kconfig index 6da7a57f63..4888c433b1 100644 --- a/bsp/at32/at32a423-start/board/Kconfig +++ b/bsp/at32/at32a423-start/board/Kconfig @@ -261,39 +261,39 @@ menu "On-chip Peripheral Drivers" select BSP_SPI3_TX_USING_DMA default n endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 26 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 27 + endif + endif + menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" @@ -380,4 +380,28 @@ menu "On-chip Peripheral Drivers" endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + endmenu diff --git a/bsp/at32/at32f402-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f402-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 0000000000..f726ac2613 --- /dev/null +++ b/bsp/at32/at32f402-start/.ci/attachconfig/ci.attachconfig.yml @@ -0,0 +1,16 @@ +devices.soft_i2c: + kconfig: + - CONFIG_RT_USING_I2C=y + - CONFIG_RT_USING_SOFT_I2C=y + - CONFIG_RT_USING_SOFT_I2C1=y + - CONFIG_RT_SOFT_I2C1_SCL_PIN=22 + - CONFIG_RT_SOFT_I2C1_SDA_PIN=23 + - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1" + - CONFIG_RT_USING_SOFT_I2C2=y + - CONFIG_RT_SOFT_I2C2_SCL_PIN=26 + - CONFIG_RT_SOFT_I2C2_SDA_PIN=27 + - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2" + - CONFIG_RT_USING_SOFT_I2C3=y + - CONFIG_RT_SOFT_I2C3_SCL_PIN=8 + - CONFIG_RT_SOFT_I2C3_SDA_PIN=41 + - CONFIG_RT_SOFT_I2C3_BUS_NAME="swi2c3" diff --git a/bsp/at32/at32f402-start/board/Kconfig b/bsp/at32/at32f402-start/board/Kconfig index 58d9aa1a64..6d0f45296a 100644 --- a/bsp/at32/at32f402-start/board/Kconfig +++ b/bsp/at32/at32f402-start/board/Kconfig @@ -260,51 +260,52 @@ menu "On-chip Peripheral Drivers" select BSP_SPI2_TX_USING_DMA default n endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 63 - default 8 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 63 - default 41 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 26 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 27 + endif + + menuconfig BSP_USING_SOFT_I2C3 + bool "Enable software I2C3 Bus (swi2c3)" + default n + select RT_USING_SOFT_I2C3 + if BSP_USING_SOFT_I2C3 + config RT_SOFT_I2C3_SCL_PIN + int "swi2c3 SCL pin number" + default 8 + config RT_SOFT_I2C3_SDA_PIN + int "swi2c3 SDA pin number" + default 41 + endif + endif + menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" @@ -378,4 +379,40 @@ menu "On-chip Peripheral Drivers" endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C3_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SCL_PIN_DEFAULT + int + default 8 if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SDA_PIN_DEFAULT + int + default 41 if RT_USING_SOFT_I2C3 + endmenu diff --git a/bsp/at32/at32f403a-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f403a-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 0000000000..f726ac2613 --- /dev/null +++ b/bsp/at32/at32f403a-start/.ci/attachconfig/ci.attachconfig.yml @@ -0,0 +1,16 @@ +devices.soft_i2c: + kconfig: + - CONFIG_RT_USING_I2C=y + - CONFIG_RT_USING_SOFT_I2C=y + - CONFIG_RT_USING_SOFT_I2C1=y + - CONFIG_RT_SOFT_I2C1_SCL_PIN=22 + - CONFIG_RT_SOFT_I2C1_SDA_PIN=23 + - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1" + - CONFIG_RT_USING_SOFT_I2C2=y + - CONFIG_RT_SOFT_I2C2_SCL_PIN=26 + - CONFIG_RT_SOFT_I2C2_SDA_PIN=27 + - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2" + - CONFIG_RT_USING_SOFT_I2C3=y + - CONFIG_RT_SOFT_I2C3_SCL_PIN=8 + - CONFIG_RT_SOFT_I2C3_SDA_PIN=41 + - CONFIG_RT_SOFT_I2C3_BUS_NAME="swi2c3" diff --git a/bsp/at32/at32f403a-start/board/Kconfig b/bsp/at32/at32f403a-start/board/Kconfig index a12ff97a97..e3bdd8d8fd 100644 --- a/bsp/at32/at32f403a-start/board/Kconfig +++ b/bsp/at32/at32f403a-start/board/Kconfig @@ -237,51 +237,52 @@ menu "On-chip Peripheral Drivers" select BSP_SPI2_TX_USING_DMA default n endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 63 - default 8 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 63 - default 41 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 26 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 27 + endif + + menuconfig BSP_USING_SOFT_I2C3 + bool "Enable software I2C3 Bus (swi2c3)" + default n + select RT_USING_SOFT_I2C3 + if BSP_USING_SOFT_I2C3 + config RT_SOFT_I2C3_SCL_PIN + int "swi2c3 SCL pin number" + default 8 + config RT_SOFT_I2C3_SDA_PIN + int "swi2c3 SDA pin number" + default 41 + endif + endif + menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" @@ -381,4 +382,40 @@ menu "On-chip Peripheral Drivers" endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C3_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SCL_PIN_DEFAULT + int + default 8 if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SDA_PIN_DEFAULT + int + default 41 if RT_USING_SOFT_I2C3 + endmenu diff --git a/bsp/at32/at32f405-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f405-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 0000000000..f726ac2613 --- /dev/null +++ b/bsp/at32/at32f405-start/.ci/attachconfig/ci.attachconfig.yml @@ -0,0 +1,16 @@ +devices.soft_i2c: + kconfig: + - CONFIG_RT_USING_I2C=y + - CONFIG_RT_USING_SOFT_I2C=y + - CONFIG_RT_USING_SOFT_I2C1=y + - CONFIG_RT_SOFT_I2C1_SCL_PIN=22 + - CONFIG_RT_SOFT_I2C1_SDA_PIN=23 + - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1" + - CONFIG_RT_USING_SOFT_I2C2=y + - CONFIG_RT_SOFT_I2C2_SCL_PIN=26 + - CONFIG_RT_SOFT_I2C2_SDA_PIN=27 + - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2" + - CONFIG_RT_USING_SOFT_I2C3=y + - CONFIG_RT_SOFT_I2C3_SCL_PIN=8 + - CONFIG_RT_SOFT_I2C3_SDA_PIN=41 + - CONFIG_RT_SOFT_I2C3_BUS_NAME="swi2c3" diff --git a/bsp/at32/at32f405-start/board/Kconfig b/bsp/at32/at32f405-start/board/Kconfig index 50f523cd4c..7012bd6184 100644 --- a/bsp/at32/at32f405-start/board/Kconfig +++ b/bsp/at32/at32f405-start/board/Kconfig @@ -279,51 +279,52 @@ menu "On-chip Peripheral Drivers" select BSP_SPI2_TX_USING_DMA default n endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 63 - default 8 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 63 - default 41 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 26 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 27 + endif + + menuconfig BSP_USING_SOFT_I2C3 + bool "Enable software I2C3 Bus (swi2c3)" + default n + select RT_USING_SOFT_I2C3 + if BSP_USING_SOFT_I2C3 + config RT_SOFT_I2C3_SCL_PIN + int "swi2c3 SCL pin number" + default 8 + config RT_SOFT_I2C3_SDA_PIN + int "swi2c3 SDA pin number" + default 41 + endif + endif + menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" @@ -397,4 +398,40 @@ menu "On-chip Peripheral Drivers" endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C3_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SCL_PIN_DEFAULT + int + default 8 if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SDA_PIN_DEFAULT + int + default 41 if RT_USING_SOFT_I2C3 + endmenu diff --git a/bsp/at32/at32f407-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f407-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 0000000000..f726ac2613 --- /dev/null +++ b/bsp/at32/at32f407-start/.ci/attachconfig/ci.attachconfig.yml @@ -0,0 +1,16 @@ +devices.soft_i2c: + kconfig: + - CONFIG_RT_USING_I2C=y + - CONFIG_RT_USING_SOFT_I2C=y + - CONFIG_RT_USING_SOFT_I2C1=y + - CONFIG_RT_SOFT_I2C1_SCL_PIN=22 + - CONFIG_RT_SOFT_I2C1_SDA_PIN=23 + - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1" + - CONFIG_RT_USING_SOFT_I2C2=y + - CONFIG_RT_SOFT_I2C2_SCL_PIN=26 + - CONFIG_RT_SOFT_I2C2_SDA_PIN=27 + - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2" + - CONFIG_RT_USING_SOFT_I2C3=y + - CONFIG_RT_SOFT_I2C3_SCL_PIN=8 + - CONFIG_RT_SOFT_I2C3_SDA_PIN=41 + - CONFIG_RT_SOFT_I2C3_BUS_NAME="swi2c3" diff --git a/bsp/at32/at32f407-start/board/Kconfig b/bsp/at32/at32f407-start/board/Kconfig index c4c7e65048..2187761bca 100644 --- a/bsp/at32/at32f407-start/board/Kconfig +++ b/bsp/at32/at32f407-start/board/Kconfig @@ -260,51 +260,52 @@ menu "On-chip Peripheral Drivers" select BSP_SPI2_TX_USING_DMA default n endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 63 - default 8 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 63 - default 41 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 26 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 27 + endif + + menuconfig BSP_USING_SOFT_I2C3 + bool "Enable software I2C3 Bus (swi2c3)" + default n + select RT_USING_SOFT_I2C3 + if BSP_USING_SOFT_I2C3 + config RT_SOFT_I2C3_SCL_PIN + int "swi2c3 SCL pin number" + default 8 + config RT_SOFT_I2C3_SDA_PIN + int "swi2c3 SDA pin number" + default 41 + endif + endif + menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" @@ -404,4 +405,40 @@ menu "On-chip Peripheral Drivers" endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C3_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SCL_PIN_DEFAULT + int + default 8 if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SDA_PIN_DEFAULT + int + default 41 if RT_USING_SOFT_I2C3 + endmenu diff --git a/bsp/at32/at32f413-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f413-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 0000000000..8b33403ed0 --- /dev/null +++ b/bsp/at32/at32f413-start/.ci/attachconfig/ci.attachconfig.yml @@ -0,0 +1,12 @@ +devices.soft_i2c: + kconfig: + - CONFIG_RT_USING_I2C=y + - CONFIG_RT_USING_SOFT_I2C=y + - CONFIG_RT_USING_SOFT_I2C1=y + - CONFIG_RT_SOFT_I2C1_SCL_PIN=22 + - CONFIG_RT_SOFT_I2C1_SDA_PIN=23 + - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1" + - CONFIG_RT_USING_SOFT_I2C2=y + - CONFIG_RT_SOFT_I2C2_SCL_PIN=26 + - CONFIG_RT_SOFT_I2C2_SDA_PIN=27 + - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2" diff --git a/bsp/at32/at32f413-start/board/Kconfig b/bsp/at32/at32f413-start/board/Kconfig index b809dd5702..2da7d6844e 100644 --- a/bsp/at32/at32f413-start/board/Kconfig +++ b/bsp/at32/at32f413-start/board/Kconfig @@ -237,39 +237,39 @@ menu "On-chip Peripheral Drivers" select BSP_SPI2_TX_USING_DMA default n endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 26 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 27 + endif + endif + menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" @@ -344,4 +344,28 @@ menu "On-chip Peripheral Drivers" endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + endmenu diff --git a/bsp/at32/at32f415-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f415-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 0000000000..8b33403ed0 --- /dev/null +++ b/bsp/at32/at32f415-start/.ci/attachconfig/ci.attachconfig.yml @@ -0,0 +1,12 @@ +devices.soft_i2c: + kconfig: + - CONFIG_RT_USING_I2C=y + - CONFIG_RT_USING_SOFT_I2C=y + - CONFIG_RT_USING_SOFT_I2C1=y + - CONFIG_RT_SOFT_I2C1_SCL_PIN=22 + - CONFIG_RT_SOFT_I2C1_SDA_PIN=23 + - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1" + - CONFIG_RT_USING_SOFT_I2C2=y + - CONFIG_RT_SOFT_I2C2_SCL_PIN=26 + - CONFIG_RT_SOFT_I2C2_SDA_PIN=27 + - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2" diff --git a/bsp/at32/at32f415-start/board/Kconfig b/bsp/at32/at32f415-start/board/Kconfig index fd29cc332e..37a81975eb 100644 --- a/bsp/at32/at32f415-start/board/Kconfig +++ b/bsp/at32/at32f415-start/board/Kconfig @@ -252,39 +252,39 @@ menu "On-chip Peripheral Drivers" select BSP_SPI2_TX_USING_DMA default n endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 26 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 27 + endif + endif + menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" @@ -353,4 +353,28 @@ menu "On-chip Peripheral Drivers" endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + endmenu diff --git a/bsp/at32/at32f421-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f421-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 0000000000..8b33403ed0 --- /dev/null +++ b/bsp/at32/at32f421-start/.ci/attachconfig/ci.attachconfig.yml @@ -0,0 +1,12 @@ +devices.soft_i2c: + kconfig: + - CONFIG_RT_USING_I2C=y + - CONFIG_RT_USING_SOFT_I2C=y + - CONFIG_RT_USING_SOFT_I2C1=y + - CONFIG_RT_SOFT_I2C1_SCL_PIN=22 + - CONFIG_RT_SOFT_I2C1_SDA_PIN=23 + - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1" + - CONFIG_RT_USING_SOFT_I2C2=y + - CONFIG_RT_SOFT_I2C2_SCL_PIN=26 + - CONFIG_RT_SOFT_I2C2_SDA_PIN=27 + - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2" diff --git a/bsp/at32/at32f421-start/board/Kconfig b/bsp/at32/at32f421-start/board/Kconfig index e037d8d499..3b8bbd6ca4 100644 --- a/bsp/at32/at32f421-start/board/Kconfig +++ b/bsp/at32/at32f421-start/board/Kconfig @@ -181,39 +181,39 @@ menu "On-chip Peripheral Drivers" select BSP_SPI2_TX_USING_DMA default n endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 26 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 27 + endif + endif + menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" @@ -262,4 +262,28 @@ menu "On-chip Peripheral Drivers" endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + endmenu diff --git a/bsp/at32/at32f423-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f423-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 0000000000..8b33403ed0 --- /dev/null +++ b/bsp/at32/at32f423-start/.ci/attachconfig/ci.attachconfig.yml @@ -0,0 +1,12 @@ +devices.soft_i2c: + kconfig: + - CONFIG_RT_USING_I2C=y + - CONFIG_RT_USING_SOFT_I2C=y + - CONFIG_RT_USING_SOFT_I2C1=y + - CONFIG_RT_SOFT_I2C1_SCL_PIN=22 + - CONFIG_RT_SOFT_I2C1_SDA_PIN=23 + - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1" + - CONFIG_RT_USING_SOFT_I2C2=y + - CONFIG_RT_SOFT_I2C2_SCL_PIN=26 + - CONFIG_RT_SOFT_I2C2_SDA_PIN=27 + - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2" diff --git a/bsp/at32/at32f423-start/board/Kconfig b/bsp/at32/at32f423-start/board/Kconfig index 51da2462ab..05dafa6bd8 100644 --- a/bsp/at32/at32f423-start/board/Kconfig +++ b/bsp/at32/at32f423-start/board/Kconfig @@ -261,39 +261,39 @@ menu "On-chip Peripheral Drivers" select BSP_SPI3_TX_USING_DMA default n endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 26 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 27 + endif + endif + menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" @@ -380,4 +380,28 @@ menu "On-chip Peripheral Drivers" endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + endmenu diff --git a/bsp/at32/at32f425-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f425-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 0000000000..8b33403ed0 --- /dev/null +++ b/bsp/at32/at32f425-start/.ci/attachconfig/ci.attachconfig.yml @@ -0,0 +1,12 @@ +devices.soft_i2c: + kconfig: + - CONFIG_RT_USING_I2C=y + - CONFIG_RT_USING_SOFT_I2C=y + - CONFIG_RT_USING_SOFT_I2C1=y + - CONFIG_RT_SOFT_I2C1_SCL_PIN=22 + - CONFIG_RT_SOFT_I2C1_SDA_PIN=23 + - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1" + - CONFIG_RT_USING_SOFT_I2C2=y + - CONFIG_RT_SOFT_I2C2_SCL_PIN=26 + - CONFIG_RT_SOFT_I2C2_SDA_PIN=27 + - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2" diff --git a/bsp/at32/at32f425-start/board/Kconfig b/bsp/at32/at32f425-start/board/Kconfig index cc47c54329..6cac7dfd56 100644 --- a/bsp/at32/at32f425-start/board/Kconfig +++ b/bsp/at32/at32f425-start/board/Kconfig @@ -261,39 +261,39 @@ menu "On-chip Peripheral Drivers" select BSP_SPI3_TX_USING_DMA default n endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 26 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 27 + endif + endif + menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" @@ -352,4 +352,28 @@ menu "On-chip Peripheral Drivers" endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + endmenu diff --git a/bsp/at32/at32f435-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f435-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 0000000000..f726ac2613 --- /dev/null +++ b/bsp/at32/at32f435-start/.ci/attachconfig/ci.attachconfig.yml @@ -0,0 +1,16 @@ +devices.soft_i2c: + kconfig: + - CONFIG_RT_USING_I2C=y + - CONFIG_RT_USING_SOFT_I2C=y + - CONFIG_RT_USING_SOFT_I2C1=y + - CONFIG_RT_SOFT_I2C1_SCL_PIN=22 + - CONFIG_RT_SOFT_I2C1_SDA_PIN=23 + - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1" + - CONFIG_RT_USING_SOFT_I2C2=y + - CONFIG_RT_SOFT_I2C2_SCL_PIN=26 + - CONFIG_RT_SOFT_I2C2_SDA_PIN=27 + - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2" + - CONFIG_RT_USING_SOFT_I2C3=y + - CONFIG_RT_SOFT_I2C3_SCL_PIN=8 + - CONFIG_RT_SOFT_I2C3_SDA_PIN=41 + - CONFIG_RT_SOFT_I2C3_BUS_NAME="swi2c3" diff --git a/bsp/at32/at32f435-start/board/Kconfig b/bsp/at32/at32f435-start/board/Kconfig index f00c2718f4..b38541d23e 100644 --- a/bsp/at32/at32f435-start/board/Kconfig +++ b/bsp/at32/at32f435-start/board/Kconfig @@ -286,51 +286,52 @@ menu "On-chip Peripheral Drivers" select BSP_SPI2_TX_USING_DMA default n endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 63 - default 8 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 63 - default 41 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 26 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 27 + endif + + menuconfig BSP_USING_SOFT_I2C3 + bool "Enable software I2C3 Bus (swi2c3)" + default n + select RT_USING_SOFT_I2C3 + if BSP_USING_SOFT_I2C3 + config RT_SOFT_I2C3_SCL_PIN + int "swi2c3 SCL pin number" + default 8 + config RT_SOFT_I2C3_SDA_PIN + int "swi2c3 SDA pin number" + default 41 + endif + endif + menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" @@ -430,4 +431,40 @@ menu "On-chip Peripheral Drivers" endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C3_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SCL_PIN_DEFAULT + int + default 8 if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SDA_PIN_DEFAULT + int + default 41 if RT_USING_SOFT_I2C3 + endmenu diff --git a/bsp/at32/at32f437-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f437-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 0000000000..f726ac2613 --- /dev/null +++ b/bsp/at32/at32f437-start/.ci/attachconfig/ci.attachconfig.yml @@ -0,0 +1,16 @@ +devices.soft_i2c: + kconfig: + - CONFIG_RT_USING_I2C=y + - CONFIG_RT_USING_SOFT_I2C=y + - CONFIG_RT_USING_SOFT_I2C1=y + - CONFIG_RT_SOFT_I2C1_SCL_PIN=22 + - CONFIG_RT_SOFT_I2C1_SDA_PIN=23 + - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1" + - CONFIG_RT_USING_SOFT_I2C2=y + - CONFIG_RT_SOFT_I2C2_SCL_PIN=26 + - CONFIG_RT_SOFT_I2C2_SDA_PIN=27 + - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2" + - CONFIG_RT_USING_SOFT_I2C3=y + - CONFIG_RT_SOFT_I2C3_SCL_PIN=8 + - CONFIG_RT_SOFT_I2C3_SDA_PIN=41 + - CONFIG_RT_SOFT_I2C3_BUS_NAME="swi2c3" diff --git a/bsp/at32/at32f437-start/board/Kconfig b/bsp/at32/at32f437-start/board/Kconfig index da90f3c231..3c52f6d8d5 100644 --- a/bsp/at32/at32f437-start/board/Kconfig +++ b/bsp/at32/at32f437-start/board/Kconfig @@ -309,51 +309,52 @@ menu "On-chip Peripheral Drivers" select BSP_SPI2_TX_USING_DMA default n endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 63 - default 8 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 63 - default 41 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 26 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 27 + endif + + menuconfig BSP_USING_SOFT_I2C3 + bool "Enable software I2C3 Bus (swi2c3)" + default n + select RT_USING_SOFT_I2C3 + if BSP_USING_SOFT_I2C3 + config RT_SOFT_I2C3_SCL_PIN + int "swi2c3 SCL pin number" + default 8 + config RT_SOFT_I2C3_SDA_PIN + int "swi2c3 SDA pin number" + default 41 + endif + endif + menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" @@ -453,4 +454,40 @@ menu "On-chip Peripheral Drivers" endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C3_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SCL_PIN_DEFAULT + int + default 8 if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SDA_PIN_DEFAULT + int + default 41 if RT_USING_SOFT_I2C3 + endmenu diff --git a/bsp/at32/at32f455-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f455-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 0000000000..f726ac2613 --- /dev/null +++ b/bsp/at32/at32f455-start/.ci/attachconfig/ci.attachconfig.yml @@ -0,0 +1,16 @@ +devices.soft_i2c: + kconfig: + - CONFIG_RT_USING_I2C=y + - CONFIG_RT_USING_SOFT_I2C=y + - CONFIG_RT_USING_SOFT_I2C1=y + - CONFIG_RT_SOFT_I2C1_SCL_PIN=22 + - CONFIG_RT_SOFT_I2C1_SDA_PIN=23 + - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1" + - CONFIG_RT_USING_SOFT_I2C2=y + - CONFIG_RT_SOFT_I2C2_SCL_PIN=26 + - CONFIG_RT_SOFT_I2C2_SDA_PIN=27 + - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2" + - CONFIG_RT_USING_SOFT_I2C3=y + - CONFIG_RT_SOFT_I2C3_SCL_PIN=8 + - CONFIG_RT_SOFT_I2C3_SDA_PIN=41 + - CONFIG_RT_SOFT_I2C3_BUS_NAME="swi2c3" diff --git a/bsp/at32/at32f455-start/board/Kconfig b/bsp/at32/at32f455-start/board/Kconfig index c8f39b0b80..ef4c6e6e5f 100644 --- a/bsp/at32/at32f455-start/board/Kconfig +++ b/bsp/at32/at32f455-start/board/Kconfig @@ -272,51 +272,52 @@ menu "On-chip Peripheral Drivers" select BSP_SPI2_TX_USING_DMA default n endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 63 - default 8 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 63 - default 41 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 26 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 27 + endif + + menuconfig BSP_USING_SOFT_I2C3 + bool "Enable software I2C3 Bus (swi2c3)" + default n + select RT_USING_SOFT_I2C3 + if BSP_USING_SOFT_I2C3 + config RT_SOFT_I2C3_SCL_PIN + int "swi2c3 SCL pin number" + default 8 + config RT_SOFT_I2C3_SDA_PIN + int "swi2c3 SDA pin number" + default 41 + endif + endif + menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" @@ -419,4 +420,40 @@ menu "On-chip Peripheral Drivers" endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C3_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SCL_PIN_DEFAULT + int + default 8 if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SDA_PIN_DEFAULT + int + default 41 if RT_USING_SOFT_I2C3 + endmenu diff --git a/bsp/at32/at32f456-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f456-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 0000000000..f726ac2613 --- /dev/null +++ b/bsp/at32/at32f456-start/.ci/attachconfig/ci.attachconfig.yml @@ -0,0 +1,16 @@ +devices.soft_i2c: + kconfig: + - CONFIG_RT_USING_I2C=y + - CONFIG_RT_USING_SOFT_I2C=y + - CONFIG_RT_USING_SOFT_I2C1=y + - CONFIG_RT_SOFT_I2C1_SCL_PIN=22 + - CONFIG_RT_SOFT_I2C1_SDA_PIN=23 + - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1" + - CONFIG_RT_USING_SOFT_I2C2=y + - CONFIG_RT_SOFT_I2C2_SCL_PIN=26 + - CONFIG_RT_SOFT_I2C2_SDA_PIN=27 + - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2" + - CONFIG_RT_USING_SOFT_I2C3=y + - CONFIG_RT_SOFT_I2C3_SCL_PIN=8 + - CONFIG_RT_SOFT_I2C3_SDA_PIN=41 + - CONFIG_RT_SOFT_I2C3_BUS_NAME="swi2c3" diff --git a/bsp/at32/at32f456-start/board/Kconfig b/bsp/at32/at32f456-start/board/Kconfig index b474dba771..f4c2d8896b 100644 --- a/bsp/at32/at32f456-start/board/Kconfig +++ b/bsp/at32/at32f456-start/board/Kconfig @@ -272,51 +272,52 @@ menu "On-chip Peripheral Drivers" select BSP_SPI2_TX_USING_DMA default n endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 63 - default 8 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 63 - default 41 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 26 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 27 + endif + + menuconfig BSP_USING_SOFT_I2C3 + bool "Enable software I2C3 Bus (swi2c3)" + default n + select RT_USING_SOFT_I2C3 + if BSP_USING_SOFT_I2C3 + config RT_SOFT_I2C3_SCL_PIN + int "swi2c3 SCL pin number" + default 8 + config RT_SOFT_I2C3_SDA_PIN + int "swi2c3 SDA pin number" + default 41 + endif + endif + menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" @@ -419,4 +420,40 @@ menu "On-chip Peripheral Drivers" endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C3_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SCL_PIN_DEFAULT + int + default 8 if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SDA_PIN_DEFAULT + int + default 41 if RT_USING_SOFT_I2C3 + endmenu diff --git a/bsp/at32/at32f457-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f457-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 0000000000..f726ac2613 --- /dev/null +++ b/bsp/at32/at32f457-start/.ci/attachconfig/ci.attachconfig.yml @@ -0,0 +1,16 @@ +devices.soft_i2c: + kconfig: + - CONFIG_RT_USING_I2C=y + - CONFIG_RT_USING_SOFT_I2C=y + - CONFIG_RT_USING_SOFT_I2C1=y + - CONFIG_RT_SOFT_I2C1_SCL_PIN=22 + - CONFIG_RT_SOFT_I2C1_SDA_PIN=23 + - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1" + - CONFIG_RT_USING_SOFT_I2C2=y + - CONFIG_RT_SOFT_I2C2_SCL_PIN=26 + - CONFIG_RT_SOFT_I2C2_SDA_PIN=27 + - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2" + - CONFIG_RT_USING_SOFT_I2C3=y + - CONFIG_RT_SOFT_I2C3_SCL_PIN=8 + - CONFIG_RT_SOFT_I2C3_SDA_PIN=41 + - CONFIG_RT_SOFT_I2C3_BUS_NAME="swi2c3" diff --git a/bsp/at32/at32f457-start/board/Kconfig b/bsp/at32/at32f457-start/board/Kconfig index 2fce389a82..c10686fec4 100644 --- a/bsp/at32/at32f457-start/board/Kconfig +++ b/bsp/at32/at32f457-start/board/Kconfig @@ -272,51 +272,52 @@ menu "On-chip Peripheral Drivers" select BSP_SPI2_TX_USING_DMA default n endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 63 - default 8 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 63 - default 41 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 26 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 27 + endif + + menuconfig BSP_USING_SOFT_I2C3 + bool "Enable software I2C3 Bus (swi2c3)" + default n + select RT_USING_SOFT_I2C3 + if BSP_USING_SOFT_I2C3 + config RT_SOFT_I2C3_SCL_PIN + int "swi2c3 SCL pin number" + default 8 + config RT_SOFT_I2C3_SDA_PIN + int "swi2c3 SDA pin number" + default 41 + endif + endif + menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" @@ -419,4 +420,40 @@ menu "On-chip Peripheral Drivers" endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C3_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SCL_PIN_DEFAULT + int + default 8 if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SDA_PIN_DEFAULT + int + default 41 if RT_USING_SOFT_I2C3 + endmenu diff --git a/bsp/at32/at32m412-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32m412-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 0000000000..8b33403ed0 --- /dev/null +++ b/bsp/at32/at32m412-start/.ci/attachconfig/ci.attachconfig.yml @@ -0,0 +1,12 @@ +devices.soft_i2c: + kconfig: + - CONFIG_RT_USING_I2C=y + - CONFIG_RT_USING_SOFT_I2C=y + - CONFIG_RT_USING_SOFT_I2C1=y + - CONFIG_RT_SOFT_I2C1_SCL_PIN=22 + - CONFIG_RT_SOFT_I2C1_SDA_PIN=23 + - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1" + - CONFIG_RT_USING_SOFT_I2C2=y + - CONFIG_RT_SOFT_I2C2_SCL_PIN=26 + - CONFIG_RT_SOFT_I2C2_SDA_PIN=27 + - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2" diff --git a/bsp/at32/at32m412-start/board/Kconfig b/bsp/at32/at32m412-start/board/Kconfig index 02d3b0c5b4..bda898610d 100644 --- a/bsp/at32/at32m412-start/board/Kconfig +++ b/bsp/at32/at32m412-start/board/Kconfig @@ -181,39 +181,39 @@ menu "On-chip Peripheral Drivers" select BSP_SPI2_TX_USING_DMA default n endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 26 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 27 + endif + endif + menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" @@ -282,4 +282,28 @@ menu "On-chip Peripheral Drivers" endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + endmenu diff --git a/bsp/at32/at32m416-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32m416-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 0000000000..8b33403ed0 --- /dev/null +++ b/bsp/at32/at32m416-start/.ci/attachconfig/ci.attachconfig.yml @@ -0,0 +1,12 @@ +devices.soft_i2c: + kconfig: + - CONFIG_RT_USING_I2C=y + - CONFIG_RT_USING_SOFT_I2C=y + - CONFIG_RT_USING_SOFT_I2C1=y + - CONFIG_RT_SOFT_I2C1_SCL_PIN=22 + - CONFIG_RT_SOFT_I2C1_SDA_PIN=23 + - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1" + - CONFIG_RT_USING_SOFT_I2C2=y + - CONFIG_RT_SOFT_I2C2_SCL_PIN=26 + - CONFIG_RT_SOFT_I2C2_SDA_PIN=27 + - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2" diff --git a/bsp/at32/at32m416-start/board/Kconfig b/bsp/at32/at32m416-start/board/Kconfig index 92791fd229..097ec6e581 100644 --- a/bsp/at32/at32m416-start/board/Kconfig +++ b/bsp/at32/at32m416-start/board/Kconfig @@ -181,39 +181,39 @@ menu "On-chip Peripheral Drivers" select BSP_SPI2_TX_USING_DMA default n endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 26 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 27 + endif + endif + menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" @@ -282,4 +282,28 @@ menu "On-chip Peripheral Drivers" endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + endmenu diff --git a/bsp/at32/libraries/rt_drivers/SConscript b/bsp/at32/libraries/rt_drivers/SConscript index 090fde5feb..fa6fa3dec5 100644 --- a/bsp/at32/libraries/rt_drivers/SConscript +++ b/bsp/at32/libraries/rt_drivers/SConscript @@ -40,10 +40,6 @@ if GetDepend('BSP_USING_SDRAM'): if GetDepend(['BSP_USING_EMAC', 'RT_USING_LWIP']): src += ['drv_emac.c'] -if GetDepend(['RT_USING_I2C', 'RT_USING_I2C_BITOPS']): - if GetDepend('BSP_USING_I2C1') or GetDepend('BSP_USING_I2C2') or GetDepend('BSP_USING_I2C3') or GetDepend('BSP_USING_I2C4'): - src += ['drv_soft_i2c.c'] - if GetDepend(['BSP_USING_HARD_I2C']): src += Glob('drv_hard_i2c.c') diff --git a/bsp/at32/libraries/rt_drivers/drv_soft_i2c.c b/bsp/at32/libraries/rt_drivers/drv_soft_i2c.c deleted file mode 100644 index 711d1e66f5..0000000000 --- a/bsp/at32/libraries/rt_drivers/drv_soft_i2c.c +++ /dev/null @@ -1,231 +0,0 @@ -/* - * Copyright (c) 2006-2021, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2022-05-16 shelton first version - */ - -#include "drv_common.h" -#include "drv_soft_i2c.h" - -#ifdef RT_USING_I2C - -#define LOG_TAG "drv.i2c" -#include <drv_log.h> - -#if !defined(BSP_USING_I2C1) && !defined(BSP_USING_I2C2) && \ - !defined(BSP_USING_I2C3) -#error "Please define at least one BSP_USING_I2Cx" -/* this driver can be disabled at menuconfig RT-Thread Components Device Drivers */ -#endif - -static const struct at32_soft_i2c_config soft_i2c_config[] = -{ -#ifdef BSP_USING_I2C1 - I2C1_BUS_CONFIG, -#endif -#ifdef BSP_USING_I2C2 - I2C2_BUS_CONFIG, -#endif -#ifdef BSP_USING_I2C3 - I2C3_BUS_CONFIG, -#endif -}; - -static struct at32_i2c i2c_obj[sizeof(soft_i2c_config) / sizeof(soft_i2c_config[0])]; - -/** - * this function initializes the i2c pin. - * - * @param at32 i2c dirver class. - */ -static void at32_i2c_gpio_init(struct at32_i2c *i2c) -{ - struct at32_soft_i2c_config* cfg = (struct at32_soft_i2c_config*)i2c->ops.data; - - rt_pin_mode(cfg->scl, PIN_MODE_OUTPUT_OD); - rt_pin_mode(cfg->sda, PIN_MODE_OUTPUT_OD); - - rt_pin_write(cfg->scl, PIN_HIGH); - rt_pin_write(cfg->sda, PIN_HIGH); -} - -static void at32_i2c_pin_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct at32_i2c); - - for(rt_size_t i = 0; i < obj_num; i++) - { - at32_i2c_gpio_init(&i2c_obj[i]); - } -} - -/** - * this function sets the sda pin. - * - * @param at32 config class. - * @param the sda pin state. - */ -static void at32_set_sda(void *data, rt_int32_t state) -{ - struct at32_soft_i2c_config* cfg = (struct at32_soft_i2c_config*)data; - if (state) - { - rt_pin_write(cfg->sda, PIN_HIGH); - } - else - { - rt_pin_write(cfg->sda, PIN_LOW); - } -} - -/** - * this function sets the scl pin. - * - * @param at32 config class. - * @param the scl pin state. - */ -static void at32_set_scl(void *data, rt_int32_t state) -{ - struct at32_soft_i2c_config* cfg = (struct at32_soft_i2c_config*)data; - if (state) - { - rt_pin_write(cfg->scl, PIN_HIGH); - } - else - { - rt_pin_write(cfg->scl, PIN_LOW); - } -} - -/** - * this function gets the sda pin state. - * - * @param the sda pin state. - */ -static rt_int32_t at32_get_sda(void *data) -{ - struct at32_soft_i2c_config* cfg = (struct at32_soft_i2c_config*)data; - return rt_pin_read(cfg->sda); -} - -/** - * this function gets the scl pin state. - * - * @param the scl pin state. - */ -static rt_int32_t at32_get_scl(void *data) -{ - struct at32_soft_i2c_config* cfg = (struct at32_soft_i2c_config*)data; - return rt_pin_read(cfg->scl); -} - -/** - * the time delay function. - * - * @param microseconds. - */ -static void at32_udelay(rt_uint32_t us) -{ - rt_uint32_t ticks; - rt_uint32_t told, tnow, tcnt = 0; - rt_uint32_t reload = SysTick->LOAD; - - ticks = us * reload / (1000000 / RT_TICK_PER_SECOND); - told = SysTick->VAL; - while (1) - { - tnow = SysTick->VAL; - if (tnow != told) - { - if (tnow < told) - { - tcnt += told - tnow; - } - else - { - tcnt += reload - tnow + told; - } - told = tnow; - if (tcnt >= ticks) - { - break; - } - } - } -} - -static const struct rt_i2c_bit_ops at32_bit_ops_default = -{ - .data = RT_NULL, - .pin_init = at32_i2c_pin_init, - .set_sda = at32_set_sda, - .set_scl = at32_set_scl, - .get_sda = at32_get_sda, - .get_scl = at32_get_scl, - .udelay = at32_udelay, - .delay_us = 1, - .timeout = 100, - .i2c_pin_init_flag = RT_FALSE -}; - -/** - * if i2c is locked, this function will unlock it - * - * @param at32 config class - * - * @return RT_EOK indicates successful unlock. - */ -static rt_err_t at32_i2c_bus_unlock(const struct at32_soft_i2c_config *cfg) -{ - rt_int32_t i = 0; - - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - while (i++ < 9) - { - rt_pin_write(cfg->scl, PIN_HIGH); - at32_udelay(100); - rt_pin_write(cfg->scl, PIN_LOW); - at32_udelay(100); - } - } - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - return -RT_ERROR; - } - - return RT_EOK; -} - -/* i2c initialization function */ -int rt_hw_i2c_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct at32_i2c); - rt_err_t result; - - for (rt_size_t i = 0; i < obj_num; i++) - { - i2c_obj[i].ops = at32_bit_ops_default; - i2c_obj[i].ops.data = (void*)&soft_i2c_config[i]; - i2c_obj[i].i2c_bus.priv = &i2c_obj[i].ops; - - result = rt_i2c_bit_add_bus(&i2c_obj[i].i2c_bus, soft_i2c_config[i].bus_name); - RT_ASSERT(result == RT_EOK); - at32_i2c_bus_unlock(&soft_i2c_config[i]); - - LOG_D("software simulation %s init done, pin scl: %d, pin sda %d", - soft_i2c_config[i].bus_name, - soft_i2c_config[i].scl, - soft_i2c_config[i].sda); - } - - return RT_EOK; -} - -INIT_BOARD_EXPORT(rt_hw_i2c_init); - -#endif /* RT_USING_I2C */ diff --git a/bsp/at32/libraries/rt_drivers/drv_soft_i2c.h b/bsp/at32/libraries/rt_drivers/drv_soft_i2c.h deleted file mode 100644 index fecab31b4d..0000000000 --- a/bsp/at32/libraries/rt_drivers/drv_soft_i2c.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2006-2021, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2020-01-09 shelton first version - */ - -#ifndef __DRV_I2C__ -#define __DRV_I2C__ - -#include <rtthread.h> -#include <rthw.h> -#include <rtdevice.h> - -/* at32 config class */ -struct at32_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; -/* at32 i2c dirver class */ -struct at32_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device i2c_bus; -}; - -#ifdef BSP_USING_I2C1 -#define I2C1_BUS_CONFIG \ - { \ - .scl = BSP_I2C1_SCL_PIN, \ - .sda = BSP_I2C1_SDA_PIN, \ - .bus_name = "i2c1", \ - } -#endif - -#ifdef BSP_USING_I2C2 -#define I2C2_BUS_CONFIG \ - { \ - .scl = BSP_I2C2_SCL_PIN, \ - .sda = BSP_I2C2_SDA_PIN, \ - .bus_name = "i2c2", \ - } -#endif - -#ifdef BSP_USING_I2C3 -#define I2C3_BUS_CONFIG \ - { \ - .scl = BSP_I2C3_SCL_PIN, \ - .sda = BSP_I2C3_SDA_PIN, \ - .bus_name = "i2c3", \ - } -#endif - -int rt_hw_i2c_init(void); - -#endif |
