From 9ac734e44f887d7864beb41c75fed4dbe3e4c255 Mon Sep 17 00:00:00 2001 From: CYFS <2805686936@qq.com> Date: Sat, 18 Jan 2025 15:58:27 +0800 Subject: [PATCH] [bsp][drivers][soft_i2c]:merge the software i2c driver --- .../.ci/attachconfig/ci.attachconfig.yml | 6 - bsp/ESP32_C3/drivers/Kconfig | 19 - bsp/ESP32_C3/drivers/SConscript | 3 - bsp/ESP32_C3/drivers/drv_sw_i2c.c | 199 --------- bsp/ESP32_C3/drivers/drv_sw_i2c.h | 34 -- bsp/Infineon/libraries/HAL_Drivers/SConscript | 4 - .../libraries/HAL_Drivers/drv_soft_i2c.c | 192 --------- .../libraries/HAL_Drivers/drv_soft_i2c.h | 43 -- .../psoc6-cy8ckit-062-BLE/board/Kconfig | 23 -- .../psoc6-cy8ckit-062-WIFI-BT/board/Kconfig | 23 -- .../psoc6-cy8ckit-062S2-43012/board/Kconfig | 23 -- .../psoc6-cy8ckit-062s4/board/Kconfig | 23 -- .../psoc6-cy8cproto-062S3-4343W/board/Kconfig | 23 -- .../psoc6-evaluationkit-062S2/board/Kconfig | 23 -- bsp/acm32/acm32f0x0-nucleo/drivers/Kconfig | 22 - .../acm32f0x0-nucleo/drivers/drv_soft_i2c.c | 163 -------- .../acm32f0x0-nucleo/drivers/drv_soft_i2c.h | 44 -- bsp/airm2m/air32f103/board/Kconfig | 22 - bsp/apm32/apm32e103ze-evalboard/board/Kconfig | 83 ++-- bsp/apm32/apm32e103ze-tinyboard/board/Kconfig | 48 --- bsp/apm32/apm32f030r8-miniboard/board/Kconfig | 35 -- bsp/apm32/apm32f051r8-evalboard/board/Kconfig | 68 ++-- bsp/apm32/apm32f072vb-miniboard/board/Kconfig | 48 --- bsp/apm32/apm32f091vc-miniboard/board/Kconfig | 48 --- bsp/apm32/apm32f103vb-miniboard/board/Kconfig | 35 -- .../apm32f103xe-minibroard/board/Kconfig | 17 - bsp/apm32/apm32f107vc-evalboard/board/Kconfig | 68 ++-- .../apm32f407ig-minibroard/board/Kconfig | 17 - bsp/apm32/apm32f407zg-evalboard/board/Kconfig | 35 -- bsp/apm32/apm32s103vb-miniboard/board/Kconfig | 48 --- bsp/apm32/libraries/Drivers/SConscript | 4 - bsp/apm32/libraries/Drivers/drv_soft_i2c.c | 255 ------------ bsp/at32/at32a403a-start/board/Kconfig | 45 --- bsp/at32/at32a423-start/board/Kconfig | 33 -- bsp/at32/at32f402-start/board/Kconfig | 45 --- bsp/at32/at32f403a-start/board/Kconfig | 45 --- bsp/at32/at32f405-start/board/Kconfig | 45 --- bsp/at32/at32f407-start/board/Kconfig | 45 --- bsp/at32/at32f413-start/board/Kconfig | 33 -- bsp/at32/at32f415-start/board/Kconfig | 33 -- bsp/at32/at32f421-start/board/Kconfig | 33 -- bsp/at32/at32f423-start/board/Kconfig | 33 -- bsp/at32/at32f425-start/board/Kconfig | 33 -- bsp/at32/at32f435-start/board/Kconfig | 45 --- bsp/at32/at32f437-start/board/Kconfig | 45 --- bsp/at32/at32m412-start/board/Kconfig | 33 -- bsp/at32/at32m416-start/board/Kconfig | 33 -- bsp/at32/libraries/rt_drivers/SConscript | 4 - bsp/at32/libraries/rt_drivers/drv_soft_i2c.c | 231 ----------- bsp/at32/libraries/rt_drivers/drv_soft_i2c.h | 61 --- bsp/at91/at91sam9260/drivers/SConscript | 3 - bsp/at91/at91sam9260/drivers/at91_i2c_gpio.c | 114 ------ bsp/at91/at91sam9g45/drivers/SConscript | 3 - bsp/at91/at91sam9g45/drivers/at91_i2c_gpio.c | 114 ------ bsp/avr32/at32uc3a0256/Kconfig | 22 +- bsp/avr32/drivers/SConscript | 3 - bsp/avr32/drivers/drv_soft_i2c.c | 180 --------- bsp/avr32/drivers/drv_soft_i2c.h | 46 --- bsp/bluetrum/ab32vg1-ab-prougen/board/Kconfig | 18 - bsp/bluetrum/libraries/hal_drivers/SConscript | 3 - .../libraries/hal_drivers/drv_soft_i2c.c | 224 ----------- .../libraries/hal_drivers/drv_soft_i2c.h | 72 ---- .../libraries/rt_drivers/SConscript | 3 - .../libraries/rt_drivers/drv_soft_i2c.c | 291 -------------- .../libraries/rt_drivers/drv_soft_i2c.h | 44 -- bsp/gd32/arm/gd32103c-eval/board/Kconfig | 17 - bsp/gd32/arm/gd32105c-eval/board/Kconfig | 17 - bsp/gd32/arm/gd32105r-start/board/Kconfig | 17 - bsp/gd32/arm/gd32107c-eval/board/Kconfig | 17 - bsp/gd32/arm/gd32205r-start/board/Kconfig | 16 - bsp/gd32/arm/gd32207i-eval/board/Kconfig | 17 - bsp/gd32/arm/gd32303e-eval/board/Kconfig | 17 - bsp/gd32/arm/gd32305r-start/board/Kconfig | 17 - bsp/gd32/arm/gd32307e-start/board/Kconfig | 17 - bsp/gd32/arm/gd32407v-lckfb/board/Kconfig | 17 - bsp/gd32/arm/gd32407v-start/board/Kconfig | 17 - bsp/gd32/arm/gd32450z-eval/board/Kconfig | 17 - bsp/gd32/arm/gd32470z-lckfb/board/Kconfig | 17 - bsp/gd32/arm/gd32e503v-eval/board/Kconfig | 17 - .../arm/libraries/gd32_drivers/SConscript | 5 - .../arm/libraries/gd32_drivers/drv_soft_i2c.c | 212 ---------- .../arm/libraries/gd32_drivers/drv_soft_i2c.h | 78 ---- .../risc-v/gd32vf103r-start/board/Kconfig | 17 - bsp/gd32/risc-v/gd32vf103v-eval/board/Kconfig | 17 - .../risc-v/libraries/gd32_drivers/SConscript | 5 - .../libraries/gd32_drivers/drv_soft_i2c.c | 212 ---------- .../libraries/gd32_drivers/drv_soft_i2c.h | 78 ---- bsp/hc32/ev_hc32f448_lqfp80/board/Kconfig | 19 - bsp/hc32/ev_hc32f460_lqfp100_v2/board/Kconfig | 19 - bsp/hc32/ev_hc32f472_lqfp100/board/Kconfig | 19 - bsp/hc32/ev_hc32f4a0_lqfp176/board/Kconfig | 19 - bsp/hc32/lckfb-hc32f4a0-lqfp100/board/Kconfig | 19 - bsp/hc32/libraries/hc32_drivers/SConscript | 4 +- .../libraries/hc32_drivers/drv_soft_i2c.c | 264 ------------ .../libraries/hc32_drivers/drv_soft_i2c.h | 104 ----- bsp/hc32l136/board/Kconfig | 17 - bsp/hk32/hk32f030c8-mini/board/Kconfig | 36 -- bsp/hk32/libraries/rt_drivers/SConscript | 4 - bsp/hk32/libraries/rt_drivers/drv_soft_i2c.c | 232 ----------- bsp/hk32/libraries/rt_drivers/drv_soft_i2c.h | 69 ---- bsp/ht32/ht32f12366/board/Kconfig | 65 --- bsp/ht32/ht32f52352/board/Kconfig | 65 --- bsp/ht32/ht32f53252/board/Kconfig | 65 --- bsp/ht32/libraries/ht32_drivers/SConscript | 3 - .../libraries/ht32_drivers/drv_soft_i2c.c | 228 ----------- .../libraries/ht32_drivers/drv_soft_i2c.h | 30 -- bsp/k210/drivers/Kconfig | 5 - bsp/k210/drivers/drv_i2c.c | 377 ------------------ bsp/n32/libraries/n32_drivers/drv_i2c.c | 221 ---------- bsp/n32/n32g43xcl-stb/board/Kconfig | 20 +- bsp/n32/n32g457qel-stb/board/Kconfig | 17 - bsp/n32/n32g45xcl-stb/board/Kconfig | 17 - bsp/n32/n32g45xml-stb/board/Kconfig | 17 - bsp/n32/n32g45xrl-stb/board/Kconfig | 17 - bsp/n32/n32g45xvl-stb/board/Kconfig | 17 - bsp/n32/n32g4frml-stb/board/Kconfig | 17 - bsp/n32/n32l40xcl-stb/board/Kconfig | 18 - bsp/n32/n32l436-evb/board/Kconfig | 18 - bsp/n32/n32l43xml-stb/board/Kconfig | 18 - bsp/n32/n32l43xrl-stb/board/Kconfig | 18 - bsp/n32/n32wb45xl-evb/board/Kconfig | 17 - bsp/n32g452xx/Libraries/rt_drivers/SConscript | 4 - .../Libraries/rt_drivers/drv_soft_i2c.c | 231 ----------- .../Libraries/rt_drivers/drv_soft_i2c.h | 69 ---- .../n32g452xx-mini-system/board/Kconfig | 17 - .../libraries/m031/rtt_port/drv_softi2c.c | 217 ---------- .../libraries/m2354/rtt_port/drv_softi2c.c | 217 ---------- .../libraries/m460/rtt_port/drv_softi2c.c | 232 ----------- .../libraries/m480/rtt_port/drv_softi2c.c | 217 ---------- .../libraries/ma35/rtt_port/drv_softi2c.c | 232 ----------- .../libraries/n9h30/rtt_port/drv_softi2c.c | 238 ----------- .../libraries/nuc980/rtt_port/drv_softi2c.c | 229 ----------- bsp/raspberry-pico/board/Kconfig | 22 - bsp/raspberry-pico/drivers/SConscript | 3 - bsp/raspberry-pico/drivers/drv_soft_i2c.c | 189 --------- bsp/raspberry-pico/drivers/drv_soft_i2c.h | 46 --- bsp/renesas/ra2l1-cpk/board/Kconfig | 24 -- bsp/renesas/ra6m3-ek/board/Kconfig | 24 -- bsp/renesas/ra6m4-cpk/board/Kconfig | 24 -- bsp/renesas/ra6m4-iot/board/Kconfig | 24 -- bsp/renesas/ra8d1-ek/board/Kconfig | 24 -- bsp/renesas/ra8d1-vision-board/board/Kconfig | 24 -- bsp/renesas/ra8m1-ek/board/Kconfig | 24 -- bsp/renesas/rzn2l_rsk/board/Kconfig | 15 - bsp/renesas/rzt2m_rsk/board/Kconfig | 24 -- .../libraries/HAL_Drivers/drivers/SConscript | 4 - .../HAL_Drivers/drivers/drv_soft_i2c.c | 196 --------- .../HAL_Drivers/drivers/drv_soft_i2c.h | 78 ---- bsp/stm32/stm32f072-st-nucleo/board/Kconfig | 58 +-- bsp/stm32/stm32f091-st-nucleo/board/Kconfig | 18 - bsp/stm32/stm32f103-100ask-pro/board/Kconfig | 53 ++- bsp/stm32/stm32f103-atk-nano/board/Kconfig | 53 ++- .../stm32f103-atk-warshipv3/board/Kconfig | 52 ++- bsp/stm32/stm32f103-blue-pill/board/Kconfig | 52 ++- bsp/stm32/stm32f103-dofly-M3S/board/Kconfig | 54 ++- .../stm32f103-fire-arbitrary/board/Kconfig | 53 ++- .../stm32f103-gizwits-gokitv21/board/Kconfig | 16 - bsp/stm32/stm32f103-hw100k-ibox/board/Kconfig | 17 +- bsp/stm32/stm32f103-yf-ufun/board/Kconfig | 17 - bsp/stm32/stm32f401-st-nucleo/board/Kconfig | 57 ++- .../stm32f401-weact-blackpill/board/Kconfig | 48 ++- bsp/stm32/stm32f407-armfly-v5/board/Kconfig | 54 ++- .../stm32f407-atk-explorer/board/Kconfig | 101 +++-- .../stm32f407-fk407m2-zgt6/board/Kconfig | 36 -- .../stm32f407-lckfb-skystar/board/Kconfig | 22 - .../stm32f407-robomaster-c/board/Kconfig | 50 ++- bsp/stm32/stm32f407-rt-spark/board/Kconfig | 244 +++++++----- .../stm32f407-st-discovery/board/Kconfig | 16 - bsp/stm32/stm32f410-st-nucleo/board/Kconfig | 55 ++- bsp/stm32/stm32f411-atk-nano/board/Kconfig | 52 ++- bsp/stm32/stm32f411-st-nucleo/board/Kconfig | 54 ++- .../stm32f411-weact-blackpill/board/Kconfig | 53 ++- bsp/stm32/stm32f412-st-nucleo/board/Kconfig | 55 ++- bsp/stm32/stm32f413-st-nucleo/board/Kconfig | 18 - .../stm32f427-robomaster-a/board/Kconfig | 57 ++- bsp/stm32/stm32f429-armfly-v6/board/Kconfig | 51 ++- bsp/stm32/stm32f429-atk-apollo/board/Kconfig | 60 ++- .../stm32f429-fire-challenger/board/Kconfig | 52 ++- bsp/stm32/stm32f429-st-disco/board/Kconfig | 17 - bsp/stm32/stm32f469-st-disco/board/Kconfig | 57 ++- bsp/stm32/stm32f746-st-nucleo/board/Kconfig | 17 - bsp/stm32/stm32f767-atk-apollo/board/Kconfig | 18 - .../board/Kconfig | 18 - bsp/stm32/stm32g070-st-nucleo/board/Kconfig | 17 - bsp/stm32/stm32g071-st-nucleo/board/Kconfig | 17 - bsp/stm32/stm32g474-st-nucleo/board/Kconfig | 48 ++- bsp/stm32/stm32g491-st-nucleo/board/Kconfig | 51 --- bsp/stm32/stm32h503-st-nucleo/board/Kconfig | 15 - bsp/stm32/stm32h563-st-nucleo/board/Kconfig | 48 ++- bsp/stm32/stm32h743-atk-apollo/board/Kconfig | 84 ++-- .../stm32h743-openmv-h7plus/board/Kconfig | 69 ++-- .../stm32h750-armfly-h7-tool/board/Kconfig | 17 - bsp/stm32/stm32h750-artpi/board/Kconfig | 140 ++++--- .../stm32h750-fk750m1-vbt6/board/Kconfig | 69 ++-- .../board/Kconfig | 17 - bsp/stm32/stm32h7s7-st-disco/board/Kconfig | 54 --- bsp/stm32/stm32l431-BearPi/board/Kconfig | 57 ++- .../board/Kconfig | 17 - .../stm32l433-ali-startkit/board/Kconfig | 50 --- bsp/stm32/stm32l452-st-nucleo/board/Kconfig | 17 +- bsp/stm32/stm32l475-atk-pandora/board/Kconfig | 164 +++++--- bsp/stm32/stm32l476-st-nucleo/board/Kconfig | 92 ++--- .../stm32l496-ali-developer/board/Kconfig | 50 --- bsp/stm32/stm32l496-st-nucleo/board/Kconfig | 38 -- bsp/stm32/stm32l4r5-st-nucleo/board/Kconfig | 35 -- bsp/stm32/stm32l4r9-st-eval/board/Kconfig | 51 ++- .../stm32mp157a-st-discovery/board/Kconfig | 127 +++--- bsp/stm32/stm32mp157a-st-ev1/board/Kconfig | 117 +++--- bsp/stm32/stm32u575-st-nucleo/board/Kconfig | 56 ++- bsp/stm32/stm32wb55-st-nucleo/board/Kconfig | 40 -- .../libraries/SWM320_drivers/SConscript | 3 - .../libraries/SWM320_drivers/drv_soft_i2c.c | 241 ----------- .../libraries/SWM320_drivers/drv_soft_i2c.h | 19 - .../libraries/SWM341_drivers/SConscript | 3 - .../libraries/SWM341_drivers/drv_soft_i2c.c | 219 ---------- .../libraries/SWM341_drivers/drv_soft_i2c.h | 18 - bsp/synwit/swm320-mini/board/Kconfig | 37 -- bsp/synwit/swm341-mini/board/Kconfig | 66 +-- bsp/w60x/drivers/Kconfig | 18 - bsp/w60x/drivers/SConscript | 3 - bsp/w60x/drivers/drv_soft_i2c.c | 222 ----------- bsp/w60x/drivers/drv_soft_i2c.h | 61 --- .../risc-v/Libraries/ch32_drivers/SConscript | 3 - .../Libraries/ch32_drivers/drv_soft_i2c.c | 226 ----------- .../Libraries/ch32_drivers/drv_soft_i2c.h | 53 --- bsp/wch/risc-v/ch32v208w-r0/board/Kconfig | 73 ++-- bsp/wch/risc-v/ch32v307v-r1/board/Kconfig | 96 ++--- 227 files changed, 1836 insertions(+), 12104 deletions(-) delete mode 100644 bsp/ESP32_C3/drivers/drv_sw_i2c.c delete mode 100644 bsp/ESP32_C3/drivers/drv_sw_i2c.h delete mode 100644 bsp/Infineon/libraries/HAL_Drivers/drv_soft_i2c.c delete mode 100644 bsp/Infineon/libraries/HAL_Drivers/drv_soft_i2c.h delete mode 100644 bsp/acm32/acm32f0x0-nucleo/drivers/drv_soft_i2c.c delete mode 100644 bsp/acm32/acm32f0x0-nucleo/drivers/drv_soft_i2c.h delete mode 100644 bsp/apm32/libraries/Drivers/drv_soft_i2c.c delete mode 100644 bsp/at32/libraries/rt_drivers/drv_soft_i2c.c delete mode 100644 bsp/at32/libraries/rt_drivers/drv_soft_i2c.h delete mode 100644 bsp/at91/at91sam9260/drivers/at91_i2c_gpio.c delete mode 100644 bsp/at91/at91sam9g45/drivers/at91_i2c_gpio.c delete mode 100644 bsp/avr32/drivers/drv_soft_i2c.c delete mode 100644 bsp/avr32/drivers/drv_soft_i2c.h delete mode 100644 bsp/bluetrum/libraries/hal_drivers/drv_soft_i2c.c delete mode 100644 bsp/bluetrum/libraries/hal_drivers/drv_soft_i2c.h delete mode 100644 bsp/bouffalo_lab/libraries/rt_drivers/drv_soft_i2c.c delete mode 100644 bsp/bouffalo_lab/libraries/rt_drivers/drv_soft_i2c.h delete mode 100644 bsp/gd32/arm/libraries/gd32_drivers/drv_soft_i2c.c delete mode 100644 bsp/gd32/arm/libraries/gd32_drivers/drv_soft_i2c.h delete mode 100644 bsp/gd32/risc-v/libraries/gd32_drivers/drv_soft_i2c.c delete mode 100644 bsp/gd32/risc-v/libraries/gd32_drivers/drv_soft_i2c.h delete mode 100644 bsp/hc32/libraries/hc32_drivers/drv_soft_i2c.c delete mode 100644 bsp/hc32/libraries/hc32_drivers/drv_soft_i2c.h delete mode 100644 bsp/hk32/libraries/rt_drivers/drv_soft_i2c.c delete mode 100644 bsp/hk32/libraries/rt_drivers/drv_soft_i2c.h delete mode 100644 bsp/ht32/libraries/ht32_drivers/drv_soft_i2c.c delete mode 100644 bsp/ht32/libraries/ht32_drivers/drv_soft_i2c.h delete mode 100644 bsp/k210/drivers/drv_i2c.c delete mode 100644 bsp/n32g452xx/Libraries/rt_drivers/drv_soft_i2c.c delete mode 100644 bsp/n32g452xx/Libraries/rt_drivers/drv_soft_i2c.h delete mode 100644 bsp/nuvoton/libraries/m031/rtt_port/drv_softi2c.c delete mode 100644 bsp/nuvoton/libraries/m2354/rtt_port/drv_softi2c.c delete mode 100644 bsp/nuvoton/libraries/m460/rtt_port/drv_softi2c.c delete mode 100644 bsp/nuvoton/libraries/m480/rtt_port/drv_softi2c.c delete mode 100644 bsp/nuvoton/libraries/ma35/rtt_port/drv_softi2c.c delete mode 100644 bsp/nuvoton/libraries/n9h30/rtt_port/drv_softi2c.c delete mode 100644 bsp/nuvoton/libraries/nuc980/rtt_port/drv_softi2c.c delete mode 100644 bsp/raspberry-pico/drivers/drv_soft_i2c.c delete mode 100644 bsp/raspberry-pico/drivers/drv_soft_i2c.h delete mode 100644 bsp/stm32/libraries/HAL_Drivers/drivers/drv_soft_i2c.c delete mode 100644 bsp/stm32/libraries/HAL_Drivers/drivers/drv_soft_i2c.h delete mode 100644 bsp/synwit/libraries/SWM320_drivers/drv_soft_i2c.c delete mode 100644 bsp/synwit/libraries/SWM320_drivers/drv_soft_i2c.h delete mode 100644 bsp/synwit/libraries/SWM341_drivers/drv_soft_i2c.c delete mode 100644 bsp/synwit/libraries/SWM341_drivers/drv_soft_i2c.h delete mode 100644 bsp/w60x/drivers/drv_soft_i2c.c delete mode 100644 bsp/w60x/drivers/drv_soft_i2c.h delete mode 100644 bsp/wch/risc-v/Libraries/ch32_drivers/drv_soft_i2c.c delete mode 100644 bsp/wch/risc-v/Libraries/ch32_drivers/drv_soft_i2c.h diff --git a/bsp/ESP32_C3/.ci/attachconfig/ci.attachconfig.yml b/bsp/ESP32_C3/.ci/attachconfig/ci.attachconfig.yml index af6fbb3d8dd..5401ab2649e 100644 --- a/bsp/ESP32_C3/.ci/attachconfig/ci.attachconfig.yml +++ b/bsp/ESP32_C3/.ci/attachconfig/ci.attachconfig.yml @@ -20,12 +20,6 @@ devices.hwi2c: - devices.i2c kconfig: - CONFIG_BSP_USING_HW_I2C=y -devices.swi2c: - depends: - - devices.i2c - kconfig: - - CONFIG_BSP_USING_SW_I2C=y - - CONFIG_BSP_USING_SW_I2C0=y devices.spi: kconfig: - CONFIG_RT_USING_SPI=y diff --git a/bsp/ESP32_C3/drivers/Kconfig b/bsp/ESP32_C3/drivers/Kconfig index 2d6c4326e94..1983950f0f3 100644 --- a/bsp/ESP32_C3/drivers/Kconfig +++ b/bsp/ESP32_C3/drivers/Kconfig @@ -75,25 +75,6 @@ menu "On-chip Peripheral Drivers" menuconfig BSP_USING_HW_I2C bool "Enable HardWare I2C" default n - - menuconfig BSP_USING_SW_I2C - bool "Enable SoftWare I2C" - default n - if BSP_USING_SW_I2C - config BSP_USING_SW_I2C0 - bool "Enable SoftWare I2C0" - default n - if BSP_USING_SW_I2C0 - config BSP_SW_I2C0_SDA_PIN - int "SWI2C0 sda pin number" - range 0 21 - default 18 - config BSP_SW_I2C0_SCL_PIN - int "SWI2C0 scl pin number" - range 0 21 - default 19 - endif - endif endif menuconfig BSP_USING_SPI diff --git a/bsp/ESP32_C3/drivers/SConscript b/bsp/ESP32_C3/drivers/SConscript index 55e9a09d1d4..76e5d7a5177 100644 --- a/bsp/ESP32_C3/drivers/SConscript +++ b/bsp/ESP32_C3/drivers/SConscript @@ -17,9 +17,6 @@ if GetDepend('BSP_USING_ADC'): if GetDepend('BSP_USING_I2C'): src += ['drv_hw_i2c.c'] - -if GetDepend('BSP_USING_SW_I2C'): - src += ['drv_sw_i2c.c'] if GetDepend('BSP_USING_PWM'): src += ['drv_pwm.c'] diff --git a/bsp/ESP32_C3/drivers/drv_sw_i2c.c b/bsp/ESP32_C3/drivers/drv_sw_i2c.c deleted file mode 100644 index fbfed4d71db..00000000000 --- a/bsp/ESP32_C3/drivers/drv_sw_i2c.c +++ /dev/null @@ -1,199 +0,0 @@ -/* - * Copyright (c) 2006-2024 RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2024-12-07 wumingzi first version - */ -#include -#include -#define LOG_TAG "drv.i2c" -#ifdef RT_USING_I2C -#ifdef BSP_USING_SW_I2C -#include "rthw.h" -#include "rttypes.h" -#include -#include "driver/gpio.h" -#include "drv_sw_i2c.h" - -#if defined(BSP_USING_SW_I2C0) -#define SW_I2C0_BUS_CONFIG \ - { \ - .scl = BSP_SW_I2C0_SCL_PIN, \ - .sda = BSP_SW_I2C0_SDA_PIN, \ - .bus_name = "i2c0", \ - } -#endif - -static const struct esp32c3_soft_i2c_config soft_i2c_config[] = -{ -#if defined(BSP_USING_SW_I2C0) - SW_I2C0_BUS_CONFIG, -#endif -}; - -static struct esp32c3_i2c i2c_obj[sizeof(soft_i2c_config) / sizeof(soft_i2c_config[0])]; - -/** - * @brief This function initializes the i2c pin. - * @param i2c - * @retval None - */ -static void esp32c3_i2c_gpio_init(struct esp32c3_i2c *i2c) -{ - struct esp32c3_soft_i2c_config* cfg = (struct esp32c3_soft_i2c_config*)i2c->ops.data; - rt_pin_mode(cfg->scl, PIN_MODE_OUTPUT_OD); - rt_pin_mode(cfg->sda, PIN_MODE_OUTPUT_OD); - - gpio_set_pull_mode(cfg->sda, GPIO_FLOATING); - gpio_set_pull_mode(cfg->scl, GPIO_FLOATING); - - gpio_set_level(cfg->scl, PIN_HIGH); - gpio_set_level(cfg->sda, PIN_HIGH); -} - -/** - * @brief This function sets the sda pin. - * @param data, state - * @retval None - */ -static void esp32c3_set_sda(void *data, rt_int32_t state) -{ - struct esp32c3_soft_i2c_config* cfg = (struct esp32c3_soft_i2c_config*)data; - /*rt_pin_mode(cfg->sda, PIN_MODE_OUTPUT_OD);*/ - if (state) - { - gpio_set_level(cfg->sda, PIN_HIGH); - } - else - { - gpio_set_level(cfg->sda, PIN_LOW); - } -} - -/** - * @brief This function sets the scl pin. - * @param data, state - * @retval None - */ -static void esp32c3_set_scl(void *data, rt_int32_t state) -{ - struct esp32c3_soft_i2c_config* cfg = (struct esp32c3_soft_i2c_config*)data; - if (state) - { - gpio_set_level(cfg->scl, PIN_HIGH); - } - else - { - gpio_set_level(cfg->scl, PIN_LOW); - } -} - -/** - * @brief This function gets the sda pin state. - * @param data - * @retval None - */ -static rt_int32_t esp32c3_get_sda(void *data) -{ - struct esp32c3_soft_i2c_config* cfg = (struct esp32c3_soft_i2c_config*)data; - return gpio_get_level(cfg->sda); -} - -/** - * @brief This function gets the scl pin state. - * @param data - * @retval None - */ -static rt_int32_t esp32c3_get_scl(void *data) -{ - struct esp32c3_soft_i2c_config* cfg = (struct esp32c3_soft_i2c_config*)data; - return gpio_get_level(cfg->scl); -} - -/** - * @brief The time delay function. - * @param us - * @retval None - */ -static void esp32c3_udelay(rt_uint32_t us) -{ - rt_hw_us_delay(us); -} - -/* - * if i2c is locked, this function will unlock it - * - * @param esp32 config class - * - * @return RT_EOK indicates successful unlock. - */ -/* */ -static rt_err_t esp32c3_i2c_bus_unlock(const struct esp32c3_soft_i2c_config *cfg) -{ - rt_int32_t i = 0; - - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - /* 输出9个时钟 解锁IIC死锁 */ - while (i++ < 9) - { - gpio_set_level(cfg->scl, PIN_HIGH); - esp32c3_udelay(100); - gpio_set_level(cfg->scl, PIN_LOW); - esp32c3_udelay(100); - } - } - if (PIN_LOW == gpio_get_level(cfg->sda)) - { - return -RT_ERROR; - } - return RT_EOK; -} - -static const struct rt_i2c_bit_ops esp32c3_bit_ops_default = -{ - .data = RT_NULL, - .set_sda = esp32c3_set_sda, - .set_scl = esp32c3_set_scl, - .get_sda = esp32c3_get_sda, - .get_scl = esp32c3_get_scl, - .udelay = esp32c3_udelay, - .delay_us = 1, - .timeout = 100 -}; - -int rt_sw_i2c_init(void) -{ - /* I2C设备数量 */ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct esp32c3_i2c); - rt_err_t result; - /* 循环初始化 */ - for (int i = 0; i < obj_num; i++) - { - /* 注册方法 */ - i2c_obj[i].ops = esp32c3_bit_ops_default; - /* 设备硬件数据 */ - i2c_obj[i].ops.data = (void*)&soft_i2c_config[i]; - /* 保存设备方法 */ - i2c_obj[i].i2c_bus.priv = &i2c_obj[i].ops; - - esp32c3_i2c_gpio_init(&i2c_obj[i]); - result = rt_i2c_bit_add_bus(&i2c_obj[i].i2c_bus, soft_i2c_config[i].bus_name); - RT_ASSERT(result == RT_EOK); - - esp32c3_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_APP_EXPORT(rt_sw_i2c_init); - -#endif /* BSP_USING_SW_I2C */ -#endif /* RT_USING_I2C */ \ No newline at end of file diff --git a/bsp/ESP32_C3/drivers/drv_sw_i2c.h b/bsp/ESP32_C3/drivers/drv_sw_i2c.h deleted file mode 100644 index ab353e473fa..00000000000 --- a/bsp/ESP32_C3/drivers/drv_sw_i2c.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (c) 2006-2024 RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2024-12-07 wumingzi first version - */ -#ifndef __DRV_HW_I2C_H__ -#define __DRV_HW_I2C_H__ - -#include -#include -#include "sdkconfig.h" - -/* esp32c3 config class */ -struct esp32c3_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; - -/* esp32c3 i2c dirver class */ -struct esp32c3_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device i2c_bus; -}; - -int rt_hw_i2c_init(void); - -#endif /* __DRV_HW_I2C_H__ */ \ No newline at end of file diff --git a/bsp/Infineon/libraries/HAL_Drivers/SConscript b/bsp/Infineon/libraries/HAL_Drivers/SConscript index 67987d27deb..88d272486f8 100644 --- a/bsp/Infineon/libraries/HAL_Drivers/SConscript +++ b/bsp/Infineon/libraries/HAL_Drivers/SConscript @@ -18,10 +18,6 @@ if GetDepend(['RT_USING_SERIAL']): else: src += ['drv_uart.c'] -if GetDepend(['RT_USING_I2C', 'RT_USING_I2C_BITOPS']): - if GetDepend('BSP_USING_I2C1'): - src += ['drv_soft_i2c.c'] - if GetDepend(['RT_USING_I2C']): if GetDepend('BSP_USING_HW_I2C3') or GetDepend('BSP_USING_HW_I2C4') or GetDepend('BSP_USING_HW_I2C6'): src += ['drv_i2c.c'] diff --git a/bsp/Infineon/libraries/HAL_Drivers/drv_soft_i2c.c b/bsp/Infineon/libraries/HAL_Drivers/drv_soft_i2c.c deleted file mode 100644 index 9c20a54ca1b..00000000000 --- a/bsp/Infineon/libraries/HAL_Drivers/drv_soft_i2c.c +++ /dev/null @@ -1,192 +0,0 @@ -/* - * Copyright (c) 2006-2024 RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2022-07-20 Rbb666 first version - */ - -#include -#include "drv_soft_i2c.h" - -#ifdef RT_USING_I2C - -/*#define DRV_DEBUG*/ -#define LOG_TAG "drv.i2c" -#include - -#if !defined(BSP_USING_I2C1) - #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 ifx_soft_i2c_config soft_i2c_config[] = -{ - #ifdef BSP_USING_I2C1 - I2C1_BUS_CONFIG, - #endif -}; - -static struct ifx_i2c i2c_obj[sizeof(soft_i2c_config) / sizeof(soft_i2c_config[0])]; - -/** - * This function initializes the i2c pin. - * - * @param ifx i2c dirver class. - */ -static void ifx_i2c_gpio_init(struct ifx_i2c *i2c) -{ - struct ifx_soft_i2c_config *cfg = (struct ifx_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 ifx_i2c_pin_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct ifx_i2c); - - for(rt_size_t i = 0; i < obj_num; i++) - { - ifx_i2c_gpio_init(&i2c_obj[i]); - } -} - -/** - * This function sets the sda pin. - * - * @param ifx config class. - * @param The sda pin state. - */ -static void ifx_set_sda(void *data, rt_int32_t state) -{ - struct ifx_soft_i2c_config *cfg = (struct ifx_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 ifx config class. - * @param The scl pin state. - */ -static void ifx_set_scl(void *data, rt_int32_t state) -{ - struct ifx_soft_i2c_config *cfg = (struct ifx_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 ifx_get_sda(void *data) -{ - struct ifx_soft_i2c_config *cfg = (struct ifx_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 ifx_get_scl(void *data) -{ - struct ifx_soft_i2c_config *cfg = (struct ifx_soft_i2c_config *)data; - return rt_pin_read(cfg->scl); -} - -static const struct rt_i2c_bit_ops ifx_bit_ops_default = -{ - .data = RT_NULL, - .pin_init = ifx_i2c_pin_init, - .set_sda = ifx_set_sda, - .set_scl = ifx_set_scl, - .get_sda = ifx_get_sda, - .get_scl = ifx_get_scl, - .udelay = rt_hw_us_delay, - .delay_us = 1, - .timeout = 100, - .i2c_pin_init_flag = RT_FALSE -}; - -/** - * if i2c is locked, this function will unlock it - * - * @param ifx config class - * - * @return RT_EOK indicates successful unlock. - */ -static rt_err_t ifx_i2c_bus_unlock(const struct ifx_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); - rt_hw_us_delay(100); - rt_pin_write(cfg->scl, PIN_LOW); - rt_hw_us_delay(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 ifx_i2c); - rt_err_t result; - - for (int i = 0; i < obj_num; i++) - { - i2c_obj[i].ops = ifx_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); - ifx_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/Infineon/libraries/HAL_Drivers/drv_soft_i2c.h b/bsp/Infineon/libraries/HAL_Drivers/drv_soft_i2c.h deleted file mode 100644 index 2e49a62c2f8..00000000000 --- a/bsp/Infineon/libraries/HAL_Drivers/drv_soft_i2c.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) 2006-2024 RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2022-07-20 Rbb666 first version - */ - -#ifndef __DRV_I2C__ -#define __DRV_I2C__ - -#include -#include -#include - -/* ifx config class */ -struct ifx_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; -/* ifx i2c dirver class */ -struct ifx_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 - -int rt_hw_i2c_init(void); - -#endif diff --git a/bsp/Infineon/psoc6-cy8ckit-062-BLE/board/Kconfig b/bsp/Infineon/psoc6-cy8ckit-062-BLE/board/Kconfig index 90781dde3af..6e6f4b6f563 100644 --- a/bsp/Infineon/psoc6-cy8ckit-062-BLE/board/Kconfig +++ b/bsp/Infineon/psoc6-cy8ckit-062-BLE/board/Kconfig @@ -174,29 +174,6 @@ menu "On-chip Peripheral Drivers" endif endif - menuconfig BSP_USING_I2C - bool "Enable Software I2C Bus" - 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 (User I2C)" - default n - if BSP_USING_I2C1 - comment "Notice: P13_1 --> 105; P13_2 --> 106" - config BSP_I2C1_SCL_PIN - int "i2c1 SCL pin number" - range 1 113 - default 105 - config BSP_I2C1_SDA_PIN - int "i2c1 SDA pin number" - range 1 113 - default 106 - endif - endif - menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC diff --git a/bsp/Infineon/psoc6-cy8ckit-062-WIFI-BT/board/Kconfig b/bsp/Infineon/psoc6-cy8ckit-062-WIFI-BT/board/Kconfig index 21baa70b2c9..b8e9ad62587 100644 --- a/bsp/Infineon/psoc6-cy8ckit-062-WIFI-BT/board/Kconfig +++ b/bsp/Infineon/psoc6-cy8ckit-062-WIFI-BT/board/Kconfig @@ -182,29 +182,6 @@ menu "On-chip Peripheral Drivers" endif endif - menuconfig BSP_USING_I2C - bool "Enable Software I2C Bus" - 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 (User I2C)" - default n - if BSP_USING_I2C1 - comment "Notice: P13_1 --> 105; P13_2 --> 106" - config BSP_I2C1_SCL_PIN - int "i2c1 SCL pin number" - range 1 113 - default 105 - config BSP_I2C1_SDA_PIN - int "i2c1 SDA pin number" - range 1 113 - default 106 - endif - endif - menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC diff --git a/bsp/Infineon/psoc6-cy8ckit-062S2-43012/board/Kconfig b/bsp/Infineon/psoc6-cy8ckit-062S2-43012/board/Kconfig index 1fa9c5dcc63..55e3d3979dd 100644 --- a/bsp/Infineon/psoc6-cy8ckit-062S2-43012/board/Kconfig +++ b/bsp/Infineon/psoc6-cy8ckit-062S2-43012/board/Kconfig @@ -181,29 +181,6 @@ menu "On-chip Peripheral Drivers" endif endif - menuconfig BSP_USING_I2C - bool "Enable Software I2C Bus" - 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 (User I2C)" - default n - if BSP_USING_I2C1 - comment "Notice: P13_1 --> 105; P13_2 --> 106" - config BSP_I2C1_SCL_PIN - int "i2c1 SCL pin number" - range 1 113 - default 105 - config BSP_I2C1_SDA_PIN - int "i2c1 SDA pin number" - range 1 113 - default 106 - endif - endif - config BSP_USING_USBD bool "Enable USB Device" select RT_USING_USB_DEVICE diff --git a/bsp/Infineon/psoc6-cy8ckit-062s4/board/Kconfig b/bsp/Infineon/psoc6-cy8ckit-062s4/board/Kconfig index baf6aa1bc16..07a57646876 100644 --- a/bsp/Infineon/psoc6-cy8ckit-062s4/board/Kconfig +++ b/bsp/Infineon/psoc6-cy8ckit-062s4/board/Kconfig @@ -174,29 +174,6 @@ menu "On-chip Peripheral Drivers" endif endif - menuconfig BSP_USING_I2C - bool "Enable Software I2C Bus" - 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 (User I2C)" - default n - if BSP_USING_I2C1 - comment "Notice: P13_1 --> 105; P13_2 --> 106" - config BSP_I2C1_SCL_PIN - int "i2c1 SCL pin number" - range 1 113 - default 105 - config BSP_I2C1_SDA_PIN - int "i2c1 SDA pin number" - range 1 113 - default 106 - endif - endif - menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC diff --git a/bsp/Infineon/psoc6-cy8cproto-062S3-4343W/board/Kconfig b/bsp/Infineon/psoc6-cy8cproto-062S3-4343W/board/Kconfig index 34f66f7e847..4d9ff17899e 100644 --- a/bsp/Infineon/psoc6-cy8cproto-062S3-4343W/board/Kconfig +++ b/bsp/Infineon/psoc6-cy8cproto-062S3-4343W/board/Kconfig @@ -181,29 +181,6 @@ menu "On-chip Peripheral Drivers" endif endif - menuconfig BSP_USING_I2C - bool "Enable Software I2C Bus" - 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 (User I2C)" - default n - if BSP_USING_I2C1 - comment "Notice: P13_1 --> 105; P13_2 --> 106" - config BSP_I2C1_SCL_PIN - int "i2c1 SCL pin number" - range 1 113 - default 105 - config BSP_I2C1_SDA_PIN - int "i2c1 SDA pin number" - range 1 113 - default 106 - endif - endif - config BSP_USING_USBD bool "Enable USB Device" select RT_USING_USB_DEVICE diff --git a/bsp/Infineon/psoc6-evaluationkit-062S2/board/Kconfig b/bsp/Infineon/psoc6-evaluationkit-062S2/board/Kconfig index f528ce37697..0824f9c1fb8 100644 --- a/bsp/Infineon/psoc6-evaluationkit-062S2/board/Kconfig +++ b/bsp/Infineon/psoc6-evaluationkit-062S2/board/Kconfig @@ -230,29 +230,6 @@ menu "On-chip Peripheral Drivers" endif endif - menuconfig BSP_USING_I2C - bool "Enable Software I2C Bus" - 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 (User I2C)" - default n - if BSP_USING_I2C1 - comment "Notice: P13_1 --> 105; P13_2 --> 106" - config BSP_I2C1_SCL_PIN - int "i2c1 SCL pin number" - range 1 113 - default 105 - config BSP_I2C1_SDA_PIN - int "i2c1 SDA pin number" - range 1 113 - default 106 - endif - endif - menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC diff --git a/bsp/acm32/acm32f0x0-nucleo/drivers/Kconfig b/bsp/acm32/acm32f0x0-nucleo/drivers/Kconfig index 2b263f5e329..c8859436436 100644 --- a/bsp/acm32/acm32f0x0-nucleo/drivers/Kconfig +++ b/bsp/acm32/acm32f0x0-nucleo/drivers/Kconfig @@ -106,28 +106,6 @@ menu "On-chip Peripheral Drivers" select RT_USING_I2C endmenu - menuconfig BSP_USING_SOFT_I2C - bool "Enable Soft I2C" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - default n - if BSP_USING_SOFT_I2C - menuconfig BSP_USING_I2C0 - bool "Enable I2C1 BUS (software simulation)" - default n - if BSP_USING_I2C0 - config BSP_I2C0_SCL_PIN - int "i2c0 scl pin number (PD, 6)" - range 0 63 - default 54 - config BSP_I2C0_SDA_PIN - int "I2C0 sda pin number (PD, 7)" - range 0 63 - default 55 - endif - endif - menu "Hardware CAN" config BSP_USING_CAN1 bool "Enable CAN1" diff --git a/bsp/acm32/acm32f0x0-nucleo/drivers/drv_soft_i2c.c b/bsp/acm32/acm32f0x0-nucleo/drivers/drv_soft_i2c.c deleted file mode 100644 index 47b8e9fb067..00000000000 --- a/bsp/acm32/acm32f0x0-nucleo/drivers/drv_soft_i2c.c +++ /dev/null @@ -1,163 +0,0 @@ -/* - * Copyright (c) 2006-2024, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2021-09-13 AisinoChip first implementation. - * 2024-04-23 LZero Modify the I2C framework. - */ - -#ifdef BSP_USING_SOFT_I2C - -#include "drv_soft_i2c.h" - -#define DBG_TAG "drv.i2c" -#ifdef DRV_DEBUG - #define DBG_LVL DBG_LOG -#else - #define DBG_LVL DBG_INFO -#endif /* DRV_DEBUG */ - -static struct acm32_soft_i2c_config soft_i2c_config[] = -{ -#ifdef BSP_USING_I2C0 - I2C0_BUS_CONFIG, -#endif -}; - -static struct acm32_i2c i2c_obj[sizeof(soft_i2c_config) / sizeof(soft_i2c_config[0])]; - -static void drv_i2c_gpio_init(struct acm32_i2c* i2c) -{ - struct acm32_soft_i2c_config* cfg = (struct acm32_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 acm32_i2c_pin_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct acm32_i2c); - - for(rt_size_t i = 0; i < obj_num; i++) - { - drv_i2c_gpio_init(&i2c_obj[i]); - } -} - -static void _set_sda(void *data, rt_int32_t state) -{ - struct acm32_soft_i2c_config* cfg = (struct acm32_soft_i2c_config*)data; - - if (state) - { - rt_pin_write(cfg->sda, PIN_HIGH); - } - else - { - rt_pin_write(cfg->sda, PIN_LOW); - } -} - -static void _set_scl(void *data, rt_int32_t state) -{ - struct acm32_soft_i2c_config* cfg = (struct acm32_soft_i2c_config*)data; - - if (state) - { - rt_pin_write(cfg->scl, PIN_HIGH); - } - else - { - rt_pin_write(cfg->scl, PIN_LOW); - } -} - -static rt_int32_t _get_sda(void *data) -{ - struct acm32_soft_i2c_config* cfg = (struct acm32_soft_i2c_config*)data; - - return rt_pin_read(cfg->sda); -} - -static rt_int32_t _get_scl(void *data) -{ - struct acm32_soft_i2c_config* cfg = (struct acm32_soft_i2c_config*)data; - - return rt_pin_read(cfg->scl); -} - -static void acm32_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 acm32_bit_ops_default = -{ - .data = RT_NULL, - .pin_init = acm32_i2c_pin_init, - .set_sda = _set_sda, - .set_scl = _set_scl, - .get_sda = _get_sda, - .get_scl = _get_scl, - .udelay = acm32_udelay, - .delay_us = 1, - .timeout = 100, - .i2c_pin_init_flag = RT_FALSE -}; - -int rt_soft_i2c_init(void) -{ - rt_err_t result; - - for (rt_size_t i = 0; i < sizeof(i2c_obj) / sizeof(struct acm32_i2c); i++) - { - i2c_obj[i].ops = acm32_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); - - 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_DEVICE_EXPORT(rt_soft_i2c_init); - -#endif /* RT_USING_I2C_BITOPS */ - diff --git a/bsp/acm32/acm32f0x0-nucleo/drivers/drv_soft_i2c.h b/bsp/acm32/acm32f0x0-nucleo/drivers/drv_soft_i2c.h deleted file mode 100644 index e66083b0d9e..00000000000 --- a/bsp/acm32/acm32f0x0-nucleo/drivers/drv_soft_i2c.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2006-2024, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2024-04-23 LZero Modify the I2C framework. - */ - -#ifndef __DRV_I2C__ -#define __DRV_I2C__ - -#include -#include -#include -#include -#include - -/* acm32 config class */ -struct acm32_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; -/* acm32 i2c dirver class */ - -struct acm32_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device i2c_bus; -}; - -#ifdef BSP_USING_I2C0 -#define I2C0_BUS_CONFIG \ - { \ - .scl = BSP_I2C0_SCL_PIN, \ - .sda = BSP_I2C0_SDA_PIN, \ - .bus_name = "i2c0", \ - } -#endif - -#endif //__DRV_I2C__ diff --git a/bsp/airm2m/air32f103/board/Kconfig b/bsp/airm2m/air32f103/board/Kconfig index dd74fdd571a..2201fb5311d 100644 --- a/bsp/airm2m/air32f103/board/Kconfig +++ b/bsp/airm2m/air32f103/board/Kconfig @@ -49,28 +49,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_SOFTI2C - bool "Enable SOFT I2C" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - default n - if BSP_USING_SOFTI2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 25 - endif - endif - menuconfig BSP_USING_SPI bool "Enable SPI BUS" default n diff --git a/bsp/apm32/apm32e103ze-evalboard/board/Kconfig b/bsp/apm32/apm32e103ze-evalboard/board/Kconfig index 5be25544e8c..7c88ffdd59d 100644 --- a/bsp/apm32/apm32e103ze-evalboard/board/Kconfig +++ b/bsp/apm32/apm32e103ze-evalboard/board/Kconfig @@ -24,9 +24,10 @@ menu "Onboard Peripheral Drivers" default n config BSP_USING_EEPROM - bool "Enable I2C EEPROM (i2c1)" - select BSP_USING_I2C - select BSP_USING_I2C1 + bool "Enable I2C EEPROM (i2c0)" + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C0 default n config BSP_USING_SDCARD @@ -106,51 +107,39 @@ menu "On-chip Peripheral Drivers" endchoice endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + config RT_USING_I2C + bool 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 - comment "Notice: PB6 --> 22; PB7 --> 23" - 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 - comment "Notice: PA0 --> 0; PA1 --> 1" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 22 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - comment "Notice: PB0 --> 16; PB1 --> 17" - 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 + if RT_USING_I2C + config RT_USING_SOFT_I2C + bool "Enable soft I2C BUS" + default n + if RT_USING_SOFT_I2C + menuconfig RT_USING_SOFT_I2C0 + bool "Enable I2C0 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C0 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C0_SCL_PIN + int "i2c0 scl pin number" + range 0 63 + default 22 + config RT_SOFT_I2C0_SDA_PIN + int "i2c0 sda pin number" + range 0 63 + default 23 + 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 endif endif diff --git a/bsp/apm32/apm32e103ze-tinyboard/board/Kconfig b/bsp/apm32/apm32e103ze-tinyboard/board/Kconfig index a76b738cefd..9396484a5f9 100644 --- a/bsp/apm32/apm32e103ze-tinyboard/board/Kconfig +++ b/bsp/apm32/apm32e103ze-tinyboard/board/Kconfig @@ -87,54 +87,6 @@ menu "On-chip Peripheral Drivers" endchoice endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - 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 - comment "Notice: PB6 --> 22; PB7 --> 23" - 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 - comment "Notice: PA0 --> 0; PA1 --> 1" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 22 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - comment "Notice: PB0 --> 16; PB1 --> 17" - 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 - menuconfig BSP_USING_SPI bool "Enable SPI" default n diff --git a/bsp/apm32/apm32f030r8-miniboard/board/Kconfig b/bsp/apm32/apm32f030r8-miniboard/board/Kconfig index 7d0f93b3e47..e881183c6d3 100644 --- a/bsp/apm32/apm32f030r8-miniboard/board/Kconfig +++ b/bsp/apm32/apm32f030r8-miniboard/board/Kconfig @@ -68,41 +68,6 @@ menu "On-chip Peripheral Drivers" endchoice endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - 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 - comment "Notice: PB10 --> 26; PB11 --> 27" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 26 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 27 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - comment "Notice: PA0 --> 0; PA1 --> 1" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 22 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 23 - endif - endif - menuconfig BSP_USING_SPI bool "Enable SPI" default n diff --git a/bsp/apm32/apm32f051r8-evalboard/board/Kconfig b/bsp/apm32/apm32f051r8-evalboard/board/Kconfig index 66b9f17f4e4..9f3a4e072e2 100644 --- a/bsp/apm32/apm32f051r8-evalboard/board/Kconfig +++ b/bsp/apm32/apm32f051r8-evalboard/board/Kconfig @@ -17,8 +17,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_EEPROM bool "Enable I2C EEPROM (i2c1 software simulation)" - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C0 default n endmenu @@ -80,38 +81,39 @@ menu "On-chip Peripheral Drivers" endchoice endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + config RT_USING_I2C + bool 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 - comment "Notice: PB10 --> 26; PB11 --> 27" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 26 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 27 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - comment "Notice: PA0 --> 0; PA1 --> 1" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 22 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 23 + if RT_USING_I2C + config RT_USING_SOFT_I2C + bool "Enable soft I2C BUS" + default n + if RT_USING_SOFT_I2C + menuconfig RT_USING_SOFT_I2C0 + bool "Enable I2C0 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C0 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C0_SCL_PIN + int "i2c0 scl pin number" + range 0 63 + default 26 + config RT_SOFT_I2C0_SDA_PIN + int "i2c0 sda pin number" + range 0 63 + default 27 + 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 endif endif diff --git a/bsp/apm32/apm32f072vb-miniboard/board/Kconfig b/bsp/apm32/apm32f072vb-miniboard/board/Kconfig index 528e8731947..e81c6b8282b 100644 --- a/bsp/apm32/apm32f072vb-miniboard/board/Kconfig +++ b/bsp/apm32/apm32f072vb-miniboard/board/Kconfig @@ -68,54 +68,6 @@ menu "On-chip Peripheral Drivers" endchoice endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - 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 - comment "Notice: PB10 --> 26; PB11 --> 27" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 26 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 27 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - comment "Notice: PA0 --> 0; PA1 --> 1" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 22 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - comment "Notice: PB0 --> 16; PB1 --> 17" - 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 - menuconfig BSP_USING_SPI bool "Enable SPI" default n diff --git a/bsp/apm32/apm32f091vc-miniboard/board/Kconfig b/bsp/apm32/apm32f091vc-miniboard/board/Kconfig index b8a7b84f158..fca9e2908dc 100644 --- a/bsp/apm32/apm32f091vc-miniboard/board/Kconfig +++ b/bsp/apm32/apm32f091vc-miniboard/board/Kconfig @@ -68,54 +68,6 @@ menu "On-chip Peripheral Drivers" endchoice endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - 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 - comment "Notice: PB10 --> 26; PB11 --> 27" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 26 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 27 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - comment "Notice: PA0 --> 0; PA1 --> 1" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 22 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - comment "Notice: PB0 --> 16; PB1 --> 17" - 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 - menuconfig BSP_USING_SPI bool "Enable SPI" default n diff --git a/bsp/apm32/apm32f103vb-miniboard/board/Kconfig b/bsp/apm32/apm32f103vb-miniboard/board/Kconfig index 5fd89856078..ecaa3d7fd02 100644 --- a/bsp/apm32/apm32f103vb-miniboard/board/Kconfig +++ b/bsp/apm32/apm32f103vb-miniboard/board/Kconfig @@ -70,41 +70,6 @@ menu "On-chip Peripheral Drivers" endchoice endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - 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 - comment "Notice: PB6 --> 22; PB7 --> 23" - 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 - comment "Notice: PA0 --> 0; PA1 --> 1" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 0 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 1 - endif - endif - menuconfig BSP_USING_SPI bool "Enable SPI" default n diff --git a/bsp/apm32/apm32f103xe-minibroard/board/Kconfig b/bsp/apm32/apm32f103xe-minibroard/board/Kconfig index beace4e5964..424e5d33b00 100644 --- a/bsp/apm32/apm32f103xe-minibroard/board/Kconfig +++ b/bsp/apm32/apm32f103xe-minibroard/board/Kconfig @@ -81,23 +81,6 @@ menu "On-chip Peripheral Drivers" endchoice endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - 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 - menuconfig BSP_USING_SPI bool "Enable SPI" default n diff --git a/bsp/apm32/apm32f107vc-evalboard/board/Kconfig b/bsp/apm32/apm32f107vc-evalboard/board/Kconfig index bc4840e39ee..bcdc852037d 100644 --- a/bsp/apm32/apm32f107vc-evalboard/board/Kconfig +++ b/bsp/apm32/apm32f107vc-evalboard/board/Kconfig @@ -25,8 +25,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_EEPROM bool "Enable I2C EEPROM (i2c1 software simulation)" - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C0 default n config BSP_USING_ETH @@ -100,38 +101,39 @@ menu "On-chip Peripheral Drivers" endchoice endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + config RT_USING_I2C + bool 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 - comment "Notice: PB6 --> 22; PB7 --> 23" - 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 - comment "Notice: PA0 --> 0; PA1 --> 1" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 0 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 1 + if RT_USING_I2C + config RT_USING_SOFT_I2C + bool "Enable soft I2C BUS" + default n + if RT_USING_SOFT_I2C + menuconfig RT_USING_SOFT_I2C0 + bool "Enable I2C0 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C0 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C0_SCL_PIN + int "i2c0 scl pin number" + range 0 63 + default 22 + config RT_SOFT_I2C0_SDA_PIN + int "i2c0 sda pin number" + range 0 63 + default 23 + 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 endif endif diff --git a/bsp/apm32/apm32f407ig-minibroard/board/Kconfig b/bsp/apm32/apm32f407ig-minibroard/board/Kconfig index b8eac74c77c..bc7dac45591 100644 --- a/bsp/apm32/apm32f407ig-minibroard/board/Kconfig +++ b/bsp/apm32/apm32f407ig-minibroard/board/Kconfig @@ -70,23 +70,6 @@ menu "On-chip Peripheral Drivers" endchoice endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - 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 - menuconfig BSP_USING_SPI bool "Enable SPI" default n diff --git a/bsp/apm32/apm32f407zg-evalboard/board/Kconfig b/bsp/apm32/apm32f407zg-evalboard/board/Kconfig index d7cc13ec8a6..1fb64d0145a 100644 --- a/bsp/apm32/apm32f407zg-evalboard/board/Kconfig +++ b/bsp/apm32/apm32f407zg-evalboard/board/Kconfig @@ -112,41 +112,6 @@ menu "On-chip Peripheral Drivers" endchoice endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - 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 - comment "Notice: PB6 --> 22; PB7 --> 23" - 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 - comment "Notice: PA0 --> 0; PA1 --> 1" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 0 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 1 - endif - endif - menuconfig BSP_USING_SPI bool "Enable SPI" default n diff --git a/bsp/apm32/apm32s103vb-miniboard/board/Kconfig b/bsp/apm32/apm32s103vb-miniboard/board/Kconfig index 8f19663d003..1052bc94a0f 100644 --- a/bsp/apm32/apm32s103vb-miniboard/board/Kconfig +++ b/bsp/apm32/apm32s103vb-miniboard/board/Kconfig @@ -75,54 +75,6 @@ menu "On-chip Peripheral Drivers" endchoice endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - 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 - comment "Notice: PB6 --> 22; PB7 --> 23" - 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 - comment "Notice: PA0 --> 0; PA1 --> 1" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 22 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - comment "Notice: PB0 --> 16; PB1 --> 17" - 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 - menuconfig BSP_USING_SPI bool "Enable SPI" default n diff --git a/bsp/apm32/libraries/Drivers/SConscript b/bsp/apm32/libraries/Drivers/SConscript index 30015b32407..33e69cc1cb2 100644 --- a/bsp/apm32/libraries/Drivers/SConscript +++ b/bsp/apm32/libraries/Drivers/SConscript @@ -26,10 +26,6 @@ if GetDepend(['RT_USING_DAC']): if GetDepend('BSP_USING_ONCHIP_RTC'): src += ['drv_rtc.c'] -if GetDepend(['RT_USING_I2C']): - 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(['RT_USING_SPI']): src += ['drv_spi.c'] diff --git a/bsp/apm32/libraries/Drivers/drv_soft_i2c.c b/bsp/apm32/libraries/Drivers/drv_soft_i2c.c deleted file mode 100644 index bb488c75b48..00000000000 --- a/bsp/apm32/libraries/Drivers/drv_soft_i2c.c +++ /dev/null @@ -1,255 +0,0 @@ -/* - * Copyright (c) 2006-2023, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2022-03-04 stevetong459 first version - */ - -#include "board.h" -#include - -#ifdef RT_USING_I2C - -#define DBG_TAG "drv.i2c" -#define DBG_LVL DBG_INFO -#include - -#if !defined(BSP_USING_I2C1) && !defined(BSP_USING_I2C2) && !defined(BSP_USING_I2C3) && !defined(BSP_USING_I2C4) - #error "Please define at least one BSP_USING_I2Cx" -#endif - -/* apm32 i2c config class */ -struct apm32_soft_i2c_config -{ - rt_uint8_t scl_pin; - rt_uint8_t sda_pin; - const char *bus_name; -}; - -/* apm32 i2c dirver class */ -struct apm32_soft_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device i2c_bus; -}; - -static const struct apm32_soft_i2c_config soft_i2c_config[] = -{ -#ifdef BSP_USING_I2C1 - { - BSP_I2C1_SCL_PIN, - BSP_I2C1_SDA_PIN, - "i2c1" - }, -#endif -#ifdef BSP_USING_I2C2 - { - BSP_I2C2_SCL_PIN, - BSP_I2C2_SDA_PIN, - "i2c2" - }, -#endif -#ifdef BSP_USING_I2C3 - { - BSP_I2C3_SCL_PIN, - BSP_I2C3_SDA_PIN, - "i2c3" - }, -#endif -#ifdef BSP_USING_I2C4 - { - BSP_I2C4_SCL_PIN, - BSP_I2C4_SDA_PIN, - "i2c4" - }, -#endif -}; - -static struct apm32_soft_i2c i2c_obj[sizeof(soft_i2c_config) / sizeof(soft_i2c_config[0])]; - -/** - * @brief This function will config gpio of soft i2c. - * - * @param i2c is a pointer to the object of soft i2c. - */ -static void apm32_soft_i2c_gpio_init(struct apm32_soft_i2c *i2c) -{ - struct apm32_soft_i2c_config *cfg = (struct apm32_soft_i2c_config *)i2c->ops.data; - - rt_pin_mode(cfg->scl_pin, PIN_MODE_OUTPUT_OD); - rt_pin_mode(cfg->sda_pin, PIN_MODE_OUTPUT_OD); - - rt_pin_write(cfg->scl_pin, PIN_HIGH); - rt_pin_write(cfg->sda_pin, PIN_HIGH); -} - -static void apm32_i2c_pin_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct apm32_soft_i2c); - - for(rt_size_t i = 0; i < obj_num; i++) - { - apm32_soft_i2c_gpio_init(&i2c_obj[i]); - } -} - -/** - * @brief This function sets the sda pin. - * - * @param data is a pointer to the i2c config class. - * - * @param state is the level of sda pin. - */ -static void apm32_soft_i2c_set_sda(void *data, rt_int32_t state) -{ - struct apm32_soft_i2c_config *cfg = (struct apm32_soft_i2c_config *)data; - - rt_pin_write(cfg->sda_pin, state ? PIN_HIGH : PIN_LOW); -} - -/** - * @brief This function sets the scl pin. - * - * @param data is a pointer to the i2c config class. - * - * @param state is the level of scl pin. - */ -static void apm32_soft_i2c_set_scl(void *data, rt_int32_t state) -{ - struct apm32_soft_i2c_config *cfg = (struct apm32_soft_i2c_config *)data; - - rt_pin_write(cfg->scl_pin, state ? PIN_HIGH : PIN_LOW); -} - -/** - * @brief This function gets the sda pin state. - * - * @param data is a pointer to the i2c config class. - */ -static rt_int32_t apm32_soft_i2c_get_sda(void *data) -{ - struct apm32_soft_i2c_config *cfg = (struct apm32_soft_i2c_config *)data; - return rt_pin_read(cfg->sda_pin); -} - -/** - * @brief This function gets the scl pin state. - * - * @param data is a pointer to the i2c config class. - */ -static rt_int32_t apm32_soft_i2c_get_scl(void *data) -{ - struct apm32_soft_i2c_config *cfg = (struct apm32_soft_i2c_config *)data; - return rt_pin_read(cfg->scl_pin); -} - -/** - * @brief The time delay function in microseconds. - * - * @param us is the microseconds to delay. - */ -static void apm32_soft_i2c_udelay(rt_uint32_t us) -{ - rt_uint32_t count_old = SysTick->VAL; - rt_uint32_t count_now; - rt_uint32_t count = 0; - rt_uint32_t reload = SysTick->LOAD; - rt_uint32_t count_pre_us = (reload * RT_TICK_PER_SECOND) / 1000000; - - while (count_pre_us * us > count) - { - count_now = SysTick->VAL; - if (count_now != count_old) - { - if (count_now < count_old) - { - count += count_old - count_now; - } - else - { - count += reload - count_now + count_old; - } - count_old = count_now; - } - } -} - -/** - * @brief This function will unlock i2c, if it is locked. - * - * @param cfg is a pointer to i2c config class. - * - * @return RT_EOK indicates successful unlock, other value indicates failed. - */ -static rt_err_t apm32_i2c_bus_unlock(const struct apm32_soft_i2c_config *cfg) -{ - rt_int32_t i = 0; - - if (PIN_LOW == rt_pin_read(cfg->sda_pin)) - { - while (i++ < 9) - { - rt_pin_write(cfg->scl_pin, PIN_HIGH); - apm32_soft_i2c_udelay(100); - rt_pin_write(cfg->scl_pin, PIN_LOW); - apm32_soft_i2c_udelay(100); - } - } - if (PIN_LOW == rt_pin_read(cfg->sda_pin)) - { - return -RT_ERROR; - } - - return RT_EOK; -} - -static const struct rt_i2c_bit_ops apm32_bit_ops_default = -{ - .data = RT_NULL, - .pin_init = apm32_i2c_pin_init, - .set_sda = apm32_soft_i2c_set_sda, - .set_scl = apm32_soft_i2c_set_scl, - .get_sda = apm32_soft_i2c_get_sda, - .get_scl = apm32_soft_i2c_get_scl, - .udelay = apm32_soft_i2c_udelay, - .delay_us = 1, - .timeout = 100, - .i2c_pin_init_flag = RT_FALSE -}; - -/** - * @brief I2C initialization function. - * - * @return RT_EOK indicates successful initialization, other value indicates failed; - */ -int rt_hw_i2c_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct apm32_soft_i2c); - rt_err_t result; - - for (rt_size_t i = 0; i < obj_num; i++) - { - i2c_obj[i].ops = apm32_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); - - apm32_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_pin, - soft_i2c_config[i].sda_pin); - } - - return RT_EOK; -} -INIT_BOARD_EXPORT(rt_hw_i2c_init); - -#endif /* RT_USING_I2C */ diff --git a/bsp/at32/at32a403a-start/board/Kconfig b/bsp/at32/at32a403a-start/board/Kconfig index 018b0815bc5..d96a4a1367d 100644 --- a/bsp/at32/at32a403a-start/board/Kconfig +++ b/bsp/at32/at32a403a-start/board/Kconfig @@ -220,51 +220,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - 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 - menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" default n diff --git a/bsp/at32/at32a423-start/board/Kconfig b/bsp/at32/at32a423-start/board/Kconfig index ea24f1513f1..d1d54e4640e 100644 --- a/bsp/at32/at32a423-start/board/Kconfig +++ b/bsp/at32/at32a423-start/board/Kconfig @@ -244,39 +244,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - 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 - menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" default n diff --git a/bsp/at32/at32f402-start/board/Kconfig b/bsp/at32/at32f402-start/board/Kconfig index b83b21f2616..a633d8a124f 100644 --- a/bsp/at32/at32f402-start/board/Kconfig +++ b/bsp/at32/at32f402-start/board/Kconfig @@ -243,51 +243,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - 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 - menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" default n diff --git a/bsp/at32/at32f403a-start/board/Kconfig b/bsp/at32/at32f403a-start/board/Kconfig index b0dade514b4..cade53af634 100644 --- a/bsp/at32/at32f403a-start/board/Kconfig +++ b/bsp/at32/at32f403a-start/board/Kconfig @@ -220,51 +220,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - 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 - menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" default n diff --git a/bsp/at32/at32f405-start/board/Kconfig b/bsp/at32/at32f405-start/board/Kconfig index 5de191fc0f6..e47a9edb027 100644 --- a/bsp/at32/at32f405-start/board/Kconfig +++ b/bsp/at32/at32f405-start/board/Kconfig @@ -262,51 +262,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - 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 - menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" default n diff --git a/bsp/at32/at32f407-start/board/Kconfig b/bsp/at32/at32f407-start/board/Kconfig index b672271c649..c7775d5bc43 100644 --- a/bsp/at32/at32f407-start/board/Kconfig +++ b/bsp/at32/at32f407-start/board/Kconfig @@ -243,51 +243,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - 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 - menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" default n diff --git a/bsp/at32/at32f413-start/board/Kconfig b/bsp/at32/at32f413-start/board/Kconfig index 19b148f6f84..8430d7007d4 100644 --- a/bsp/at32/at32f413-start/board/Kconfig +++ b/bsp/at32/at32f413-start/board/Kconfig @@ -220,39 +220,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - 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 - menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" default n diff --git a/bsp/at32/at32f415-start/board/Kconfig b/bsp/at32/at32f415-start/board/Kconfig index e7861dc72da..321c3bf72a2 100644 --- a/bsp/at32/at32f415-start/board/Kconfig +++ b/bsp/at32/at32f415-start/board/Kconfig @@ -235,39 +235,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - 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 - menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" default n diff --git a/bsp/at32/at32f421-start/board/Kconfig b/bsp/at32/at32f421-start/board/Kconfig index 16abb900116..8e7ead2e997 100644 --- a/bsp/at32/at32f421-start/board/Kconfig +++ b/bsp/at32/at32f421-start/board/Kconfig @@ -170,39 +170,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - 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 - menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" default n diff --git a/bsp/at32/at32f423-start/board/Kconfig b/bsp/at32/at32f423-start/board/Kconfig index 13d3a8b173b..b9603713c26 100644 --- a/bsp/at32/at32f423-start/board/Kconfig +++ b/bsp/at32/at32f423-start/board/Kconfig @@ -244,39 +244,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - 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 - menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" default n diff --git a/bsp/at32/at32f425-start/board/Kconfig b/bsp/at32/at32f425-start/board/Kconfig index 4a517ac6f59..c1c751aefef 100644 --- a/bsp/at32/at32f425-start/board/Kconfig +++ b/bsp/at32/at32f425-start/board/Kconfig @@ -244,39 +244,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - 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 - menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" default n diff --git a/bsp/at32/at32f435-start/board/Kconfig b/bsp/at32/at32f435-start/board/Kconfig index 828d66eba43..2f50cf7659f 100644 --- a/bsp/at32/at32f435-start/board/Kconfig +++ b/bsp/at32/at32f435-start/board/Kconfig @@ -269,51 +269,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - 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 - menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" default n diff --git a/bsp/at32/at32f437-start/board/Kconfig b/bsp/at32/at32f437-start/board/Kconfig index 07a9e6f7783..e8bcd85260b 100644 --- a/bsp/at32/at32f437-start/board/Kconfig +++ b/bsp/at32/at32f437-start/board/Kconfig @@ -292,51 +292,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - 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 - menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" default n diff --git a/bsp/at32/at32m412-start/board/Kconfig b/bsp/at32/at32m412-start/board/Kconfig index 078e537778b..de623436dc2 100644 --- a/bsp/at32/at32m412-start/board/Kconfig +++ b/bsp/at32/at32m412-start/board/Kconfig @@ -170,39 +170,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - 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 - menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" default n diff --git a/bsp/at32/at32m416-start/board/Kconfig b/bsp/at32/at32m416-start/board/Kconfig index c80e07023a8..b8cb77537cc 100644 --- a/bsp/at32/at32m416-start/board/Kconfig +++ b/bsp/at32/at32m416-start/board/Kconfig @@ -170,39 +170,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - 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 - menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" default n diff --git a/bsp/at32/libraries/rt_drivers/SConscript b/bsp/at32/libraries/rt_drivers/SConscript index 1a0d17c1aea..ee848de3f88 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 711d1e66f52..00000000000 --- 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 - -#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 fecab31b4df..00000000000 --- 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 -#include -#include - -/* 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 diff --git a/bsp/at91/at91sam9260/drivers/SConscript b/bsp/at91/at91sam9260/drivers/SConscript index 13402ecb14b..c6e83b1deed 100644 --- a/bsp/at91/at91sam9260/drivers/SConscript +++ b/bsp/at91/at91sam9260/drivers/SConscript @@ -20,9 +20,6 @@ if GetDepend('RT_USING_SDIO'): if GetDepend('RT_USING_LWIP'): src += ['macb.c'] -if GetDepend('RT_USING_I2C') and GetDepend('RT_USING_I2C_BITOPS'): - src += ['at91_i2c_gpio.c'] - if GetDepend('RT_USING_MTD_NAND'): src += ['at91_nand.c'] diff --git a/bsp/at91/at91sam9260/drivers/at91_i2c_gpio.c b/bsp/at91/at91sam9260/drivers/at91_i2c_gpio.c deleted file mode 100644 index 09500e50079..00000000000 --- a/bsp/at91/at91sam9260/drivers/at91_i2c_gpio.c +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright (c) 2006-2021, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2012-04-25 weety first version - */ - -#include -#include -#include - - -static void at91_i2c_gpio_init(void) -{ - at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9260_ID_PIOA); //enable PIOA clock - at91_sys_write(AT91_PIOA + PIO_PUER, (1 << 23)); - at91_sys_write(AT91_PIOA + PIO_PER, (1 << 23)); - at91_sys_write(AT91_PIOA + PIO_MDER, (1 << 23)); - at91_sys_write(AT91_PIOA + PIO_PUER, (1 << 24)); - at91_sys_write(AT91_PIOA + PIO_PER, (1 << 24)); - at91_sys_write(AT91_PIOA + PIO_MDER, (1 << 24)); - - at91_sys_write(AT91_PIOA + PIO_OER, (1 << 23)); - at91_sys_write(AT91_PIOA + PIO_OER, (1 << 24)); - - at91_sys_write(AT91_PIOA + PIO_SODR, (1 << 23)); - at91_sys_write(AT91_PIOA + PIO_SODR, (1 << 24)); -} - -static void at91_set_sda(void *data, rt_int32_t state) -{ - if (state) - { - at91_sys_write(AT91_PIOA + PIO_SODR, (1 << 23)); - } - else - { - at91_sys_write(AT91_PIOA + PIO_CODR, (1 << 23)); - } -} - -static void at91_set_scl(void *data, rt_int32_t state) -{ - if (state) - { - at91_sys_write(AT91_PIOA + PIO_SODR, (1 << 24)); - } - else - { - at91_sys_write(AT91_PIOA + PIO_CODR, (1 << 24)); - } -} - -static rt_int32_t at91_get_sda(void *data) -{ - return at91_sys_read(AT91_PIOA + PIO_PDSR) & (1 << 23); -} - -static rt_int32_t at91_get_scl(void *data) -{ - return at91_sys_read(AT91_PIOA + PIO_PDSR) & (1 << 24); -} - -static void at91_udelay (rt_uint32_t us) -{ - rt_int32_t i; - for (; us > 0; us--) - { - i = 50000; - while(i > 0) - { - i--; - } - } -} - -static const struct rt_i2c_bit_ops bit_ops = { - RT_NULL, - at91_set_sda, - at91_set_scl, - at91_get_sda, - at91_get_scl, - at91_udelay, - 5, - 100, - at91_i2c_gpio_init, - RT_FALSE -}; - -int at91_i2c_init(void) -{ - struct rt_i2c_bus_device *bus; - - bus = rt_malloc(sizeof(struct rt_i2c_bus_device)); - if (bus == RT_NULL) - { - rt_kprintf("rt_malloc failed\n"); - return -RT_ENOMEM; - } - - rt_memset((void *)bus, 0, sizeof(struct rt_i2c_bus_device)); - - bus->priv = (void *)&bit_ops; - - rt_i2c_bit_add_bus(bus, "i2c0"); - - return 0; -} - -INIT_DEVICE_EXPORT(at91_i2c_init); - diff --git a/bsp/at91/at91sam9g45/drivers/SConscript b/bsp/at91/at91sam9g45/drivers/SConscript index 6425c453f55..1b8565748cd 100644 --- a/bsp/at91/at91sam9g45/drivers/SConscript +++ b/bsp/at91/at91sam9g45/drivers/SConscript @@ -20,9 +20,6 @@ if GetDepend('RT_USING_SDIO'): if GetDepend('RT_USING_LWIP'): src += ['macb.c'] -if GetDepend('RT_USING_I2C') and GetDepend('RT_USING_I2C_BITOPS'): - src += ['at91_i2c_gpio.c'] - CPPPATH = [cwd] diff --git a/bsp/at91/at91sam9g45/drivers/at91_i2c_gpio.c b/bsp/at91/at91sam9g45/drivers/at91_i2c_gpio.c deleted file mode 100644 index a25dc11bb2e..00000000000 --- a/bsp/at91/at91sam9g45/drivers/at91_i2c_gpio.c +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright (c) 2006-2021, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2012-04-25 weety first version - */ - -#include -#include -#include - - -static void at91_i2c_gpio_init(void) -{ - AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_PIOA; //enable PIOA clock - AT91C_BASE_PIOA->PIO_PUER = (1 << 23); - AT91C_BASE_PIOA->PIO_PER = (1 << 23); - AT91C_BASE_PIOA->PIO_MDER = (1 << 23); - AT91C_BASE_PIOA->PIO_PUER = (1 << 24); - AT91C_BASE_PIOA->PIO_PER = (1 << 24); - AT91C_BASE_PIOA->PIO_MDER = (1 << 24); - - AT91C_BASE_PIOA->PIO_OER = (1 << 23); - AT91C_BASE_PIOA->PIO_OER = (1 << 24); - - AT91C_BASE_PIOA->PIO_SODR = (1 << 23); - AT91C_BASE_PIOA->PIO_SODR = (1 << 24); -} - -static void at91_set_sda(void *data, rt_int32_t state) -{ - if (state) - { - AT91C_BASE_PIOA->PIO_SODR = (1 << 23); - } - else - { - AT91C_BASE_PIOA->PIO_CODR = (1 << 23); - } -} - -static void at91_set_scl(void *data, rt_int32_t state) -{ - if (state) - { - AT91C_BASE_PIOA->PIO_SODR = (1 << 24); - } - else - { - AT91C_BASE_PIOA->PIO_CODR = (1 << 24); - } -} - -static rt_int32_t at91_get_sda(void *data) -{ - return AT91C_BASE_PIOA->PIO_PDSR & (1 << 23); -} - -static rt_int32_t at91_get_scl(void *data) -{ - return AT91C_BASE_PIOA->PIO_PDSR & (1 << 24); -} - -static void at91_udelay (rt_uint32_t us) -{ - rt_int32_t i; - for (; us > 0; us--) - { - i = 50000; - while(i > 0) - { - i--; - } - } -} - -static const struct rt_i2c_bit_ops bit_ops = { - RT_NULL, - at91_set_sda, - at91_set_scl, - at91_get_sda, - at91_get_scl, - at91_udelay, - 5, - 100, - at91_i2c_gpio_init, - RT_FALSE -}; - -int at91_i2c_init(void) -{ - struct rt_i2c_bus_device *bus; - - bus = rt_malloc(sizeof(struct rt_i2c_bus_device)); - if (bus == RT_NULL) - { - rt_kprintf("rt_malloc failed\n"); - return -RT_ENOMEM; - } - - rt_memset((void *)bus, 0, sizeof(struct rt_i2c_bus_device)); - - bus->priv = (void *)&bit_ops; - - rt_i2c_bit_add_bus(bus, "i2c0"); - - return 0; -} - -INIT_DEVICE_EXPORT(at91_i2c_init); - diff --git a/bsp/avr32/at32uc3a0256/Kconfig b/bsp/avr32/at32uc3a0256/Kconfig index cb4d873dc41..5aefce4eae8 100644 --- a/bsp/avr32/at32uc3a0256/Kconfig +++ b/bsp/avr32/at32uc3a0256/Kconfig @@ -119,26 +119,6 @@ menu "On-chip Peripheral Drivers" default 0 if BSP_UART1_RX_PIN_5 default 1 if BSP_UART1_RX_PIN_96 endif - endif - - menuconfig BSP_USING_SOFT_I2C - bool "Enable I2C BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_SOFT_I2C - config BSP_USING_SOFT_I2C1 - bool "Enable I2C1 Bus (software simulation)" - default n - if BSP_USING_SOFT_I2C1 - config BSP_SOFT_I2C1_SCL_PIN - int "I2C1 SCL pin number (GP)" - default 30 - config BSP_SOFT_I2C1_SDA_PIN - int "I2C1 SDA pin number (GP)" - default 29 - endif - endif + endif endmenu endmenu diff --git a/bsp/avr32/drivers/SConscript b/bsp/avr32/drivers/SConscript index 2ecd23b5d6c..46ba2b75429 100644 --- a/bsp/avr32/drivers/SConscript +++ b/bsp/avr32/drivers/SConscript @@ -13,9 +13,6 @@ if GetDepend(['BSP_USING_PIN']): if GetDepend(['BSP_USING_UART']): src += ['drv_uart.c'] -if GetDepend(['BSP_USING_SOFT_I2C']): - src += ['drv_soft_i2c.c'] - path = [cwd] group = DefineGroup('Drivers', src, depend = [''], CPPPATH = path) diff --git a/bsp/avr32/drivers/drv_soft_i2c.c b/bsp/avr32/drivers/drv_soft_i2c.c deleted file mode 100644 index 2f7b15969d8..00000000000 --- a/bsp/avr32/drivers/drv_soft_i2c.c +++ /dev/null @@ -1,180 +0,0 @@ -/* - * Copyright (c) 2006-2023, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2023/12/01 Raman Gopalan First version - */ -#include "drv_soft_i2c.h" - -#ifdef BSP_USING_SOFT_I2C -#define DBG_LEVEL DBG_LOG -#include -#define LOG_TAG "DRV.I2C" - -static const struct avr32_soft_i2c_config soft_i2c_config[] = -{ -#ifdef BSP_USING_SOFT_I2C1 - I2C1_BUS_CONFIG, -#endif -}; - -static struct avr32_i2c i2c_obj[sizeof(soft_i2c_config) / sizeof(soft_i2c_config[0])]; - -/** - * This function initializes the I2C pin. - * - * @param AVR32 I2C driver class. - */ -static void avr32_i2c_gpio_init(struct avr32_i2c *i2c) -{ - struct avr32_soft_i2c_config* cfg = (struct avr32_soft_i2c_config*)i2c->ops.data; - - rt_pin_mode(cfg->scl, PIN_MODE_OUTPUT_OD); - gpio_set_gpio_open_drain_pin(cfg->scl); - - rt_pin_mode(cfg->sda, PIN_MODE_OUTPUT_OD); - gpio_set_gpio_open_drain_pin(cfg->sda); -} - -static void avr32_i2c_pin_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct avr32_i2c); - - for(rt_size_t i = 0; i < obj_num; i++) - { - avr32_i2c_gpio_init(&i2c_obj[i]); - } -} - -/** - * This function sets the SDA pin. - * - * @param AVR32 config class. - * @param The SDA pin state. - */ -static void avr32_set_sda(void *data, rt_int32_t state) -{ - struct avr32_soft_i2c_config* cfg = (struct avr32_soft_i2c_config*)data; - if (state) - { - gpio_set_gpio_open_drain_pin(cfg->sda); - } - else - { - gpio_clr_gpio_open_drain_pin(cfg->sda); - } -} - -/** - * This function sets the SCL pin. - * - * @param AVR32 config class. - * @param The SCL pin state. - */ -static void avr32_set_scl(void *data, rt_int32_t state) -{ - struct avr32_soft_i2c_config* cfg = (struct avr32_soft_i2c_config*)data; - if (state) - { - gpio_set_gpio_open_drain_pin(cfg->scl); - } - else - { - gpio_clr_gpio_open_drain_pin(cfg->scl); - } -} - -/** - * This function gets the SDA pin state. - * - * @param The SDA pin state. - */ -static rt_int32_t avr32_get_sda(void *data) -{ - struct avr32_soft_i2c_config* cfg = (struct avr32_soft_i2c_config*)data; - return gpio_get_gpio_open_drain_pin_output_value(cfg->sda); -} - -/** - * This function gets the SCL pin state. - * - * @param The SCL pin state. - */ -static rt_int32_t avr32_get_scl(void *data) -{ - struct avr32_soft_i2c_config* cfg = (struct avr32_soft_i2c_config*)data; - return gpio_get_gpio_open_drain_pin_output_value(cfg->scl); -} - -static const struct rt_i2c_bit_ops avr32_bit_ops_default = -{ - .data = RT_NULL, - .pin_init = avr32_i2c_pin_init, - .set_sda = avr32_set_sda, - .set_scl = avr32_set_scl, - .get_sda = avr32_get_sda, - .get_scl = avr32_get_scl, - .udelay = rt_hw_us_delay, - .delay_us = 1, - .timeout = 100, - .i2c_pin_init_flag = RT_FALSE -}; - -/** - * If I2C is locked, this function will unlock it. - * - * @param AVR32 config class - * - * @return RT_EOK indicates successful unlock. - */ -static rt_err_t avr32_i2c_bus_unlock(const struct avr32_soft_i2c_config *cfg) -{ - rt_int32_t i = 0; - - if (PIN_LOW == gpio_get_gpio_open_drain_pin_output_value(cfg->sda)) - { - while (i++ < 9) - { - gpio_set_gpio_open_drain_pin(cfg->scl); - rt_hw_us_delay(100); - gpio_clr_gpio_open_drain_pin(cfg->scl); - rt_hw_us_delay(100); - } - } - if (PIN_LOW == gpio_get_gpio_open_drain_pin_output_value(cfg->sda)) - { - return -RT_ERROR; - } - - return RT_EOK; -} - -/* I2C initialization function */ -int rt_sw_i2c_init(void) -{ - rt_err_t result; - rt_size_t i; - - for (i = 0; i < sizeof(i2c_obj) / sizeof(struct avr32_i2c); i++) - { - i2c_obj[i].ops = avr32_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); - avr32_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; -} - -#endif /* BSP_USING_SOFT_I2C */ diff --git a/bsp/avr32/drivers/drv_soft_i2c.h b/bsp/avr32/drivers/drv_soft_i2c.h deleted file mode 100644 index 01d81d72891..00000000000 --- a/bsp/avr32/drivers/drv_soft_i2c.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2006-2023, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2023/12/01 Raman Gopalan First version - */ - -#ifndef __DRV_SOFT_I2C__ -#define __DRV_SOFT_I2C__ - -#include -#include "drv_gpio.h" -#include "gpio.h" - -#ifdef BSP_USING_SOFT_I2C -/* AVR32 software I2C driver class */ -struct avr32_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device i2c_bus; -}; - -/* AVR32 config class */ -struct avr32_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; - -#ifdef BSP_USING_SOFT_I2C1 -#define I2C1_BUS_CONFIG \ - { \ - .scl = BSP_SOFT_I2C1_SCL_PIN, \ - .sda = BSP_SOFT_I2C1_SDA_PIN, \ - .bus_name = "i2c1", \ - } -#endif - -int rt_sw_i2c_init(void); - -#endif /* BSP_USING_SOFT_I2C */ -#endif /* #ifndef __DRV_SOFT_I2C__ */ diff --git a/bsp/bluetrum/ab32vg1-ab-prougen/board/Kconfig b/bsp/bluetrum/ab32vg1-ab-prougen/board/Kconfig index fec93e4e685..70803b09a44 100644 --- a/bsp/bluetrum/ab32vg1-ab-prougen/board/Kconfig +++ b/bsp/bluetrum/ab32vg1-ab-prougen/board/Kconfig @@ -86,24 +86,6 @@ menu "On-chip Peripheral Drivers" select RT_USING_DFS_ELMFAT default n - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - comment "Notice: PE3 --> 16; PE2 --> 15" - config BSP_I2C1_SCL_PIN - int "I2C1 scl pin number" - range 1 27 - default 16 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 27 - default 15 - endif - menuconfig BSP_USING_PWM bool "Enable PWM" default n diff --git a/bsp/bluetrum/libraries/hal_drivers/SConscript b/bsp/bluetrum/libraries/hal_drivers/SConscript index b35a6e89ccb..31ad6f60d37 100644 --- a/bsp/bluetrum/libraries/hal_drivers/SConscript +++ b/bsp/bluetrum/libraries/hal_drivers/SConscript @@ -17,9 +17,6 @@ if GetDepend('RT_USING_SERIAL'): if GetDepend('RT_USING_SDIO'): src += ['drv_sdio.c'] -if GetDepend('RT_USING_I2C'): - src += ['drv_soft_i2c.c'] - if GetDepend('RT_USING_WDT'): src += ['drv_wdt.c'] diff --git a/bsp/bluetrum/libraries/hal_drivers/drv_soft_i2c.c b/bsp/bluetrum/libraries/hal_drivers/drv_soft_i2c.c deleted file mode 100644 index 9d0c383b5d6..00000000000 --- a/bsp/bluetrum/libraries/hal_drivers/drv_soft_i2c.c +++ /dev/null @@ -1,224 +0,0 @@ -/* - * Copyright (c) 2020-2021, Bluetrum Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2021-01-07 greedyhao first version - */ - -#include -#include "drv_soft_i2c.h" - -#ifdef RT_USING_I2C - -// #define DRV_DEBUG -#define LOG_TAG "drv.i2c" -#include - -#if !defined(BSP_USING_I2C1) && !defined(BSP_USING_I2C2) && !defined(BSP_USING_I2C3) && !defined(BSP_USING_I2C4) -#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 ab32_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 -#ifdef BSP_USING_I2C4 - I2C4_BUS_CONFIG, -#endif -}; - -static struct ab32_i2c i2c_obj[sizeof(soft_i2c_config) / sizeof(soft_i2c_config[0])] = {0}; - -/** - * This function initializes the i2c pin. - * - * @param ab32 i2c dirver class. - */ -static void ab32_i2c_gpio_init(struct ab32_i2c *i2c) -{ - struct ab32_soft_i2c_config* cfg = (struct ab32_soft_i2c_config*)i2c->ops.data; - - cfg->scl_mode = PIN_MODE_OUTPUT_OD; - cfg->sda_mode = PIN_MODE_OUTPUT_OD; - rt_pin_mode(cfg->scl, cfg->scl_mode); - rt_pin_mode(cfg->sda, cfg->sda_mode); - - rt_pin_write(cfg->scl, PIN_HIGH); - rt_pin_write(cfg->sda, PIN_HIGH); -} - -static void ab32_i2c_pin_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct ab32_i2c); - - for(rt_size_t i = 0; i < obj_num; i++) - { - ab32_i2c_gpio_init(&i2c_obj[i]); - } -} - -/** - * This function sets the sda pin. - * - * @param data ab32 config class. - * @param state The sda pin state. - */ -static void ab32_set_sda(void *data, rt_int32_t state) -{ - struct ab32_soft_i2c_config* cfg = (struct ab32_soft_i2c_config*)data; - - if (cfg->sda_mode == PIN_MODE_INPUT_PULLUP) { - cfg->sda_mode = PIN_MODE_OUTPUT_OD; - rt_pin_mode(cfg->sda, cfg->sda_mode); - } - - if (state) - { - rt_pin_write(cfg->sda, PIN_HIGH); - } - else - { - rt_pin_write(cfg->sda, PIN_LOW); - } -} - -/** - * This function sets the scl pin. - * - * @param data ab32 config class. - * @param state The scl pin state. - */ -static void ab32_set_scl(void *data, rt_int32_t state) -{ - struct ab32_soft_i2c_config* cfg = (struct ab32_soft_i2c_config*)data; - - if (cfg->scl_mode == PIN_MODE_INPUT_PULLUP) { - cfg->scl_mode = PIN_MODE_OUTPUT_OD; - rt_pin_mode(cfg->scl, cfg->scl_mode); - } - - 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 data The sda pin state. - */ -static rt_int32_t ab32_get_sda(void *data) -{ - struct ab32_soft_i2c_config* cfg = (struct ab32_soft_i2c_config*)data; - - if (cfg->sda_mode != PIN_MODE_INPUT_PULLUP) { - cfg->sda_mode = PIN_MODE_INPUT_PULLUP; - rt_pin_mode(cfg->sda, cfg->sda_mode); - } - - return rt_pin_read(cfg->sda); -} - -/** - * This function gets the scl pin state. - * - * @param data The scl pin state. - */ -static rt_int32_t ab32_get_scl(void *data) -{ - struct ab32_soft_i2c_config* cfg = (struct ab32_soft_i2c_config*)data; - - if (cfg->scl_mode == PIN_MODE_INPUT_PULLUP) { - cfg->scl_mode = PIN_MODE_INPUT_PULLUP; - rt_pin_mode(cfg->scl, cfg->scl_mode); - } - - return rt_pin_read(cfg->scl); -} - -static const struct rt_i2c_bit_ops ab32_bit_ops_default = -{ - .data = RT_NULL, - .pin_init = ab32_i2c_pin_init, - .set_sda = ab32_set_sda, - .set_scl = ab32_set_scl, - .get_sda = ab32_get_sda, - .get_scl = ab32_get_scl, - .udelay = rt_hw_us_delay, - .delay_us = 1, - .timeout = 100, - .i2c_pin_init_flag = RT_FALSE -}; - -/** - * if i2c is locked, this function will unlock it - * - * @param cfg ab32 config class - * - * @return RT_EOK indicates successful unlock. - */ -static rt_err_t ab32_i2c_bus_unlock(const struct ab32_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); - rt_hw_us_delay(100); - rt_pin_write(cfg->scl, PIN_LOW); - rt_hw_us_delay(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 ab32_i2c); - rt_err_t result; - - for (rt_size_t i = 0; i < obj_num; i++) - { - i2c_obj[i].ops = ab32_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); - ab32_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 diff --git a/bsp/bluetrum/libraries/hal_drivers/drv_soft_i2c.h b/bsp/bluetrum/libraries/hal_drivers/drv_soft_i2c.h deleted file mode 100644 index 216c3c4c67f..00000000000 --- a/bsp/bluetrum/libraries/hal_drivers/drv_soft_i2c.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (c) 2020-2021, Bluetrum Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2021-01-07 greedyhao first version - */ - -#ifndef __DRV_I2C__ -#define __DRV_I2C__ - -#include -#include -#include - -/* ab32 config class */ -struct ab32_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - rt_uint8_t sda_mode; - rt_uint8_t scl_mode; - const char *bus_name; -}; - -/* ab32 i2c dirver class */ -struct ab32_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 - -#ifdef BSP_USING_I2C4 -#define I2C4_BUS_CONFIG \ - { \ - .scl = BSP_I2C4_SCL_PIN, \ - .sda = BSP_I2C4_SDA_PIN, \ - .bus_name = "i2c4", \ - } -#endif -int rt_hw_i2c_init(void); - -#endif diff --git a/bsp/bouffalo_lab/libraries/rt_drivers/SConscript b/bsp/bouffalo_lab/libraries/rt_drivers/SConscript index c3b16c8deaa..85564e0c802 100755 --- a/bsp/bouffalo_lab/libraries/rt_drivers/SConscript +++ b/bsp/bouffalo_lab/libraries/rt_drivers/SConscript @@ -12,9 +12,6 @@ if GetDepend('BSP_USING_GPIO'): if GetDepend('BSP_USING_HW_I2C'): src += ['drv_i2c.c'] -if GetDepend('BSP_USING_SOFT_I2C1'): - src += ['drv_soft_i2c.c'] - if GetDepend('BSP_USING_ADC'): src += ['drv_adc.c'] diff --git a/bsp/bouffalo_lab/libraries/rt_drivers/drv_soft_i2c.c b/bsp/bouffalo_lab/libraries/rt_drivers/drv_soft_i2c.c deleted file mode 100644 index 5a4ad8bb50d..00000000000 --- a/bsp/bouffalo_lab/libraries/rt_drivers/drv_soft_i2c.c +++ /dev/null @@ -1,291 +0,0 @@ -/* - * Copyright (c) 2006-2023, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2023/04/15 chushicheng first version - */ - -#include "drv_soft_i2c.h" -#include "bflb_gpio.h" -#include "bflb_common.h" - -#ifdef BSP_USING_SOFT_I2C1 - -#define DBG_LEVEL DBG_LOG -#include -#define LOG_TAG "DRV.I2C" - -// i2c1 -#ifdef SOFT_I2C1_SCL_USING_GPIO0 -#define BSP_I2C1_SCL_PIN GPIO_PIN_0 -#elif defined(SOFT_I2C1_SCL_USING_GPIO2) -#define BSP_I2C1_SCL_PIN GPIO_PIN_2 -#elif defined(SOFT_I2C1_SCL_USING_GPIO4) -#define BSP_I2C1_SCL_PIN GPIO_PIN_4 -#elif defined(SOFT_I2C1_SCL_USING_GPIO6) -#define BSP_I2C1_SCL_PIN GPIO_PIN_6 -#elif defined(SOFT_I2C1_SCL_USING_GPIO8) -#define BSP_I2C1_SCL_PIN GPIO_PIN_8 -#elif defined(SOFT_I2C1_SCL_USING_GPIO10) -#define BSP_I2C1_SCL_PIN GPIO_PIN_10 -#elif defined(SOFT_I2C1_SCL_USING_GPIO12) -#define BSP_I2C1_SCL_PIN GPIO_PIN_12 -#elif defined(SOFT_I2C1_SCL_USING_GPIO14) -#define BSP_I2C1_SCL_PIN GPIO_PIN_14 -#elif defined(SOFT_I2C1_SCL_USING_GPIO16) -#define BSP_I2C1_SCL_PIN GPIO_PIN_16 -#elif defined(SOFT_I2C1_SCL_USING_GPIO18) -#define BSP_I2C1_SCL_PIN GPIO_PIN_18 -#elif defined(SOFT_I2C1_SCL_USING_GPIO20) -#define BSP_I2C1_SCL_PIN GPIO_PIN_20 -#elif defined(SOFT_I2C1_SCL_USING_GPIO22) -#define BSP_I2C1_SCL_PIN GPIO_PIN_22 -#elif defined(SOFT_I2C1_SCL_USING_GPIO24) -#define BSP_I2C1_SCL_PIN GPIO_PIN_24 -#elif defined(SOFT_I2C1_SCL_USING_GPIO26) -#define BSP_I2C1_SCL_PIN GPIO_PIN_26 -#elif defined(SOFT_I2C1_SCL_USING_GPIO28) -#define BSP_I2C1_SCL_PIN GPIO_PIN_28 -#elif defined(SOFT_I2C1_SCL_USING_GPIO30) -#define BSP_I2C1_SCL_PIN GPIO_PIN_30 -#elif defined(SOFT_I2C1_SCL_USING_GPIO32) -#define BSP_I2C1_SCL_PIN GPIO_PIN_32 -#elif defined(SOFT_I2C1_SCL_USING_GPIO34) -#define BSP_I2C1_SCL_PIN GPIO_PIN_34 -#elif defined(SOFT_I2C1_SCL_USING_GPIO36) -#define BSP_I2C1_SCL_PIN GPIO_PIN_36 -#elif defined(SOFT_I2C1_SCL_USING_GPIO38) -#define BSP_I2C1_SCL_PIN GPIO_PIN_38 -#elif defined(SOFT_I2C1_SCL_USING_GPIO40) -#define BSP_I2C1_SCL_PIN GPIO_PIN_40 -#elif defined(SOFT_I2C1_SCL_USING_GPIO42) -#define BSP_I2C1_SCL_PIN GPIO_PIN_42 -#elif defined(SOFT_I2C1_SCL_USING_GPIO44) -#define BSP_I2C1_SCL_PIN GPIO_PIN_44 -#endif - -#ifdef SOFT_I2C1_SDA_USING_GPIO1 -#define BSP_I2C1_SDA_PIN GPIO_PIN_1 -#elif defined(SOFT_I2C1_SDA_USING_GPIO3) -#define BSP_I2C1_SDA_PIN GPIO_PIN_3 -#elif defined(SOFT_I2C1_SDA_USING_GPIO5) -#define BSP_I2C1_SDA_PIN GPIO_PIN_5 -#elif defined(SOFT_I2C1_SDA_USING_GPIO7) -#define BSP_I2C1_SDA_PIN GPIO_PIN_7 -#elif defined(SOFT_I2C1_SDA_USING_GPIO9) -#define BSP_I2C1_SDA_PIN GPIO_PIN_9 -#elif defined(SOFT_I2C1_SDA_USING_GPIO11) -#define BSP_I2C1_SDA_PIN GPIO_PIN_11 -#elif defined(SOFT_I2C1_SDA_USING_GPIO13) -#define BSP_I2C1_SDA_PIN GPIO_PIN_13 -#elif defined(SOFT_I2C1_SDA_USING_GPIO15) -#define BSP_I2C1_SDA_PIN GPIO_PIN_15 -#elif defined(SOFT_I2C1_SDA_USING_GPIO17) -#define BSP_I2C1_SDA_PIN GPIO_PIN_17 -#elif defined(SOFT_I2C1_SDA_USING_GPIO19) -#define BSP_I2C1_SDA_PIN GPIO_PIN_19 -#elif defined(SOFT_I2C1_SDA_USING_GPIO21) -#define BSP_I2C1_SDA_PIN GPIO_PIN_21 -#elif defined(SOFT_I2C1_SDA_USING_GPIO23) -#define BSP_I2C1_SDA_PIN GPIO_PIN_23 -#elif defined(SOFT_I2C1_SDA_USING_GPIO25) -#define BSP_I2C1_SDA_PIN GPIO_PIN_25 -#elif defined(SOFT_I2C1_SDA_USING_GPIO27) -#define BSP_I2C1_SDA_PIN GPIO_PIN_27 -#elif defined(SOFT_I2C1_SDA_USING_GPIO29) -#define BSP_I2C1_SDA_PIN GPIO_PIN_29 -#elif defined(SOFT_I2C1_SDA_USING_GPIO31) -#define BSP_I2C1_SDA_PIN GPIO_PIN_31 -#elif defined(SOFT_I2C1_SDA_USING_GPIO33) -#define BSP_I2C1_SDA_PIN GPIO_PIN_33 -#elif defined(SOFT_I2C1_SDA_USING_GPIO35) -#define BSP_I2C1_SDA_PIN GPIO_PIN_35 -#elif defined(SOFT_I2C1_SDA_USING_GPIO37) -#define BSP_I2C1_SDA_PIN GPIO_PIN_37 -#elif defined(SOFT_I2C1_SDA_USING_GPIO39) -#define BSP_I2C1_SDA_PIN GPIO_PIN_39 -#elif defined(SOFT_I2C1_SDA_USING_GPIO41) -#define BSP_I2C1_SDA_PIN GPIO_PIN_41 -#elif defined(SOFT_I2C1_SDA_USING_GPIO43) -#define BSP_I2C1_SDA_PIN GPIO_PIN_43 -#elif defined(SOFT_I2C1_SDA_USING_GPIO45) -#define BSP_I2C1_SDA_PIN GPIO_PIN_45 -#endif - -static const struct bl_soft_i2c_config soft_i2c_config[] = -{ -#ifdef BSP_USING_SOFT_I2C1 - I2C1_BUS_CONFIG, -#endif -}; - -static struct bl_i2c i2c_obj[sizeof(soft_i2c_config) / sizeof(soft_i2c_config[0])]; - -/** - * This function initializes the i2c pin. - * - * @param bl i2c dirver class. - */ -static void bl_i2c_gpio_init(struct bl_i2c *i2c) -{ - struct bl_soft_i2c_config* cfg = (struct bl_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 bl_i2c_pin_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct bl_i2c); - - for(rt_size_t i = 0; i < obj_num; i++) - { - bl_i2c_gpio_init(&i2c_obj[i]); - } -} - -/** - * This function sets the sda pin. - * - * @param bl config class. - * @param The sda pin state. - */ -static void bl_set_sda(void *data, rt_int32_t state) -{ - struct bl_soft_i2c_config* cfg = (struct bl_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 bl config class. - * @param The scl pin state. - */ -static void bl_set_scl(void *data, rt_int32_t state) -{ - struct bl_soft_i2c_config* cfg = (struct bl_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 bl_get_sda(void *data) -{ - struct bl_soft_i2c_config* cfg = (struct bl_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 bl_get_scl(void *data) -{ - struct bl_soft_i2c_config* cfg = (struct bl_soft_i2c_config*)data; - return rt_pin_read(cfg->scl); -} - -/** - * The time delay function. - * - * @param microseconds. - */ -static void bl_udelay(rt_uint32_t us) -{ - bflb_mtimer_delay_us(us); -} - -static const struct rt_i2c_bit_ops bl_bit_ops_default = -{ - .data = RT_NULL, - .pin_init = bl_i2c_pin_init, - .set_sda = bl_set_sda, - .set_scl = bl_set_scl, - .get_sda = bl_get_sda, - .get_scl = bl_get_scl, - .udelay = bl_udelay, - .delay_us = 1, - .timeout = 100, - .i2c_pin_init_flag = RT_FALSE -}; - -/** - * if i2c is locked, this function will unlock it - * - * @param bl config class - * - * @return RT_EOK indicates successful unlock. - */ -static rt_err_t bl_i2c_bus_unlock(const struct bl_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); - bl_udelay(100); - rt_pin_write(cfg->scl, PIN_LOW); - bl_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_err_t result; - - for (rt_size_t i = 0; i < sizeof(i2c_obj) / sizeof(struct bl_i2c); i++) - { - i2c_obj[i].ops = bl_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); - bl_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 /* BSP_USING_SOFT_I2C1 */ diff --git a/bsp/bouffalo_lab/libraries/rt_drivers/drv_soft_i2c.h b/bsp/bouffalo_lab/libraries/rt_drivers/drv_soft_i2c.h deleted file mode 100644 index 3275c2c4c67..00000000000 --- a/bsp/bouffalo_lab/libraries/rt_drivers/drv_soft_i2c.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2006-2023, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2023/04/15 chushicheng first version - */ - -#ifndef __DRV_I2C__ -#define __DRV_I2C__ - -#include -#include -#include - -/* bl i2c dirver class */ -struct bl_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device i2c_bus; -}; - -/* bl config class */ -struct bl_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; - -#ifdef BSP_USING_SOFT_I2C1 -#define I2C1_BUS_CONFIG \ - { \ - .scl = BSP_I2C1_SCL_PIN, \ - .sda = BSP_I2C1_SDA_PIN, \ - .bus_name = "i2c1", \ - } -#endif - -int rt_hw_i2c_init(void); - -#endif diff --git a/bsp/gd32/arm/gd32103c-eval/board/Kconfig b/bsp/gd32/arm/gd32103c-eval/board/Kconfig index cf9bcfed23d..b03e5bd1a75 100644 --- a/bsp/gd32/arm/gd32103c-eval/board/Kconfig +++ b/bsp/gd32/arm/gd32103c-eval/board/Kconfig @@ -99,23 +99,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 25 - endif - menuconfig BSP_USING_ADC bool "Enable ADC" default n diff --git a/bsp/gd32/arm/gd32105c-eval/board/Kconfig b/bsp/gd32/arm/gd32105c-eval/board/Kconfig index 84cada8ef03..a210a253ad4 100644 --- a/bsp/gd32/arm/gd32105c-eval/board/Kconfig +++ b/bsp/gd32/arm/gd32105c-eval/board/Kconfig @@ -99,23 +99,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 25 - endif - menuconfig BSP_USING_ADC bool "Enable ADC" default n diff --git a/bsp/gd32/arm/gd32105r-start/board/Kconfig b/bsp/gd32/arm/gd32105r-start/board/Kconfig index d62c46e83f9..9a90e28ea98 100644 --- a/bsp/gd32/arm/gd32105r-start/board/Kconfig +++ b/bsp/gd32/arm/gd32105r-start/board/Kconfig @@ -107,23 +107,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 25 - endif - menuconfig BSP_USING_ADC bool "Enable ADC" default n diff --git a/bsp/gd32/arm/gd32107c-eval/board/Kconfig b/bsp/gd32/arm/gd32107c-eval/board/Kconfig index 89dfbfccb9d..f9a60ab04b9 100644 --- a/bsp/gd32/arm/gd32107c-eval/board/Kconfig +++ b/bsp/gd32/arm/gd32107c-eval/board/Kconfig @@ -99,23 +99,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 25 - endif - menuconfig BSP_USING_ADC bool "Enable ADC" default n diff --git a/bsp/gd32/arm/gd32205r-start/board/Kconfig b/bsp/gd32/arm/gd32205r-start/board/Kconfig index 6fae4e71ce5..bbd0a133f75 100644 --- a/bsp/gd32/arm/gd32205r-start/board/Kconfig +++ b/bsp/gd32/arm/gd32205r-start/board/Kconfig @@ -99,22 +99,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 25 - endif menuconfig BSP_USING_ADC bool "Enable ADC" default n diff --git a/bsp/gd32/arm/gd32207i-eval/board/Kconfig b/bsp/gd32/arm/gd32207i-eval/board/Kconfig index a2dda6cc4aa..d3c138966ff 100644 --- a/bsp/gd32/arm/gd32207i-eval/board/Kconfig +++ b/bsp/gd32/arm/gd32207i-eval/board/Kconfig @@ -129,23 +129,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 25 - endif - menuconfig BSP_USING_ADC bool "Enable ADC" default n diff --git a/bsp/gd32/arm/gd32303e-eval/board/Kconfig b/bsp/gd32/arm/gd32303e-eval/board/Kconfig index 0931d517ed9..5bd76d776aa 100644 --- a/bsp/gd32/arm/gd32303e-eval/board/Kconfig +++ b/bsp/gd32/arm/gd32303e-eval/board/Kconfig @@ -99,23 +99,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 25 - endif - menuconfig BSP_USING_ADC bool "Enable ADC" default n diff --git a/bsp/gd32/arm/gd32305r-start/board/Kconfig b/bsp/gd32/arm/gd32305r-start/board/Kconfig index 5f3d6db0c08..8096fed663d 100644 --- a/bsp/gd32/arm/gd32305r-start/board/Kconfig +++ b/bsp/gd32/arm/gd32305r-start/board/Kconfig @@ -99,23 +99,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 25 - endif - menuconfig BSP_USING_ADC bool "Enable ADC" default n diff --git a/bsp/gd32/arm/gd32307e-start/board/Kconfig b/bsp/gd32/arm/gd32307e-start/board/Kconfig index 6aac9234906..44c265408fe 100644 --- a/bsp/gd32/arm/gd32307e-start/board/Kconfig +++ b/bsp/gd32/arm/gd32307e-start/board/Kconfig @@ -100,23 +100,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 25 - endif - menuconfig BSP_USING_ADC bool "Enable ADC" default n diff --git a/bsp/gd32/arm/gd32407v-lckfb/board/Kconfig b/bsp/gd32/arm/gd32407v-lckfb/board/Kconfig index 41f04e003cf..a2ab14b6c25 100644 --- a/bsp/gd32/arm/gd32407v-lckfb/board/Kconfig +++ b/bsp/gd32/arm/gd32407v-lckfb/board/Kconfig @@ -237,23 +237,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 25 - endif - menuconfig BSP_USING_ADC bool "Enable ADC" default n diff --git a/bsp/gd32/arm/gd32407v-start/board/Kconfig b/bsp/gd32/arm/gd32407v-start/board/Kconfig index f0029dd8882..8436b2185fd 100644 --- a/bsp/gd32/arm/gd32407v-start/board/Kconfig +++ b/bsp/gd32/arm/gd32407v-start/board/Kconfig @@ -217,23 +217,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 25 - endif - menuconfig BSP_USING_ADC bool "Enable ADC" default n diff --git a/bsp/gd32/arm/gd32450z-eval/board/Kconfig b/bsp/gd32/arm/gd32450z-eval/board/Kconfig index 89340fe83b8..a7e48007d7a 100644 --- a/bsp/gd32/arm/gd32450z-eval/board/Kconfig +++ b/bsp/gd32/arm/gd32450z-eval/board/Kconfig @@ -273,23 +273,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 25 - endif - menuconfig BSP_USING_ADC bool "Enable ADC" default n diff --git a/bsp/gd32/arm/gd32470z-lckfb/board/Kconfig b/bsp/gd32/arm/gd32470z-lckfb/board/Kconfig index ef50f68b40c..7c815ec9104 100644 --- a/bsp/gd32/arm/gd32470z-lckfb/board/Kconfig +++ b/bsp/gd32/arm/gd32470z-lckfb/board/Kconfig @@ -273,23 +273,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 25 - endif - menuconfig BSP_USING_ADC bool "Enable ADC" default n diff --git a/bsp/gd32/arm/gd32e503v-eval/board/Kconfig b/bsp/gd32/arm/gd32e503v-eval/board/Kconfig index f22ddf1d15b..d6cb7607399 100644 --- a/bsp/gd32/arm/gd32e503v-eval/board/Kconfig +++ b/bsp/gd32/arm/gd32e503v-eval/board/Kconfig @@ -116,23 +116,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 25 - endif - menuconfig BSP_USING_ADC bool "Enable ADC" default n diff --git a/bsp/gd32/arm/libraries/gd32_drivers/SConscript b/bsp/gd32/arm/libraries/gd32_drivers/SConscript index 608897aaeca..aeaf831cac8 100644 --- a/bsp/gd32/arm/libraries/gd32_drivers/SConscript +++ b/bsp/gd32/arm/libraries/gd32_drivers/SConscript @@ -19,11 +19,6 @@ if GetDepend(['RT_USING_SERIAL']): else: src += ['drv_usart.c'] -# add i2c drivers. -if GetDepend(['RT_USING_I2C', 'RT_USING_I2C_BITOPS']): - if GetDepend('BSP_USING_I2C0') or GetDepend('BSP_USING_I2C1') or GetDepend('BSP_USING_I2C2') or GetDepend('BSP_USING_I2C3'): - src += ['drv_soft_i2c.c'] - # add spi drivers. if GetDepend('RT_USING_SPI'): src += ['drv_spi.c'] diff --git a/bsp/gd32/arm/libraries/gd32_drivers/drv_soft_i2c.c b/bsp/gd32/arm/libraries/gd32_drivers/drv_soft_i2c.c deleted file mode 100644 index a6a27c355b9..00000000000 --- a/bsp/gd32/arm/libraries/gd32_drivers/drv_soft_i2c.c +++ /dev/null @@ -1,212 +0,0 @@ -/* - * Copyright (c) 2006-2022, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2021-12-20 BruceOu the first version - */ -#include "drv_soft_i2c.h" - -#ifdef RT_USING_I2C - -#define LOG_TAG "drv.i2c" -#include - -#if !defined(BSP_USING_I2C0) && !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 gd32_soft_i2c_config soft_i2c_config[] = -{ -#ifdef BSP_USING_I2C0 - I2C0_BUS_CONFIG, -#endif -#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 gd32_i2c i2c_obj[sizeof(soft_i2c_config) / sizeof(soft_i2c_config[0])]; - -/** - * @brief This function initializes the i2c pin. - * @param i2c - * @retval None - */ -static void gd32_i2c_gpio_init(struct gd32_i2c *i2c) -{ - struct gd32_soft_i2c_config* cfg = (struct gd32_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 gd32_i2c_pin_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct gd32_i2c); - - for(rt_size_t i = 0; i < obj_num; i++) - { - gd32_i2c_gpio_init(&i2c_obj[i]); - } -} - -/** - * @brief This function sets the sda pin. - * @param data, state - * @retval None - */ -static void gd32_set_sda(void *data, rt_int32_t state) -{ - struct gd32_soft_i2c_config* cfg = (struct gd32_soft_i2c_config*)data; - if (state) - { - rt_pin_write(cfg->sda, PIN_HIGH); - } - else - { - rt_pin_write(cfg->sda, PIN_LOW); - } -} - -/** - * @brief This function sets the scl pin. - * @param data, state - * @retval None - */ -static void gd32_set_scl(void *data, rt_int32_t state) -{ - struct gd32_soft_i2c_config* cfg = (struct gd32_soft_i2c_config*)data; - if (state) - { - rt_pin_write(cfg->scl, PIN_HIGH); - } - else - { - rt_pin_write(cfg->scl, PIN_LOW); - } -} - -/** - * @brief This function gets the sda pin state. - * @param data - * @retval None - */ -static rt_int32_t gd32_get_sda(void *data) -{ - struct gd32_soft_i2c_config* cfg = (struct gd32_soft_i2c_config*)data; - return rt_pin_read(cfg->sda); -} - - -/** - * @brief This function gets the scl pin state. - * @param data - * @retval None - */ -static rt_int32_t gd32_get_scl(void *data) -{ - struct gd32_soft_i2c_config* cfg = (struct gd32_soft_i2c_config*)data; - return rt_pin_read(cfg->scl); -} - -/** - * @brief The time delay function. - * @param us - * @retval None - */ -static void gd32_udelay(rt_uint32_t us) -{ - int i = ( rcu_clock_freq_get(CK_SYS) / 4000000 * us); - while(i) - { - i--; - } -} - -static const struct rt_i2c_bit_ops gd32_bit_ops_default = -{ - .data = RT_NULL, - .pin_init = gd32_i2c_pin_init, - .set_sda = gd32_set_sda, - .set_scl = gd32_set_scl, - .get_sda = gd32_get_sda, - .get_scl = gd32_get_scl, - .udelay = gd32_udelay, - .delay_us = 1, - .timeout = 100, - .i2c_pin_init_flag = RT_FALSE -}; - -/** - * @brief if i2c is locked, this function will unlock it - * @param cfg - * @retval RT_EOK indicates successful unlock. - */ -static rt_err_t gd32_i2c_bus_unlock(const struct gd32_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); - gd32_udelay(100); - rt_pin_write(cfg->scl, PIN_LOW); - gd32_udelay(100); - } - } - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - return -RT_ERROR; - } - - return RT_EOK; -} - -/** - * @brief I2C initialization function - * @param None - * @retval RT_EOK indicates successful initialization. - */ -int rt_hw_i2c_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct gd32_i2c); - rt_err_t result; - - for (rt_size_t i = 0; i < obj_num; i++) - { - i2c_obj[i].ops = gd32_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); - - gd32_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/gd32/arm/libraries/gd32_drivers/drv_soft_i2c.h b/bsp/gd32/arm/libraries/gd32_drivers/drv_soft_i2c.h deleted file mode 100644 index f8ef15653c7..00000000000 --- a/bsp/gd32/arm/libraries/gd32_drivers/drv_soft_i2c.h +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright (c) 2006-2022, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2021-12-20 BruceOu the first version - */ - -#ifndef __DRV_I2C__ -#define __DRV_I2C__ - -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* gd32 config class */ -struct gd32_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; - -/* gd32 i2c dirver class */ -struct gd32_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device i2c_bus; -}; - -#ifdef BSP_USING_I2C0 -#define I2C0_BUS_CONFIG \ - { \ - .scl = BSP_I2C0_SCL_PIN, \ - .sda = BSP_I2C0_SDA_PIN, \ - .bus_name = "i2c0", \ - } -#endif - -#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 - -#ifdef __cplusplus -} -#endif - -#endif /* __DRV_I2C__ */ diff --git a/bsp/gd32/risc-v/gd32vf103r-start/board/Kconfig b/bsp/gd32/risc-v/gd32vf103r-start/board/Kconfig index d41ccce7bbd..9dc016e1c09 100644 --- a/bsp/gd32/risc-v/gd32vf103r-start/board/Kconfig +++ b/bsp/gd32/risc-v/gd32vf103r-start/board/Kconfig @@ -99,23 +99,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 25 - endif - menuconfig BSP_USING_ADC bool "Enable ADC" default n diff --git a/bsp/gd32/risc-v/gd32vf103v-eval/board/Kconfig b/bsp/gd32/risc-v/gd32vf103v-eval/board/Kconfig index 745f69a9b91..2a0c3156c54 100644 --- a/bsp/gd32/risc-v/gd32vf103v-eval/board/Kconfig +++ b/bsp/gd32/risc-v/gd32vf103v-eval/board/Kconfig @@ -99,23 +99,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 25 - endif - menuconfig BSP_USING_ADC bool "Enable ADC" default n diff --git a/bsp/gd32/risc-v/libraries/gd32_drivers/SConscript b/bsp/gd32/risc-v/libraries/gd32_drivers/SConscript index df963f3b78a..249a127e97b 100644 --- a/bsp/gd32/risc-v/libraries/gd32_drivers/SConscript +++ b/bsp/gd32/risc-v/libraries/gd32_drivers/SConscript @@ -16,11 +16,6 @@ if GetDepend('RT_USING_PIN'): if GetDepend(['RT_USING_SERIAL']): src += ['drv_usart.c'] -# add i2c drivers. -if GetDepend(['RT_USING_I2C', 'RT_USING_I2C_BITOPS']): - if GetDepend('BSP_USING_I2C0') or GetDepend('BSP_USING_I2C1') or GetDepend('BSP_USING_I2C2') or GetDepend('BSP_USING_I2C3'): - src += ['drv_soft_i2c.c'] - # add spi drivers. if GetDepend('RT_USING_SPI'): src += ['drv_spi.c'] diff --git a/bsp/gd32/risc-v/libraries/gd32_drivers/drv_soft_i2c.c b/bsp/gd32/risc-v/libraries/gd32_drivers/drv_soft_i2c.c deleted file mode 100644 index b149131c5c7..00000000000 --- a/bsp/gd32/risc-v/libraries/gd32_drivers/drv_soft_i2c.c +++ /dev/null @@ -1,212 +0,0 @@ -/* - * Copyright (c) 2006-2022, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2022-06-04 BruceOu the first version - */ -#include "drv_soft_i2c.h" - -#ifdef RT_USING_I2C - -#define LOG_TAG "drv.i2c" -#include - -#if !defined(BSP_USING_I2C0) && !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 gd32_soft_i2c_config soft_i2c_config[] = -{ -#ifdef BSP_USING_I2C0 - I2C0_BUS_CONFIG, -#endif -#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 gd32_i2c i2c_obj[sizeof(soft_i2c_config) / sizeof(soft_i2c_config[0])]; - -/** - * @brief This function initializes the i2c pin. - * @param i2c - * @retval None - */ -static void gd32_i2c_gpio_init(struct gd32_i2c *i2c) -{ - struct gd32_soft_i2c_config* cfg = (struct gd32_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 gd32_i2c_pin_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct gd32_i2c); - - for(rt_size_t i = 0; i < obj_num; i++) - { - gd32_i2c_gpio_init(&i2c_obj[i]); - } -} - -/** - * @brief This function sets the sda pin. - * @param data, state - * @retval None - */ -static void gd32_set_sda(void *data, rt_int32_t state) -{ - struct gd32_soft_i2c_config* cfg = (struct gd32_soft_i2c_config*)data; - if (state) - { - rt_pin_write(cfg->sda, PIN_HIGH); - } - else - { - rt_pin_write(cfg->sda, PIN_LOW); - } -} - -/** - * @brief This function sets the scl pin. - * @param data, state - * @retval None - */ -static void gd32_set_scl(void *data, rt_int32_t state) -{ - struct gd32_soft_i2c_config* cfg = (struct gd32_soft_i2c_config*)data; - if (state) - { - rt_pin_write(cfg->scl, PIN_HIGH); - } - else - { - rt_pin_write(cfg->scl, PIN_LOW); - } -} - -/** - * @brief This function gets the sda pin state. - * @param data - * @retval None - */ -static rt_int32_t gd32_get_sda(void *data) -{ - struct gd32_soft_i2c_config* cfg = (struct gd32_soft_i2c_config*)data; - return rt_pin_read(cfg->sda); -} - - -/** - * @brief This function gets the scl pin state. - * @param data - * @retval None - */ -static rt_int32_t gd32_get_scl(void *data) -{ - struct gd32_soft_i2c_config* cfg = (struct gd32_soft_i2c_config*)data; - return rt_pin_read(cfg->scl); -} - -/** - * @brief The time delay function. - * @param us - * @retval None - */ -static void gd32_udelay(rt_uint32_t us) -{ - int i = ( rcu_clock_freq_get(CK_SYS) / 4000000 * us); - while(i) - { - i--; - } -} - -static const struct rt_i2c_bit_ops gd32_bit_ops_default = -{ - .data = RT_NULL, - .pin_init = gd32_i2c_pin_init, - .set_sda = gd32_set_sda, - .set_scl = gd32_set_scl, - .get_sda = gd32_get_sda, - .get_scl = gd32_get_scl, - .udelay = gd32_udelay, - .delay_us = 1, - .timeout = 100, - .i2c_pin_init_flag = RT_FALSE -}; - -/** - * @brief if i2c is locked, this function will unlock it - * @param cfg - * @retval RT_EOK indicates successful unlock. - */ -static rt_err_t gd32_i2c_bus_unlock(const struct gd32_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); - gd32_udelay(100); - rt_pin_write(cfg->scl, PIN_LOW); - gd32_udelay(100); - } - } - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - return -RT_ERROR; - } - - return RT_EOK; -} - -/** - * @brief I2C initialization function - * @param None - * @retval RT_EOK indicates successful initialization. - */ -int rt_hw_i2c_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct gd32_i2c); - rt_err_t result; - - for (rt_size_t = 0; i < obj_num; i++) - { - i2c_obj[i].ops = gd32_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); - - gd32_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/gd32/risc-v/libraries/gd32_drivers/drv_soft_i2c.h b/bsp/gd32/risc-v/libraries/gd32_drivers/drv_soft_i2c.h deleted file mode 100644 index af91af4c97b..00000000000 --- a/bsp/gd32/risc-v/libraries/gd32_drivers/drv_soft_i2c.h +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright (c) 2006-2022, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2022-06-04 BruceOu the first version - */ - -#ifndef __DRV_I2C__ -#define __DRV_I2C__ - -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* gd32 config class */ -struct gd32_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; - -/* gd32 i2c dirver class */ -struct gd32_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device i2c_bus; -}; - -#ifdef BSP_USING_I2C0 -#define I2C4_BUS_CONFIG \ - { \ - .scl = BSP_I2C0_SCL_PIN, \ - .sda = BSP_I2C0_SDA_PIN, \ - .bus_name = "i2c0", \ - } -#endif - -#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 - -#ifdef __cplusplus -} -#endif - -#endif /* __DRV_I2C__ */ diff --git a/bsp/hc32/ev_hc32f448_lqfp80/board/Kconfig b/bsp/hc32/ev_hc32f448_lqfp80/board/Kconfig index 5af9b90959f..60b6c255313 100644 --- a/bsp/hc32/ev_hc32f448_lqfp80/board/Kconfig +++ b/bsp/hc32/ev_hc32f448_lqfp80/board/Kconfig @@ -202,25 +202,6 @@ menu "On-chip Peripheral Drivers" bool "Enable I2C BUS" default n select RT_USING_I2C - - if BSP_USING_I2C - menuconfig BSP_USING_I2C1_SW - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1_SW - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 176 - default 51 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 176 - default 90 - endif - endif - if BSP_USING_I2C config BSP_I2C_USING_DMA bool diff --git a/bsp/hc32/ev_hc32f460_lqfp100_v2/board/Kconfig b/bsp/hc32/ev_hc32f460_lqfp100_v2/board/Kconfig index 86010fd7dc8..3020a30c6c9 100644 --- a/bsp/hc32/ev_hc32f460_lqfp100_v2/board/Kconfig +++ b/bsp/hc32/ev_hc32f460_lqfp100_v2/board/Kconfig @@ -151,25 +151,6 @@ menu "On-chip Peripheral Drivers" bool "Enable I2C BUS" default n select RT_USING_I2C - - if BSP_USING_I2C - menuconfig BSP_USING_I2C1_SW - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1_SW - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 100 - default 7 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 100 - default 36 - endif - endif - if BSP_USING_I2C config BSP_I2C_USING_DMA bool diff --git a/bsp/hc32/ev_hc32f472_lqfp100/board/Kconfig b/bsp/hc32/ev_hc32f472_lqfp100/board/Kconfig index 2570a6215e1..e5739ce5c59 100644 --- a/bsp/hc32/ev_hc32f472_lqfp100/board/Kconfig +++ b/bsp/hc32/ev_hc32f472_lqfp100/board/Kconfig @@ -206,25 +206,6 @@ menu "On-chip Peripheral Drivers" bool "Enable I2C BUS" default n select RT_USING_I2C - - if BSP_USING_I2C - menuconfig BSP_USING_I2C1_SW - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1_SW - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 176 - default 51 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 176 - default 90 - endif - endif - if BSP_USING_I2C config BSP_I2C_USING_DMA bool diff --git a/bsp/hc32/ev_hc32f4a0_lqfp176/board/Kconfig b/bsp/hc32/ev_hc32f4a0_lqfp176/board/Kconfig index bc1d72d5c1d..5c3d7eb6886 100644 --- a/bsp/hc32/ev_hc32f4a0_lqfp176/board/Kconfig +++ b/bsp/hc32/ev_hc32f4a0_lqfp176/board/Kconfig @@ -327,25 +327,6 @@ menu "On-chip Peripheral Drivers" bool "Enable I2C BUS" default n select RT_USING_I2C - - if BSP_USING_I2C - menuconfig BSP_USING_I2C1_SW - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1_SW - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 176 - default 51 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 176 - default 90 - endif - endif - if BSP_USING_I2C config BSP_I2C_USING_DMA bool diff --git a/bsp/hc32/lckfb-hc32f4a0-lqfp100/board/Kconfig b/bsp/hc32/lckfb-hc32f4a0-lqfp100/board/Kconfig index bc1d72d5c1d..5c3d7eb6886 100644 --- a/bsp/hc32/lckfb-hc32f4a0-lqfp100/board/Kconfig +++ b/bsp/hc32/lckfb-hc32f4a0-lqfp100/board/Kconfig @@ -327,25 +327,6 @@ menu "On-chip Peripheral Drivers" bool "Enable I2C BUS" default n select RT_USING_I2C - - if BSP_USING_I2C - menuconfig BSP_USING_I2C1_SW - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1_SW - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 176 - default 51 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 176 - default 90 - endif - endif - if BSP_USING_I2C config BSP_I2C_USING_DMA bool diff --git a/bsp/hc32/libraries/hc32_drivers/SConscript b/bsp/hc32/libraries/hc32_drivers/SConscript index 673c9427545..285aec5f09b 100644 --- a/bsp/hc32/libraries/hc32_drivers/SConscript +++ b/bsp/hc32/libraries/hc32_drivers/SConscript @@ -26,9 +26,7 @@ if GetDepend(['RT_USING_QSPI']): if GetDepend(['RT_USING_I2C']): src += ['drv_i2c.c'] - if GetDepend(['RT_USING_I2C_BITOPS']): - src += ['drv_soft_i2c.c'] - + if GetDepend(['BSP_USING_ETH', 'RT_USING_LWIP']): src += ['drv_eth.c'] diff --git a/bsp/hc32/libraries/hc32_drivers/drv_soft_i2c.c b/bsp/hc32/libraries/hc32_drivers/drv_soft_i2c.c deleted file mode 100644 index 273c5079a48..00000000000 --- a/bsp/hc32/libraries/hc32_drivers/drv_soft_i2c.c +++ /dev/null @@ -1,264 +0,0 @@ -/* - * Copyright (C) 2022-2024, Xiaohua Semiconductor Co., Ltd. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2022-04-28 CDT first version - */ - -/******************************************************************************* - * Include files - ******************************************************************************/ -#include "drv_soft_i2c.h" -#include "board_config.h" - -#if defined(RT_USING_I2C) - -#if defined(BSP_USING_I2C1_SW) || defined(BSP_USING_I2C2_SW) || defined(BSP_USING_I2C3_SW) || \ - defined(BSP_USING_I2C4_SW) || defined(BSP_USING_I2C5_SW) || defined(BSP_USING_I2C6_SW) - -/******************************************************************************* - * Local type definitions ('typedef') - ******************************************************************************/ - -/******************************************************************************* - * Local pre-processor symbols/macros ('#define') - ******************************************************************************/ -//#define DRV_DEBUG -#define LOG_TAG "drv.i2c" -#include - -/******************************************************************************* - * Global variable definitions (declared in header file with 'extern') - ******************************************************************************/ - -/******************************************************************************* - * Local function prototypes ('static') - ******************************************************************************/ - -/******************************************************************************* - * Local variable definitions ('static') - ******************************************************************************/ - -static const struct hc32_soft_i2c_config soft_i2c_config[] = -{ -#ifdef BSP_USING_I2C1_SW - I2C1_BUS_CONFIG, -#endif -#ifdef BSP_USING_I2C2_SW - I2C2_BUS_CONFIG, -#endif -#ifdef BSP_USING_I2C3_SW - I2C3_BUS_CONFIG, -#endif -#ifdef BSP_USING_I2C4_SW - I2C4_BUS_CONFIG, -#endif -#ifdef BSP_USING_I2C5_SW - I2C5_BUS_CONFIG, -#endif -#ifdef BSP_USING_I2C6_SW - I2C6_BUS_CONFIG, -#endif -}; - -static struct hc32_soft_i2c i2c_obj[sizeof(soft_i2c_config) / sizeof(soft_i2c_config[0])]; - -/******************************************************************************* - * Function implementation - global ('extern') and local ('static') - ******************************************************************************/ -/** - * This function initializes the i2c pin. - * - * @param Hc32 i2c driver class. - */ -static void hc32_i2c_gpio_init(struct hc32_soft_i2c *i2c) -{ - struct hc32_soft_i2c_config *cfg = (struct hc32_soft_i2c_config *)i2c->ops.data; - - rt_pin_mode(cfg->scl_pin, PIN_MODE_OUTPUT_OD); - rt_pin_mode(cfg->sda_pin, PIN_MODE_OUTPUT_OD); - rt_pin_write(cfg->scl_pin, PIN_HIGH); - rt_pin_write(cfg->sda_pin, PIN_HIGH); -} - -static void hc32_i2c_pin_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct hc32_soft_i2c); - - for(rt_size_t i = 0; i < obj_num; i++) - { - hc32_i2c_gpio_init(&i2c_obj[i]); - } -} - -/** - * This function sets the sda pin. - * - * @param Hc32 config class. - * @param The sda pin state. - */ -static void hc32_set_sda(void *data, rt_int32_t state) -{ - struct hc32_soft_i2c_config *cfg = (struct hc32_soft_i2c_config *)data; - - if (state) - { - rt_pin_write(cfg->sda_pin, PIN_HIGH); - } - else - { - rt_pin_write(cfg->sda_pin, PIN_LOW); - } -} - -/** - * This function sets the scl pin. - * - * @param Hc32 config class. - * @param The scl pin state. - */ -static void hc32_set_scl(void *data, rt_int32_t state) -{ - struct hc32_soft_i2c_config *cfg = (struct hc32_soft_i2c_config *)data; - - if (state) - { - rt_pin_write(cfg->scl_pin, PIN_HIGH); - } - else - { - rt_pin_write(cfg->scl_pin, PIN_LOW); - } -} - -/** - * This function gets the sda pin state. - * - * @param The sda pin state. - */ -static rt_int32_t hc32_get_sda(void *data) -{ - struct hc32_soft_i2c_config *cfg = (struct hc32_soft_i2c_config *)data; - return rt_pin_read(cfg->sda_pin); -} - -/** - * This function gets the scl pin state. - * - * @param The scl pin state. - */ -static rt_int32_t hc32_get_scl(void *data) -{ - struct hc32_soft_i2c_config *cfg = (struct hc32_soft_i2c_config *)data; - return rt_pin_read(cfg->scl_pin); -} - -/** - * The time delay function. - * - * @param microseconds. - */ -static void hc32_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 hc32_bit_ops_default = -{ - .data = RT_NULL, - .pin_init = hc_i2c_pin_init, - .set_sda = hc32_set_sda, - .set_scl = hc32_set_scl, - .get_sda = hc32_get_sda, - .get_scl = hc32_get_scl, - .udelay = hc32_udelay, - .delay_us = 1, - .timeout = 100, - .i2c_pin_init_flag = RT_FALSE -}; - -/** - * if i2c is locked, this function will unlock it - * - * @param hc32 config class - * - * @return RT_EOK indicates successful unlock. - */ -static rt_err_t hc32_i2c_bus_unlock(const struct hc32_soft_i2c_config *cfg) -{ - rt_uint32_t i = 0; - - if (PIN_LOW == rt_pin_read(cfg->sda_pin)) - { - while (i++ < 9) - { - rt_pin_write(cfg->scl_pin, PIN_HIGH); - hc32_udelay(100); - rt_pin_write(cfg->scl_pin, PIN_LOW); - hc32_udelay(100); - } - } - if (PIN_LOW == rt_pin_read(cfg->sda_pin)) - { - return -RT_ERROR; - } - - return RT_EOK; -} - -/* I2C initialization function */ -int hc32_soft_i2c_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct hc32_soft_i2c); - rt_err_t result; - - for (rt_size_t i = 0; i < obj_num; i++) - { - i2c_obj[i].ops = hc32_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); - hc32_i2c_bus_unlock(&soft_i2c_config[i]); - } - - return RT_EOK; -} -INIT_BOARD_EXPORT(hc32_soft_i2c_init); - -#endif - -#endif /* RT_USING_I2C */ - -/******************************************************************************* - * EOF (not truncated) - ******************************************************************************/ diff --git a/bsp/hc32/libraries/hc32_drivers/drv_soft_i2c.h b/bsp/hc32/libraries/hc32_drivers/drv_soft_i2c.h deleted file mode 100644 index 717bb76be02..00000000000 --- a/bsp/hc32/libraries/hc32_drivers/drv_soft_i2c.h +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright (C) 2022-2024, Xiaohua Semiconductor Co., Ltd. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2022-04-28 CDT first version - */ - - -#ifndef __DRV_I2C_SOFT_H__ -#define __DRV_I2C_SOFT_H__ - -/******************************************************************************* - * Include files - ******************************************************************************/ -#include - -/* C binding of definitions if building with C++ compiler */ -#ifdef __cplusplus -extern "C" -{ -#endif - -/******************************************************************************* - * Global type definitions ('typedef') - ******************************************************************************/ -struct hc32_soft_i2c_config -{ - rt_uint16_t scl_pin; - rt_uint16_t sda_pin; - const char *bus_name; -}; - -struct hc32_soft_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device i2c_bus; -}; - -#ifdef BSP_USING_I2C1_SW -#define I2C1_BUS_CONFIG \ - { \ - .scl_pin = BSP_I2C1_SCL_PIN, \ - .sda_pin = BSP_I2C1_SDA_PIN, \ - .bus_name = "i2c1_sw", \ - } -#endif - -#ifdef BSP_USING_I2C2_SW -#define I2C2_BUS_CONFIG \ - { \ - .scl_pin = BSP_I2C2_SCL_PIN, \ - .sda_pin = BSP_I2C2_SDA_PIN, \ - .bus_name = "i2c2_sw", \ - } -#endif - -#ifdef BSP_USING_I2C3_SW -#define I2C3_BUS_CONFIG \ - { \ - .scl_pin = BSP_I2C3_SCL_PIN, \ - .sda_pin = BSP_I2C3_SDA_PIN, \ - .bus_name = "i2c3_sw", \ - } -#endif - -#ifdef BSP_USING_I2C4_SW -#define I2C4_BUS_CONFIG \ - { \ - .scl_pin = BSP_I2C4_SCL_PIN, \ - .sda_pin = BSP_I2C4_SDA_PIN, \ - .bus_name = "i2c4_sw", \ - } -#endif - -#ifdef BSP_USING_I2C5_SW -#define I2C5_BUS_CONFIG \ - { \ - .scl_pin = BSP_I2C5_SCL_PIN, \ - .sda_pin = BSP_I2C5_SDA_PIN, \ - .bus_name = "i2c5_sw", \ - } -#endif - -#ifdef BSP_USING_I2C6_SW -#define I2C6_BUS_CONFIG \ - { \ - .scl_pin = BSP_I2C6_SCL_PIN, \ - .sda_pin = BSP_I2C6_SDA_PIN, \ - .bus_name = "i2c6_sw", \ - } -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* __DRV_SOFT_I2C_H__ */ - -/******************************************************************************* - * EOF (not truncated) - ******************************************************************************/ diff --git a/bsp/hc32l136/board/Kconfig b/bsp/hc32l136/board/Kconfig index 641c61c83aa..ba69df8086d 100644 --- a/bsp/hc32l136/board/Kconfig +++ b/bsp/hc32l136/board/Kconfig @@ -31,23 +31,6 @@ menu "On-chip Peripheral Drivers" default y endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default y - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 176 - default 51 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 176 - default 90 - endif - endmenu menu "Board extended module Drivers" diff --git a/bsp/hk32/hk32f030c8-mini/board/Kconfig b/bsp/hk32/hk32f030c8-mini/board/Kconfig index 2479bdc2ecc..de972f55823 100644 --- a/bsp/hk32/hk32f030c8-mini/board/Kconfig +++ b/bsp/hk32/hk32f030c8-mini/board/Kconfig @@ -102,42 +102,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS" - 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 (software simulation)" - default n - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 25 - endif - - config BSP_USING_I2C2 - bool "Enable I2C2 BUS (software simulation)" - default n - 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 - menuconfig BSP_USING_ADC bool "Enable ADC" default n diff --git a/bsp/hk32/libraries/rt_drivers/SConscript b/bsp/hk32/libraries/rt_drivers/SConscript index b810f026e9f..9abf73b345c 100644 --- a/bsp/hk32/libraries/rt_drivers/SConscript +++ b/bsp/hk32/libraries/rt_drivers/SConscript @@ -27,10 +27,6 @@ if GetDepend(['BSP_USING_SPI']): if GetDepend(['BSP_USING_ETH', 'RT_USING_LWIP']): src += ['drv_eth.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_ADC']): src += Glob('drv_adc.c') diff --git a/bsp/hk32/libraries/rt_drivers/drv_soft_i2c.c b/bsp/hk32/libraries/rt_drivers/drv_soft_i2c.c deleted file mode 100644 index 6daf5b30a38..00000000000 --- a/bsp/hk32/libraries/rt_drivers/drv_soft_i2c.c +++ /dev/null @@ -1,232 +0,0 @@ -/* - * Copyright (c) 2006-2021, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2021-08-15 Jonas first version - */ - -#include -#include "drv_soft_i2c.h" - -#ifdef RT_USING_I2C - -#define LOG_TAG "drv.i2c" -#include - -#if !defined(BSP_USING_I2C1) && !defined(BSP_USING_I2C2) && !defined(BSP_USING_I2C3) && !defined(BSP_USING_I2C4) - #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 hk32_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 -#ifdef BSP_USING_I2C4 - I2C4_BUS_CONFIG, -#endif -}; - -static struct hk32_i2c i2c_obj[sizeof(soft_i2c_config) / sizeof(soft_i2c_config[0])]; - -/** - * This function initializes the i2c pin. - * - * @param hk32 i2c dirver class. - */ -static void hk32_i2c_gpio_init(struct hk32_i2c *i2c) -{ - struct hk32_soft_i2c_config *cfg = (struct hk32_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 hk32_i2c_pin_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct hk32_i2c); - - for(rt_size_t i = 0; i < obj_num; i++) - { - hk32_i2c_gpio_init(&i2c_obj[i]); - } -} - -/** - * This function sets the sda pin. - * - * @param hk32 config class. - * @param The sda pin state. - */ -static void hk32_set_sda(void *data, rt_int32_t state) -{ - struct hk32_soft_i2c_config *cfg = (struct hk32_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 hk32 config class. - * @param The scl pin state. - */ -static void hk32_set_scl(void *data, rt_int32_t state) -{ - struct hk32_soft_i2c_config *cfg = (struct hk32_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 hk32_get_sda(void *data) -{ - struct hk32_soft_i2c_config *cfg = (struct hk32_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 hk32_get_scl(void *data) -{ - struct hk32_soft_i2c_config *cfg = (struct hk32_soft_i2c_config *)data; - return rt_pin_read(cfg->scl); -} -/** - * The time delay function. - * - * @param microseconds. - */ -static void hk32_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 hk32_bit_ops_default = -{ - .data = RT_NULL, - .pin_init = hk32_i2c_pin_init, - .set_sda = hk32_set_sda, - .set_scl = hk32_set_scl, - .get_sda = hk32_get_sda, - .get_scl = hk32_get_scl, - .udelay = hk32_udelay, - .delay_us = 1, - .timeout = 100, - .i2c_pin_init_flag = RT_FALSE -}; - -/** - * if i2c is locked, this function will unlock it - * - * @param hk32 config class - * - * @return RT_EOK indicates successful unlock. - */ -static rt_err_t hk32_i2c_bus_unlock(const struct hk32_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); - hk32_udelay(100); - rt_pin_write(cfg->scl, PIN_LOW); - hk32_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 hk32_i2c); - rt_err_t result; - - for (int i = 0; i < obj_num; i++) - { - i2c_obj[i].ops = hk32_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); - hk32_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/hk32/libraries/rt_drivers/drv_soft_i2c.h b/bsp/hk32/libraries/rt_drivers/drv_soft_i2c.h deleted file mode 100644 index 59864f14475..00000000000 --- a/bsp/hk32/libraries/rt_drivers/drv_soft_i2c.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (c) 2006-2021, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2021-08-15 Jonas first version - */ - -#ifndef __DRV_I2C__ -#define __DRV_I2C__ - -#include -#include -#include - -/* hk32 config class */ -struct hk32_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; -/* hk32 i2c dirver class */ -struct hk32_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 - -#ifdef BSP_USING_I2C4 -#define I2C4_BUS_CONFIG \ - { \ - .scl = BSP_I2C4_SCL_PIN, \ - .sda = BSP_I2C4_SDA_PIN, \ - .bus_name = "i2c4", \ - } -#endif -int rt_hw_i2c_init(void); - -#endif diff --git a/bsp/ht32/ht32f12366/board/Kconfig b/bsp/ht32/ht32f12366/board/Kconfig index 78fde329271..950616cd159 100644 --- a/bsp/ht32/ht32f12366/board/Kconfig +++ b/bsp/ht32/ht32f12366/board/Kconfig @@ -208,71 +208,6 @@ menu "On-chip Peripheral Drivers" string "hardware i2c1 name" default "hw_i2c1" endif - - menuconfig BSP_USING_I2C_SW - bool "Enable I2C Bus(software)" - default n - select BSP_USING_GPIO if BSP_USING_I2C_SW - select RT_USING_I2C if BSP_USING_I2C_SW - - if BSP_USING_I2C_SW - config BSP_USING_I2C0_SW - bool "Enable Software I2C0 Bus" - default n - config BSP_USING_I2C0_SW_NAME - depends on BSP_USING_I2C0_SW - string "software i2c0 name" - default "sw_i2c0" - if BSP_USING_I2C0_SW - config BSP_I2C0_SLC_PIN - int "i2c0 slc pin number" - range 0 51 - default 22 - - config BSP_I2C0_SDA_PIN - int "i2c0 sda pin number" - range 0 51 - default 23 - endif - - config BSP_USING_I2C1_SW - bool "Enable Software I2C1 Bus" - default n - config BSP_USING_I2C1_SW_NAME - depends on BSP_USING_I2C1_SW - string "software i2c1 name" - default "sw_i2c1" - if BSP_USING_I2C1_SW - config BSP_I2C1_SLC_PIN - int "i2c1 slc pin number" - range 0 51 - default 24 - - config BSP_I2C1_SDA_PIN - int "i2c1 sda pin number" - range 0 51 - default 25 - endif - - config BSP_USING_I2C2_SW - bool "Enable Software I2C2 Bus" - default n - config BSP_USING_I2C2_SW_NAME - depends on BSP_USING_I2C2_SW - string "software i2c2 name" - default "sw_i2c2" - if BSP_USING_I2C2_SW - config BSP_I2C2_SLC_PIN - int "i2c2 slc pin number" - range 0 51 - default 26 - - config BSP_I2C2_SDA_PIN - int "i2c2 sda pin number" - range 0 51 - default 27 - endif - endif endif menuconfig BSP_USING_ADC diff --git a/bsp/ht32/ht32f52352/board/Kconfig b/bsp/ht32/ht32f52352/board/Kconfig index 8ba20cd72d2..1ae94996a31 100644 --- a/bsp/ht32/ht32f52352/board/Kconfig +++ b/bsp/ht32/ht32f52352/board/Kconfig @@ -208,71 +208,6 @@ menu "On-chip Peripheral Drivers" string "hardware i2c1 name" default "hw_i2c1" endif - - menuconfig BSP_USING_I2C_SW - bool "Enable I2C Bus(software)" - default n - select BSP_USING_GPIO if BSP_USING_I2C_SW - select RT_USING_I2C if BSP_USING_I2C_SW - - if BSP_USING_I2C_SW - config BSP_USING_I2C0_SW - bool "Enable Software I2C0 Bus" - default n - config BSP_USING_I2C0_SW_NAME - depends on BSP_USING_I2C0_SW - string "software i2c0 name" - default "sw_i2c0" - if BSP_USING_I2C0_SW - config BSP_I2C0_SLC_PIN - int "i2c0 slc pin number" - range 0 51 - default 22 - - config BSP_I2C0_SDA_PIN - int "i2c0 sda pin number" - range 0 51 - default 23 - endif - - config BSP_USING_I2C1_SW - bool "Enable Software I2C1 Bus" - default n - config BSP_USING_I2C1_SW_NAME - depends on BSP_USING_I2C1_SW - string "software i2c1 name" - default "sw_i2c1" - if BSP_USING_I2C1_SW - config BSP_I2C1_SLC_PIN - int "i2c1 slc pin number" - range 0 51 - default 24 - - config BSP_I2C1_SDA_PIN - int "i2c1 sda pin number" - range 0 51 - default 25 - endif - - config BSP_USING_I2C2_SW - bool "Enable Software I2C2 Bus" - default n - config BSP_USING_I2C2_SW_NAME - depends on BSP_USING_I2C2_SW - string "software i2c2 name" - default "sw_i2c2" - if BSP_USING_I2C2_SW - config BSP_I2C2_SLC_PIN - int "i2c2 slc pin number" - range 0 51 - default 26 - - config BSP_I2C2_SDA_PIN - int "i2c2 sda pin number" - range 0 51 - default 27 - endif - endif endif menuconfig BSP_USING_ADC diff --git a/bsp/ht32/ht32f53252/board/Kconfig b/bsp/ht32/ht32f53252/board/Kconfig index 8ba20cd72d2..1ae94996a31 100644 --- a/bsp/ht32/ht32f53252/board/Kconfig +++ b/bsp/ht32/ht32f53252/board/Kconfig @@ -208,71 +208,6 @@ menu "On-chip Peripheral Drivers" string "hardware i2c1 name" default "hw_i2c1" endif - - menuconfig BSP_USING_I2C_SW - bool "Enable I2C Bus(software)" - default n - select BSP_USING_GPIO if BSP_USING_I2C_SW - select RT_USING_I2C if BSP_USING_I2C_SW - - if BSP_USING_I2C_SW - config BSP_USING_I2C0_SW - bool "Enable Software I2C0 Bus" - default n - config BSP_USING_I2C0_SW_NAME - depends on BSP_USING_I2C0_SW - string "software i2c0 name" - default "sw_i2c0" - if BSP_USING_I2C0_SW - config BSP_I2C0_SLC_PIN - int "i2c0 slc pin number" - range 0 51 - default 22 - - config BSP_I2C0_SDA_PIN - int "i2c0 sda pin number" - range 0 51 - default 23 - endif - - config BSP_USING_I2C1_SW - bool "Enable Software I2C1 Bus" - default n - config BSP_USING_I2C1_SW_NAME - depends on BSP_USING_I2C1_SW - string "software i2c1 name" - default "sw_i2c1" - if BSP_USING_I2C1_SW - config BSP_I2C1_SLC_PIN - int "i2c1 slc pin number" - range 0 51 - default 24 - - config BSP_I2C1_SDA_PIN - int "i2c1 sda pin number" - range 0 51 - default 25 - endif - - config BSP_USING_I2C2_SW - bool "Enable Software I2C2 Bus" - default n - config BSP_USING_I2C2_SW_NAME - depends on BSP_USING_I2C2_SW - string "software i2c2 name" - default "sw_i2c2" - if BSP_USING_I2C2_SW - config BSP_I2C2_SLC_PIN - int "i2c2 slc pin number" - range 0 51 - default 26 - - config BSP_I2C2_SDA_PIN - int "i2c2 sda pin number" - range 0 51 - default 27 - endif - endif endif menuconfig BSP_USING_ADC diff --git a/bsp/ht32/libraries/ht32_drivers/SConscript b/bsp/ht32/libraries/ht32_drivers/SConscript index 86ba719ad98..1bb5a2d96c6 100644 --- a/bsp/ht32/libraries/ht32_drivers/SConscript +++ b/bsp/ht32/libraries/ht32_drivers/SConscript @@ -26,9 +26,6 @@ if GetDepend(['BSP_USING_SPI']): if GetDepend(['BSP_USING_I2C_HW']): src += ['drv_i2c.c'] -if GetDepend(['BSP_USING_I2C_SW']): - src += ['drv_soft_i2c.c'] - if GetDepend(['BSP_USING_ADC']): src += ['drv_adc.c'] diff --git a/bsp/ht32/libraries/ht32_drivers/drv_soft_i2c.c b/bsp/ht32/libraries/ht32_drivers/drv_soft_i2c.c deleted file mode 100644 index 269eaf5eee0..00000000000 --- a/bsp/ht32/libraries/ht32_drivers/drv_soft_i2c.c +++ /dev/null @@ -1,228 +0,0 @@ -/* - * Copyright (c) 2006-2024, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2024-05-29 QT-one first version - */ -#include -#include "drv_soft_i2c.h" - -#ifdef RT_USING_I2C -#if !defined(BSP_USING_I2C0_SW) && !defined(BSP_USING_I2C1_SW) && !defined(BSP_USING_I2C2_SW) - #error "Please define at least one BSP_USING_I2Cx_SW" - /* this driver can be disabled at menuconfig RT-Thread Components Device Drivers */ -#endif - -/* ht32 software i2c config class */ -struct ht32_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; -/* ht32 software i2c dirver class */ -struct ht32_soft_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device i2c_bus; -}; - -static rt_uint8_t scl_rw_flag = 0; -static rt_uint8_t sda_rw_flag = 0; - -static const struct ht32_soft_i2c_config soft_i2c_config[] = -{ -#ifdef BSP_USING_I2C0_SW - { - .scl = BSP_I2C0_SLC_PIN, - .sda = BSP_I2C0_SDA_PIN, - .bus_name = BSP_USING_I2C0_SW_NAME, - }, -#endif -#ifdef BSP_USING_I2C1_SW - { - .scl = BSP_I2C1_SLC_PIN, - .sda = BSP_I2C1_SDA_PIN, - .bus_name = BSP_USING_I2C1_SW_NAME, - }, -#endif -#ifdef BSP_USING_I2C2_SW - { - .scl = BSP_I2C2_SLC_PIN, - .sda = BSP_I2C2_SDA_PIN, - .bus_name = BSP_USING_I2C2_SW_NAME, - }, -#endif -}; - -static struct ht32_soft_i2c i2c_obj[sizeof(soft_i2c_config) / sizeof(soft_i2c_config[0])]; - -/* this function initializes the software i2c pin */ -static void ht32_soft_i2c_gpio_init(struct ht32_soft_i2c *i2c) -{ - struct ht32_soft_i2c_config* cfg = (struct ht32_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); -} -/* this function sets the sda pin */ -void ht32_set_sda(void *data, rt_int32_t state) -{ - struct ht32_soft_i2c_config* cfg = (struct ht32_soft_i2c_config*)data; - if(sda_rw_flag != 0) - { - sda_rw_flag = 0; - rt_pin_mode(cfg->sda, PIN_MODE_OUTPUT_OD); - } - if (state) - { - rt_pin_write(cfg->sda, PIN_HIGH); - } - else - { - rt_pin_write(cfg->sda, PIN_LOW); - } -} -/* this function sets the scl pin */ -void ht32_set_scl(void *data, rt_int32_t state) -{ - struct ht32_soft_i2c_config* cfg = (struct ht32_soft_i2c_config*)data; - if(scl_rw_flag != 0) - { - scl_rw_flag = 0; - rt_pin_mode(cfg->scl, PIN_MODE_OUTPUT_OD); - } - if (state) - { - rt_pin_write(cfg->scl, PIN_HIGH); - } - else - { - rt_pin_write(cfg->scl, PIN_LOW); - } -} -/* this function gets the sda pin state */ -rt_int32_t ht32_get_sda(void *data) -{ - struct ht32_soft_i2c_config* cfg = (struct ht32_soft_i2c_config*)data; - - if(sda_rw_flag == 0) - { - sda_rw_flag = 1; - rt_pin_mode(cfg->sda, PIN_MODE_INPUT); - } - return rt_pin_read(cfg->sda); -} -/* this function gets the scl pin state */ -rt_int32_t ht32_get_scl(void *data) -{ - struct ht32_soft_i2c_config* cfg = (struct ht32_soft_i2c_config*)data; - if(scl_rw_flag == 0) - { - scl_rw_flag = 1; - rt_pin_mode(cfg->scl, PIN_MODE_INPUT); - } - return rt_pin_read(cfg->scl); -} - -void ht32_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 ht32_bit_ops_default = -{ - .data = RT_NULL, - .set_sda = ht32_set_sda, - .set_scl = ht32_set_scl, - .get_sda = ht32_get_sda, - .get_scl = ht32_get_scl, - .udelay = ht32_udelay, - .delay_us = 1, - .timeout = 100 -}; - -/* if i2c is locked, this function will unlock it */ -static rt_err_t ht32_soft_i2c_bus_unlock(const struct ht32_soft_i2c_config *cfg) -{ - rt_int32_t i = 0; - rt_pin_mode(cfg->sda, PIN_MODE_INPUT_PULLUP); - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - while (i++ < 9) - { - rt_pin_write(cfg->scl, PIN_HIGH); - ht32_udelay(100); - rt_pin_write(cfg->scl, PIN_LOW); - ht32_udelay(100); - } - } - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - return -RT_ERROR; - } - rt_pin_mode(cfg->sda, PIN_MODE_OUTPUT_OD); - return RT_EOK; -} - -/* i2c initialization function */ -int rt_sw_i2c_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct ht32_soft_i2c); - rt_err_t result; - - for (int i = 0; i < obj_num; i++) - { - i2c_obj[i].ops = ht32_bit_ops_default; - i2c_obj[i].ops.data = (void*)&soft_i2c_config[i]; - i2c_obj[i].i2c_bus.priv = &i2c_obj[i].ops; - ht32_soft_i2c_gpio_init(&i2c_obj[i]); - - result = rt_i2c_bit_add_bus(&i2c_obj[i].i2c_bus, soft_i2c_config[i].bus_name); - - RT_ASSERT(result == RT_EOK); - ht32_soft_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 result; -} - -INIT_BOARD_EXPORT(rt_sw_i2c_init); - - -#endif /* RT_USING_I2C */ diff --git a/bsp/ht32/libraries/ht32_drivers/drv_soft_i2c.h b/bsp/ht32/libraries/ht32_drivers/drv_soft_i2c.h deleted file mode 100644 index 3ce48ee6ef9..00000000000 --- a/bsp/ht32/libraries/ht32_drivers/drv_soft_i2c.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (c) 2006-2024, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2024-05-29 QT-one first version - */ - -#ifndef __DRV_I2C_H__ -#define __DRV_I2C_H__ - -#include -#include -#ifdef RT_USING_DEVICE - #include -#endif -#include "drv_common.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* __DRV_I2C_H__ */ - diff --git a/bsp/k210/drivers/Kconfig b/bsp/k210/drivers/Kconfig index 6ef04340395..a94abc270e8 100644 --- a/bsp/k210/drivers/Kconfig +++ b/bsp/k210/drivers/Kconfig @@ -57,11 +57,6 @@ menuconfig BSP_USING_UART3 endif endmenu -config BSP_USING_I2C1 - bool "Enable I2C1 (GPIO0/1)" - select RT_USING_I2C - default n - menuconfig BSP_USING_SPI1 bool "Enable SPI1" select RT_USING_SPI diff --git a/bsp/k210/drivers/drv_i2c.c b/bsp/k210/drivers/drv_i2c.c deleted file mode 100644 index d6f5676982f..00000000000 --- a/bsp/k210/drivers/drv_i2c.c +++ /dev/null @@ -1,377 +0,0 @@ -/* - * Copyright (c) 2006-2023, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2020-08-21 heyuanjie87 first version - * 2023-03-31 Vandoul formatting code. - */ - -#include -#include - -#include "board.h" -#include "drivers/dev_i2c.h" -#include "gpiohs.h" -#include "utils.h" -#include "sleep.h" -#include "fpioa.h" -#ifdef RT_USING_I2C - -#ifndef BSP_I2C0_SCL_PIN -#define BSP_I2C0_SCL_PIN 0 -#endif -#ifndef BSP_I2C0_SDA_PIN -#define BSP_I2C0_SDA_PIN 1 -#endif -#ifndef BSP_I2C1_SCL_PIN -#define BSP_I2C1_SCL_PIN 30 -#endif -#ifndef BSP_I2C1_SDA_PIN -#define BSP_I2C1_SDA_PIN 31 -#endif -#ifndef BSP_I2C2_SCL_PIN -#define BSP_I2C2_SCL_PIN 4 -#endif -#ifndef BSP_I2C2_SDA_PIN -#define BSP_I2C2_SDA_PIN 5 -#endif - -static rt_err_t ki2c_send( - volatile i2c_t *i2c_adapter, - rt_uint8_t *send_buf, - rt_uint32_t send_buf_len) -{ - rt_uint32_t fifo_len, index; - - while (send_buf_len) - { - fifo_len = 8 - i2c_adapter->txflr; - fifo_len = send_buf_len < fifo_len ? send_buf_len : fifo_len; - for (index = 0; index < fifo_len; index++) - i2c_adapter->data_cmd = I2C_DATA_CMD_DATA(*send_buf++); - if (i2c_adapter->tx_abrt_source != 0) - { - while (i2c_adapter->status & I2C_STATUS_ACTIVITY); // - i2c_adapter->clr_intr = i2c_adapter->clr_intr; // - return -RT_ERROR; - } - - send_buf_len -= fifo_len; - } - - return RT_EOK; -} - -static rt_err_t ki2c_recv( - volatile i2c_t *i2c_adapter, - rt_uint8_t *receive_buf, - rt_uint32_t receive_buf_len) -{ - rt_uint32_t fifo_len, index; - rt_uint32_t rx_len = receive_buf_len; - - while (receive_buf_len || rx_len) - { - fifo_len = i2c_adapter->rxflr; - fifo_len = rx_len < fifo_len ? rx_len : fifo_len; - for (index = 0; index < fifo_len; index++) - *receive_buf++ = (rt_uint8_t)i2c_adapter->data_cmd; - rx_len -= fifo_len; - fifo_len = 8 - i2c_adapter->txflr; - fifo_len = receive_buf_len < fifo_len ? receive_buf_len : fifo_len; - for (index = 0; index < fifo_len; index++) - i2c_adapter->data_cmd = I2C_DATA_CMD_CMD; - if (i2c_adapter->tx_abrt_source != 0) - return -RT_ERROR; - receive_buf_len -= fifo_len; - } - - return RT_EOK; -} - -static void ki2c_setaddr( - volatile i2c_t *i2c_adapter, - rt_uint16_t addr, - int width) -{ - i2c_adapter->tar = I2C_TAR_ADDRESS(addr) & I2C_TAR_ADDRESS_MASK; - - if(width == 10) - { - i2c_adapter->tar |= I2C_TAR_10BITADDR_MASTER; - } - else - { - i2c_adapter->tar &= ~I2C_TAR_10BITADDR_MASTER; - } - -} - -static int ki2c_waittx(volatile i2c_t *i2c_adapter, int timeout_ms) -{ - rt_tick_t start; - - start = rt_tick_get(); - while ((i2c_adapter->status & I2C_STATUS_ACTIVITY) || !(i2c_adapter->status & I2C_STATUS_TFE)) - { - if (rt_tick_from_millisecond(rt_tick_get() - start) > timeout_ms) - break; - } - - if (i2c_adapter->tx_abrt_source != 0) - return -RT_ERROR; - - return RT_EOK; -} - -static void ki2c_clearerr(volatile i2c_t *i2c_adapter) -{ - i2c_adapter->clr_tx_abrt = i2c_adapter->clr_tx_abrt; -} - -static rt_ssize_t _i2c_mst_xfer(struct rt_i2c_bus_device *bus, - struct rt_i2c_msg msgs[], - rt_uint32_t num) -{ - rt_ssize_t i; - i2c_t *kbus = (i2c_t *)bus->priv; - rt_err_t status; - int waittx = 0; - - RT_ASSERT(bus != RT_NULL); - if(msgs[0].flags & RT_I2C_ADDR_10BIT) - { - ki2c_setaddr(kbus, msgs[0].addr, 10); - } - else - { - ki2c_setaddr(kbus, msgs[0].addr, 7); - } - - - ki2c_clearerr(kbus); - - for (i = 0; i < num; i++) - { - waittx = 0; - - if (msgs[i].flags & RT_I2C_RD) - { - status = ki2c_recv(kbus, msgs[i].buf, msgs[i].len); - } - else - { - status = ki2c_send(kbus, msgs[i].buf, msgs[i].len); - waittx = 1; - } - - if (status != RT_EOK) - { - goto _out; - } - } - - if (waittx) - { - status = ki2c_waittx(kbus, 2000); - if (status != RT_EOK) - { - goto _out; - } - } - - return i; -_out: - return status; -} - -static const struct rt_i2c_bus_device_ops i2c_ops = -{ - .master_xfer = _i2c_mst_xfer, - .slave_xfer = RT_NULL, - .i2c_bus_control = RT_NULL, -}; - -#ifdef RT_USING_I2C_BITOPS - -typedef struct pin_info_s { - uint32_t scl; - uint32_t sda; -} pin_info_t; - -static void set_sda(void *data, rt_int32_t state) -{ - pin_info_t *pin = (pin_info_t *)data; - /* state = 1: disable output. state = 0: enable output.*/ - set_gpio_bit(gpiohs->output_en.u32, pin->sda, !state); -} - -static void set_scl(void *data, rt_int32_t state) -{ - pin_info_t *pin = (pin_info_t *)data; - /* state = 1: disable output. state = 0: enable output.*/ - set_gpio_bit(gpiohs->output_en.u32, pin->scl, !state); -} - -static rt_int32_t get_sda(void *data) -{ - pin_info_t *pin = (pin_info_t *)data; - /* disable output.*/ - set_gpio_bit(gpiohs->output_en.u32, pin->sda, 0); - - return get_gpio_bit(gpiohs->input_val.u32, pin->sda); -} - -static rt_int32_t get_scl(void *data) -{ - pin_info_t *pin = (pin_info_t *)data; - /* disable output.*/ - set_gpio_bit(gpiohs->output_en.u32, pin->scl, 0); - - return get_gpio_bit(gpiohs->input_val.u32, pin->scl); -} - -static void udelay(rt_uint32_t us) -{ - usleep((uint64_t)us); -} - -static struct rt_i2c_bit_ops bit_ops_0 = -{ - RT_NULL, - set_sda, - set_scl, - get_sda, - get_scl, - udelay, - 5, - 5 -}; - -static struct rt_i2c_bit_ops bit_ops_1 = -{ - RT_NULL, - set_sda, - set_scl, - get_sda, - get_scl, - udelay, - 5, - 5 -}; - -static struct rt_i2c_bit_ops bit_ops_2 = -{ - RT_NULL, - set_sda, - set_scl, - get_sda, - get_scl, - udelay, - 5, - 5 -}; - -extern int get_pin_channel(rt_base_t pin_index); -#endif - -int rt_hw_i2c_init(void) -{ - struct rt_i2c_bus_device *busdev; - -#ifdef BSP_USING_I2C0 - static struct rt_i2c_bus_device i2c_dev0; - busdev = &i2c_dev0; - - #ifdef RT_USING_I2C_BITOPS - fpioa_set_function(BSP_I2C0_SCL_PIN, FUNC_RESV0); - fpioa_set_function(BSP_I2C0_SDA_PIN, FUNC_RESV0); - - rt_pin_write(BSP_I2C0_SCL_PIN, PIN_LOW); - rt_pin_write(BSP_I2C0_SDA_PIN, PIN_LOW); - rt_pin_mode(BSP_I2C0_SCL_PIN, PIN_MODE_INPUT_PULLUP); - rt_pin_mode(BSP_I2C0_SDA_PIN, PIN_MODE_INPUT_PULLUP); - - static pin_info_t pin0; - pin0.scl = get_pin_channel(BSP_I2C0_SCL_PIN); - pin0.sda = get_pin_channel(BSP_I2C0_SDA_PIN); - bit_ops_0.data = (void *)&pin0; - - busdev->priv = (void *)&bit_ops_0; - rt_i2c_bit_add_bus(busdev, "i2c0"); - #else - - busdev->ops = &i2c_ops; - busdev->priv = (void *)I2C0_BASE_ADDR; - - i2c_init(I2C_DEVICE_0, 0, 7, 100000); - rt_i2c_bus_device_register(busdev, "i2c0"); - #endif -#endif - -#ifdef BSP_USING_I2C1 - static struct rt_i2c_bus_device i2c_dev1; - busdev = &i2c_dev1; - - #ifdef RT_USING_I2C_BITOPS - fpioa_set_function(BSP_I2C1_SCL_PIN, FUNC_RESV0); - fpioa_set_function(BSP_I2C1_SDA_PIN, FUNC_RESV0); - - rt_pin_write(BSP_I2C1_SCL_PIN, PIN_LOW); - rt_pin_write(BSP_I2C1_SDA_PIN, PIN_LOW); - rt_pin_mode(BSP_I2C1_SCL_PIN, PIN_MODE_INPUT_PULLUP); - rt_pin_mode(BSP_I2C1_SDA_PIN, PIN_MODE_INPUT_PULLUP); - - static pin_info_t pin1; - pin1.scl = get_pin_channel(BSP_I2C1_SCL_PIN); - pin1.sda = get_pin_channel(BSP_I2C1_SDA_PIN); - bit_ops_1.data = (void *)&pin1; - - busdev->priv = (void *)&bit_ops_1; - rt_i2c_bit_add_bus(busdev, "i2c1"); - #else - - busdev->ops = &i2c_ops; - busdev->priv = (void *)I2C1_BASE_ADDR; - - i2c_init(I2C_DEVICE_1, 0, 7, 100000); - rt_i2c_bus_device_register(busdev, "i2c1"); - #endif -#endif - -#ifdef BSP_USING_I2C2 - static struct rt_i2c_bus_device i2c_dev2; - busdev = &i2c_dev2; - - #ifdef RT_USING_I2C_BITOPS - fpioa_set_function(BSP_I2C2_SCL_PIN, FUNC_RESV0); - fpioa_set_function(BSP_I2C2_SDA_PIN, FUNC_RESV0); - - rt_pin_write(BSP_I2C2_SCL_PIN, PIN_LOW); - rt_pin_write(BSP_I2C2_SDA_PIN, PIN_LOW); - rt_pin_mode(BSP_I2C2_SCL_PIN, PIN_MODE_INPUT_PULLUP); - rt_pin_mode(BSP_I2C2_SDA_PIN, PIN_MODE_INPUT_PULLUP); - - static pin_info_t pin2; - pin2.scl = get_pin_channel(BSP_I2C2_SCL_PIN); - pin2.sda = get_pin_channel(BSP_I2C2_SDA_PIN); - bit_ops_2.data = (void *)&pin2; - - busdev->priv = (void *)&bit_ops_2; - rt_i2c_bit_add_bus(busdev, "i2c2"); - #else - - busdev->ops = &i2c_ops; - busdev->priv = (void *)I2C2_BASE_ADDR; - - i2c_init(I2C_DEVICE_2, 0, 7, 100000); - rt_i2c_bus_device_register(busdev, "i2c2"); - #endif -#endif - return 0; -} -INIT_BOARD_EXPORT(rt_hw_i2c_init); -#endif diff --git a/bsp/n32/libraries/n32_drivers/drv_i2c.c b/bsp/n32/libraries/n32_drivers/drv_i2c.c index 6f22c63a934..d4dec283af4 100644 --- a/bsp/n32/libraries/n32_drivers/drv_i2c.c +++ b/bsp/n32/libraries/n32_drivers/drv_i2c.c @@ -20,204 +20,6 @@ #endif #include - -#ifdef RT_USING_I2C_BITOPS -static const struct n32_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 - -#ifdef BSP_USING_I2C4 - I2C4_BUS_CONFIG, -#endif -}; - -static struct n32_i2c i2c_obj[sizeof(soft_i2c_config) / sizeof(soft_i2c_config[0])]; - -/** -*\*\name n32_i2c_gpio_init -*\*\fun Initializes the i2c pin. -*\*\param i2c dirver class -*\*\return none -**/ -static void n32_i2c_gpio_init(struct n32_i2c *i2c) -{ - struct n32_soft_i2c_config* cfg = (struct n32_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 n32_i2c_pin_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct n32_i2c); - - for(rt_size_t i = 0; i < obj_num; i++) - { - n32_i2c_gpio_init(&i2c_obj[i]); - } -} - -/** -*\*\name n32_set_sda -*\*\fun sets the sda pin. -*\*\param data config class -*\*\param state sda pin state -*\*\return none -**/ -static void n32_set_sda(void *data, rt_int32_t state) -{ - struct n32_soft_i2c_config* cfg = (struct n32_soft_i2c_config*)data; - if (state) - { - rt_pin_write(cfg->sda, PIN_HIGH); - } - else - { - rt_pin_write(cfg->sda, PIN_LOW); - } -} - -/** -*\*\name n32_set_scl -*\*\fun sets the scl pin. -*\*\param data config class -*\*\param state scl pin state -*\*\return none -**/ -static void n32_set_scl(void *data, rt_int32_t state) -{ - struct n32_soft_i2c_config* cfg = (struct n32_soft_i2c_config*)data; - if (state) - { - rt_pin_write(cfg->scl, PIN_HIGH); - } - else - { - rt_pin_write(cfg->scl, PIN_LOW); - } -} - -/** -*\*\name n32_get_sda -*\*\fun gets the sda pin state. -*\*\param data config class -*\*\return sda pin state -**/ -static rt_int32_t n32_get_sda(void *data) -{ - struct n32_soft_i2c_config* cfg = (struct n32_soft_i2c_config*)data; - return rt_pin_read(cfg->sda); -} - -/** -*\*\name n32_get_scl -*\*\fun gets the scl pin state. -*\*\param data config class -*\*\return scl pin state -**/ -static rt_int32_t n32_get_scl(void *data) -{ - struct n32_soft_i2c_config* cfg = (struct n32_soft_i2c_config*)data; - return rt_pin_read(cfg->scl); -} - - -/** -*\*\name n32_udelay -*\*\fun The time delay function. -*\*\param us -*\*\return none -**/ -static void n32_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 n32_bit_ops_default = -{ - .data = RT_NULL, - .pin_init = n32_i2c_pin_init, - .set_sda = n32_set_sda, - .set_scl = n32_set_scl, - .get_sda = n32_get_sda, - .get_scl = n32_get_scl, - .udelay = n32_udelay, - .delay_us = 1, - .timeout = 100, - .i2c_pin_init_flag = RT_FALSE -}; - - -/** -*\*\name n32_i2c_bus_unlock -*\*\fun If i2c is locked, this function will unlock it. -*\*\param cfg -*\*\return RT_EOK indicates successful unlock -**/ -static rt_err_t n32_i2c_bus_unlock(const struct n32_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); - n32_udelay(100); - rt_pin_write(cfg->scl, PIN_LOW); - n32_udelay(100); - } - } - - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - return -RT_ERROR; - } - - return RT_EOK; -} -#endif /* RT_USING_I2C_BITOPS */ - #ifdef RT_USING_HARDWARE_I2C #define I2CT_FLAG_TIMEOUT ((uint32_t)0x1000) @@ -398,29 +200,6 @@ static const struct rt_i2c_bus_device_ops i2c_ops = int rt_hw_i2c_init(void) { -#ifdef RT_USING_I2C_BITOPS - - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct n32_i2c); - rt_err_t result; - - for(rt_size_t i = 0; i < obj_num; i++) - { - i2c_obj[i].ops = n32_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); - n32_i2c_bus_unlock(&soft_i2c_config[i]); - - rt_kprintf("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); - } -#endif /* RT_USING_I2C_BITOPS */ - #ifdef RT_USING_HARDWARE_I2C GPIO_InitType GPIO_InitStructure; diff --git a/bsp/n32/n32g43xcl-stb/board/Kconfig b/bsp/n32/n32g43xcl-stb/board/Kconfig index a5bfedd61c1..076bb012e67 100644 --- a/bsp/n32/n32g43xcl-stb/board/Kconfig +++ b/bsp/n32/n32g43xcl-stb/board/Kconfig @@ -63,25 +63,7 @@ menu "On-chip Peripheral Drivers" default n endif - - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 64 - default 22 - - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 64 - default 23 - endif - + menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC diff --git a/bsp/n32/n32g457qel-stb/board/Kconfig b/bsp/n32/n32g457qel-stb/board/Kconfig index 2e186f1a749..d178ffba6d4 100644 --- a/bsp/n32/n32g457qel-stb/board/Kconfig +++ b/bsp/n32/n32g457qel-stb/board/Kconfig @@ -75,23 +75,6 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 111 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 111 - default 23 - endif - menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC diff --git a/bsp/n32/n32g45xcl-stb/board/Kconfig b/bsp/n32/n32g45xcl-stb/board/Kconfig index ac08b2c594d..a0fa45dae5f 100644 --- a/bsp/n32/n32g45xcl-stb/board/Kconfig +++ b/bsp/n32/n32g45xcl-stb/board/Kconfig @@ -72,23 +72,6 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 111 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 111 - default 23 - endif - menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC diff --git a/bsp/n32/n32g45xml-stb/board/Kconfig b/bsp/n32/n32g45xml-stb/board/Kconfig index 2e186f1a749..d178ffba6d4 100644 --- a/bsp/n32/n32g45xml-stb/board/Kconfig +++ b/bsp/n32/n32g45xml-stb/board/Kconfig @@ -75,23 +75,6 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 111 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 111 - default 23 - endif - menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC diff --git a/bsp/n32/n32g45xrl-stb/board/Kconfig b/bsp/n32/n32g45xrl-stb/board/Kconfig index 2e186f1a749..d178ffba6d4 100644 --- a/bsp/n32/n32g45xrl-stb/board/Kconfig +++ b/bsp/n32/n32g45xrl-stb/board/Kconfig @@ -75,23 +75,6 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 111 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 111 - default 23 - endif - menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC diff --git a/bsp/n32/n32g45xvl-stb/board/Kconfig b/bsp/n32/n32g45xvl-stb/board/Kconfig index c9384f7f340..fa3b68c4a80 100644 --- a/bsp/n32/n32g45xvl-stb/board/Kconfig +++ b/bsp/n32/n32g45xvl-stb/board/Kconfig @@ -75,23 +75,6 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 111 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 111 - default 23 - endif - menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC diff --git a/bsp/n32/n32g4frml-stb/board/Kconfig b/bsp/n32/n32g4frml-stb/board/Kconfig index 16351ea7e11..736f7457730 100644 --- a/bsp/n32/n32g4frml-stb/board/Kconfig +++ b/bsp/n32/n32g4frml-stb/board/Kconfig @@ -75,23 +75,6 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 111 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 111 - default 23 - endif - menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC diff --git a/bsp/n32/n32l40xcl-stb/board/Kconfig b/bsp/n32/n32l40xcl-stb/board/Kconfig index 4303b8e4ad1..8cd54ec2685 100644 --- a/bsp/n32/n32l40xcl-stb/board/Kconfig +++ b/bsp/n32/n32l40xcl-stb/board/Kconfig @@ -64,24 +64,6 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 64 - default 22 - - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 64 - default 23 - endif - menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC diff --git a/bsp/n32/n32l436-evb/board/Kconfig b/bsp/n32/n32l436-evb/board/Kconfig index 5e3fe2a39e6..44fabdc6c44 100644 --- a/bsp/n32/n32l436-evb/board/Kconfig +++ b/bsp/n32/n32l436-evb/board/Kconfig @@ -64,24 +64,6 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 64 - default 22 - - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 64 - default 23 - endif - menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC diff --git a/bsp/n32/n32l43xml-stb/board/Kconfig b/bsp/n32/n32l43xml-stb/board/Kconfig index 5e3fe2a39e6..44fabdc6c44 100644 --- a/bsp/n32/n32l43xml-stb/board/Kconfig +++ b/bsp/n32/n32l43xml-stb/board/Kconfig @@ -64,24 +64,6 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 64 - default 22 - - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 64 - default 23 - endif - menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC diff --git a/bsp/n32/n32l43xrl-stb/board/Kconfig b/bsp/n32/n32l43xrl-stb/board/Kconfig index 5e3fe2a39e6..44fabdc6c44 100644 --- a/bsp/n32/n32l43xrl-stb/board/Kconfig +++ b/bsp/n32/n32l43xrl-stb/board/Kconfig @@ -64,24 +64,6 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 64 - default 22 - - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 64 - default 23 - endif - menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC diff --git a/bsp/n32/n32wb45xl-evb/board/Kconfig b/bsp/n32/n32wb45xl-evb/board/Kconfig index 0610640dc42..6f1de8ce532 100644 --- a/bsp/n32/n32wb45xl-evb/board/Kconfig +++ b/bsp/n32/n32wb45xl-evb/board/Kconfig @@ -75,23 +75,6 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 79 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 79 - default 25 - endif - menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC diff --git a/bsp/n32g452xx/Libraries/rt_drivers/SConscript b/bsp/n32g452xx/Libraries/rt_drivers/SConscript index b082134ed4d..0479f9fdd89 100755 --- a/bsp/n32g452xx/Libraries/rt_drivers/SConscript +++ b/bsp/n32g452xx/Libraries/rt_drivers/SConscript @@ -33,10 +33,6 @@ if GetDepend(['BSP_USING_SPI']): if GetDepend(['BSP_USING_ETH', 'BSP_USING_LWIP']): src += ['drv_eth.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_ADC']): src += Glob('drv_adc.c') diff --git a/bsp/n32g452xx/Libraries/rt_drivers/drv_soft_i2c.c b/bsp/n32g452xx/Libraries/rt_drivers/drv_soft_i2c.c deleted file mode 100644 index 2a5bed30335..00000000000 --- a/bsp/n32g452xx/Libraries/rt_drivers/drv_soft_i2c.c +++ /dev/null @@ -1,231 +0,0 @@ -/* - * Copyright (c) 2006-2023, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2020-01-09 shelton first version - */ - -#include -#include "drv_soft_i2c.h" - -#ifdef RT_USING_I2C - -#define LOG_TAG "drv.i2c" -#include - -#if !defined(BSP_USING_I2C1) && !defined(BSP_USING_I2C2) && !defined(BSP_USING_I2C3) && !defined(BSP_USING_I2C4) - #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 n32_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 -#ifdef BSP_USING_I2C4 - I2C4_BUS_CONFIG, -#endif -}; - -static struct n32_i2c i2c_obj[sizeof(soft_i2c_config) / sizeof(soft_i2c_config[0])]; - -/** - * This function initializes the i2c pin. - * - * @param n32 i2c dirver class. - */ -static void n32_i2c_gpio_init(struct n32_i2c *i2c) -{ - struct n32_soft_i2c_config *cfg = (struct n32_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 n32_i2c_pin_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct n32_i2c); - - for(rt_size_t i = 0; i < obj_num; i++) - { - n32_i2c_gpio_init(&i2c_obj[i]); - } -} - -/** - * This function sets the sda pin. - * - * @param n32 config class. - * @param The sda pin state. - */ -static void n32_set_sda(void *data, rt_int32_t state) -{ - struct n32_soft_i2c_config *cfg = (struct n32_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 n32 config class. - * @param The scl pin state. - */ -static void n32_set_scl(void *data, rt_int32_t state) -{ - struct n32_soft_i2c_config *cfg = (struct n32_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 n32_get_sda(void *data) -{ - struct n32_soft_i2c_config *cfg = (struct n32_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 n32_get_scl(void *data) -{ - struct n32_soft_i2c_config *cfg = (struct n32_soft_i2c_config *)data; - return rt_pin_read(cfg->scl); -} -/** - * The time delay function. - * - * @param microseconds. - */ -static void n32_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 n32_bit_ops_default = -{ - .data = RT_NULL, - .pin_init = n32_i2c_pin_init, - .set_sda = n32_set_sda, - .set_scl = n32_set_scl, - .get_sda = n32_get_sda, - .get_scl = n32_get_scl, - .udelay = n32_udelay, - .delay_us = 1, - .timeout = 100, - .i2c_pin_init_flag = RT_FALSE -}; - -/** - * if i2c is locked, this function will unlock it - * - * @param n32 config class - * - * @return RT_EOK indicates successful unlock. - */ -static rt_err_t n32_i2c_bus_unlock(const struct n32_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); - n32_udelay(100); - rt_pin_write(cfg->scl, PIN_LOW); - n32_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 n32_i2c); - rt_err_t result; - - for (rt_size_t i = 0; i < obj_num; i++) - { - i2c_obj[i].ops = n32_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); - n32_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/n32g452xx/Libraries/rt_drivers/drv_soft_i2c.h b/bsp/n32g452xx/Libraries/rt_drivers/drv_soft_i2c.h deleted file mode 100644 index 12e84df0880..00000000000 --- a/bsp/n32g452xx/Libraries/rt_drivers/drv_soft_i2c.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (c) 2006-2023, 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 -#include -#include - -/* n32 config class */ -struct n32_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; -/* n32 i2c dirver class */ -struct n32_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 - -#ifdef BSP_USING_I2C4 -#define I2C4_BUS_CONFIG \ - { \ - .scl = BSP_I2C4_SCL_PIN, \ - .sda = BSP_I2C4_SDA_PIN, \ - .bus_name = "i2c4", \ - } -#endif -int rt_hw_i2c_init(void); - -#endif diff --git a/bsp/n32g452xx/n32g452xx-mini-system/board/Kconfig b/bsp/n32g452xx/n32g452xx-mini-system/board/Kconfig index 0f3cfab5e58..8365d39d214 100755 --- a/bsp/n32g452xx/n32g452xx-mini-system/board/Kconfig +++ b/bsp/n32g452xx/n32g452xx-mini-system/board/Kconfig @@ -340,23 +340,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "I2C1 scl pin number" - range 1 N32G45X_PIN_NUMBERS - default 29 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 N32G45X_PIN_NUMBERS - default 30 - endif - menuconfig BSP_USING_ADC bool "Enable ADC" default n diff --git a/bsp/nuvoton/libraries/m031/rtt_port/drv_softi2c.c b/bsp/nuvoton/libraries/m031/rtt_port/drv_softi2c.c deleted file mode 100644 index bd4f6af0fa7..00000000000 --- a/bsp/nuvoton/libraries/m031/rtt_port/drv_softi2c.c +++ /dev/null @@ -1,217 +0,0 @@ -/**************************************************************************//** -* -* @copyright (C) 2020 Nuvoton Technology Corp. All rights reserved. -* -* SPDX-License-Identifier: Apache-2.0 -* -* Change Logs: -* Date Author Notes -* 2021-01-15 klcheng First version -* -******************************************************************************/ - -#include - -#if (defined(BSP_USING_SOFT_I2C) && defined(BSP_USING_GPIO) && defined(RT_USING_I2C_BITOPS) && defined(RT_USING_I2C) && defined(RT_USING_PIN)) - -#include -#include -#include -#include "NuMicro.h" - -/* Private define ---------------------------------------------------------------*/ -#define LOG_TAG "drv.softi2c" -#define DBG_ENABLE -#define DBG_SECTION_NAME LOG_TAG -#define DBG_LEVEL DBG_INFO -#include - -#ifdef BSP_USING_SOFT_I2C0 -#define NU_SOFT_I2C0_BUS_CONFIG \ - { \ - .scl = BSP_SOFT_I2C0_SCL_PIN, \ - .sda = BSP_SOFT_I2C0_SDA_PIN, \ - .bus_name = "softi2c0", \ - } -#endif - -#ifdef BSP_USING_SOFT_I2C1 -#define NU_SOFT_I2C1_BUS_CONFIG \ - { \ - .scl = BSP_SOFT_I2C1_SCL_PIN, \ - .sda = BSP_SOFT_I2C1_SDA_PIN, \ - .bus_name = "softi2c1", \ - } -#endif - -#if (!defined(BSP_USING_SOFT_I2C0) && !defined(BSP_USING_SOFT_I2C1)) - #error "Please define at least one BSP_USING_SOFT_I2Cx" - /* this driver can be disabled at menuconfig ? RT-Thread Components ? Device Drivers */ -#endif - -/* Private typedef --------------------------------------------------------------*/ -/* soft i2c config class */ -struct nu_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; -/* soft i2c driver class */ -struct nu_soft_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device soft_i2c_bus; -}; - -/* Private functions ------------------------------------------------------------*/ -static void nu_soft_i2c_set_sda(void *data, rt_int32_t state); -static void nu_soft_i2c_set_scl(void *data, rt_int32_t state); -static rt_int32_t nu_soft_i2c_get_sda(void *data); -static rt_int32_t nu_soft_i2c_get_scl(void *data); - -/* Private variables ------------------------------------------------------------*/ -static const struct nu_soft_i2c_config nu_soft_i2c_cfg[] = -{ -#ifdef BSP_USING_SOFT_I2C0 - NU_SOFT_I2C0_BUS_CONFIG, -#endif -#ifdef BSP_USING_SOFT_I2C1 - NU_SOFT_I2C1_BUS_CONFIG, -#endif -}; - -static struct nu_soft_i2c nu_soft_i2c_obj[sizeof(nu_soft_i2c_cfg) / sizeof(nu_soft_i2c_cfg[0])]; - -static const struct rt_i2c_bit_ops nu_soft_i2c_bit_ops = -{ - .data = RT_NULL, - .set_sda = nu_soft_i2c_set_sda, - .set_scl = nu_soft_i2c_set_scl, - .get_sda = nu_soft_i2c_get_sda, - .get_scl = nu_soft_i2c_get_scl, - .udelay = rt_hw_us_delay, - .delay_us = 1, - .timeout = 100 -}; - -/* Functions define ------------------------------------------------------------*/ - -/** - * This function initializes the soft i2c pin. - * - * @param soft i2c config class. - */ -static void nu_soft_i2c_gpio_init(const struct nu_soft_i2c_config *cfg) -{ - 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); -} - -/** - * if i2c is locked, this function will unlock it - * - * @param soft i2c config class - * - * @return RT_EOK indicates successful unlock. - */ -static rt_err_t nu_soft_i2c_bus_unlock(const struct nu_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); - rt_hw_us_delay(100); - rt_pin_write(cfg->scl, PIN_LOW); - rt_hw_us_delay(100); - } - } - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - return -RT_ERROR; - } - - return RT_EOK; -} - -/** - * This function sets the sda pin. - * - * @param soft i2c config class. - * @param The sda pin state. - */ -static void nu_soft_i2c_set_sda(void *data, rt_int32_t state) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - - rt_pin_write(cfg->sda, state ? PIN_HIGH : PIN_LOW); -} - -/** - * This function sets the scl pin. - * - * @param soft i2c config class. - * @param The scl pin state. - */ -static void nu_soft_i2c_set_scl(void *data, rt_int32_t state) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - - rt_pin_write(cfg->scl, state ? PIN_HIGH : PIN_LOW); -} - -/** - * This function gets the sda pin state. - * - * @param The sda pin state. - */ -static rt_int32_t nu_soft_i2c_get_sda(void *data) -{ - struct nu_soft_i2c_config *cfg = (struct nu_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 nu_soft_i2c_get_scl(void *data) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - return rt_pin_read(cfg->scl); -} - -/* Soft I2C initialization function */ -int rt_soft_i2c_init(void) -{ - rt_size_t obj_num = sizeof(nu_soft_i2c_obj) / sizeof(struct nu_soft_i2c); - rt_err_t result; - - for (int i = 0; i < obj_num; i++) - { - nu_soft_i2c_obj[i].ops = nu_soft_i2c_bit_ops; - nu_soft_i2c_obj[i].ops.data = (void *)&nu_soft_i2c_cfg[i]; - nu_soft_i2c_obj[i].soft_i2c_bus.priv = &nu_soft_i2c_obj[i].ops; - nu_soft_i2c_gpio_init(&nu_soft_i2c_cfg[i]); - result = rt_i2c_bit_add_bus(&nu_soft_i2c_obj[i].soft_i2c_bus, nu_soft_i2c_cfg[i].bus_name); - RT_ASSERT(result == RT_EOK); - nu_soft_i2c_bus_unlock(&nu_soft_i2c_cfg[i]); - - LOG_D("software simulation %s init done, pin scl: %d, pin sda %d", - nu_soft_i2c_cfg[i].bus_name, - nu_soft_i2c_cfg[i].scl, - nu_soft_i2c_cfg[i].sda); - } - - return 0; -} -INIT_DEVICE_EXPORT(rt_soft_i2c_init); - -#endif //#if (defined(BSP_USING_SOFT_I2C) && defined(BSP_USING_GPIO) && defined(RT_USING_I2C_BITOPS) && defined(RT_USING_I2C) && defined(RT_USING_PIN)) diff --git a/bsp/nuvoton/libraries/m2354/rtt_port/drv_softi2c.c b/bsp/nuvoton/libraries/m2354/rtt_port/drv_softi2c.c deleted file mode 100644 index 0d2039a5635..00000000000 --- a/bsp/nuvoton/libraries/m2354/rtt_port/drv_softi2c.c +++ /dev/null @@ -1,217 +0,0 @@ -/**************************************************************************//** -* -* @copyright (C) 2020 Nuvoton Technology Corp. All rights reserved. -* -* SPDX-License-Identifier: Apache-2.0 -* -* Change Logs: -* Date Author Notes -* 2020-6-28 YCHuang12 First version -* -******************************************************************************/ - -#include - -#if (defined(BSP_USING_SOFT_I2C) && defined(BSP_USING_GPIO) && defined(RT_USING_I2C_BITOPS) && defined(RT_USING_I2C) && defined(RT_USING_PIN)) - -#include -#include -#include -#include "NuMicro.h" - -/* Private define ---------------------------------------------------------------*/ -#define LOG_TAG "drv.softi2c" -#define DBG_ENABLE -#define DBG_SECTION_NAME LOG_TAG -#define DBG_LEVEL DBG_INFO -#include - -#ifdef BSP_USING_SOFT_I2C0 -#define NU_SOFT_I2C0_BUS_CONFIG \ - { \ - .scl = BSP_SOFT_I2C0_SCL_PIN, \ - .sda = BSP_SOFT_I2C0_SDA_PIN, \ - .bus_name = "softi2c0", \ - } -#endif - -#ifdef BSP_USING_SOFT_I2C1 -#define NU_SOFT_I2C1_BUS_CONFIG \ - { \ - .scl = BSP_SOFT_I2C1_SCL_PIN, \ - .sda = BSP_SOFT_I2C1_SDA_PIN, \ - .bus_name = "softi2c1", \ - } -#endif - -#if (!defined(BSP_USING_SOFT_I2C0) && !defined(BSP_USING_SOFT_I2C1)) - #error "Please define at least one BSP_USING_SOFT_I2Cx" - /* this driver can be disabled at menuconfig ? RT-Thread Components ? Device Drivers */ -#endif - -/* Private typedef --------------------------------------------------------------*/ -/* soft i2c config class */ -struct nu_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; -/* soft i2c driver class */ -struct nu_soft_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device soft_i2c_bus; -}; - -/* Private functions ------------------------------------------------------------*/ -static void nu_soft_i2c_set_sda(void *data, rt_int32_t state); -static void nu_soft_i2c_set_scl(void *data, rt_int32_t state); -static rt_int32_t nu_soft_i2c_get_sda(void *data); -static rt_int32_t nu_soft_i2c_get_scl(void *data); - -/* Private variables ------------------------------------------------------------*/ -static const struct nu_soft_i2c_config nu_soft_i2c_cfg[] = -{ -#ifdef BSP_USING_SOFT_I2C0 - NU_SOFT_I2C0_BUS_CONFIG, -#endif -#ifdef BSP_USING_SOFT_I2C1 - NU_SOFT_I2C1_BUS_CONFIG, -#endif -}; - -static struct nu_soft_i2c nu_soft_i2c_obj[sizeof(nu_soft_i2c_cfg) / sizeof(nu_soft_i2c_cfg[0])]; - -static const struct rt_i2c_bit_ops nu_soft_i2c_bit_ops = -{ - .data = RT_NULL, - .set_sda = nu_soft_i2c_set_sda, - .set_scl = nu_soft_i2c_set_scl, - .get_sda = nu_soft_i2c_get_sda, - .get_scl = nu_soft_i2c_get_scl, - .udelay = rt_hw_us_delay, - .delay_us = 1, - .timeout = 100 -}; - -/* Functions define ------------------------------------------------------------*/ - -/** - * This function initializes the soft i2c pin. - * - * @param soft i2c config class. - */ -static void nu_soft_i2c_gpio_init(const struct nu_soft_i2c_config *cfg) -{ - 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); -} - -/** - * if i2c is locked, this function will unlock it - * - * @param soft i2c config class - * - * @return RT_EOK indicates successful unlock. - */ -static rt_err_t nu_soft_i2c_bus_unlock(const struct nu_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); - rt_hw_us_delay(100); - rt_pin_write(cfg->scl, PIN_LOW); - rt_hw_us_delay(100); - } - } - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - return -RT_ERROR; - } - - return RT_EOK; -} - -/** - * This function sets the sda pin. - * - * @param soft i2c config class. - * @param The sda pin state. - */ -static void nu_soft_i2c_set_sda(void *data, rt_int32_t state) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - - rt_pin_write(cfg->sda, state ? PIN_HIGH : PIN_LOW); -} - -/** - * This function sets the scl pin. - * - * @param soft i2c config class. - * @param The scl pin state. - */ -static void nu_soft_i2c_set_scl(void *data, rt_int32_t state) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - - rt_pin_write(cfg->scl, state ? PIN_HIGH : PIN_LOW); -} - -/** - * This function gets the sda pin state. - * - * @param The sda pin state. - */ -static rt_int32_t nu_soft_i2c_get_sda(void *data) -{ - struct nu_soft_i2c_config *cfg = (struct nu_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 nu_soft_i2c_get_scl(void *data) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - return rt_pin_read(cfg->scl); -} - -/* Soft I2C initialization function */ -int rt_soft_i2c_init(void) -{ - rt_size_t obj_num = sizeof(nu_soft_i2c_obj) / sizeof(struct nu_soft_i2c); - rt_err_t result; - - for (int i = 0; i < obj_num; i++) - { - nu_soft_i2c_obj[i].ops = nu_soft_i2c_bit_ops; - nu_soft_i2c_obj[i].ops.data = (void *)&nu_soft_i2c_cfg[i]; - nu_soft_i2c_obj[i].soft_i2c_bus.priv = &nu_soft_i2c_obj[i].ops; - nu_soft_i2c_gpio_init(&nu_soft_i2c_cfg[i]); - result = rt_i2c_bit_add_bus(&nu_soft_i2c_obj[i].soft_i2c_bus, nu_soft_i2c_cfg[i].bus_name); - RT_ASSERT(result == RT_EOK); - nu_soft_i2c_bus_unlock(&nu_soft_i2c_cfg[i]); - - LOG_D("software simulation %s init done, pin scl: %d, pin sda %d", - nu_soft_i2c_cfg[i].bus_name, - nu_soft_i2c_cfg[i].scl, - nu_soft_i2c_cfg[i].sda); - } - - return 0; -} -INIT_DEVICE_EXPORT(rt_soft_i2c_init); - -#endif //#if (defined(BSP_USING_SOFT_I2C) && defined(BSP_USING_GPIO) && defined(RT_USING_I2C_BITOPS) && defined(RT_USING_I2C) && defined(RT_USING_PIN)) diff --git a/bsp/nuvoton/libraries/m460/rtt_port/drv_softi2c.c b/bsp/nuvoton/libraries/m460/rtt_port/drv_softi2c.c deleted file mode 100644 index 196737f7b46..00000000000 --- a/bsp/nuvoton/libraries/m460/rtt_port/drv_softi2c.c +++ /dev/null @@ -1,232 +0,0 @@ -/**************************************************************************//** -* -* @copyright (C) 2020 Nuvoton Technology Corp. All rights reserved. -* -* SPDX-License-Identifier: Apache-2.0 -* -* Change Logs: -* Date Author Notes -* 2022-3-15 Wayne First version -* -******************************************************************************/ - -#include - -#if (defined(BSP_USING_SOFT_I2C) && defined(RT_USING_I2C_BITOPS) && defined(RT_USING_I2C) && defined(RT_USING_PIN)) - -#include -#include -#include -#include "NuMicro.h" - -/* Private define ---------------------------------------------------------------*/ -#define LOG_TAG "drv.softi2c" -#define DBG_ENABLE -#define DBG_SECTION_NAME LOG_TAG -#define DBG_LEVEL DBG_INFO -#include - -#ifdef BSP_USING_SOFT_I2C0 -#define NU_SOFT_I2C0_BUS_CONFIG \ - { \ - .scl = BSP_SOFT_I2C0_SCL_PIN, \ - .sda = BSP_SOFT_I2C0_SDA_PIN, \ - .bus_name = "softi2c0", \ - } -#endif - -#ifdef BSP_USING_SOFT_I2C1 -#define NU_SOFT_I2C1_BUS_CONFIG \ - { \ - .scl = BSP_SOFT_I2C1_SCL_PIN, \ - .sda = BSP_SOFT_I2C1_SDA_PIN, \ - .bus_name = "softi2c1", \ - } -#endif - -#if (!defined(BSP_USING_SOFT_I2C0) && !defined(BSP_USING_SOFT_I2C1)) - #error "Please define at least one BSP_USING_SOFT_I2Cx" - /* this driver can be disabled at menuconfig ? RT-Thread Components ? Device Drivers */ -#endif - -/* Private typedef --------------------------------------------------------------*/ -/* soft i2c config class */ -struct nu_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; -/* soft i2c driver class */ -struct nu_soft_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device soft_i2c_bus; -}; - -/* Private functions ------------------------------------------------------------*/ -static void nu_soft_i2c_udelay(rt_uint32_t us); -static void nu_soft_i2c_set_sda(void *data, rt_int32_t state); -static void nu_soft_i2c_set_scl(void *data, rt_int32_t state); -static rt_int32_t nu_soft_i2c_get_sda(void *data); -static rt_int32_t nu_soft_i2c_get_scl(void *data); - -/* Private variables ------------------------------------------------------------*/ -static const struct nu_soft_i2c_config nu_soft_i2c_cfg[] = -{ -#ifdef BSP_USING_SOFT_I2C0 - NU_SOFT_I2C0_BUS_CONFIG, -#endif -#ifdef BSP_USING_SOFT_I2C1 - NU_SOFT_I2C1_BUS_CONFIG, -#endif -}; - -static struct nu_soft_i2c nu_soft_i2c_obj[sizeof(nu_soft_i2c_cfg) / sizeof(nu_soft_i2c_cfg[0])]; - -static const struct rt_i2c_bit_ops nu_soft_i2c_bit_ops = -{ - .data = RT_NULL, - .set_sda = nu_soft_i2c_set_sda, - .set_scl = nu_soft_i2c_set_scl, - .get_sda = nu_soft_i2c_get_sda, - .get_scl = nu_soft_i2c_get_scl, - .udelay = nu_soft_i2c_udelay, - .delay_us = 1, - .timeout = 100 -}; - -/* Functions define ------------------------------------------------------------*/ - -/** - * The time delay function. - * - * @param microseconds. - */ -static void nu_soft_i2c_udelay(rt_uint32_t us) -{ - rt_hw_us_delay(us); -} - -/** - * This function initializes the soft i2c pin. - * - * @param soft i2c config class. - */ -static void nu_soft_i2c_gpio_init(const struct nu_soft_i2c_config *cfg) -{ - 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); -} - -/** - * if i2c is locked, this function will unlock it - * - * @param soft i2c config class - * - * @return RT_EOK indicates successful unlock. - */ -static rt_err_t nu_soft_i2c_bus_unlock(const struct nu_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); - nu_soft_i2c_udelay(100); - rt_pin_write(cfg->scl, PIN_LOW); - nu_soft_i2c_udelay(100); - } - } - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - return -RT_ERROR; - } - - return RT_EOK; -} - -/** - * This function sets the sda pin. - * - * @param soft i2c config class. - * @param The sda pin state. - */ -static void nu_soft_i2c_set_sda(void *data, rt_int32_t state) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - - rt_pin_write(cfg->sda, state ? PIN_HIGH : PIN_LOW); -} - -/** - * This function sets the scl pin. - * - * @param soft i2c config class. - * @param The scl pin state. - */ -static void nu_soft_i2c_set_scl(void *data, rt_int32_t state) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - - rt_pin_write(cfg->scl, state ? PIN_HIGH : PIN_LOW); -} - -/** - * This function gets the sda pin state. - * - * @param The sda pin state. - */ -static rt_int32_t nu_soft_i2c_get_sda(void *data) -{ - struct nu_soft_i2c_config *cfg = (struct nu_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 nu_soft_i2c_get_scl(void *data) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - - return rt_pin_read(cfg->scl); -} - -/* Soft I2C initialization function */ -int rt_soft_i2c_init(void) -{ - rt_size_t obj_num = sizeof(nu_soft_i2c_obj) / sizeof(struct nu_soft_i2c); - rt_err_t result; - - for (int i = 0; i < obj_num; i++) - { - nu_soft_i2c_obj[i].ops = nu_soft_i2c_bit_ops; - nu_soft_i2c_obj[i].ops.data = (void *)&nu_soft_i2c_cfg[i]; - nu_soft_i2c_obj[i].soft_i2c_bus.priv = &nu_soft_i2c_obj[i].ops; - nu_soft_i2c_gpio_init(&nu_soft_i2c_cfg[i]); - - result = rt_i2c_bit_add_bus(&nu_soft_i2c_obj[i].soft_i2c_bus, nu_soft_i2c_cfg[i].bus_name); - RT_ASSERT(result == RT_EOK); - - nu_soft_i2c_bus_unlock(&nu_soft_i2c_cfg[i]); - - LOG_D("software simulation %s init done, pin scl: %d, pin sda %d", - nu_soft_i2c_cfg[i].bus_name, - nu_soft_i2c_cfg[i].scl, - nu_soft_i2c_cfg[i].sda); - } - - return 0; -} -INIT_DEVICE_EXPORT(rt_soft_i2c_init); - -#endif //#if (defined(BSP_USING_SOFT_I2C) && defined(RT_USING_I2C_BITOPS) && defined(RT_USING_I2C) && defined(RT_USING_PIN)) diff --git a/bsp/nuvoton/libraries/m480/rtt_port/drv_softi2c.c b/bsp/nuvoton/libraries/m480/rtt_port/drv_softi2c.c deleted file mode 100644 index 54208fbd617..00000000000 --- a/bsp/nuvoton/libraries/m480/rtt_port/drv_softi2c.c +++ /dev/null @@ -1,217 +0,0 @@ -/**************************************************************************//** -* -* @copyright (C) 2020 Nuvoton Technology Corp. All rights reserved. -* -* SPDX-License-Identifier: Apache-2.0 -* -* Change Logs: -* Date Author Notes -* 2020-5-28 YCHuang12 First version -* -******************************************************************************/ - -#include - -#if (defined(BSP_USING_SOFT_I2C) && defined(BSP_USING_GPIO) && defined(RT_USING_I2C_BITOPS) && defined(RT_USING_I2C) && defined(RT_USING_PIN)) - -#include -#include -#include -#include "NuMicro.h" - -/* Private define ---------------------------------------------------------------*/ -#define LOG_TAG "drv.softi2c" -#define DBG_ENABLE -#define DBG_SECTION_NAME LOG_TAG -#define DBG_LEVEL DBG_INFO -#include - -#ifdef BSP_USING_SOFT_I2C0 -#define NU_SOFT_I2C0_BUS_CONFIG \ - { \ - .scl = BSP_SOFT_I2C0_SCL_PIN, \ - .sda = BSP_SOFT_I2C0_SDA_PIN, \ - .bus_name = "softi2c0", \ - } -#endif - -#ifdef BSP_USING_SOFT_I2C1 -#define NU_SOFT_I2C1_BUS_CONFIG \ - { \ - .scl = BSP_SOFT_I2C1_SCL_PIN, \ - .sda = BSP_SOFT_I2C1_SDA_PIN, \ - .bus_name = "softi2c1", \ - } -#endif - -#if (!defined(BSP_USING_SOFT_I2C0) && !defined(BSP_USING_SOFT_I2C1)) - #error "Please define at least one BSP_USING_SOFT_I2Cx" - /* this driver can be disabled at menuconfig ? RT-Thread Components ? Device Drivers */ -#endif - -/* Private typedef --------------------------------------------------------------*/ -/* soft i2c config class */ -struct nu_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; -/* soft i2c driver class */ -struct nu_soft_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device soft_i2c_bus; -}; - -/* Private functions ------------------------------------------------------------*/ -static void nu_soft_i2c_set_sda(void *data, rt_int32_t state); -static void nu_soft_i2c_set_scl(void *data, rt_int32_t state); -static rt_int32_t nu_soft_i2c_get_sda(void *data); -static rt_int32_t nu_soft_i2c_get_scl(void *data); - -/* Private variables ------------------------------------------------------------*/ -static const struct nu_soft_i2c_config nu_soft_i2c_cfg[] = -{ -#ifdef BSP_USING_SOFT_I2C0 - NU_SOFT_I2C0_BUS_CONFIG, -#endif -#ifdef BSP_USING_SOFT_I2C1 - NU_SOFT_I2C1_BUS_CONFIG, -#endif -}; - -static struct nu_soft_i2c nu_soft_i2c_obj[sizeof(nu_soft_i2c_cfg) / sizeof(nu_soft_i2c_cfg[0])]; - -static const struct rt_i2c_bit_ops nu_soft_i2c_bit_ops = -{ - .data = RT_NULL, - .set_sda = nu_soft_i2c_set_sda, - .set_scl = nu_soft_i2c_set_scl, - .get_sda = nu_soft_i2c_get_sda, - .get_scl = nu_soft_i2c_get_scl, - .udelay = rt_hw_us_delay, - .delay_us = 1, - .timeout = 100 -}; - -/* Functions define ------------------------------------------------------------*/ - -/** - * This function initializes the soft i2c pin. - * - * @param soft i2c config class. - */ -static void nu_soft_i2c_gpio_init(const struct nu_soft_i2c_config *cfg) -{ - 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); -} - -/** - * if i2c is locked, this function will unlock it - * - * @param soft i2c config class - * - * @return RT_EOK indicates successful unlock. - */ -static rt_err_t nu_soft_i2c_bus_unlock(const struct nu_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); - rt_hw_us_delay(100); - rt_pin_write(cfg->scl, PIN_LOW); - rt_hw_us_delay(100); - } - } - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - return -RT_ERROR; - } - - return RT_EOK; -} - -/** - * This function sets the sda pin. - * - * @param soft i2c config class. - * @param The sda pin state. - */ -static void nu_soft_i2c_set_sda(void *data, rt_int32_t state) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - - rt_pin_write(cfg->sda, state ? PIN_HIGH : PIN_LOW); -} - -/** - * This function sets the scl pin. - * - * @param soft i2c config class. - * @param The scl pin state. - */ -static void nu_soft_i2c_set_scl(void *data, rt_int32_t state) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - - rt_pin_write(cfg->scl, state ? PIN_HIGH : PIN_LOW); -} - -/** - * This function gets the sda pin state. - * - * @param The sda pin state. - */ -static rt_int32_t nu_soft_i2c_get_sda(void *data) -{ - struct nu_soft_i2c_config *cfg = (struct nu_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 nu_soft_i2c_get_scl(void *data) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - return rt_pin_read(cfg->scl); -} - -/* Soft I2C initialization function */ -int rt_soft_i2c_init(void) -{ - rt_size_t obj_num = sizeof(nu_soft_i2c_obj) / sizeof(struct nu_soft_i2c); - rt_err_t result; - - for (int i = 0; i < obj_num; i++) - { - nu_soft_i2c_obj[i].ops = nu_soft_i2c_bit_ops; - nu_soft_i2c_obj[i].ops.data = (void *)&nu_soft_i2c_cfg[i]; - nu_soft_i2c_obj[i].soft_i2c_bus.priv = &nu_soft_i2c_obj[i].ops; - nu_soft_i2c_gpio_init(&nu_soft_i2c_cfg[i]); - result = rt_i2c_bit_add_bus(&nu_soft_i2c_obj[i].soft_i2c_bus, nu_soft_i2c_cfg[i].bus_name); - RT_ASSERT(result == RT_EOK); - nu_soft_i2c_bus_unlock(&nu_soft_i2c_cfg[i]); - - LOG_D("software simulation %s init done, pin scl: %d, pin sda %d", - nu_soft_i2c_cfg[i].bus_name, - nu_soft_i2c_cfg[i].scl, - nu_soft_i2c_cfg[i].sda); - } - - return 0; -} -INIT_DEVICE_EXPORT(rt_soft_i2c_init); - -#endif //#if (defined(BSP_USING_SOFT_I2C) && defined(BSP_USING_GPIO) && defined(RT_USING_I2C_BITOPS) && defined(RT_USING_I2C) && defined(RT_USING_PIN)) diff --git a/bsp/nuvoton/libraries/ma35/rtt_port/drv_softi2c.c b/bsp/nuvoton/libraries/ma35/rtt_port/drv_softi2c.c deleted file mode 100644 index 69462bfa39f..00000000000 --- a/bsp/nuvoton/libraries/ma35/rtt_port/drv_softi2c.c +++ /dev/null @@ -1,232 +0,0 @@ -/**************************************************************************//** -* -* @copyright (C) 2020 Nuvoton Technology Corp. All rights reserved. -* -* SPDX-License-Identifier: Apache-2.0 -* -* Change Logs: -* Date Author Notes -* 2021-9-6 Wayne First version -* -******************************************************************************/ - -#include - -#if (defined(BSP_USING_SOFT_I2C) && defined(RT_USING_I2C_BITOPS) && defined(RT_USING_I2C) && defined(RT_USING_PIN)) - -#include -#include -#include -#include "NuMicro.h" - -/* Private define ---------------------------------------------------------------*/ -#define LOG_TAG "drv.softi2c" -#define DBG_ENABLE -#define DBG_SECTION_NAME LOG_TAG -#define DBG_LEVEL DBG_INFO -#include - -#ifdef BSP_USING_SOFT_I2C0 -#define NU_SOFT_I2C0_BUS_CONFIG \ - { \ - .scl = BSP_SOFT_I2C0_SCL_PIN, \ - .sda = BSP_SOFT_I2C0_SDA_PIN, \ - .bus_name = "softi2c0", \ - } -#endif - -#ifdef BSP_USING_SOFT_I2C1 -#define NU_SOFT_I2C1_BUS_CONFIG \ - { \ - .scl = BSP_SOFT_I2C1_SCL_PIN, \ - .sda = BSP_SOFT_I2C1_SDA_PIN, \ - .bus_name = "softi2c1", \ - } -#endif - -#if (!defined(BSP_USING_SOFT_I2C0) && !defined(BSP_USING_SOFT_I2C1)) - #error "Please define at least one BSP_USING_SOFT_I2Cx" - /* this driver can be disabled at menuconfig ? RT-Thread Components ? Device Drivers */ -#endif - -/* Private typedef --------------------------------------------------------------*/ -/* soft i2c config class */ -struct nu_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; -/* soft i2c driver class */ -struct nu_soft_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device soft_i2c_bus; -}; - -/* Private functions ------------------------------------------------------------*/ -static void nu_soft_i2c_udelay(rt_uint32_t us); -static void nu_soft_i2c_set_sda(void *data, rt_int32_t state); -static void nu_soft_i2c_set_scl(void *data, rt_int32_t state); -static rt_int32_t nu_soft_i2c_get_sda(void *data); -static rt_int32_t nu_soft_i2c_get_scl(void *data); - -/* Private variables ------------------------------------------------------------*/ -static const struct nu_soft_i2c_config nu_soft_i2c_cfg[] = -{ -#ifdef BSP_USING_SOFT_I2C0 - NU_SOFT_I2C0_BUS_CONFIG, -#endif -#ifdef BSP_USING_SOFT_I2C1 - NU_SOFT_I2C1_BUS_CONFIG, -#endif -}; - -static struct nu_soft_i2c nu_soft_i2c_obj[sizeof(nu_soft_i2c_cfg) / sizeof(nu_soft_i2c_cfg[0])]; - -static const struct rt_i2c_bit_ops nu_soft_i2c_bit_ops = -{ - .data = RT_NULL, - .set_sda = nu_soft_i2c_set_sda, - .set_scl = nu_soft_i2c_set_scl, - .get_sda = nu_soft_i2c_get_sda, - .get_scl = nu_soft_i2c_get_scl, - .udelay = nu_soft_i2c_udelay, - .delay_us = 1, - .timeout = 100 -}; - -/* Functions define ------------------------------------------------------------*/ - -/** - * The time delay function. - * - * @param microseconds. - */ -static void nu_soft_i2c_udelay(rt_uint32_t us) -{ - rt_hw_us_delay(us); -} - -/** - * This function initializes the soft i2c pin. - * - * @param soft i2c config class. - */ -static void nu_soft_i2c_gpio_init(const struct nu_soft_i2c_config *cfg) -{ - 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); -} - -/** - * if i2c is locked, this function will unlock it - * - * @param soft i2c config class - * - * @return RT_EOK indicates successful unlock. - */ -static rt_err_t nu_soft_i2c_bus_unlock(const struct nu_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); - nu_soft_i2c_udelay(100); - rt_pin_write(cfg->scl, PIN_LOW); - nu_soft_i2c_udelay(100); - } - } - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - return -RT_ERROR; - } - - return RT_EOK; -} - -/** - * This function sets the sda pin. - * - * @param soft i2c config class. - * @param The sda pin state. - */ -static void nu_soft_i2c_set_sda(void *data, rt_int32_t state) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - - rt_pin_write(cfg->sda, state ? PIN_HIGH : PIN_LOW); -} - -/** - * This function sets the scl pin. - * - * @param soft i2c config class. - * @param The scl pin state. - */ -static void nu_soft_i2c_set_scl(void *data, rt_int32_t state) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - - rt_pin_write(cfg->scl, state ? PIN_HIGH : PIN_LOW); -} - -/** - * This function gets the sda pin state. - * - * @param The sda pin state. - */ -static rt_int32_t nu_soft_i2c_get_sda(void *data) -{ - struct nu_soft_i2c_config *cfg = (struct nu_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 nu_soft_i2c_get_scl(void *data) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - - return rt_pin_read(cfg->scl); -} - -/* Soft I2C initialization function */ -int rt_soft_i2c_init(void) -{ - rt_size_t obj_num = sizeof(nu_soft_i2c_obj) / sizeof(struct nu_soft_i2c); - rt_err_t result; - - for (int i = 0; i < obj_num; i++) - { - nu_soft_i2c_obj[i].ops = nu_soft_i2c_bit_ops; - nu_soft_i2c_obj[i].ops.data = (void *)&nu_soft_i2c_cfg[i]; - nu_soft_i2c_obj[i].soft_i2c_bus.priv = &nu_soft_i2c_obj[i].ops; - nu_soft_i2c_gpio_init(&nu_soft_i2c_cfg[i]); - - result = rt_i2c_bit_add_bus(&nu_soft_i2c_obj[i].soft_i2c_bus, nu_soft_i2c_cfg[i].bus_name); - RT_ASSERT(result == RT_EOK); - - nu_soft_i2c_bus_unlock(&nu_soft_i2c_cfg[i]); - - LOG_D("software simulation %s init done, pin scl: %d, pin sda %d", - nu_soft_i2c_cfg[i].bus_name, - nu_soft_i2c_cfg[i].scl, - nu_soft_i2c_cfg[i].sda); - } - - return 0; -} -INIT_DEVICE_EXPORT(rt_soft_i2c_init); - -#endif //#if (defined(BSP_USING_SOFT_I2C) && defined(RT_USING_I2C_BITOPS) && defined(RT_USING_I2C) && defined(RT_USING_PIN)) diff --git a/bsp/nuvoton/libraries/n9h30/rtt_port/drv_softi2c.c b/bsp/nuvoton/libraries/n9h30/rtt_port/drv_softi2c.c deleted file mode 100644 index 8defbe38ebb..00000000000 --- a/bsp/nuvoton/libraries/n9h30/rtt_port/drv_softi2c.c +++ /dev/null @@ -1,238 +0,0 @@ -/**************************************************************************//** -* -* @copyright (C) 2020 Nuvoton Technology Corp. All rights reserved. -* -* SPDX-License-Identifier: Apache-2.0 -* -* Change Logs: -* Date Author Notes -* 2020-12-12 Wayne First version -* -******************************************************************************/ - -#include - -#if (defined(BSP_USING_SOFT_I2C) && defined(RT_USING_I2C_BITOPS) && defined(RT_USING_I2C) && defined(RT_USING_PIN)) - -#include -#include -#include -#include "NuMicro.h" -#include "drv_sys.h" - -/* Private define ---------------------------------------------------------------*/ -#define LOG_TAG "drv.softi2c" -#define DBG_ENABLE -#define DBG_SECTION_NAME LOG_TAG -#define DBG_LEVEL DBG_INFO -#include - -#ifdef BSP_USING_SOFT_I2C0 -#define NU_SOFT_I2C0_BUS_CONFIG \ - { \ - .scl = BSP_SOFT_I2C0_SCL_PIN, \ - .sda = BSP_SOFT_I2C0_SDA_PIN, \ - .bus_name = "softi2c0", \ - } -#endif - -#ifdef BSP_USING_SOFT_I2C1 -#define NU_SOFT_I2C1_BUS_CONFIG \ - { \ - .scl = BSP_SOFT_I2C1_SCL_PIN, \ - .sda = BSP_SOFT_I2C1_SDA_PIN, \ - .bus_name = "softi2c1", \ - } -#endif - -#if (!defined(BSP_USING_SOFT_I2C0) && !defined(BSP_USING_SOFT_I2C1)) - #error "Please define at least one BSP_USING_SOFT_I2Cx" - /* this driver can be disabled at menuconfig ? RT-Thread Components ? Device Drivers */ -#endif - -/* Private typedef --------------------------------------------------------------*/ -/* soft i2c config class */ -struct nu_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; -/* soft i2c driver class */ -struct nu_soft_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device soft_i2c_bus; -}; - -/* Private functions ------------------------------------------------------------*/ -static void nu_soft_i2c_udelay(rt_uint32_t us); -static void nu_soft_i2c_set_sda(void *data, rt_int32_t state); -static void nu_soft_i2c_set_scl(void *data, rt_int32_t state); -static rt_int32_t nu_soft_i2c_get_sda(void *data); -static rt_int32_t nu_soft_i2c_get_scl(void *data); - -/* Private variables ------------------------------------------------------------*/ -static const struct nu_soft_i2c_config nu_soft_i2c_cfg[] = -{ -#ifdef BSP_USING_SOFT_I2C0 - NU_SOFT_I2C0_BUS_CONFIG, -#endif -#ifdef BSP_USING_SOFT_I2C1 - NU_SOFT_I2C1_BUS_CONFIG, -#endif -}; - -static struct nu_soft_i2c nu_soft_i2c_obj[sizeof(nu_soft_i2c_cfg) / sizeof(nu_soft_i2c_cfg[0])]; - -static const struct rt_i2c_bit_ops nu_soft_i2c_bit_ops = -{ - .data = RT_NULL, - .set_sda = nu_soft_i2c_set_sda, - .set_scl = nu_soft_i2c_set_scl, - .get_sda = nu_soft_i2c_get_sda, - .get_scl = nu_soft_i2c_get_scl, - .udelay = nu_soft_i2c_udelay, - .delay_us = 1, - .timeout = 100 -}; - -/* Functions define ------------------------------------------------------------*/ - -/** - * The time delay function. - * - * @param microseconds. - */ -static void nu_soft_i2c_udelay(rt_uint32_t us) -{ - rt_hw_us_delay(us); -} - -/** - * This function initializes the soft i2c pin. - * - * @param soft i2c config class. - */ -static void nu_soft_i2c_gpio_init(const struct nu_soft_i2c_config *cfg) -{ - rt_pin_mode(cfg->scl, PIN_MODE_OUTPUT); - rt_pin_mode(cfg->sda, PIN_MODE_OUTPUT); - - rt_pin_write(cfg->scl, PIN_HIGH); - rt_pin_write(cfg->sda, PIN_HIGH); -} - -/** - * if i2c is locked, this function will unlock it - * - * @param soft i2c config class - * - * @return RT_EOK indicates successful unlock. - */ -static rt_err_t nu_soft_i2c_bus_unlock(const struct nu_soft_i2c_config *cfg) -{ - rt_int32_t i = 0; - - rt_pin_mode(cfg->sda, PIN_MODE_INPUT); - rt_pin_mode(cfg->scl, PIN_MODE_OUTPUT); - - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - while (i++ < 9) - { - rt_pin_write(cfg->scl, PIN_HIGH); - nu_soft_i2c_udelay(100); - rt_pin_write(cfg->scl, PIN_LOW); - nu_soft_i2c_udelay(100); - } - } - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - return -RT_ERROR; - } - - return RT_EOK; -} - -/** - * This function sets the sda pin. - * - * @param soft i2c config class. - * @param The sda pin state. - */ -static void nu_soft_i2c_set_sda(void *data, rt_int32_t state) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - - rt_pin_mode(cfg->sda, PIN_MODE_OUTPUT); - rt_pin_write(cfg->sda, state ? PIN_HIGH : PIN_LOW); -} - -/** - * This function sets the scl pin. - * - * @param soft i2c config class. - * @param The scl pin state. - */ -static void nu_soft_i2c_set_scl(void *data, rt_int32_t state) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - - rt_pin_mode(cfg->scl, PIN_MODE_OUTPUT); - rt_pin_write(cfg->scl, state ? PIN_HIGH : PIN_LOW); -} - -/** - * This function gets the sda pin state. - * - * @param The sda pin state. - */ -static rt_int32_t nu_soft_i2c_get_sda(void *data) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - - rt_pin_mode(cfg->sda, PIN_MODE_INPUT); - return rt_pin_read(cfg->sda); -} - -/** - * This function gets the scl pin state. - * - * @param The scl pin state. - */ -static rt_int32_t nu_soft_i2c_get_scl(void *data) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - - rt_pin_mode(cfg->scl, PIN_MODE_INPUT); - return rt_pin_read(cfg->scl); -} - -/* Soft I2C initialization function */ -int rt_soft_i2c_init(void) -{ - rt_size_t obj_num = sizeof(nu_soft_i2c_obj) / sizeof(struct nu_soft_i2c); - rt_err_t result; - - for (int i = 0; i < obj_num; i++) - { - nu_soft_i2c_obj[i].ops = nu_soft_i2c_bit_ops; - nu_soft_i2c_obj[i].ops.data = (void *)&nu_soft_i2c_cfg[i]; - nu_soft_i2c_obj[i].soft_i2c_bus.priv = &nu_soft_i2c_obj[i].ops; - nu_soft_i2c_gpio_init(&nu_soft_i2c_cfg[i]); - result = rt_i2c_bit_add_bus(&nu_soft_i2c_obj[i].soft_i2c_bus, nu_soft_i2c_cfg[i].bus_name); - RT_ASSERT(result == RT_EOK); - nu_soft_i2c_bus_unlock(&nu_soft_i2c_cfg[i]); - - LOG_I("software simulation %s init done, pin scl: %d, pin sda %d", - nu_soft_i2c_cfg[i].bus_name, - nu_soft_i2c_cfg[i].scl, - nu_soft_i2c_cfg[i].sda); - } - - return 0; -} -INIT_DEVICE_EXPORT(rt_soft_i2c_init); - -#endif //#if (defined(BSP_USING_SOFT_I2C) && defined(RT_USING_I2C_BITOPS) && defined(RT_USING_I2C) && defined(RT_USING_PIN)) diff --git a/bsp/nuvoton/libraries/nuc980/rtt_port/drv_softi2c.c b/bsp/nuvoton/libraries/nuc980/rtt_port/drv_softi2c.c deleted file mode 100644 index adc62cb4c18..00000000000 --- a/bsp/nuvoton/libraries/nuc980/rtt_port/drv_softi2c.c +++ /dev/null @@ -1,229 +0,0 @@ -/**************************************************************************//** -* -* @copyright (C) 2020 Nuvoton Technology Corp. All rights reserved. -* -* SPDX-License-Identifier: Apache-2.0 -* -* Change Logs: -* Date Author Notes -* 2020-12-12 Wayne First version -* -******************************************************************************/ - -#include - -#if (defined(BSP_USING_SOFT_I2C) && defined(RT_USING_I2C_BITOPS) && defined(RT_USING_I2C) && defined(RT_USING_PIN)) - -#include -#include -#include -#include "NuMicro.h" -#include "drv_sys.h" - -/* Private define ---------------------------------------------------------------*/ -#define LOG_TAG "drv.softi2c" -#define DBG_ENABLE -#define DBG_SECTION_NAME LOG_TAG -#define DBG_LEVEL DBG_INFO -#include - -#ifdef BSP_USING_SOFT_I2C0 -#define NU_SOFT_I2C0_BUS_CONFIG \ - { \ - .scl = BSP_SOFT_I2C0_SCL_PIN, \ - .sda = BSP_SOFT_I2C0_SDA_PIN, \ - .bus_name = "softi2c0", \ - } -#endif - -#ifdef BSP_USING_SOFT_I2C1 -#define NU_SOFT_I2C1_BUS_CONFIG \ - { \ - .scl = BSP_SOFT_I2C1_SCL_PIN, \ - .sda = BSP_SOFT_I2C1_SDA_PIN, \ - .bus_name = "softi2c1", \ - } -#endif - -#if (!defined(BSP_USING_SOFT_I2C0) && !defined(BSP_USING_SOFT_I2C1)) - #error "Please define at least one BSP_USING_SOFT_I2Cx" - /* this driver can be disabled at menuconfig ? RT-Thread Components ? Device Drivers */ -#endif - -/* Private typedef --------------------------------------------------------------*/ -/* soft i2c config class */ -struct nu_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; -/* soft i2c driver class */ -struct nu_soft_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device soft_i2c_bus; -}; - -/* Private functions ------------------------------------------------------------*/ -static void nu_soft_i2c_udelay(rt_uint32_t us); -static void nu_soft_i2c_set_sda(void *data, rt_int32_t state); -static void nu_soft_i2c_set_scl(void *data, rt_int32_t state); -static rt_int32_t nu_soft_i2c_get_sda(void *data); -static rt_int32_t nu_soft_i2c_get_scl(void *data); - -/* Private variables ------------------------------------------------------------*/ -static const struct nu_soft_i2c_config nu_soft_i2c_cfg[] = -{ -#ifdef BSP_USING_SOFT_I2C0 - NU_SOFT_I2C0_BUS_CONFIG, -#endif -#ifdef BSP_USING_SOFT_I2C1 - NU_SOFT_I2C1_BUS_CONFIG, -#endif -}; - -static struct nu_soft_i2c nu_soft_i2c_obj[sizeof(nu_soft_i2c_cfg) / sizeof(nu_soft_i2c_cfg[0])]; - -static const struct rt_i2c_bit_ops nu_soft_i2c_bit_ops = -{ - .data = RT_NULL, - .set_sda = nu_soft_i2c_set_sda, - .set_scl = nu_soft_i2c_set_scl, - .get_sda = nu_soft_i2c_get_sda, - .get_scl = nu_soft_i2c_get_scl, - .udelay = nu_soft_i2c_udelay, - .delay_us = 1, - .timeout = 100 -}; - -/* Functions define ------------------------------------------------------------*/ - -/** - * The time delay function. - * - * @param microseconds. - */ -static void nu_soft_i2c_udelay(rt_uint32_t us) -{ - rt_hw_us_delay(us); -} - -/** - * This function initializes the soft i2c pin. - * - * @param soft i2c config class. - */ -static void nu_soft_i2c_gpio_init(const struct nu_soft_i2c_config *cfg) -{ - 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); -} - -/** - * if i2c is locked, this function will unlock it - * - * @param soft i2c config class - * - * @return RT_EOK indicates successful unlock. - */ -static rt_err_t nu_soft_i2c_bus_unlock(const struct nu_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); - nu_soft_i2c_udelay(100); - rt_pin_write(cfg->scl, PIN_LOW); - nu_soft_i2c_udelay(100); - } - } - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - return -RT_ERROR; - } - - return RT_EOK; -} - -/** - * This function sets the sda pin. - * - * @param soft i2c config class. - * @param The sda pin state. - */ -static void nu_soft_i2c_set_sda(void *data, rt_int32_t state) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - - rt_pin_write(cfg->sda, state ? PIN_HIGH : PIN_LOW); -} - -/** - * This function sets the scl pin. - * - * @param soft i2c config class. - * @param The scl pin state. - */ -static void nu_soft_i2c_set_scl(void *data, rt_int32_t state) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - - rt_pin_write(cfg->scl, state ? PIN_HIGH : PIN_LOW); -} - -/** - * This function gets the sda pin state. - * - * @param The sda pin state. - */ -static rt_int32_t nu_soft_i2c_get_sda(void *data) -{ - struct nu_soft_i2c_config *cfg = (struct nu_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 nu_soft_i2c_get_scl(void *data) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - return rt_pin_read(cfg->scl); -} - -/* Soft I2C initialization function */ -int rt_soft_i2c_init(void) -{ - rt_size_t obj_num = sizeof(nu_soft_i2c_obj) / sizeof(struct nu_soft_i2c); - rt_err_t result; - - for (int i = 0; i < obj_num; i++) - { - nu_soft_i2c_obj[i].ops = nu_soft_i2c_bit_ops; - nu_soft_i2c_obj[i].ops.data = (void *)&nu_soft_i2c_cfg[i]; - nu_soft_i2c_obj[i].soft_i2c_bus.priv = &nu_soft_i2c_obj[i].ops; - nu_soft_i2c_gpio_init(&nu_soft_i2c_cfg[i]); - result = rt_i2c_bit_add_bus(&nu_soft_i2c_obj[i].soft_i2c_bus, nu_soft_i2c_cfg[i].bus_name); - RT_ASSERT(result == RT_EOK); - nu_soft_i2c_bus_unlock(&nu_soft_i2c_cfg[i]); - - LOG_D("software simulation %s init done, pin scl: %d, pin sda %d", - nu_soft_i2c_cfg[i].bus_name, - nu_soft_i2c_cfg[i].scl, - nu_soft_i2c_cfg[i].sda); - } - - return 0; -} -INIT_DEVICE_EXPORT(rt_soft_i2c_init); - -#endif //#if (defined(BSP_USING_SOFT_I2C) && defined(RT_USING_I2C_BITOPS) && defined(RT_USING_I2C) && defined(RT_USING_PIN)) diff --git a/bsp/raspberry-pico/board/Kconfig b/bsp/raspberry-pico/board/Kconfig index b4201827b76..be1461c885a 100644 --- a/bsp/raspberry-pico/board/Kconfig +++ b/bsp/raspberry-pico/board/Kconfig @@ -128,28 +128,6 @@ menu "On-chip Peripheral Drivers" endif endif - menuconfig BSP_USING_SOFT_I2C - bool "Enable I2C BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_SOFT_I2C - config BSP_USING_SOFT_I2C1 - bool "Enable I2C1 Bus (software simulation)" - default n - if BSP_USING_SOFT_I2C1 - config BSP_SOFT_I2C1_SCL_PIN - int "i2c1 scl pin number (GP)" - range 0 28 - default 2 - config BSP_SOFT_I2C1_SDA_PIN - int "I2C1 sda pin number (GP)" - range 0 28 - default 3 - endif - endif - menuconfig BSP_USING_SOFT_SPI bool "Enable soft SPI BUS" default n diff --git a/bsp/raspberry-pico/drivers/SConscript b/bsp/raspberry-pico/drivers/SConscript index dbd1b4f6544..62ea51f7859 100644 --- a/bsp/raspberry-pico/drivers/SConscript +++ b/bsp/raspberry-pico/drivers/SConscript @@ -10,9 +10,6 @@ if GetDepend('BSP_USING_PIN'): if GetDepend('BSP_USING_UART'): src += ['drv_uart.c'] -if GetDepend('BSP_USING_SOFT_I2C'): - src += ['drv_soft_i2c.c'] - if GetDepend('BSP_USING_SOFT_SPI'): src += ['drv_soft_spi.c'] diff --git a/bsp/raspberry-pico/drivers/drv_soft_i2c.c b/bsp/raspberry-pico/drivers/drv_soft_i2c.c deleted file mode 100644 index bbda17c61c5..00000000000 --- a/bsp/raspberry-pico/drivers/drv_soft_i2c.c +++ /dev/null @@ -1,189 +0,0 @@ -/* - * Copyright (c) 2006-2023, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2023/06/01 chushicheng first version - */ -#include "drv_soft_i2c.h" - -#ifdef BSP_USING_SOFT_I2C -#define DBG_LEVEL DBG_LOG -#include -#define LOG_TAG "DRV.I2C" - -static const struct pico_soft_i2c_config soft_i2c_config[] = -{ -#ifdef BSP_USING_SOFT_I2C1 - I2C1_BUS_CONFIG, -#endif -}; - -static struct pico_i2c i2c_obj[sizeof(soft_i2c_config) / sizeof(soft_i2c_config[0])]; - -/** - * This function initializes the i2c pin. - * - * @param pico i2c dirver class. - */ -static void pico_i2c_gpio_init(struct pico_i2c *i2c) -{ - struct pico_soft_i2c_config* cfg = (struct pico_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 pico_i2c_pin_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct pico_i2c); - - for(rt_size_t i = 0; i < obj_num; i++) - { - pico_i2c_gpio_init(&i2c_obj[i]); - } -} - -/** - * This function sets the sda pin. - * - * @param pico config class. - * @param The sda pin state. - */ -static void pico_set_sda(void *data, rt_int32_t state) -{ - struct pico_soft_i2c_config* cfg = (struct pico_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 pico config class. - * @param The scl pin state. - */ -static void pico_set_scl(void *data, rt_int32_t state) -{ - struct pico_soft_i2c_config* cfg = (struct pico_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 pico_get_sda(void *data) -{ - struct pico_soft_i2c_config* cfg = (struct pico_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 pico_get_scl(void *data) -{ - struct pico_soft_i2c_config* cfg = (struct pico_soft_i2c_config*)data; - return rt_pin_read(cfg->scl); -} - -/** - * The time delay function. - * - * @param microseconds. - */ -static void pico_udelay(rt_uint32_t us) -{ - busy_wait_us_32(us); -} - -static const struct rt_i2c_bit_ops pico_bit_ops_default = -{ - .data = RT_NULL, - .pin_init = pico_i2c_pin_init, - .set_sda = pico_set_sda, - .set_scl = pico_set_scl, - .get_sda = pico_get_sda, - .get_scl = pico_get_scl, - .udelay = pico_udelay, - .delay_us = 1, - .timeout = 100, - .i2c_pin_init_flag = RT_FALSE -}; - -/** - * if i2c is locked, this function will unlock it - * - * @param pico config class - * - * @return RT_EOK indicates successful unlock. - */ -static rt_err_t pico_i2c_bus_unlock(const struct pico_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); - pico_udelay(100); - rt_pin_write(cfg->scl, PIN_LOW); - pico_udelay(100); - } - } - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - return -RT_ERROR; - } - - return RT_EOK; -} - -/* I2C initialization function */ -int rt_soft_i2c_init(void) -{ - rt_err_t result; - - for (rt_size_t i = 0; i < sizeof(i2c_obj) / sizeof(struct pico_i2c); i++) - { - i2c_obj[i].ops = pico_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); - pico_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_DEVICE_EXPORT(rt_soft_i2c_init); - -#endif /* BSP_USING_SOFT_I2C */ diff --git a/bsp/raspberry-pico/drivers/drv_soft_i2c.h b/bsp/raspberry-pico/drivers/drv_soft_i2c.h deleted file mode 100644 index b5e663b673e..00000000000 --- a/bsp/raspberry-pico/drivers/drv_soft_i2c.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2006-2023, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2023/06/01 chushicheng first version - */ - -#ifndef __DRV_SOFT_I2C__ -#define __DRV_SOFT_I2C__ - -#include -#include "drv_gpio.h" -#include "board.h" - -#ifdef BSP_USING_SOFT_I2C -/* pico i2c dirver class */ -struct pico_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device i2c_bus; -}; - -/* pico config class */ -struct pico_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; - -#ifdef BSP_USING_SOFT_I2C1 -#define I2C1_BUS_CONFIG \ - { \ - .scl = BSP_SOFT_I2C1_SCL_PIN, \ - .sda = BSP_SOFT_I2C1_SDA_PIN, \ - .bus_name = "i2c1", \ - } -#endif - -int rt_soft_i2c_init(void); - -#endif /* BSP_USING_SOFT_I2C */ -#endif diff --git a/bsp/renesas/ra2l1-cpk/board/Kconfig b/bsp/renesas/ra2l1-cpk/board/Kconfig index 5a7b286e5d6..9deb654ac98 100644 --- a/bsp/renesas/ra2l1-cpk/board/Kconfig +++ b/bsp/renesas/ra2l1-cpk/board/Kconfig @@ -170,30 +170,6 @@ menu "Hardware Drivers Config" default n endif - menuconfig BSP_USING_SOFT_I2C - bool "Enable software I2C bus" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - default n - if BSP_USING_SOFT_I2C - config BSP_USING_SOFT_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 Bus (software simulation)" - default n - if BSP_USING_I2C1 - comment "Please refer to the 'bsp_io.h' file to configure the pins" - config BSP_I2C1_SCL_PIN - hex "i2c1 scl pin number (hex)" - range 0x0000 0xFFFF - default 0x050C - config BSP_I2C1_SDA_PIN - hex "i2c1 sda pin number (hex)" - range 0x0000 0xFFFF - default 0x050B - endif - endif - menuconfig BSP_USING_SPI bool "Enable SPI BUS" default n diff --git a/bsp/renesas/ra6m3-ek/board/Kconfig b/bsp/renesas/ra6m3-ek/board/Kconfig index 5d87aa3912a..34a5c3689d3 100644 --- a/bsp/renesas/ra6m3-ek/board/Kconfig +++ b/bsp/renesas/ra6m3-ek/board/Kconfig @@ -102,30 +102,6 @@ menu "Hardware Drivers Config" default n endif - menuconfig BSP_USING_SOFT_I2C - bool "Enable software I2C bus" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - default n - if BSP_USING_SOFT_I2C - config BSP_USING_SOFT_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 Bus (software simulation)" - default n - if BSP_USING_I2C1 - comment "Please refer to the 'bsp_io.h' file to configure the pins" - config BSP_I2C1_SCL_PIN - hex "i2c1 scl pin number (hex)" - range 0x0000 0xFFFF - default 0x050C - config BSP_I2C1_SDA_PIN - hex "i2c1 sda pin number (hex)" - range 0x0000 0xFFFF - default 0x050B - endif - endif - menuconfig BSP_USING_PWM bool "Enable PWM" default n diff --git a/bsp/renesas/ra6m4-cpk/board/Kconfig b/bsp/renesas/ra6m4-cpk/board/Kconfig index 2ad8396b607..8ecf6669b66 100644 --- a/bsp/renesas/ra6m4-cpk/board/Kconfig +++ b/bsp/renesas/ra6m4-cpk/board/Kconfig @@ -330,30 +330,6 @@ menu "Hardware Drivers Config" bool "Enable Hardware I2C1 BUS" default n endif - - menuconfig BSP_USING_SOFT_I2C - bool "Enable software I2C bus" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - default n - if BSP_USING_SOFT_I2C - config BSP_USING_SOFT_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 Bus (software simulation)" - default n - if BSP_USING_I2C1 - comment "Please refer to the 'bsp_io.h' file to configure the pins" - config BSP_I2C1_SCL_PIN - hex "i2c1 scl pin number (hex)" - range 0x0000 0xFFFF - default 0x050C - config BSP_I2C1_SDA_PIN - hex "i2c1 sda pin number (hex)" - range 0x0000 0xFFFF - default 0x050B - endif - endif menuconfig BSP_USING_SPI bool "Enable SPI BUS" diff --git a/bsp/renesas/ra6m4-iot/board/Kconfig b/bsp/renesas/ra6m4-iot/board/Kconfig index ead7d11a728..0cac09ce0e7 100644 --- a/bsp/renesas/ra6m4-iot/board/Kconfig +++ b/bsp/renesas/ra6m4-iot/board/Kconfig @@ -302,30 +302,6 @@ menu "Hardware Drivers Config" default n endif - menuconfig BSP_USING_SOFT_I2C - bool "Enable software I2C bus" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - default n - if BSP_USING_SOFT_I2C - config BSP_USING_SOFT_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 Bus (software simulation)" - default n - if BSP_USING_I2C1 - comment "Please refer to the 'bsp_io.h' file to configure the pins" - config BSP_I2C1_SCL_PIN - hex "i2c1 scl pin number (hex)" - range 0x0000 0xFFFF - default 0x050C - config BSP_I2C1_SDA_PIN - hex "i2c1 sda pin number (hex)" - range 0x0000 0xFFFF - default 0x050B - endif - endif - menuconfig BSP_USING_SPI bool "Enable SPI BUS" default n diff --git a/bsp/renesas/ra8d1-ek/board/Kconfig b/bsp/renesas/ra8d1-ek/board/Kconfig index 8960898e7be..1ec8ab9ee85 100644 --- a/bsp/renesas/ra8d1-ek/board/Kconfig +++ b/bsp/renesas/ra8d1-ek/board/Kconfig @@ -462,30 +462,6 @@ menu "Hardware Drivers Config" default n endif - menuconfig BSP_USING_SOFT_I2C - bool "Enable software I2C bus" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - default n - if BSP_USING_SOFT_I2C - config BSP_USING_SOFT_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 Bus (software simulation)" - default n - if BSP_USING_I2C1 - comment "Please refer to the 'bsp_io.h' file to configure the pins" - config BSP_I2C1_SCL_PIN - hex "i2c1 scl pin number (hex)" - range 0x0000 0xFFFF - default 0x050C - config BSP_I2C1_SDA_PIN - hex "i2c1 sda pin number (hex)" - range 0x0000 0xFFFF - default 0x050B - endif - endif - menuconfig BSP_USING_SDHI bool "Enable SDHI" default n diff --git a/bsp/renesas/ra8d1-vision-board/board/Kconfig b/bsp/renesas/ra8d1-vision-board/board/Kconfig index 841f8c06929..21400a7eebf 100644 --- a/bsp/renesas/ra8d1-vision-board/board/Kconfig +++ b/bsp/renesas/ra8d1-vision-board/board/Kconfig @@ -509,30 +509,6 @@ menu "Hardware Drivers Config" default n endif - menuconfig BSP_USING_SOFT_I2C - bool "Enable software I2C bus" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - default n - if BSP_USING_SOFT_I2C - config BSP_USING_SOFT_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 Bus (software simulation)" - default n - if BSP_USING_I2C1 - comment "Please refer to the 'bsp_io.h' file to configure the pins" - config BSP_I2C1_SCL_PIN - hex "i2c1 scl pin number (hex)" - range 0x0000 0xFFFF - default 0x0B03 - config BSP_I2C1_SDA_PIN - hex "i2c1 sda pin number (hex)" - range 0x0000 0xFFFF - default 0x050E - endif - endif - menuconfig BSP_USING_SDHI bool "Enable SDHI" default n diff --git a/bsp/renesas/ra8m1-ek/board/Kconfig b/bsp/renesas/ra8m1-ek/board/Kconfig index 4bef5a2d0b8..b6a4606a46b 100644 --- a/bsp/renesas/ra8m1-ek/board/Kconfig +++ b/bsp/renesas/ra8m1-ek/board/Kconfig @@ -446,30 +446,6 @@ menu "Hardware Drivers Config" default n endif - menuconfig BSP_USING_SOFT_I2C - bool "Enable software I2C bus" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - default n - if BSP_USING_SOFT_I2C - config BSP_USING_SOFT_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 Bus (software simulation)" - default n - if BSP_USING_I2C1 - comment "Please refer to the 'bsp_io.h' file to configure the pins" - config BSP_I2C1_SCL_PIN - hex "i2c1 scl pin number (hex)" - range 0x0000 0xFFFF - default 0x050C - config BSP_I2C1_SDA_PIN - hex "i2c1 sda pin number (hex)" - range 0x0000 0xFFFF - default 0x050B - endif - endif - menuconfig BSP_USING_ADC bool "Enable ADC" default n diff --git a/bsp/renesas/rzn2l_rsk/board/Kconfig b/bsp/renesas/rzn2l_rsk/board/Kconfig index 994910cf14a..e67e739b216 100644 --- a/bsp/renesas/rzn2l_rsk/board/Kconfig +++ b/bsp/renesas/rzn2l_rsk/board/Kconfig @@ -107,21 +107,6 @@ menu "Hardware Drivers Config" bool "Enable Hardware I2C1 BUS" default n endif - if !BSP_USING_HW_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default y - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - hex "i2c1 scl pin number" - range 0x0000 0x0B0F - default 0x0B03 - config BSP_I2C1_SDA_PIN - hex "I2C1 sda pin number" - range 0x0000 0x0B0F - default 0x050E - endif - endif endif menuconfig BSP_USING_SPI diff --git a/bsp/renesas/rzt2m_rsk/board/Kconfig b/bsp/renesas/rzt2m_rsk/board/Kconfig index bdcc5328616..23a43b722c4 100644 --- a/bsp/renesas/rzt2m_rsk/board/Kconfig +++ b/bsp/renesas/rzt2m_rsk/board/Kconfig @@ -72,30 +72,6 @@ menu "Hardware Drivers Config" default n endif - menuconfig BSP_USING_SOFT_I2C - bool "Enable software I2C bus" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - default n - if BSP_USING_SOFT_I2C - config BSP_USING_SOFT_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 Bus (software simulation)" - default n - if BSP_USING_I2C1 - comment "Please refer to the 'bsp_io.h' file to configure the pins" - config BSP_I2C1_SCL_PIN - hex "i2c1 scl pin number (hex)" - range 0x0000 0xFFFF - default 0x0B03 - config BSP_I2C1_SDA_PIN - hex "i2c1 sda pin number (hex)" - range 0x0000 0xFFFF - default 0x050E - endif - endif - menuconfig BSP_USING_SPI bool "Enable SPI BUS" default n diff --git a/bsp/stm32/libraries/HAL_Drivers/drivers/SConscript b/bsp/stm32/libraries/HAL_Drivers/drivers/SConscript index 3a836bd4279..e107973a89a 100644 --- a/bsp/stm32/libraries/HAL_Drivers/drivers/SConscript +++ b/bsp/stm32/libraries/HAL_Drivers/drivers/SConscript @@ -31,10 +31,6 @@ if GetDepend(['RT_USING_QSPI']): if GetDepend('RT_USING_SPI_BITOPS'): src += ['drv_soft_spi.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(['RT_USING_I2C']): if GetDepend('BSP_USING_HARD_I2C1') or GetDepend('BSP_USING_HARD_I2C2') or GetDepend('BSP_USING_HARD_I2C3') or GetDepend('BSP_USING_HARD_I2C4'): diff --git a/bsp/stm32/libraries/HAL_Drivers/drivers/drv_soft_i2c.c b/bsp/stm32/libraries/HAL_Drivers/drivers/drv_soft_i2c.c deleted file mode 100644 index 37ffde2d40b..00000000000 --- a/bsp/stm32/libraries/HAL_Drivers/drivers/drv_soft_i2c.c +++ /dev/null @@ -1,196 +0,0 @@ -/* - * Copyright (c) 2006-2023, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2018-11-08 balanceTWK first version - * 2023-06-27 Meco Man replace stm32_udelay as rt_hw_us_delay - */ - -#include "drv_soft_i2c.h" -#include "drv_config.h" - -#if defined(BSP_USING_I2C1) || defined(BSP_USING_I2C2) || defined(BSP_USING_I2C3) || defined(BSP_USING_I2C4) || defined(BSP_USING_I2C5) - - -//#define DRV_DEBUG -#define LOG_TAG "drv.i2c.sw" -#include - -static const struct stm32_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 -#ifdef BSP_USING_I2C4 - I2C4_BUS_CONFIG, -#endif -#ifdef BSP_USING_I2C5 - I2C5_BUS_CONFIG, -#endif -}; - -static struct stm32_i2c i2c_obj[sizeof(soft_i2c_config) / sizeof(soft_i2c_config[0])]; - -/** - * This function initializes the i2c pin. - * - * @param Stm32 i2c dirver class. - */ -static void stm32_i2c_gpio_init(struct stm32_i2c *i2c) -{ - struct stm32_soft_i2c_config* cfg = (struct stm32_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 stm32_i2c_pin_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct stm32_i2c); - - for(rt_size_t i = 0; i < obj_num; i++) - { - stm32_i2c_gpio_init(&i2c_obj[i]); - } -} - -/** - * This function sets the sda pin. - * - * @param Stm32 config class. - * @param The sda pin state. - */ -static void stm32_set_sda(void *data, rt_int32_t state) -{ - struct stm32_soft_i2c_config* cfg = (struct stm32_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 Stm32 config class. - * @param The scl pin state. - */ -static void stm32_set_scl(void *data, rt_int32_t state) -{ - struct stm32_soft_i2c_config* cfg = (struct stm32_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 stm32_get_sda(void *data) -{ - struct stm32_soft_i2c_config* cfg = (struct stm32_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 stm32_get_scl(void *data) -{ - struct stm32_soft_i2c_config* cfg = (struct stm32_soft_i2c_config*)data; - return rt_pin_read(cfg->scl); -} - -static const struct rt_i2c_bit_ops stm32_bit_ops_default = -{ - .data = RT_NULL, - .pin_init = stm32_i2c_pin_init, - .set_sda = stm32_set_sda, - .set_scl = stm32_set_scl, - .get_sda = stm32_get_sda, - .get_scl = stm32_get_scl, - .udelay = rt_hw_us_delay, - .delay_us = 1, - .timeout = 100, - .i2c_pin_init_flag = RT_FALSE -}; - -/** - * if i2c is locked, this function will unlock it - * - * @param stm32 config class - * - * @return RT_EOK indicates successful unlock. - */ -static rt_err_t stm32_i2c_bus_unlock(const struct stm32_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); - rt_hw_us_delay(100); - rt_pin_write(cfg->scl, PIN_LOW); - rt_hw_us_delay(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_err_t result; - - for (rt_size_t i = 0; i < sizeof(i2c_obj) / sizeof(struct stm32_i2c); i++) - { - i2c_obj[i].ops = stm32_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); - stm32_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 /* defined(BSP_USING_I2C1) || defined(BSP_USING_I2C2) || defined(BSP_USING_I2C3) || defined(BSP_USING_I2C4) */ diff --git a/bsp/stm32/libraries/HAL_Drivers/drivers/drv_soft_i2c.h b/bsp/stm32/libraries/HAL_Drivers/drivers/drv_soft_i2c.h deleted file mode 100644 index 40c77f566dd..00000000000 --- a/bsp/stm32/libraries/HAL_Drivers/drivers/drv_soft_i2c.h +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright (c) 2006-2023, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2018-11-08 balanceTWK first version - */ - -#ifndef __DRV_I2C__ -#define __DRV_I2C__ - -#include -#include -#include - -/* stm32 config class */ -struct stm32_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; -/* stm32 i2c dirver class */ -struct stm32_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 - -#ifdef BSP_USING_I2C4 -#define I2C4_BUS_CONFIG \ - { \ - .scl = BSP_I2C4_SCL_PIN, \ - .sda = BSP_I2C4_SDA_PIN, \ - .bus_name = "i2c4", \ - } -#endif - -#ifdef BSP_USING_I2C5 -#define I2C5_BUS_CONFIG \ - { \ - .scl = BSP_I2C5_SCL_PIN, \ - .sda = BSP_I2C5_SDA_PIN, \ - .bus_name = "i2c5", \ - } -#endif -int rt_hw_i2c_init(void); - -#endif diff --git a/bsp/stm32/stm32f072-st-nucleo/board/Kconfig b/bsp/stm32/stm32f072-st-nucleo/board/Kconfig index 2afefb45300..379ea6379be 100644 --- a/bsp/stm32/stm32f072-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32f072-st-nucleo/board/Kconfig @@ -25,8 +25,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM16_CH1 select BSP_USING_PWM17 select BSP_USING_PWM17_CH1 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select BSP_USING_SPI select BSP_USING_SPI1 select BSP_SPI1_TX_USING_DMA @@ -140,30 +141,41 @@ menu "On-chip Peripheral Drivers" endif endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS" + config RT_USING_I2C + bool 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 (User I2C)" + if RT_USING_I2C + config RT_USING_SOFT_I2C + bool "Enable software I2C BUS" default n - if BSP_USING_I2C1 - comment "Notice: PB9 --> 25; PB8 --> 24" - config BSP_I2C1_SCL_PIN - int "i2c1 SCL pin number" - range 1 176 - default 24 - config BSP_I2C1_SDA_PIN - int "i2c1 SDA pin number" - range 1 176 - default 25 + if RT_USING_SOFT_I2C + menuconfig RT_USING_SOFT_I2C1 + bool "Enable I2C1 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C1 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C1_SCL_PIN + int "i2c1 scl pin number" + range 1 176 + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "i2c1 sda pin number" + range 1 176 + default 25 + 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 endif - endif - + endif source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig" endmenu diff --git a/bsp/stm32/stm32f091-st-nucleo/board/Kconfig b/bsp/stm32/stm32f091-st-nucleo/board/Kconfig index d260d8cbb13..47e29cc0c24 100644 --- a/bsp/stm32/stm32f091-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32f091-st-nucleo/board/Kconfig @@ -63,24 +63,6 @@ menu "On-chip Peripheral Drivers" default n endif - - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 34 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 35 - endif - menuconfig BSP_USING_TIM bool "Enable timer" default n diff --git a/bsp/stm32/stm32f103-100ask-pro/board/Kconfig b/bsp/stm32/stm32f103-100ask-pro/board/Kconfig index 406253a971e..e4f07b3f791 100644 --- a/bsp/stm32/stm32f103-100ask-pro/board/Kconfig +++ b/bsp/stm32/stm32f103-100ask-pro/board/Kconfig @@ -33,8 +33,10 @@ menu "Onboard Peripheral Drivers" default n config BSP_USING_EEPROM - bool "Enable I2C EEPROM (i2c1)" - select BSP_USING_I2C1 + bool "Enable I2C EEPROM (i2c0)" + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C0 default n config BSP_USING_EXT_SRAM @@ -140,21 +142,40 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + config RT_USING_I2C + bool default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 175 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 175 - default 23 + if RT_USING_I2C + config RT_USING_SOFT_I2C + bool "Enable software I2C BUS" + default n + if RT_USING_SOFT_I2C + menuconfig RT_USING_SOFT_I2C0 + bool "Enable I2C0 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C0 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C0_SCL_PIN + int "i2c0 scl pin number" + range 0 175 + default 22 + config RT_SOFT_I2C0_SDA_PIN + int "i2c0 sda pin number" + range 0 175 + default 23 + 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 + endif endif menuconfig BSP_USING_TIM diff --git a/bsp/stm32/stm32f103-atk-nano/board/Kconfig b/bsp/stm32/stm32f103-atk-nano/board/Kconfig index e607afdb08f..cd65195177d 100644 --- a/bsp/stm32/stm32f103-atk-nano/board/Kconfig +++ b/bsp/stm32/stm32f103-atk-nano/board/Kconfig @@ -9,8 +9,10 @@ menu "Onboard Peripheral Drivers" default y config BSP_USING_EEPROM - bool "Enable I2C EEPROM (i2c1)" - select BSP_USING_I2C1 + bool "Enable I2C EEPROM (i2c0)" + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C0 default n config BSP_USING_SPI_FLASH @@ -142,21 +144,40 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + config RT_USING_I2C + bool default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - 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 + if RT_USING_I2C + config RT_USING_SOFT_I2C + bool "Enable software I2C BUS" + default n + if RT_USING_SOFT_I2C + menuconfig RT_USING_SOFT_I2C0 + bool "Enable I2C0 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C0 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C0_SCL_PIN + int "i2c0 scl pin number" + range 0 63 + default 22 + config RT_SOFT_I2C0_SDA_PIN + int "i2c0 sda pin number" + range 0 63 + default 23 + 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 + endif endif menuconfig BSP_USING_ADC diff --git a/bsp/stm32/stm32f103-atk-warshipv3/board/Kconfig b/bsp/stm32/stm32f103-atk-warshipv3/board/Kconfig index 43db0fe27c9..deb73bf4383 100644 --- a/bsp/stm32/stm32f103-atk-warshipv3/board/Kconfig +++ b/bsp/stm32/stm32f103-atk-warshipv3/board/Kconfig @@ -10,7 +10,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_EEPROM bool "Enable I2C EEPROM (i2c1)" - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C0 default n config BSP_USING_SPI_FLASH @@ -155,23 +157,41 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + config RT_USING_I2C + bool default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - 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 + if RT_USING_I2C + config RT_USING_SOFT_I2C + bool "Enable software I2C BUS" + default n + if RT_USING_SOFT_I2C + menuconfig RT_USING_SOFT_I2C0 + bool "Enable I2C0 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C0 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C0_SCL_PIN + int "i2c0 scl pin number" + range 0 63 + default 22 + config RT_SOFT_I2C0_SDA_PIN + int "i2c0 sda pin number" + range 0 63 + default 23 + 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 + endif endif - menuconfig BSP_USING_ADC bool "Enable ADC" default n diff --git a/bsp/stm32/stm32f103-blue-pill/board/Kconfig b/bsp/stm32/stm32f103-blue-pill/board/Kconfig index d46c29019a7..5ca72304b61 100644 --- a/bsp/stm32/stm32f103-blue-pill/board/Kconfig +++ b/bsp/stm32/stm32f103-blue-pill/board/Kconfig @@ -26,8 +26,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM3_CH2 select BSP_USING_PWM3_CH3 select BSP_USING_PWM3_CH4 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select BSP_USING_SPI select BSP_USING_SPI2 # select BSP_SPI2_TX_USING_DMA @@ -79,21 +80,40 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + config RT_USING_I2C + bool default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number (PB8)" - range 0 143 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number (PB9)" - range 0 143 - default 25 + if RT_USING_I2C + config RT_USING_SOFT_I2C + bool "Enable software I2C BUS" + default n + if RT_USING_SOFT_I2C + menuconfig RT_USING_SOFT_I2C1 + bool "Enable I2C1 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C1 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C1_SCL_PIN + int "i2c1 scl pin number" + range 0 143 + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "i2c1 sda pin number" + range 0 143 + default 25 + 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 + endif endif menuconfig BSP_USING_PWM diff --git a/bsp/stm32/stm32f103-dofly-M3S/board/Kconfig b/bsp/stm32/stm32f103-dofly-M3S/board/Kconfig index 892f1caf870..4332ea31959 100644 --- a/bsp/stm32/stm32f103-dofly-M3S/board/Kconfig +++ b/bsp/stm32/stm32f103-dofly-M3S/board/Kconfig @@ -28,8 +28,10 @@ menu "Onboard Peripheral Drivers" default n config BSP_USING_EEPROM - bool "Enable I2C EEPROM (i2c2)" - select BSP_USING_I2C2 + bool "Enable I2C EEPROM (i2c0)" + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C0 default n endmenu @@ -102,22 +104,40 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C2 - bool "Enable I2C2 BUS (software simulation)" + config RT_USING_I2C + bool default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C2 - comment "Notice: PB10 --> 26; PB11 --> 27" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 175 - default 26 - config BSP_I2C2_SDA_PIN - int "i2c2 sda pin number" - range 0 175 - default 27 + if RT_USING_I2C + config RT_USING_SOFT_I2C + bool "Enable software I2C BUS" + default n + if RT_USING_SOFT_I2C + menuconfig RT_USING_SOFT_I2C0 + bool "Enable I2C0 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C0 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C0_SCL_PIN + int "i2c0 scl pin number" + range 0 175 + default 26 + config RT_SOFT_I2C0_SDA_PIN + int "i2c0 sda pin number" + range 0 175 + default 27 + 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 + endif endif config BSP_USING_ON_CHIP_FLASH diff --git a/bsp/stm32/stm32f103-fire-arbitrary/board/Kconfig b/bsp/stm32/stm32f103-fire-arbitrary/board/Kconfig index 6b7d71ac02f..de0e287edff 100644 --- a/bsp/stm32/stm32f103-fire-arbitrary/board/Kconfig +++ b/bsp/stm32/stm32f103-fire-arbitrary/board/Kconfig @@ -45,8 +45,10 @@ menu "Onboard Peripheral Drivers" default n config BSP_USING_EEPROM - bool "Enable I2C EEPROM (i2c1)" - select BSP_USING_I2C1 + bool "Enable I2C EEPROM (i2c0)" + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C0 default n config BSP_USING_ETH @@ -180,21 +182,40 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + config RT_USING_I2C + bool default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 175 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 175 - default 23 + if RT_USING_I2C + config RT_USING_SOFT_I2C + bool "Enable software I2C BUS" + default n + if RT_USING_SOFT_I2C + menuconfig RT_USING_SOFT_I2C0 + bool "Enable I2C0 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C0 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C0_SCL_PIN + int "i2c0 scl pin number" + range 0 175 + default 22 + config RT_SOFT_I2C0_SDA_PIN + int "i2c0 sda pin number" + range 0 175 + default 23 + 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 + endif endif menuconfig BSP_USING_TIM diff --git a/bsp/stm32/stm32f103-gizwits-gokitv21/board/Kconfig b/bsp/stm32/stm32f103-gizwits-gokitv21/board/Kconfig index 79529a9d1c8..7f788c8cafa 100644 --- a/bsp/stm32/stm32f103-gizwits-gokitv21/board/Kconfig +++ b/bsp/stm32/stm32f103-gizwits-gokitv21/board/Kconfig @@ -55,22 +55,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 15 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 16 - endif source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig" endmenu diff --git a/bsp/stm32/stm32f103-hw100k-ibox/board/Kconfig b/bsp/stm32/stm32f103-hw100k-ibox/board/Kconfig index e3c547b3df1..35bb9ba5eee 100644 --- a/bsp/stm32/stm32f103-hw100k-ibox/board/Kconfig +++ b/bsp/stm32/stm32f103-hw100k-ibox/board/Kconfig @@ -125,22 +125,7 @@ menu "On-chip Peripheral Drivers" config BSP_USING_ON_CHIP_FLASH bool "Enable on-chip FLASH" default n - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 144 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 144 - default 23 - endif + menuconfig BSP_USING_SPI bool "Enable SPI BUS" default n diff --git a/bsp/stm32/stm32f103-yf-ufun/board/Kconfig b/bsp/stm32/stm32f103-yf-ufun/board/Kconfig index 3c2e170d922..5abf7711cdb 100644 --- a/bsp/stm32/stm32f103-yf-ufun/board/Kconfig +++ b/bsp/stm32/stm32f103-yf-ufun/board/Kconfig @@ -47,23 +47,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 15 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 16 - endif - menuconfig BSP_USING_PWM bool "Enable PWM" default n diff --git a/bsp/stm32/stm32f401-st-nucleo/board/Kconfig b/bsp/stm32/stm32f401-st-nucleo/board/Kconfig index 09519efa828..1d049e54dd6 100644 --- a/bsp/stm32/stm32f401-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32f401-st-nucleo/board/Kconfig @@ -27,8 +27,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM3_CH2 select BSP_USING_PWM4 select BSP_USING_PWM4_CH1 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select BSP_USING_SPI select BSP_USING_SPI1 select BSP_SPI1_TX_USING_DMA @@ -177,27 +178,39 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS" + config RT_USING_I2C + bool 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 (User I2C)" - default n - if BSP_USING_I2C1 - comment "Notice: PB9 --> 25; PB8 --> 24" - config BSP_I2C1_SCL_PIN - int "i2c1 SCL pin number" - range 1 176 - default 24 - config BSP_I2C1_SDA_PIN - int "i2c1 SDA pin number" - range 1 176 - default 25 + if RT_USING_I2C + config RT_USING_SOFT_I2C + bool "Enable software I2C BUS" + default n + if RT_USING_SOFT_I2C + menuconfig RT_USING_SOFT_I2C1 + bool "Enable I2C1 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C1 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C1_SCL_PIN + int "i2c1 scl pin number" + range 1 176 + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "i2c1 sda pin number" + range 1 176 + default 25 + 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 endif endif diff --git a/bsp/stm32/stm32f401-weact-blackpill/board/Kconfig b/bsp/stm32/stm32f401-weact-blackpill/board/Kconfig index f7b7f3230b6..0d263f5fc24 100644 --- a/bsp/stm32/stm32f401-weact-blackpill/board/Kconfig +++ b/bsp/stm32/stm32f401-weact-blackpill/board/Kconfig @@ -20,8 +20,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM4_CH2 select BSP_USING_PWM4_CH3 select BSP_USING_PWM4_CH4 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select RTDUINO_USING_WIRE imply RTDUINO_USING_SERVO default n @@ -109,19 +110,38 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + config RT_USING_I2C + bool default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number (PC15)" - default 47 - config BSP_I2C1_SDA_PIN - int "i2c1 sda pin number (PC14)" - default 46 + if RT_USING_I2C + config RT_USING_SOFT_I2C + bool "Enable software I2C BUS" + default n + if RT_USING_SOFT_I2C + menuconfig RT_USING_SOFT_I2C1 + bool "Enable I2C0 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C1 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C1_SCL_PIN + int "i2c1 scl pin number" + default 47 + config RT_SOFT_I2C1_SDA_PIN + int "i2c1 sda pin number" + default 46 + 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 + endif endif source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig" diff --git a/bsp/stm32/stm32f407-armfly-v5/board/Kconfig b/bsp/stm32/stm32f407-armfly-v5/board/Kconfig index f64e130a18e..8a670e0506b 100644 --- a/bsp/stm32/stm32f407-armfly-v5/board/Kconfig +++ b/bsp/stm32/stm32f407-armfly-v5/board/Kconfig @@ -24,8 +24,10 @@ menu "Onboard Peripheral Drivers" default n config BSP_USING_MPU6050 - bool "Enable MPU6050(i2c2)" - select BSP_USING_I2C2 + bool "Enable MPU6050(i2c0)" + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C0 select PKG_USING_MPU6XXX select PKG_USING_MPU6XXX_SAMPLE select PKG_USING_MPU6XXX_LATEST_VERSION @@ -90,22 +92,40 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C2 - bool "Enable I2C2 BUS (software simulation)" + config RT_USING_I2C + bool default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C2 - comment "Notice: PH4 --> 116; PH5 --> 117" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 1 143 - default 116 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 1 143 - default 117 + if RT_USING_I2C + config RT_USING_SOFT_I2C + bool "Enable software I2C BUS" + default n + if RT_USING_SOFT_I2C + menuconfig RT_USING_SOFT_I2C0 + bool "Enable I2C0 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C0 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C0_SCL_PIN + int "i2c0 scl pin number" + range 1 143 + default 116 + config RT_SOFT_I2C0_SDA_PIN + int "i2c0 sda pin number" + range 1 143 + default 117 + 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 + endif endif menuconfig BSP_USING_TIM diff --git a/bsp/stm32/stm32f407-atk-explorer/board/Kconfig b/bsp/stm32/stm32f407-atk-explorer/board/Kconfig index 864b89a841f..e91889a2ece 100644 --- a/bsp/stm32/stm32f407-atk-explorer/board/Kconfig +++ b/bsp/stm32/stm32f407-atk-explorer/board/Kconfig @@ -43,7 +43,9 @@ menu "Onboard Peripheral Drivers" if BSP_USING_TOUCH config BSP_USING_TOUCH_CAP bool "Use LCD TOUCH Capacitance (i2c2)" - select BSP_USING_I2C2 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C2 default n if BSP_USING_TOUCH_CAP config BSP_TOUCH_INT_PIN @@ -101,7 +103,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_EEPROM bool "Enable I2C EEPROM (i2c1)" - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 default n config BSP_USING_ETH @@ -120,7 +124,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_MPU6050 bool "Enable MPU6050 (i2c1)" default n - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select PKG_USING_MPU6XXX menuconfig BSP_USING_FS @@ -374,38 +380,65 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 143 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 143 - default 25 - endif - - menuconfig BSP_USING_I2C2 - bool "Enable LCD Touch BUS (software simulation)" + config RT_USING_I2C + bool default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number, PB0" - range 0 143 - default 16 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number, PF11" - range 0 143 - default 91 + if RT_USING_I2C + config RT_USING_SOFT_I2C + bool "Enable software I2C BUS" + default n + if RT_USING_SOFT_I2C + menuconfig RT_USING_SOFT_I2C1 + bool "Enable I2C0 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C1 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C1_SCL_PIN + int "i2c1 scl pin number" + range 0 143 + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "i2c1 sda pin number" + range 0 143 + default 25 + 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 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C2_SCL_PIN + int "i2c2 scl pin number" + range 0 143 + default 16 + config RT_SOFT_I2C2_SDA_PIN + int "i2c2 sda pin number" + range 0 143 + default 91 + 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 + endif endif menuconfig BSP_USING_DAC diff --git a/bsp/stm32/stm32f407-fk407m2-zgt6/board/Kconfig b/bsp/stm32/stm32f407-fk407m2-zgt6/board/Kconfig index 167b97c2c37..24f8958950d 100644 --- a/bsp/stm32/stm32f407-fk407m2-zgt6/board/Kconfig +++ b/bsp/stm32/stm32f407-fk407m2-zgt6/board/Kconfig @@ -247,42 +247,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable soft I2C BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 143 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 143 - default 25 - endif - - menuconfig BSP_USING_I2C2 - bool "Enable I2C2 BUS (software simulation)" - default n - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 143 - default 16 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 143 - default 91 - endif - endif - menuconfig BSP_USING_DAC bool "Enable DAC" default n diff --git a/bsp/stm32/stm32f407-lckfb-skystar/board/Kconfig b/bsp/stm32/stm32f407-lckfb-skystar/board/Kconfig index 8e382b92c8a..51c49f81137 100644 --- a/bsp/stm32/stm32f407-lckfb-skystar/board/Kconfig +++ b/bsp/stm32/stm32f407-lckfb-skystar/board/Kconfig @@ -320,28 +320,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C" - default n - if BSP_USING_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 143 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 143 - default 25 - endif - endif - config BSP_USING_ONBOARD_PM bool "Enable Power Management" select RT_USING_PM diff --git a/bsp/stm32/stm32f407-robomaster-c/board/Kconfig b/bsp/stm32/stm32f407-robomaster-c/board/Kconfig index 9a14c1ae5bc..fd7f4c1a42e 100644 --- a/bsp/stm32/stm32f407-robomaster-c/board/Kconfig +++ b/bsp/stm32/stm32f407-robomaster-c/board/Kconfig @@ -19,8 +19,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM8_CH1 select BSP_USING_PWM8_CH2 select BSP_USING_PWM8_CH3 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select RTDUINO_USING_WIRE imply RTDUINO_USING_SERVO default n @@ -178,23 +179,40 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + config RT_USING_I2C + bool default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - comment "Notice: PF0 --> 80; PF1 --> 81" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - default 81 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - default 80 + if RT_USING_I2C + config RT_USING_SOFT_I2C + bool "Enable software I2C BUS" + default n + if RT_USING_SOFT_I2C + menuconfig RT_USING_SOFT_I2C1 + bool "Enable I2C1 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C1 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C1_SCL_PIN + int "i2c1 scl pin number" + default 81 + config RT_SOFT_I2C1_SDA_PIN + int "i2c1 sda pin number" + default 80 + 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 + endif endif - source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig" endmenu diff --git a/bsp/stm32/stm32f407-rt-spark/board/Kconfig b/bsp/stm32/stm32f407-rt-spark/board/Kconfig index 9df736bfeed..d677b7522ea 100644 --- a/bsp/stm32/stm32f407-rt-spark/board/Kconfig +++ b/bsp/stm32/stm32f407-rt-spark/board/Kconfig @@ -22,9 +22,10 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM2_CH4 select BSP_USING_PWM4 select BSP_USING_PWM4_CH1 - select BSP_USING_I2C - select BSP_USING_I2C4 - select BSP_USING_I2C5 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C4 + select RT_USING_SOFT_I2C5 select BSP_USING_SOFT_SPI select BSP_USING_SOFT_SPI1 imply RTDUINO_USING_SERVO @@ -124,7 +125,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_EEPROM bool "Enable I2C EEPROM (i2c1)" - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 default n config BSP_USING_ENC28j60 @@ -214,24 +217,27 @@ menu "Onboard Peripheral Drivers" config BSP_USING_AHT21 bool "Enable AHT21(i2c3)" - select BSP_USING_I2C - select BSP_USING_I2C3 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C3 select PKG_USING_SENSORS_DRIVERS select PKG_USING_AHT10 default n config BSP_USING_AP3216C bool "Enable AP3216C(i2c2)" - select BSP_USING_I2C - select BSP_USING_I2C2 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C2 select PKG_USING_SENSORS_DRIVERS select PKG_USING_AP3216C default n config BSP_USING_ICM20608 bool "Enable ICM20608(i2c2)" - select BSP_USING_I2C - select BSP_USING_I2C2 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C2 select PKG_USING_SENSORS_DRIVERS select PKG_USING_ICM20608 default n @@ -543,93 +549,139 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C" + config RT_USING_I2C + bool default n - if BSP_USING_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 143 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 143 - default 25 - endif - - menuconfig BSP_USING_I2C2 - bool "Enable I2C2 BUS for AP3216C/ICM20608/ES8388/ Onboard(software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number, PF1" - range 0 143 - default 81 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number, PF0" - range 0 143 - default 80 - endif - - menuconfig BSP_USING_I2C3 - bool "Enable I2C3 BUS for AHT21 Onboard(software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C3 - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number, PE0" - range 0 143 - default 64 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number, PE1" - range 0 143 - default 65 - endif - - menuconfig BSP_USING_I2C4 - bool "Enable I2C4 BUS for RTduino(software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C4 - config BSP_I2C4_SCL_PIN - int "i2c4 scl pin number, PG7" - range 0 143 - default 103 - config BSP_I2C4_SDA_PIN - int "I2C4 sda pin number, PD7" - range 0 143 - default 55 - endif - - menuconfig BSP_USING_I2C5 - bool "Enable I2C5 BUS for RTduino(software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C5 - config BSP_I2C5_SCL_PIN - int "i2c5 scl pin number, PB6" - range 0 143 - default 22 - config BSP_I2C5_SDA_PIN - int "I2C5 sda pin number, PB7" - range 0 143 - default 23 + if RT_USING_I2C + config RT_USING_SOFT_I2C + bool "Enable software I2C BUS" + default n + if RT_USING_SOFT_I2C + menuconfig RT_USING_SOFT_I2C1 + bool "Enable I2C0 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C1 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C1_SCL_PIN + int "i2c1 scl pin number" + range 1 143 + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "i2c1 sda pin number" + range 1 143 + default 25 + 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 for AP3216C/ICM20608/ES8388/ Onboard(software simulation)" + default n + if RT_USING_SOFT_I2C2 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C2_SCL_PIN + int "i2c2 scl pin number" + range 1 143 + default 24 + config RT_SOFT_I2C2_SDA_PIN + int "i2c2 sda pin number" + range 1 143 + default 25 + 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 for AHT21 Onboard(software simulation)" + default n + if RT_USING_SOFT_I2C3 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C3_SCL_PIN + int "i2c3 scl pin number" + range 1 143 + default 64 + config RT_SOFT_I2C3_SDA_PIN + int "i2c3 sda pin number" + range 1 143 + default 65 + 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 for RTduino(software simulation)" + default n + if RT_USING_SOFT_I2C4 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C4_SCL_PIN + int "i2c4 scl pin number" + range 1 143 + default 103 + config RT_SOFT_I2C4_SDA_PIN + int "i2c4 sda pin number" + range 1 143 + default 55 + 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 for RTduino(software simulation)" + default n + if RT_USING_SOFT_I2C5 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C5_SCL_PIN + int "i2c5 scl pin number" + range 1 143 + default 22 + config RT_SOFT_I2C5_SDA_PIN + int "i2c5 sda pin number" + range 1 143 + default 23 + 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 endif endif diff --git a/bsp/stm32/stm32f407-st-discovery/board/Kconfig b/bsp/stm32/stm32f407-st-discovery/board/Kconfig index 56bc4a9bf2d..b031d59ca2f 100644 --- a/bsp/stm32/stm32f407-st-discovery/board/Kconfig +++ b/bsp/stm32/stm32f407-st-discovery/board/Kconfig @@ -47,22 +47,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 25 - endif source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig" endmenu diff --git a/bsp/stm32/stm32f410-st-nucleo/board/Kconfig b/bsp/stm32/stm32f410-st-nucleo/board/Kconfig index c5e2dd8aa2c..5e1a427d180 100644 --- a/bsp/stm32/stm32f410-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32f410-st-nucleo/board/Kconfig @@ -19,8 +19,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM1_CH3 select BSP_USING_PWM1_CH2 select BSP_USING_PWM1_CH1 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select RTDUINO_USING_WIRE imply RTDUINO_USING_SERVO default n @@ -89,24 +90,42 @@ menu "On-chip Peripheral Drivers" endif endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + config RT_USING_I2C + bool default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - comment "Notice: PB8 --> 24; PB9 --> 25" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 80 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 80 - default 25 + if RT_USING_I2C + config RT_USING_SOFT_I2C + bool "Enable software I2C BUS" + default n + if RT_USING_SOFT_I2C + menuconfig RT_USING_SOFT_I2C1 + bool "Enable I2C1 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C1 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C1_SCL_PIN + int "i2c1 scl pin number" + range 0 80 + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "i2c1 sda pin number" + range 0 80 + default 25 + 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 + endif endif - + source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig" endmenu diff --git a/bsp/stm32/stm32f411-atk-nano/board/Kconfig b/bsp/stm32/stm32f411-atk-nano/board/Kconfig index d80deff08f1..c315442a6aa 100644 --- a/bsp/stm32/stm32f411-atk-nano/board/Kconfig +++ b/bsp/stm32/stm32f411-atk-nano/board/Kconfig @@ -10,7 +10,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_EEPROM bool "Enable I2C EEPROM (i2c1)" - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 default n config BSP_USING_SPI_FLASH @@ -99,23 +101,43 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + config RT_USING_I2C + bool default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - 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 + if RT_USING_I2C + config RT_USING_SOFT_I2C + bool "Enable software I2C BUS" + default n + if RT_USING_SOFT_I2C + menuconfig RT_USING_SOFT_I2C1 + bool "Enable I2C1 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C1 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C1_SCL_PIN + int "i2c1 scl pin number" + range 0 63 + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "i2c1 sda pin number" + range 0 63 + default 23 + 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 + endif endif + menuconfig BSP_USING_ADC bool "Enable ADC" default n diff --git a/bsp/stm32/stm32f411-st-nucleo/board/Kconfig b/bsp/stm32/stm32f411-st-nucleo/board/Kconfig index a3123a7b76e..ce6ca6ad130 100644 --- a/bsp/stm32/stm32f411-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32f411-st-nucleo/board/Kconfig @@ -27,8 +27,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM3_CH2 select BSP_USING_PWM4_CH1 select BSP_USING_PWM1_CH1 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select BSP_USING_SPI select BSP_USING_SPI1 select BSP_SPI1_TX_USING_DMA @@ -81,23 +82,42 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + config RT_USING_I2C + bool default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - comment "Notice: PB8 --> 24; PB9 --> 25" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 80 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 80 - default 25 + if RT_USING_I2C + config RT_USING_SOFT_I2C + bool "Enable software I2C BUS" + default n + if RT_USING_SOFT_I2C + menuconfig RT_USING_SOFT_I2C1 + bool "Enable I2C1 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C1 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C1_SCL_PIN + int "i2c1 scl pin number" + range 0 80 + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "i2c1 sda pin number" + range 0 80 + default 25 + 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 + endif endif + menuconfig BSP_USING_PWM bool "Enable PWM" diff --git a/bsp/stm32/stm32f411-weact-blackpill/board/Kconfig b/bsp/stm32/stm32f411-weact-blackpill/board/Kconfig index 6795ad4beca..6a3ebf8d5ae 100644 --- a/bsp/stm32/stm32f411-weact-blackpill/board/Kconfig +++ b/bsp/stm32/stm32f411-weact-blackpill/board/Kconfig @@ -23,8 +23,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_SPI1 select BSP_SPI1_TX_USING_DMA select BSP_SPI1_RX_USING_DMA - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select RTDUINO_USING_SPI select RTDUINO_USING_WIRE imply RTDUINO_USING_SERVO @@ -72,22 +73,40 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + config RT_USING_I2C + bool default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - comment "Notice: PB2 --> 18; PB10 --> 26" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 48 - default 26 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 48 - default 18 + if RT_USING_I2C + config RT_USING_SOFT_I2C + bool "Enable software I2C BUS" + default n + if RT_USING_SOFT_I2C + menuconfig RT_USING_SOFT_I2C1 + bool "Enable I2C1 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C1 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C1_SCL_PIN + int "i2c1 scl pin number" + range 0 48 + default 26 + config RT_SOFT_I2C1_SDA_PIN + int "i2c1 sda pin number" + range 0 48 + default 18 + 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 + endif endif menuconfig BSP_USING_PWM diff --git a/bsp/stm32/stm32f412-st-nucleo/board/Kconfig b/bsp/stm32/stm32f412-st-nucleo/board/Kconfig index f7c2ba90885..3edc2ea7d20 100644 --- a/bsp/stm32/stm32f412-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32f412-st-nucleo/board/Kconfig @@ -27,8 +27,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM4_CH4 select BSP_USING_PWM4_CH3 select BSP_USING_PWM14_CH1 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select BSP_USING_SPI select BSP_USING_SPI1 select BSP_SPI1_TX_USING_DMA @@ -135,27 +136,39 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS" + config RT_USING_I2C + bool 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 (User I2C)" + if RT_USING_I2C + config RT_USING_SOFT_I2C + bool "Enable software I2C BUS" default n - if BSP_USING_I2C1 - comment "Notice: PB9 --> 25; PB8 --> 24" - config BSP_I2C1_SCL_PIN - int "i2c1 SCL pin number" - range 1 176 - default 24 - config BSP_I2C1_SDA_PIN - int "i2c1 SDA pin number" - range 1 176 - default 25 + if RT_USING_SOFT_I2C + menuconfig RT_USING_SOFT_I2C1 + bool "Enable I2C1 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C1 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C1_SCL_PIN + int "i2c1 scl pin number" + range 1 176 + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "i2c1 sda pin number" + range 1 176 + default 25 + 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 endif endif diff --git a/bsp/stm32/stm32f413-st-nucleo/board/Kconfig b/bsp/stm32/stm32f413-st-nucleo/board/Kconfig index 00773afbfcb..ba63a64acd2 100644 --- a/bsp/stm32/stm32f413-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32f413-st-nucleo/board/Kconfig @@ -60,24 +60,6 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - comment "Notice: PB6 --> 136; PB9 --> 140" - config BSP_I2C1_SCL_PIN - int "I2C1 scl pin number" - range 1 144 - default 136 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 144 - default 140 - endif - menuconfig BSP_USING_TIM bool "Enable timer" default n diff --git a/bsp/stm32/stm32f427-robomaster-a/board/Kconfig b/bsp/stm32/stm32f427-robomaster-a/board/Kconfig index ad3b4bf4c79..a647776927b 100644 --- a/bsp/stm32/stm32f427-robomaster-a/board/Kconfig +++ b/bsp/stm32/stm32f427-robomaster-a/board/Kconfig @@ -38,8 +38,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM8_CH4 select BSP_USING_PWM12 select BSP_USING_PWM12_CH1 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select RTDUINO_USING_WIRE imply RTDUINO_USING_SERVO default n @@ -128,27 +129,39 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS" + config RT_USING_I2C + bool 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 (User I2C)" - default n - if BSP_USING_I2C1 - comment "Notice: PE4 --> 68; PE5 --> 69" - config BSP_I2C1_SCL_PIN - int "i2c1 SCL pin number" - range 1 176 - default 68 - config BSP_I2C1_SDA_PIN - int "i2c1 SDA pin number" - range 1 176 - default 69 + if RT_USING_I2C + config RT_USING_SOFT_I2C + bool "Enable software I2C BUS" + default n + if RT_USING_SOFT_I2C + menuconfig RT_USING_SOFT_I2C1 + bool "Enable I2C1 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C1 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C1_SCL_PIN + int "i2c1 scl pin number" + range 1 176 + default 68 + config RT_SOFT_I2C1_SDA_PIN + int "i2c1 sda pin number" + range 1 176 + default 69 + 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 endif endif diff --git a/bsp/stm32/stm32f429-armfly-v6/board/Kconfig b/bsp/stm32/stm32f429-armfly-v6/board/Kconfig index dc171ca09b3..152c5fba769 100644 --- a/bsp/stm32/stm32f429-armfly-v6/board/Kconfig +++ b/bsp/stm32/stm32f429-armfly-v6/board/Kconfig @@ -63,7 +63,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_MPU6050 bool "Enable MPU6050(i2c1)" - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select PKG_USING_MPU6XXX select PKG_USING_MPU6XXX_SAMPLE select PKG_USING_MPU6XXX_LATEST_VERSION @@ -117,21 +119,40 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + config RT_USING_I2C + bool default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 25 + if RT_USING_I2C + config RT_USING_SOFT_I2C + bool "Enable software I2C BUS" + default n + if RT_USING_SOFT_I2C + menuconfig RT_USING_SOFT_I2C1 + bool "Enable I2C1 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C1 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C1_SCL_PIN + int "i2c1 scl pin number" + range 1 216 + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "i2c1 sda pin number" + range 1 216 + default 25 + 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 + endif endif menuconfig BSP_USING_TIM diff --git a/bsp/stm32/stm32f429-atk-apollo/board/Kconfig b/bsp/stm32/stm32f429-atk-apollo/board/Kconfig index 61de803c8f9..949039172ec 100644 --- a/bsp/stm32/stm32f429-atk-apollo/board/Kconfig +++ b/bsp/stm32/stm32f429-atk-apollo/board/Kconfig @@ -35,7 +35,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_MPU9250 bool "Enable MPU 9250 (i2c1)" - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select PKG_USING_MPU6XXX default n @@ -44,7 +46,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_ETH bool "Enable Ethernet (Ethernet pin conflict with uart3)" - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select PKG_USING_PCF8574 select RT_USING_LWIP select PHY_USING_LAN8720A @@ -59,7 +63,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_AUDIO bool "Enable AUDIO (WM8978)" - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select RT_USING_AUDIO default n @@ -181,22 +187,40 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + config RT_USING_I2C + bool default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - comment "Notice: PH4 --> 116; PH5 --> 117" - config BSP_I2C1_SCL_PIN - int "I2C1 scl pin number" - range 1 176 - default 116 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 176 - default 117 + if RT_USING_I2C + config RT_USING_SOFT_I2C + bool "Enable software I2C BUS" + default n + if RT_USING_SOFT_I2C + menuconfig RT_USING_SOFT_I2C1 + bool "Enable I2C1 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C1 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C1_SCL_PIN + int "i2c1 scl pin number" + range 1 176 + default 116 + config RT_SOFT_I2C1_SDA_PIN + int "i2c1 sda pin number" + range 1 176 + default 117 + 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 + endif endif menuconfig BSP_USING_TIM diff --git a/bsp/stm32/stm32f429-fire-challenger/board/Kconfig b/bsp/stm32/stm32f429-fire-challenger/board/Kconfig index a40066a632e..42c7c690bf1 100644 --- a/bsp/stm32/stm32f429-fire-challenger/board/Kconfig +++ b/bsp/stm32/stm32f429-fire-challenger/board/Kconfig @@ -35,7 +35,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_MPU6050 bool "Enable MPU6050 (i2c1)" - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select PKG_USING_MPU6XXX default n @@ -181,22 +183,40 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + config RT_USING_I2C + bool default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - comment "Notice: PB6 --> 22; PB7 --> 23" - config BSP_I2C1_SCL_PIN - int "I2C1 scl pin number" - range 1 176 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 176 - default 23 + if RT_USING_I2C + config RT_USING_SOFT_I2C + bool "Enable software I2C BUS" + default n + if RT_USING_SOFT_I2C + menuconfig RT_USING_SOFT_I2C1 + bool "Enable I2C1 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C1 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C1_SCL_PIN + int "i2c1 scl pin number" + range 1 176 + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "i2c1 sda pin number" + range 1 176 + default 23 + 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 + endif endif menuconfig BSP_USING_ONCHIP_RTC diff --git a/bsp/stm32/stm32f429-st-disco/board/Kconfig b/bsp/stm32/stm32f429-st-disco/board/Kconfig index 7800098e1a3..404aee5e1c5 100644 --- a/bsp/stm32/stm32f429-st-disco/board/Kconfig +++ b/bsp/stm32/stm32f429-st-disco/board/Kconfig @@ -41,23 +41,6 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "I2C1 scl pin number" - range 1 176 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 176 - default 25 - endif - menuconfig BSP_USING_SPI bool "Enable SPI BUS" select RT_USING_SPI diff --git a/bsp/stm32/stm32f469-st-disco/board/Kconfig b/bsp/stm32/stm32f469-st-disco/board/Kconfig index 921bd96564d..28191d2b2ae 100644 --- a/bsp/stm32/stm32f469-st-disco/board/Kconfig +++ b/bsp/stm32/stm32f469-st-disco/board/Kconfig @@ -40,8 +40,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM12 select BSP_USING_PWM12_CH1 select BSP_USING_PWM12_CH2 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select BSP_USING_SPI select BSP_USING_SPI2 select BSP_SPI2_TX_USING_DMA @@ -90,7 +91,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_TOUCH bool "Enable touch screen" select RT_USING_TOUCH - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 choice prompt "Touch IC type" @@ -205,22 +208,40 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN + config RT_USING_I2C + bool default n - if BSP_USING_I2C1 - comment "Notice: PB8 --> 24; PB9 --> 25" - config BSP_I2C1_SCL_PIN - int "I2C1 scl pin number" - range 1 176 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 176 - default 25 + if RT_USING_I2C + config RT_USING_SOFT_I2C + bool "Enable software I2C BUS" + default n + if RT_USING_SOFT_I2C + menuconfig RT_USING_SOFT_I2C1 + bool "Enable I2C1 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C1 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C1_SCL_PIN + int "i2c1 scl pin number" + range 1 176 + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "i2c1 sda pin number" + range 1 176 + default 25 + 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 + endif endif menuconfig BSP_USING_SPI diff --git a/bsp/stm32/stm32f746-st-nucleo/board/Kconfig b/bsp/stm32/stm32f746-st-nucleo/board/Kconfig index 4f90b3d684e..d8ec8c0091c 100644 --- a/bsp/stm32/stm32f746-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32f746-st-nucleo/board/Kconfig @@ -111,23 +111,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 175 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 175 - default 23 - endif - menuconfig BSP_USING_TIM bool "Enable timer" default n diff --git a/bsp/stm32/stm32f767-atk-apollo/board/Kconfig b/bsp/stm32/stm32f767-atk-apollo/board/Kconfig index efe3b5568b0..09a03efbebb 100644 --- a/bsp/stm32/stm32f767-atk-apollo/board/Kconfig +++ b/bsp/stm32/stm32f767-atk-apollo/board/Kconfig @@ -165,24 +165,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - comment "Notice: PB8 --> 24; PB9 --> 25" - config BSP_I2C1_SCL_PIN - int "I2C1 scl pin number" - range 1 176 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 176 - default 25 - endif - menuconfig BSP_USING_I2C2 bool "Enable I2C2 BUS (software simulation)" default n diff --git a/bsp/stm32/stm32f767-fire-challenger-v1/board/Kconfig b/bsp/stm32/stm32f767-fire-challenger-v1/board/Kconfig index 758277ac52d..862de62bff8 100644 --- a/bsp/stm32/stm32f767-fire-challenger-v1/board/Kconfig +++ b/bsp/stm32/stm32f767-fire-challenger-v1/board/Kconfig @@ -114,24 +114,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - comment "Notice: PB6 --> 22; PB7 --> 23" - config BSP_I2C1_SCL_PIN - int "I2C1 scl pin number" - range 1 176 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 176 - default 23 - endif - menuconfig BSP_USING_ONCHIP_RTC bool "Enable RTC" select RT_USING_RTC diff --git a/bsp/stm32/stm32g070-st-nucleo/board/Kconfig b/bsp/stm32/stm32g070-st-nucleo/board/Kconfig index b9ae3de4d6f..d98f871a2e4 100644 --- a/bsp/stm32/stm32g070-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32g070-st-nucleo/board/Kconfig @@ -127,23 +127,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - 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 - menuconfig BSP_USING_ADC bool "Enable ADC" default n diff --git a/bsp/stm32/stm32g071-st-nucleo/board/Kconfig b/bsp/stm32/stm32g071-st-nucleo/board/Kconfig index 4f847c211af..e0a516b88d7 100644 --- a/bsp/stm32/stm32g071-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32g071-st-nucleo/board/Kconfig @@ -173,23 +173,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 47 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 47 - default 23 - endif - menuconfig BSP_USING_ADC bool "Enable ADC" default n diff --git a/bsp/stm32/stm32g474-st-nucleo/board/Kconfig b/bsp/stm32/stm32g474-st-nucleo/board/Kconfig index ac55f7ba93a..e3d367c9e9f 100644 --- a/bsp/stm32/stm32g474-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32g474-st-nucleo/board/Kconfig @@ -28,8 +28,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM4_CH1 select BSP_USING_PWM8 select BSP_USING_PWM8_CH2 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select BSP_USING_SPI select BSP_USING_SPI1 # select BSP_SPI1_TX_USING_DMA @@ -172,19 +173,38 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + config RT_USING_I2C + bool default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number (PB8)" - default 24 - config BSP_I2C1_SDA_PIN - int "i2c1 sda pin number (PB9)" - default 25 + if RT_USING_I2C + config RT_USING_SOFT_I2C + bool "Enable software I2C BUS" + default n + if RT_USING_SOFT_I2C + menuconfig RT_USING_SOFT_I2C1 + bool "Enable I2C1 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C1 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C1_SCL_PIN + int "i2c1 scl pin number" + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "i2c1 sda pin number" + default 25 + 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 + endif endif source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig" diff --git a/bsp/stm32/stm32g491-st-nucleo/board/Kconfig b/bsp/stm32/stm32g491-st-nucleo/board/Kconfig index 174cd9a7e1a..ab16112e918 100644 --- a/bsp/stm32/stm32g491-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32g491-st-nucleo/board/Kconfig @@ -104,57 +104,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C Bus" - 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 (User I2C)" - default n - if BSP_USING_I2C1 - comment "Notice: PC7 --> 39; PC6 --> 38" - config BSP_I2C1_SCL_PIN - int "i2c1 SCL pin number" - range 1 176 - default 38 - config BSP_I2C1_SDA_PIN - int "i2c1 SDA pin number" - range 1 176 - default 39 - endif - - config BSP_USING_I2C3 - bool "Enable I2C3 Bus (AP3216C/ICM20608/ES8388)" - default n - - if BSP_USING_I2C3 - # Notice: PC0 --> 32; PC1 --> 33 - config BSP_I2C3_SCL_PIN - int - default 32 - config BSP_I2C3_SDA_PIN - int - default 33 - endif - - config BSP_USING_I2C4 - bool "Enable I2C4 Bus (AHT10)" - default n - - if BSP_USING_I2C4 - # Notice: PC1 --> 33; PD6 --> 54 - config BSP_I2C4_SCL_PIN - int - default 54 - config BSP_I2C4_SDA_PIN - int - default 33 - endif - endif - menuconfig BSP_USING_TIM bool "Enable timer" default n diff --git a/bsp/stm32/stm32h503-st-nucleo/board/Kconfig b/bsp/stm32/stm32h503-st-nucleo/board/Kconfig index 590a81d52c1..fcdba4dc546 100644 --- a/bsp/stm32/stm32h503-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32h503-st-nucleo/board/Kconfig @@ -126,21 +126,6 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number (PB.6)" - default 22 - config BSP_I2C1_SDA_PIN - int "i2c1 sda pin number (PB.7)" - default 23 - endif - source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig" endmenu diff --git a/bsp/stm32/stm32h563-st-nucleo/board/Kconfig b/bsp/stm32/stm32h563-st-nucleo/board/Kconfig index e8e436e1cb0..2132c30d9a8 100644 --- a/bsp/stm32/stm32h563-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32h563-st-nucleo/board/Kconfig @@ -21,8 +21,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM4 select BSP_USING_PWM4_CH3 select BSP_USING_PWM4_CH4 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select RTDUINO_USING_WIRE imply RTDUINO_USING_SERVO default n @@ -134,19 +135,38 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + config RT_USING_I2C + bool default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number (PB.8)" - default 24 - config BSP_I2C1_SDA_PIN - int "i2c1 sda pin number (PB.9)" - default 25 + if RT_USING_I2C + config RT_USING_SOFT_I2C + bool "Enable software I2C BUS" + default n + if RT_USING_SOFT_I2C + menuconfig RT_USING_SOFT_I2C1 + bool "Enable I2C1 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C1 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C1_SCL_PIN + int "i2c1 scl pin number" + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "i2c1 sda pin number" + default 25 + 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 + endif endif source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig" diff --git a/bsp/stm32/stm32h743-atk-apollo/board/Kconfig b/bsp/stm32/stm32h743-atk-apollo/board/Kconfig index d9a838ecb6b..b6889791b58 100644 --- a/bsp/stm32/stm32h743-atk-apollo/board/Kconfig +++ b/bsp/stm32/stm32h743-atk-apollo/board/Kconfig @@ -6,7 +6,9 @@ menu "Onboard Peripheral Drivers" bool "Enable COM2(485)" select BSP_USING_UART select BSP_USING_UART2 - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select PKG_USING_PCF8574 default n @@ -37,8 +39,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_OV2640 bool "Enable camera (ov2640)" select BSP_USING_DCMI - select BSP_USING_I2C - select BSP_USING_I2C2 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 default n endmenu @@ -98,46 +101,41 @@ menu "On-chip Peripheral Drivers" select RT_USING_SPI default n - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - default n - if BSP_USING_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - if BSP_USING_I2C1 - comment "Notice: PH4 --> 116; PH5 --> 117" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 176 - default 116 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 176 - default 117 - menuconfig BSP_USING_I2C2 - bool "Enable I2C2 BUS (software simulation)" - default n - endif - - menuconfig BSP_USING_I2C2 - bool "Enable I2C2 BUS (software simulation)" - default n - if BSP_USING_I2C2 - comment "Notice: PH13 --> 125; PH15 --> 127" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 1 176 - default 127 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 1 176 - default 125 - endif - endif + config RT_USING_I2C + bool + default n + if RT_USING_I2C + config RT_USING_SOFT_I2C + bool "Enable software I2C BUS" + default n + if RT_USING_SOFT_I2C + menuconfig RT_USING_SOFT_I2C1 + bool "Enable I2C1 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C1 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C1_SCL_PIN + int "i2c1 scl pin number" + range 1 176 + default 116 + config RT_SOFT_I2C1_SDA_PIN + int "i2c1 sda pin number" + range1 1765 + default 117 + 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 + endif + endif config BSP_USING_ON_CHIP_FLASH bool "Enable on-chip FLASH" diff --git a/bsp/stm32/stm32h743-openmv-h7plus/board/Kconfig b/bsp/stm32/stm32h743-openmv-h7plus/board/Kconfig index 8bb461f7af6..dd4fc8ba62a 100644 --- a/bsp/stm32/stm32h743-openmv-h7plus/board/Kconfig +++ b/bsp/stm32/stm32h743-openmv-h7plus/board/Kconfig @@ -84,8 +84,9 @@ menu "Hardware Drivers Config" config BSP_USING_OV5640 bool "Enable camera (ov5640)" select BSP_USING_DCMI - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select BSP_USING_PWM select BSP_USING_PWM1 select BSP_USING_PWM1_CH1 @@ -95,41 +96,39 @@ menu "Hardware Drivers Config" bool "Enable DCMI" default n - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN + config RT_USING_I2C + bool default n - if BSP_USING_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - if BSP_USING_I2C1 - comment "Notice: PB8 --> 24; PB9 --> 25" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 176 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 176 - default 25 - endif - - menuconfig BSP_USING_I2C2 - bool "Enable I2C2 BUS (software simulation)" + if RT_USING_I2C + config RT_USING_SOFT_I2C + bool "Enable software I2C BUS" default n - if BSP_USING_I2C2 - comment "Notice: PB10 --> 26; PB11 --> 27" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 1 176 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 1 176 - default 27 + if RT_USING_SOFT_I2C + menuconfig RT_USING_SOFT_I2C1 + bool "Enable I2C1 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C1 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C1_SCL_PIN + int "i2c1 scl pin number" + range 1 176 + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "i2c1 sda pin number" + range 1 176 + default 25 + 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 endif endif diff --git a/bsp/stm32/stm32h750-armfly-h7-tool/board/Kconfig b/bsp/stm32/stm32h750-armfly-h7-tool/board/Kconfig index 0ec9749eb1e..37418d8985b 100644 --- a/bsp/stm32/stm32h750-armfly-h7-tool/board/Kconfig +++ b/bsp/stm32/stm32h750-armfly-h7-tool/board/Kconfig @@ -65,23 +65,6 @@ menu "On-chip Peripheral Drivers" bool "Enable QSPI DMA support" default n - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 135 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 95 - endif - menuconfig BSP_USING_PWM bool "Enable PWM" default n diff --git a/bsp/stm32/stm32h750-artpi/board/Kconfig b/bsp/stm32/stm32h750-artpi/board/Kconfig index 122d147adbc..d5cfbe9ad7a 100644 --- a/bsp/stm32/stm32h750-artpi/board/Kconfig +++ b/bsp/stm32/stm32h750-artpi/board/Kconfig @@ -31,9 +31,8 @@ menu "Board extended module" config MEDIA_IO_USING_TOUCH select RT_USING_I2C - select RT_USING_I2C_BITOPS - select BSP_USING_I2C - select BSP_USING_I2C2 + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C2 select PKG_USING_FT6236 bool "Enable Touch" default y @@ -41,9 +40,8 @@ menu "Board extended module" config MEDIA_IO_USING_AUDIO select RT_USING_AUDIO select RT_USING_I2C - select RT_USING_I2C_BITOPS - select BSP_USING_I2C - select BSP_USING_I2C3 + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C3 bool "Enable Audio" default y if MEDIA_IO_USING_AUDIO @@ -271,57 +269,89 @@ menu "On-chip Peripheral Drivers" select RT_USING_RTC default n - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN + config RT_USING_I2C + bool default n - if BSP_USING_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - comment "Notice: PB6 --> 22; PB7 --> 23" - config BSP_I2C1_SCL_PIN - int "I2C1 scl pin number" - range 0 175 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 175 - default 23 - endif - menuconfig BSP_USING_I2C2 - bool "Enable I2C2 BUS (software simulation)" + if RT_USING_I2C + config RT_USING_SOFT_I2C + bool "Enable software I2C BUS" default n - if BSP_USING_I2C2 - comment "Notice: PH13 --> 125; PH15 --> 127" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 1 176 - default 127 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 175 - default 125 - endif - menuconfig BSP_USING_I2C3 - bool "Enable I2C3 BUS (software simulation)" - default n - if BSP_USING_I2C3 - comment "Notice: PH12 --> 124; PH11 --> 123" - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 175 - default 123 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 175 - default 124 + if RT_USING_SOFT_I2C + menuconfig RT_USING_SOFT_I2C1 + bool "Enable I2C1 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C1 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C1_SCL_PIN + int "i2c1 scl pin number" + range 0 175 + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "i2c1 sda pin number" + range 0 175 + default 23 + 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 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C2_SCL_PIN + int "i2c2 scl pin number" + range 0 175 + default 127 + config RT_SOFT_I2C2_SDA_PIN + int "i2c2 sda pin number" + range 0 175 + default 125 + 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 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C3_SCL_PIN + int "i2c3 scl pin number" + range 0 175 + default 123 + config RT_SOFT_I2C3_SDA_PIN + int "i2c3 sda pin number" + range 0 173 + default 124 + 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 endif endif diff --git a/bsp/stm32/stm32h750-fk750m1-vbt6/board/Kconfig b/bsp/stm32/stm32h750-fk750m1-vbt6/board/Kconfig index 3c796b46027..b13b25fa0b8 100644 --- a/bsp/stm32/stm32h750-fk750m1-vbt6/board/Kconfig +++ b/bsp/stm32/stm32h750-fk750m1-vbt6/board/Kconfig @@ -13,8 +13,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_OV2640 bool "Enable camera (ov2640)" select BSP_USING_DCMI - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 default n endmenu @@ -66,41 +67,39 @@ menu "On-chip Peripheral Drivers" bool "Enable DCMI" default n - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN + config RT_USING_I2C + bool default n - if BSP_USING_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - if BSP_USING_I2C1 - comment "Notice: PB8 --> 24; PB9 --> 25" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 176 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 176 - default 25 - endif - - menuconfig BSP_USING_I2C2 - bool "Enable I2C2 BUS (software simulation)" + if RT_USING_I2C + config RT_USING_SOFT_I2C + bool "Enable software I2C BUS" default n - if BSP_USING_I2C2 - comment "Notice: PB10 --> 26; PB11 --> 27" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 1 176 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 1 176 - default 27 + if RT_USING_SOFT_I2C + menuconfig RT_USING_SOFT_I2C1 + bool "Enable I2C1 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C1 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C1_SCL_PIN + int "i2c1 scl pin number" + range 1 176 + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "i2c1 sda pin number" + range 1 176 + default 25 + 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 endif endif diff --git a/bsp/stm32/stm32h750-weact-ministm32h7xx/board/Kconfig b/bsp/stm32/stm32h750-weact-ministm32h7xx/board/Kconfig index e758d26e930..cfcd5524408 100644 --- a/bsp/stm32/stm32h750-weact-ministm32h7xx/board/Kconfig +++ b/bsp/stm32/stm32h750-weact-ministm32h7xx/board/Kconfig @@ -89,23 +89,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 135 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 95 - endif - menuconfig BSP_USING_PWM bool "Enable pwm" default n diff --git a/bsp/stm32/stm32h7s7-st-disco/board/Kconfig b/bsp/stm32/stm32h7s7-st-disco/board/Kconfig index 46d41ed7119..8683c5c0cda 100644 --- a/bsp/stm32/stm32h7s7-st-disco/board/Kconfig +++ b/bsp/stm32/stm32h7s7-st-disco/board/Kconfig @@ -163,60 +163,6 @@ menu "On-chip Peripheral Drivers" select RT_USING_RTC default n - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - default n - if BSP_USING_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - comment "Notice: PB6 --> 22; PB7 --> 23" - config BSP_I2C1_SCL_PIN - int "I2C1 scl pin number" - range 0 175 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 175 - default 23 - endif - menuconfig BSP_USING_I2C2 - bool "Enable I2C2 BUS (software simulation)" - default n - if BSP_USING_I2C2 - comment "Notice: PH13 --> 125; PH15 --> 127" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 1 176 - default 127 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 175 - default 125 - endif - menuconfig BSP_USING_I2C3 - bool "Enable I2C3 BUS (software simulation)" - default n - if BSP_USING_I2C3 - comment "Notice: PH12 --> 124; PH11 --> 123" - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 175 - default 123 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 175 - default 124 - endif - endif - config BSP_USING_USBD bool "Enable USB Device" select RT_USING_USB_DEVICE diff --git a/bsp/stm32/stm32l431-BearPi/board/Kconfig b/bsp/stm32/stm32l431-BearPi/board/Kconfig index 40d71e63a89..2d3db68b325 100644 --- a/bsp/stm32/stm32l431-BearPi/board/Kconfig +++ b/bsp/stm32/stm32l431-BearPi/board/Kconfig @@ -65,21 +65,40 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + config RT_USING_I2C + bool default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 143 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 143 - default 23 + if RT_USING_I2C + config RT_USING_SOFT_I2C + bool "Enable software I2C BUS" + default n + if RT_USING_SOFT_I2C + menuconfig RT_USING_SOFT_I2C1 + bool "Enable I2C1 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C1 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C1_SCL_PIN + int "i2c1 scl pin number" + range 0 143 + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "i2c1 sda pin number" + range 0 143 + default 23 + 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 + endif endif menuconfig BSP_USING_PWM @@ -167,8 +186,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM16 select BSP_USING_PWM16_CH1 select BSP_USING_PWM1_CH1 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select BSP_USING_SPI select BSP_USING_SPI1 select BSP_SPI1_TX_USING_DMA @@ -180,8 +200,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_MPU6050 bool "Enable MPU6050 to read accel data" - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select PKG_USING_MPU6XXX default n if BSP_USING_MPU6050 diff --git a/bsp/stm32/stm32l431-tencentos-tiny-EVB_MX+/board/Kconfig b/bsp/stm32/stm32l431-tencentos-tiny-EVB_MX+/board/Kconfig index aefe6ff7b03..9bf3945b7ae 100644 --- a/bsp/stm32/stm32l431-tencentos-tiny-EVB_MX+/board/Kconfig +++ b/bsp/stm32/stm32l431-tencentos-tiny-EVB_MX+/board/Kconfig @@ -100,23 +100,6 @@ menu "On-chip Peripheral Drivers" select BSP_USING_SDIO default n - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 25 - endif - source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig" endmenu diff --git a/bsp/stm32/stm32l433-ali-startkit/board/Kconfig b/bsp/stm32/stm32l433-ali-startkit/board/Kconfig index 6b28593fdf3..5a368f97b61 100644 --- a/bsp/stm32/stm32l433-ali-startkit/board/Kconfig +++ b/bsp/stm32/stm32l433-ali-startkit/board/Kconfig @@ -90,56 +90,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - menuconfig BSP_USING_I2C2 - bool "Enable I2C2 BUS (software simulation)" - default n - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 1 176 - default 29 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 1 176 - default 30 - endif - - menuconfig BSP_USING_I2C3 - bool "Enable I2C3 BUS (software simulation)" - default n - if BSP_USING_I2C3 - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 1 176 - default 32 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 1 176 - default 33 - endif - - menuconfig BSP_USING_I2C4 - bool "Enable I2C4 BUS (software simulation)" - default y - if BSP_USING_I2C4 - config BSP_I2C4_SCL_PIN - int "i2c4 scl pin number" - range 1 176 - default 60 - config BSP_I2C4_SDA_PIN - int "i2c4 sda pin number" - range 1 176 - default 61 - endif - endif - config BSP_USING_SDIO bool "Enable sdio" select RT_USING_SDIO diff --git a/bsp/stm32/stm32l452-st-nucleo/board/Kconfig b/bsp/stm32/stm32l452-st-nucleo/board/Kconfig index 32ce20d8807..28b00d30b3c 100644 --- a/bsp/stm32/stm32l452-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32l452-st-nucleo/board/Kconfig @@ -58,22 +58,7 @@ menu "On-chip Peripheral Drivers" config BSP_USING_ON_CHIP_FLASH bool "Enable on-chip FLASH" default n - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 176 - default 15 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 176 - default 16 - endif + source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig" endmenu diff --git a/bsp/stm32/stm32l475-atk-pandora/board/Kconfig b/bsp/stm32/stm32l475-atk-pandora/board/Kconfig index e7906e12f5d..e1a544b7c3a 100644 --- a/bsp/stm32/stm32l475-atk-pandora/board/Kconfig +++ b/bsp/stm32/stm32l475-atk-pandora/board/Kconfig @@ -27,8 +27,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM4_CH4 select BSP_USING_ADC select BSP_USING_ADC1 - select BSP_USING_I2C - select BSP_USING_I2C1 # PC7-SDA PC6-SCL (User I2C) + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select BSP_USING_DAC select BSP_USING_DAC1 select BSP_USING_SPI @@ -75,7 +76,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_ARDUINO_AHT10 bool "Enable Arduino AHT10 sensor library" - select BSP_USING_I2C4 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C4 select PKG_USING_ARDUINO_ADAFRUIT_AHTX0 depends on !BSP_USING_AHT10 default n @@ -88,13 +91,17 @@ menu "Onboard Peripheral Drivers" config BSP_USING_ARDUINO_AP3216 bool - select BSP_USING_I2C3 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C3 depends on !BSP_USING_AP3216C default n config BSP_USING_ARDUINO_ICM20608 bool - select BSP_USING_I2C3 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C3 depends on !BSP_USING_ICM20608 default n endif @@ -176,24 +183,27 @@ menu "Onboard Peripheral Drivers" config BSP_USING_ICM20608 bool "Enable ICM20608 (i2c3)" - select BSP_USING_I2C - select BSP_USING_I2C3 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C3 select PKG_USING_MPU6XXX select PKG_USING_MPU6XXX_LATEST_VERSION default n config BSP_USING_AHT10 bool "Enable AHT10 (i2c4)" - select BSP_USING_I2C - select BSP_USING_I2C4 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C4 select PKG_USING_AHT10 select AHT10_USING_SENSOR_DEVICE default n config BSP_USING_AP3216C bool "Enable AP3216C (i2c3)" - select BSP_USING_I2C - select BSP_USING_I2C3 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C3 select PKG_USING_AP3216C select AP3216C_USING_SENSOR_DEVICE default n @@ -201,8 +211,9 @@ menu "Onboard Peripheral Drivers" menuconfig BSP_USING_AUDIO bool "Enable Audio Device" select RT_USING_AUDIO - select BSP_USING_I2C - select BSP_USING_I2C3 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C3 default n if BSP_USING_AUDIO @@ -407,54 +418,89 @@ menu "On-chip Peripheral Drivers" bool "Enable QSPI DMA support" default n - menuconfig BSP_USING_I2C - bool "Enable I2C Bus" + config RT_USING_I2C + bool 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 (User I2C)" + if RT_USING_I2C + config RT_USING_SOFT_I2C + bool "Enable software I2C BUS" default n - if BSP_USING_I2C1 - comment "Notice: PC7 --> 39; PC6 --> 38" - config BSP_I2C1_SCL_PIN - int "i2c1 SCL pin number" - range 1 176 - default 38 - config BSP_I2C1_SDA_PIN - int "i2c1 SDA pin number" - range 1 176 - default 39 - endif - - config BSP_USING_I2C3 - bool "Enable I2C3 Bus (AP3216C/ICM20608/ES8388)" - default n - - if BSP_USING_I2C3 - # Notice: PC0 --> 32; PC1 --> 33 - config BSP_I2C3_SCL_PIN - int - default 32 - config BSP_I2C3_SDA_PIN - int - default 33 - endif - - config BSP_USING_I2C4 - bool "Enable I2C4 Bus (AHT10)" - default n - - if BSP_USING_I2C4 - # Notice: PC1 --> 33; PD6 --> 54 - config BSP_I2C4_SCL_PIN - int - default 54 - config BSP_I2C4_SDA_PIN - int - default 33 + if RT_USING_SOFT_I2C + menuconfig RT_USING_SOFT_I2C1 + bool "Enable I2C1 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C1 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C1_SCL_PIN + int "i2c1 scl pin number" + range 1 176 + default 38 + config RT_SOFT_I2C1_SDA_PIN + int "i2c1 sda pin number" + range 1 176 + default 39 + 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_I2C3 + bool "Enable I2C3 Bus (AP3216C/ICM20608/ES8388)" + default n + if RT_USING_SOFT_I2C3 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C3_SCL_PIN + int "i2c3 scl pin number" + range 1 176 + default 32 + config RT_SOFT_I2C3_SDA_PIN + int "i2c3 sda pin number" + range 1 176 + default 33 + 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 (AHT10)" + default n + if RT_USING_SOFT_I2C4 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C4_SCL_PIN + int "i2c4 scl pin number" + range 1 176 + default 54 + config RT_SOFT_I2C4_SDA_PIN + int "i2c4 sda pin number" + range 1 176 + default 33 + 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 endif endif diff --git a/bsp/stm32/stm32l476-st-nucleo/board/Kconfig b/bsp/stm32/stm32l476-st-nucleo/board/Kconfig index fea6b649905..4817b0a3d6d 100644 --- a/bsp/stm32/stm32l476-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32l476-st-nucleo/board/Kconfig @@ -28,8 +28,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM4_CH1 select BSP_USING_PWM17 select BSP_USING_PWM17_CH1 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select BSP_USING_SPI select BSP_USING_SPI1 select BSP_SPI1_TX_USING_DMA @@ -63,61 +64,40 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C (software simulation)" + config RT_USING_I2C + bool 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 (software simulation)" - default n - - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number (PB8)" - range 1 176 - default 24 - - config BSP_I2C1_SDA_PIN - int "i2c1 sda pin number (PB9)" - range 1 176 - default 25 - endif - - config BSP_USING_I2C2 - bool "Enable I2C2 BUS (software simulation)" - default n - - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 1 176 - default 26 - - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 1 176 - default 27 - endif - - config BSP_USING_I2C3 - bool "Enable I2C3 BUS (software simulation)" - default n - - if BSP_USING_I2C3 - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 1 176 - default 32 - - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 1 176 - default 33 - endif + if RT_USING_I2C + config RT_USING_SOFT_I2C + bool "Enable software I2C BUS" + default n + if RT_USING_SOFT_I2C + menuconfig RT_USING_SOFT_I2C1 + bool "Enable I2C1 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C1 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C1_SCL_PIN + int "i2c1 scl pin number" + range 1 176 + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "i2c1 sda pin number" + range 1 176 + default 25 + 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 + endif endif menuconfig BSP_USING_SPI diff --git a/bsp/stm32/stm32l496-ali-developer/board/Kconfig b/bsp/stm32/stm32l496-ali-developer/board/Kconfig index d6fffd1ea4a..d1310f6812e 100644 --- a/bsp/stm32/stm32l496-ali-developer/board/Kconfig +++ b/bsp/stm32/stm32l496-ali-developer/board/Kconfig @@ -98,56 +98,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - menuconfig BSP_USING_I2C2 - bool "Enable I2C2 BUS (software simulation)" - default n - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 1 176 - default 29 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 1 176 - default 30 - endif - - menuconfig BSP_USING_I2C3 - bool "Enable I2C3 BUS (software simulation)" - default n - if BSP_USING_I2C3 - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 1 176 - default 32 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 1 176 - default 33 - endif - - menuconfig BSP_USING_I2C4 - bool "Enable I2C4 BUS (software simulation)" - default y - if BSP_USING_I2C4 - config BSP_I2C4_SCL_PIN - int "i2c4 scl pin number" - range 1 176 - default 60 - config BSP_I2C4_SDA_PIN - int "i2c4 sda pin number" - range 1 176 - default 61 - endif - endif - config BSP_USING_SDIO bool "Enable sdio" select RT_USING_SDIO diff --git a/bsp/stm32/stm32l496-st-nucleo/board/Kconfig b/bsp/stm32/stm32l496-st-nucleo/board/Kconfig index 71553450acf..acd209cc659 100644 --- a/bsp/stm32/stm32l496-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32l496-st-nucleo/board/Kconfig @@ -50,44 +50,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - menuconfig BSP_USING_I2C3 - bool "Enable I2C3 BUS" - default y - if BSP_USING_I2C3 - comment "Notice: PC0 --> 32; PC1 --> 33" - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 1 176 - default 32 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 1 176 - default 33 - endif - - menuconfig BSP_USING_I2C4 - bool "Enable I2C4 BUS" - default n - if BSP_USING_I2C4 - comment "Notice: PC1 --> 33; PD6 --> 54" - config BSP_I2C4_SCL_PIN - int "i2c4 scl pin number" - range 1 176 - default 54 - config BSP_I2C4_SDA_PIN - int "I2C4 sda pin number" - range 1 176 - default 33 - endif - endif - menuconfig BSP_USING_SPI bool "Enable SPI Bus" default n diff --git a/bsp/stm32/stm32l4r5-st-nucleo/board/Kconfig b/bsp/stm32/stm32l4r5-st-nucleo/board/Kconfig index 2164499cdb2..8f2b83bb7e4 100644 --- a/bsp/stm32/stm32l4r5-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32l4r5-st-nucleo/board/Kconfig @@ -150,41 +150,6 @@ menu "Hardware Drivers Config" default n endif - menuconfig BSP_USING_I2C - bool "Enable using I2C BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 144 - default 100 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 144 - default 101 - endif - menuconfig BSP_USING_I2C2 - bool "Enable I2C2 BUS (software simulation)" - default n - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 1 144 - default 10 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 1 144 - default 11 - endif - endif - menuconfig BSP_USING_TIM bool "Enable timer" default n diff --git a/bsp/stm32/stm32l4r9-st-eval/board/Kconfig b/bsp/stm32/stm32l4r9-st-eval/board/Kconfig index 3a69a9eb03c..9d2ff0d9385 100644 --- a/bsp/stm32/stm32l4r9-st-eval/board/Kconfig +++ b/bsp/stm32/stm32l4r9-st-eval/board/Kconfig @@ -18,7 +18,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_TOUCH bool "Enable Touch drivers" - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 default n if BSP_USING_TOUCH config BSP_TOUCH_INT_PIN @@ -59,21 +61,40 @@ menu "On-chip Peripheral Drivers" select BSP_USING_FMC default n - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + config RT_USING_I2C + bool default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 116 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 117 + if RT_USING_I2C + config RT_USING_SOFT_I2C + bool "Enable software I2C BUS" + default n + if RT_USING_SOFT_I2C + menuconfig RT_USING_SOFT_I2C1 + bool "Enable I2C1 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C1 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C1_SCL_PIN + int "i2c1 scl pin number" + range 1 216 + default 116 + config RT_SOFT_I2C1_SDA_PIN + int "i2c1 sda pin number" + range 1 216 + default 117 + 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 + endif endif config BSP_USING_GFXMMU diff --git a/bsp/stm32/stm32mp157a-st-discovery/board/Kconfig b/bsp/stm32/stm32mp157a-st-discovery/board/Kconfig index 28233471b08..8574ef3e97c 100644 --- a/bsp/stm32/stm32mp157a-st-discovery/board/Kconfig +++ b/bsp/stm32/stm32mp157a-st-discovery/board/Kconfig @@ -14,8 +14,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_PMIC bool "Enable PMIC" - select BSP_USING_I2C - select BSP_USING_I2C3 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C3 default y config BSP_USING_PWR @@ -75,8 +76,9 @@ menu "Onboard Peripheral Drivers" select RT_USING_AUDIO select BSP_USING_PMIC select BSP_USING_SDMMC - select BSP_USING_I2C - select BSP_USING_I2C4 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C4 default n if BSP_USING_AUDIO @@ -197,70 +199,65 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN + config RT_USING_I2C + bool default n - if BSP_USING_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - if BSP_USING_I2C1 - comment "Notice: PD7 --> 55; PG15 --> 111" - config BSP_I2C1_SCL_PIN - int "I2C1 scl pin number" - range 1 176 - default 55 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 176 - default 111 - endif - menuconfig BSP_USING_I2C2 - bool "Enable I2C2 BUS (software simulation)" + if RT_USING_I2C + config RT_USING_SOFT_I2C + bool "Enable software I2C BUS" default n - if BSP_USING_I2C2 - comment "Notice: PH4 --> 116; PH5 --> 117" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 1 176 - default 116 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 1 176 - default 117 + if RT_USING_SOFT_I2C + menuconfig RT_USING_SOFT_I2C3 + bool "Enable I2C3 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C3 + comment "Notice: PZ4 --> 180; PZ5 --> 181" + config RT_SOFT_I2C3_SCL_PIN + int "i2c3 scl pin number" + range 1 191 + default 180 + config RT_SOFT_I2C3_SDA_PIN + int "i2c3 sda pin number" + range 1 191 + default 181 + 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 + comment "Notice: PD12 --> 60; PF15 --> 95" + config RT_SOFT_I2C4_SCL_PIN + int "i2c4 scl pin number" + range 1 191 + default 60 + config RT_SOFT_I2C4_SDA_PIN + int "i2c4 sda pin number" + range 1 191 + default 95 + 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 endif - menuconfig BSP_USING_I2C3 - bool "Enable I2C3 BUS (software simulation)" - default n - if BSP_USING_I2C3 - comment "Notice: PZ4 --> 180; PZ5 --> 181" - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 1 191 - default 180 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 1 191 - default 181 - endif - menuconfig BSP_USING_I2C4 - bool "Enable I2C4 BUS (software simulation)" - default n - if BSP_USING_I2C4 - comment "Notice: PD12 --> 60; PF15 --> 95" - config BSP_I2C4_SCL_PIN - int "i2c4 scl pin number" - range 1 191 - default 60 - config BSP_I2C4_SDA_PIN - int "I2C4 sda pin number" - range 1 191 - default 95 - endif - endif menuconfig BSP_USING_SPI diff --git a/bsp/stm32/stm32mp157a-st-ev1/board/Kconfig b/bsp/stm32/stm32mp157a-st-ev1/board/Kconfig index adeebabe3fd..91e41a146a9 100644 --- a/bsp/stm32/stm32mp157a-st-ev1/board/Kconfig +++ b/bsp/stm32/stm32mp157a-st-ev1/board/Kconfig @@ -14,8 +14,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_PMIC bool "Enable PMIC" - select BSP_USING_I2C - select BSP_USING_I2C3 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C3 default y config BSP_USING_PWR @@ -81,8 +82,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_SDMMC select BSP_USING_SDCARD select SD_USING_DFS - select BSP_USING_I2C - select BSP_USING_I2C2 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C2 default n config BSP_USING_DCMI @@ -91,8 +93,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PMIC select BSP_USING_SDMMC select BSP_USING_SDCARD - select BSP_USING_I2C - select BSP_USING_I2C2 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C2 default n config BSP_USING_MFX @@ -250,54 +253,64 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN + config RT_USING_I2C + bool default n - if BSP_USING_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - if BSP_USING_I2C1 - comment "Notice: PD7 --> 55; PG15 --> 111" - config BSP_I2C1_SCL_PIN - int "I2C1 scl pin number" - range 1 176 - default 55 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 176 - default 111 - endif - menuconfig BSP_USING_I2C2 - bool "Enable I2C2 BUS (software simulation)" - default n - if BSP_USING_I2C2 - comment "Notice: PH4 --> 116; PH5 --> 117" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 1 176 - default 116 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 1 176 - default 117 - endif - menuconfig BSP_USING_I2C3 - bool "Enable I2C3 BUS (software simulation)" + if RT_USING_I2C + config RT_USING_SOFT_I2C + bool "Enable software I2C BUS" default n - if BSP_USING_I2C3 - comment "Notice: PZ4 --> 180; PZ5 --> 181" - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 1 191 - default 180 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 1 191 - default 181 + if RT_USING_SOFT_I2C + menuconfig RT_USING_SOFT_I2C2 + bool "Enable I2C2 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C2 + comment "Notice: PH4 --> 116; PH5 --> 117" + config RT_SOFT_I2C2_SCL_PIN + int "i2c2 scl pin number" + range 1 176 + default 116 + config RT_SOFT_I2C2_SDA_PIN + int "i2c2 sda pin number" + range 1 176 + default 25 + 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 I2C2 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C3 + comment "Notice: PZ4 --> 180; PZ5 --> 181" + config RT_SOFT_I2C3_SCL_PIN + int "i2c3 scl pin number" + range 1 191 + default 180 + config RT_SOFT_I2C3_SDA_PIN + int "i2c3 sda pin number" + range 1 191 + default 181 + 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 endif endif diff --git a/bsp/stm32/stm32u575-st-nucleo/board/Kconfig b/bsp/stm32/stm32u575-st-nucleo/board/Kconfig index 8a5b83886af..e17aa6552c5 100644 --- a/bsp/stm32/stm32u575-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32u575-st-nucleo/board/Kconfig @@ -15,8 +15,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM1_CH3 select BSP_USING_PWM4 select BSP_USING_PWM4_CH4 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select BSP_USING_SPI select BSP_USING_SPI1 select BSP_SPI1_TX_USING_DMA @@ -169,26 +170,39 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS" + config RT_USING_I2C + bool default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default y - if BSP_USING_I2C1 - comment "Notice: PB8 --> 24; PB9 --> 25" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 176 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 176 - default 25 + if RT_USING_I2C + config RT_USING_SOFT_I2C + bool "Enable software I2C BUS" + default n + if RT_USING_SOFT_I2C + menuconfig RT_USING_SOFT_I2C1 + bool "Enable I2C1 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C1 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C1_SCL_PIN + int "i2c1 scl pin number" + range 1 179 + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "i2c1 sda pin number" + range 1 176 + default 25 + 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 endif endif diff --git a/bsp/stm32/stm32wb55-st-nucleo/board/Kconfig b/bsp/stm32/stm32wb55-st-nucleo/board/Kconfig index 27cad840f5b..602ab637131 100644 --- a/bsp/stm32/stm32wb55-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32wb55-st-nucleo/board/Kconfig @@ -68,46 +68,6 @@ menu "On-chip Peripheral Drivers" endif - - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default y - if BSP_USING_I2C1 - comment "Notice: PB8 --> 24; PB9 --> 25" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 143 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 143 - default 25 - endif - - menuconfig BSP_USING_I2C3 - bool "Enable I2C3 BUS (software simulation)" - default y - if BSP_USING_I2C3 - comment "Notice: PB13 --> 29; PAB6 -->30" - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 1 143 - default 29 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 1 143 - default 30 - endif - endif - menuconfig BSP_USING_TIM bool "Enable timer" default n diff --git a/bsp/synwit/libraries/SWM320_drivers/SConscript b/bsp/synwit/libraries/SWM320_drivers/SConscript index 9c20c550a4c..1d87f1eceba 100644 --- a/bsp/synwit/libraries/SWM320_drivers/SConscript +++ b/bsp/synwit/libraries/SWM320_drivers/SConscript @@ -15,9 +15,6 @@ if GetDepend(['RT_USING_ADC']): if GetDepend(['RT_USING_HWTIMER']): src += ['drv_hwtimer.c'] -if GetDepend(['RT_USING_I2C']): - src += ['drv_soft_i2c.c'] - if GetDepend(['RT_USING_PWM']): src += ['drv_pwm.c'] diff --git a/bsp/synwit/libraries/SWM320_drivers/drv_soft_i2c.c b/bsp/synwit/libraries/SWM320_drivers/drv_soft_i2c.c deleted file mode 100644 index ed9ceb7142c..00000000000 --- a/bsp/synwit/libraries/SWM320_drivers/drv_soft_i2c.c +++ /dev/null @@ -1,241 +0,0 @@ -/* - * Copyright (c) 2006-2022, Synwit Technology Co.,Ltd. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2018-05-31 ZYH first version - * 2018-12-10 Zohar_Lee format file - * 2020-07-10 lik rewrite - */ - -#include "drv_soft_i2c.h" - -#ifdef RT_USING_I2C -#ifdef BSP_USING_I2C - -/*************************************************************** -*!!!!!!!!!!!!!!!!!!!!!!!!!!!!NOTICE!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -*In order to use swm drv_soft_i2c,you need to commented out -line 114 (SDA_H(ops);) and line 167 (SDA_H(ops);) in i2c-bit-ops.c -At the same time, add one line (SDA_L(ops);)after line 154 (SCL_L(ops);) -in i2c-bit-ops.c -***************************************************************/ - -//#define DRV_DEBUG -#define LOG_TAG "drv.i2c" -#include - -#if !defined(BSP_USING_I2C0) && !defined(BSP_USING_I2C1) -#error "Please define at least one BSP_USING_I2Cx" -/* this driver can be disabled at menuconfig ? RT-Thread Components ? Device Drivers */ -#endif - -#ifdef BSP_USING_I2C0 -#define I2C0_BUS_CFG \ - { \ - .scl = BSP_I2C0_SCL_PIN, \ - .sda = BSP_I2C0_SDA_PIN, \ - .name = "i2c0", \ - } -#endif - -#ifdef BSP_USING_I2C1 -#define I2C1_BUS_CFG \ - { \ - .scl = BSP_I2C1_SCL_PIN, \ - .sda = BSP_I2C1_SDA_PIN, \ - .name = "i2c1", \ - } -#endif - -/* swm config class */ -struct swm_soft_i2c_cfg -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *name; -}; -/* swm i2c dirver class */ -struct swm_soft_i2c_device -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device i2c_bus; -}; -static const struct swm_soft_i2c_cfg swm_soft_i2c_cfg[] = - { -#ifdef BSP_USING_I2C0 - I2C0_BUS_CFG, -#endif -#ifdef BSP_USING_I2C1 - I2C1_BUS_CFG, -#endif -}; - -static struct swm_soft_i2c_device i2c_obj[sizeof(swm_soft_i2c_cfg) / sizeof(swm_soft_i2c_cfg[0])]; - -/** - * This function initializes the i2c pin. - * - * @param swm i2c dirver class. - */ -static void swm_i2c_gpio_init(struct swm_soft_i2c_device *i2c) -{ - struct swm_soft_i2c_cfg *soft_i2c_cfg = (struct swm_soft_i2c_cfg *)i2c->ops.data; - - rt_pin_mode(soft_i2c_cfg->scl, PIN_MODE_OUTPUT_OD); - rt_pin_mode(soft_i2c_cfg->sda, PIN_MODE_OUTPUT_OD); - - rt_pin_write(soft_i2c_cfg->scl, PIN_HIGH); - rt_pin_write(soft_i2c_cfg->sda, PIN_HIGH); -} - -static void swm_i2c_pin_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct swm_soft_i2c_device); - - for(rt_size_t i = 0; i < obj_num; i++) - { - swm_i2c_gpio_init(&i2c_obj[i]); - } -} - -/** - * This function sets the sda pin. - * - * @param swm config class. - * @param The sda pin state. - */ -static void swm_i2c_set_sda(void *data, rt_int32_t state) -{ - struct swm_soft_i2c_cfg *soft_i2c_cfg = (struct swm_soft_i2c_cfg *)data; - rt_pin_mode(soft_i2c_cfg->sda, PIN_MODE_OUTPUT_OD); - if (state) - { - rt_pin_write(soft_i2c_cfg->sda, PIN_HIGH); - } - else - { - rt_pin_write(soft_i2c_cfg->sda, PIN_LOW); - } -} - -/** - * This function sets the scl pin. - * - * @param swm config class. - * @param The scl pin state. - */ -static void swm_i2c_set_scl(void *data, rt_int32_t state) -{ - struct swm_soft_i2c_cfg *soft_i2c_cfg = (struct swm_soft_i2c_cfg *)data; - rt_pin_mode(soft_i2c_cfg->scl, PIN_MODE_OUTPUT_OD); - if (state) - { - rt_pin_write(soft_i2c_cfg->scl, PIN_HIGH); - } - else - { - rt_pin_write(soft_i2c_cfg->scl, PIN_LOW); - } -} - -/** - * This function gets the sda pin state. - * - * @param The sda pin state. - */ -static rt_int32_t swm_i2c_get_sda(void *data) -{ - struct swm_soft_i2c_cfg *soft_i2c_cfg = (struct swm_soft_i2c_cfg *)data; - rt_pin_mode(soft_i2c_cfg->sda, PIN_MODE_INPUT_PULLUP); - return rt_pin_read(soft_i2c_cfg->sda); -} - -/** - * This function gets the scl pin state. - * - * @param The scl pin state. - */ -static rt_int32_t swm_i2c_get_scl(void *data) -{ - struct swm_soft_i2c_cfg *soft_i2c_cfg = (struct swm_soft_i2c_cfg *)data; - rt_pin_mode(soft_i2c_cfg->scl, PIN_MODE_INPUT_PULLUP); - return rt_pin_read(soft_i2c_cfg->scl); -} - -/** - * The time delay function. - * - * @param microseconds. - */ -static void swm_i2c_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 swm_i2c_bit_ops = -{ - .data = RT_NULL, - .pin_init = swm_i2c_pin_init, - .set_sda = swm_i2c_set_sda, - .set_scl = swm_i2c_set_scl, - .get_sda = swm_i2c_get_sda, - .get_scl = swm_i2c_get_scl, - .udelay = swm_i2c_udelay, - .delay_us = 1, - .timeout = 100, - .i2c_pin_init_flag = RT_FALSE -}; - -/* I2C initialization function */ -int swm_i2c_init(void) -{ - rt_err_t result; - - for (rt_size_t i = 0; i < sizeof(i2c_obj) / sizeof(struct swm_soft_i2c_device); i++) - { - i2c_obj[i].ops = swm_i2c_bit_ops; - i2c_obj[i].ops.data = (void *)&swm_soft_i2c_cfg[i]; - i2c_obj[i].i2c_bus.priv = &i2c_obj[i].ops; - - result = rt_i2c_bit_add_bus(&i2c_obj[i].i2c_bus, swm_soft_i2c_cfg[i].name); - RT_ASSERT(result == RT_EOK); - - LOG_D("software simulation %s init done, pin scl: %d, pin sda %d", - swm_soft_i2c_cfg[i].name, - swm_soft_i2c_cfg[i].scl, - swm_soft_i2c_cfg[i].sda); - } - - return RT_EOK; -} -INIT_DEVICE_EXPORT(swm_i2c_init); -#endif /* BSP_USING_I2C */ -#endif /* RT_USING_I2C */ diff --git a/bsp/synwit/libraries/SWM320_drivers/drv_soft_i2c.h b/bsp/synwit/libraries/SWM320_drivers/drv_soft_i2c.h deleted file mode 100644 index 2dd38221249..00000000000 --- a/bsp/synwit/libraries/SWM320_drivers/drv_soft_i2c.h +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright (c) 2006-2022, Synwit Technology Co.,Ltd. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2018-12-10 Zohar_Lee first version - * 2020-07-10 lik rewrite - */ - -#ifndef __DRV_SOFT_I2C_H__ -#define __DRV_SOFT_I2C_H__ - -#include "board.h" - -int swm_i2c_init(void); - -#endif /* __DRV_SOFT_I2C_H__ */ diff --git a/bsp/synwit/libraries/SWM341_drivers/SConscript b/bsp/synwit/libraries/SWM341_drivers/SConscript index 8aacb2087fc..e789ad38265 100644 --- a/bsp/synwit/libraries/SWM341_drivers/SConscript +++ b/bsp/synwit/libraries/SWM341_drivers/SConscript @@ -21,9 +21,6 @@ if GetDepend(['RT_USING_CAN']): if GetDepend(['RT_USING_HWTIMER']): src += ['drv_hwtimer.c'] -if GetDepend(['RT_USING_I2C']): - src += ['drv_soft_i2c.c'] - if GetDepend(['RT_USING_PWM']): src += ['drv_pwm.c'] diff --git a/bsp/synwit/libraries/SWM341_drivers/drv_soft_i2c.c b/bsp/synwit/libraries/SWM341_drivers/drv_soft_i2c.c deleted file mode 100644 index f74715d03df..00000000000 --- a/bsp/synwit/libraries/SWM341_drivers/drv_soft_i2c.c +++ /dev/null @@ -1,219 +0,0 @@ -/* - * Copyright (c) 2006-2022, Synwit Technology Co.,Ltd. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2021-07-01 lik first version - */ - -#include "drv_soft_i2c.h" - -#ifdef RT_USING_I2C -#ifdef BSP_USING_I2C - -//#define DRV_DEBUG -#define LOG_TAG "drv.i2c" -#include - -#if !defined(BSP_USING_I2C0) && !defined(BSP_USING_I2C1) -#error "Please define at least one BSP_USING_I2Cx" -/* this driver can be disabled at menuconfig ? RT-Thread Components ? Device Drivers */ -#endif - -#ifdef BSP_USING_I2C0 -#define I2C0_BUS_CFG \ - { \ - .scl = BSP_I2C0_SCL_PIN, \ - .sda = BSP_I2C0_SDA_PIN, \ - .name = "i2c0", \ - } -#endif - -#ifdef BSP_USING_I2C1 -#define I2C1_BUS_CFG \ - { \ - .scl = BSP_I2C1_SCL_PIN, \ - .sda = BSP_I2C1_SDA_PIN, \ - .name = "i2c1", \ - } -#endif - -/* swm config class */ -struct swm_soft_i2c_cfg -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *name; -}; -/* swm i2c dirver class */ -struct swm_soft_i2c_device -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device i2c_bus; -}; - -static const struct swm_soft_i2c_cfg swm_soft_i2c_cfg[] = - { -#ifdef BSP_USING_I2C0 - I2C0_BUS_CFG, -#endif -#ifdef BSP_USING_I2C1 - I2C1_BUS_CFG, -#endif -}; - -static struct swm_soft_i2c_device i2c_obj[sizeof(swm_soft_i2c_cfg) / sizeof(swm_soft_i2c_cfg[0])]; - -/** - * This function initializes the i2c pin. - * - * @param swm i2c dirver class. - */ -static void swm_i2c_gpio_init(struct swm_soft_i2c_device *i2c) -{ - struct swm_soft_i2c_cfg *soft_i2c_cfg = (struct swm_soft_i2c_cfg *)i2c->ops.data; - - rt_pin_mode(soft_i2c_cfg->scl, PIN_MODE_OUTPUT_OD); - rt_pin_mode(soft_i2c_cfg->sda, PIN_MODE_OUTPUT_OD); - - rt_pin_write(soft_i2c_cfg->scl, PIN_HIGH); - rt_pin_write(soft_i2c_cfg->sda, PIN_HIGH); -} - -/** - * This function sets the sda pin. - * - * @param swm config class. - * @param The sda pin state. - */ -static void swm_i2c_set_sda(void *data, rt_int32_t state) -{ - struct swm_soft_i2c_cfg *soft_i2c_cfg = (struct swm_soft_i2c_cfg *)data; - rt_pin_mode(soft_i2c_cfg->sda, PIN_MODE_OUTPUT_OD); - if (state) - { - rt_pin_write(soft_i2c_cfg->sda, PIN_HIGH); - } - else - { - rt_pin_write(soft_i2c_cfg->sda, PIN_LOW); - } -} - -/** - * This function sets the scl pin. - * - * @param swm config class. - * @param The scl pin state. - */ -static void swm_i2c_set_scl(void *data, rt_int32_t state) -{ - struct swm_soft_i2c_cfg *soft_i2c_cfg = (struct swm_soft_i2c_cfg *)data; - rt_pin_mode(soft_i2c_cfg->scl, PIN_MODE_OUTPUT_OD); - if (state) - { - rt_pin_write(soft_i2c_cfg->scl, PIN_HIGH); - } - else - { - rt_pin_write(soft_i2c_cfg->scl, PIN_LOW); - } -} - -/** - * This function gets the sda pin state. - * - * @param The sda pin state. - */ -static rt_int32_t swm_i2c_get_sda(void *data) -{ - struct swm_soft_i2c_cfg *soft_i2c_cfg = (struct swm_soft_i2c_cfg *)data; - rt_pin_mode(soft_i2c_cfg->sda, PIN_MODE_INPUT_PULLDOWN); - return rt_pin_read(soft_i2c_cfg->sda); -} - -/** - * This function gets the scl pin state. - * - * @param The scl pin state. - */ -static rt_int32_t swm_i2c_get_scl(void *data) -{ - struct swm_soft_i2c_cfg *soft_i2c_cfg = (struct swm_soft_i2c_cfg *)data; - rt_pin_mode(soft_i2c_cfg->scl, PIN_MODE_INPUT_PULLDOWN); - return rt_pin_read(soft_i2c_cfg->scl); -} - -/** - * The time delay function. - * - * @param microseconds. - */ -static void swm_i2c_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 swm_i2c_bit_ops = - { - .data = RT_NULL, - .set_sda = swm_i2c_set_sda, - .set_scl = swm_i2c_set_scl, - .get_sda = swm_i2c_get_sda, - .get_scl = swm_i2c_get_scl, - .udelay = swm_i2c_udelay, - .delay_us = 1, - .timeout = 100}; - -/* I2C initialization function */ -int swm_i2c_init(void) -{ - rt_err_t result; - - for (int i = 0; i < sizeof(i2c_obj) / sizeof(struct swm_soft_i2c_device); i++) - { - i2c_obj[i].ops = swm_i2c_bit_ops; - i2c_obj[i].ops.data = (void *)&swm_soft_i2c_cfg[i]; - i2c_obj[i].i2c_bus.priv = &i2c_obj[i].ops; - swm_i2c_gpio_init(&i2c_obj[i]); - result = rt_i2c_bit_add_bus(&i2c_obj[i].i2c_bus, swm_soft_i2c_cfg[i].name); - RT_ASSERT(result == RT_EOK); - - LOG_D("software simulation %s init done, pin scl: %d, pin sda %d", - swm_soft_i2c_cfg[i].name, - swm_soft_i2c_cfg[i].scl, - swm_soft_i2c_cfg[i].sda); - } - - return RT_EOK; -} -INIT_DEVICE_EXPORT(swm_i2c_init); -#endif /* BSP_USING_I2C */ -#endif /* RT_USING_I2C */ diff --git a/bsp/synwit/libraries/SWM341_drivers/drv_soft_i2c.h b/bsp/synwit/libraries/SWM341_drivers/drv_soft_i2c.h deleted file mode 100644 index 60151d0e509..00000000000 --- a/bsp/synwit/libraries/SWM341_drivers/drv_soft_i2c.h +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright (c) 2006-2022, Synwit Technology Co.,Ltd. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2021-07-01 lik first version - */ - -#ifndef __DRV_SOFT_I2C_H__ -#define __DRV_SOFT_I2C_H__ - -#include "board.h" - -int swm_i2c_init(void); - -#endif /* __DRV_SOFT_I2C_H__ */ diff --git a/bsp/synwit/swm320-mini/board/Kconfig b/bsp/synwit/swm320-mini/board/Kconfig index 6dab8a31efc..bffb259a604 100644 --- a/bsp/synwit/swm320-mini/board/Kconfig +++ b/bsp/synwit/swm320-mini/board/Kconfig @@ -124,43 +124,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C0 - bool "Enable I2C0" - default n - if BSP_USING_I2C0 - comment "Notice: PC2 --> 28; PC3 --> 29" - config BSP_I2C0_SCL_PIN - int "I2C0 scl pin number" - range 0 99 - default 28 - config BSP_I2C0_SDA_PIN - int "I2C0 sda pin number" - range 0 99 - default 29 - endif - config BSP_USING_I2C1 - bool "Enable I2C1" - default n - if BSP_USING_I2C1 - comment "Notice: PC6 --> 32; PC7 --> 33" - config BSP_I2C1_SCL_PIN - int "I2C1 scl pin number" - range 0 99 - default 32 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 99 - default 33 - endif - endif - menuconfig BSP_USING_PWM bool "Enable PWM" default n diff --git a/bsp/synwit/swm341-mini/board/Kconfig b/bsp/synwit/swm341-mini/board/Kconfig index df36c1a65cc..13afb78062c 100644 --- a/bsp/synwit/swm341-mini/board/Kconfig +++ b/bsp/synwit/swm341-mini/board/Kconfig @@ -184,38 +184,39 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + config RT_USING_I2C + bool default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C0 - bool "Enable I2C0" - default n - if BSP_USING_I2C0 - config BSP_I2C0_SCL_PIN - int "I2C0 scl pin number" - range 0 111 - default 1 - config BSP_I2C0_SDA_PIN - int "I2C0 sda pin number" - range 0 111 - default 0 - endif - config BSP_USING_I2C1 - bool "Enable I2C1" + if RT_USING_I2C + config RT_USING_SOFT_I2C + bool "Enable software I2C BUS" default n - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "I2C1 scl pin number" - range 0 111 - default 37 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 111 - default 36 + if RT_USING_SOFT_I2C + menuconfig RT_USING_SOFT_I2C0 + bool "Enable I2C0 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C0 + comment "Please refer to the 'bsp_io.h' file to configure the pins" + config RT_SOFT_I2C0_SCL_PIN + int "i2c0 scl pin number" + range 0 111 + default 1 + config RT_SOFT_I2C0_SDA_PIN + int "i2c0 sda pin number" + range 0 111 + default 0 + 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 endif endif @@ -369,8 +370,9 @@ menu "On-chip Peripheral Drivers" bool "Enable gt9147(use i2c0)" select RT_USING_TOUCH select RT_TOUCH_PIN_IRQ - select BSP_USING_I2C - select BSP_USING_I2C0 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C0 select PKG_USING_GT9147 select PKG_USING_GT9147_LATEST_VERSION default n diff --git a/bsp/w60x/drivers/Kconfig b/bsp/w60x/drivers/Kconfig index 2a10fd89dcf..3d2f94652d5 100644 --- a/bsp/w60x/drivers/Kconfig +++ b/bsp/w60x/drivers/Kconfig @@ -185,24 +185,6 @@ menu "On-chip Peripheral Drivers" default 200000 endif - menuconfig BSP_USING_SOFT_I2C - bool "Enable SOFT I2C" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - default n - - if BSP_USING_SOFT_I2C - config BSP_USING_SOFT_I2C1 - bool "Enabel SOFT I2C1" - default n - endif - - if BSP_USING_SOFT_I2C - config BSP_USING_SOFT_I2C2 - bool "Enabel SOFT I2C2" - default n - endif - menuconfig BSP_USING_SPI bool "Enable SPI" select RT_USING_SPI diff --git a/bsp/w60x/drivers/SConscript b/bsp/w60x/drivers/SConscript index ef076132c33..f094635639f 100644 --- a/bsp/w60x/drivers/SConscript +++ b/bsp/w60x/drivers/SConscript @@ -23,9 +23,6 @@ if GetDepend('BSP_USING_PIN'): if GetDepend('BSP_USING_HWTIMER'): src += ['drv_hw_timer.c'] -if GetDepend('BSP_USING_SOFT_I2C'): - src += ['drv_soft_i2c.c'] - if GetDepend('BSP_USING_I2C'): src += ['drv_i2c.c'] diff --git a/bsp/w60x/drivers/drv_soft_i2c.c b/bsp/w60x/drivers/drv_soft_i2c.c deleted file mode 100644 index 6cda890ec2e..00000000000 --- a/bsp/w60x/drivers/drv_soft_i2c.c +++ /dev/null @@ -1,222 +0,0 @@ -/* - * Copyright (c) 2006-2021, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2019-03-22 balanceTWK first version - */ - -#include -#include "drv_soft_i2c.h" - -#include "wm_regs.h" -#include "wm_gpio.h" -#include "pin_map.h" - -#define DBG_SECTION_NAME "soft_i2c" -#define DBG_COLOR -#define DBG_LEVEL DBG_LOG -#include - -#ifdef BSP_USING_SOFT_I2C - -#if !defined(BSP_USING_SOFT_I2C1) && !defined(BSP_USING_SOFT_I2C2) && !defined(BSP_USING_SOFT_I2C3) -#error "Please define at least one BSP_USING_SOFT_I2Cx" -#endif - -static const struct w60x_soft_i2c_config soft_i2c_config[] = -{ -#ifdef BSP_USING_SOFT_I2C1 - I2C1_BUS_CONFIG, -#endif -#ifdef BSP_USING_SOFT_I2C2 - I2C2_BUS_CONFIG, -#endif -#ifdef BSP_USING_SOFT_I2C3 - I2C3_BUS_CONFIG, -#endif -}; - -static struct w60x_i2c i2c_obj[sizeof(soft_i2c_config) / sizeof(soft_i2c_config[0])]; - -/** - * This function initializes the i2c pin. - * - * @param w60x i2c dirver class. - */ -static void w60x_i2c_gpio_init(struct w60x_i2c *i2c) -{ - struct w60x_soft_i2c_config* cfg = (struct w60x_soft_i2c_config*)i2c->ops.data; - rt_int16_t scl,sda; - - scl = wm_get_pin(cfg->scl); - sda = wm_get_pin(cfg->sda); - - tls_gpio_cfg((enum tls_io_name)scl, WM_GPIO_DIR_OUTPUT, WM_GPIO_ATTR_PULLHIGH); - tls_gpio_cfg((enum tls_io_name)sda, WM_GPIO_DIR_OUTPUT, WM_GPIO_ATTR_PULLHIGH); - - tls_gpio_write((enum tls_io_name)scl, 1); - tls_gpio_write((enum tls_io_name)sda, 1); -} - -static void w60x_i2c_pin_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct w60x_i2c); - - for(rt_size_t i = 0; i < obj_num; i++) - { - w60x_i2c_gpio_init(&i2c_obj[i]); - } -} - -/** - * This function sets the sda pin. - * - * @param w60x config class. - * @param The sda pin state. - */ -static void w60x_set_sda(void *data, rt_int32_t state) -{ - struct w60x_soft_i2c_config* cfg = (struct w60x_soft_i2c_config*)data; - rt_int16_t sda; - - sda = wm_get_pin(cfg->sda); - - if (state) - { - tls_gpio_cfg((enum tls_io_name)sda, WM_GPIO_DIR_INPUT, WM_GPIO_ATTR_PULLHIGH); - } - else - { - tls_gpio_cfg((enum tls_io_name)sda, WM_GPIO_DIR_OUTPUT, WM_GPIO_ATTR_FLOATING); - tls_gpio_write((enum tls_io_name)sda, 0); - } -} - -/** - * This function sets the scl pin. - * - * @param w60x config class. - * @param The scl pin state. - */ -static void w60x_set_scl(void *data, rt_int32_t state) -{ - struct w60x_soft_i2c_config* cfg = (struct w60x_soft_i2c_config*)data; - rt_int16_t scl; - - scl = wm_get_pin(cfg->scl); - - if (state) - { - tls_gpio_cfg((enum tls_io_name)scl, WM_GPIO_DIR_INPUT, WM_GPIO_ATTR_PULLHIGH); - } - else - { - tls_gpio_cfg((enum tls_io_name)scl, WM_GPIO_DIR_OUTPUT, WM_GPIO_ATTR_FLOATING); - tls_gpio_write((enum tls_io_name)scl, 0); - } -} - -/** - * This function gets the sda pin state. - * - * @param The sda pin state. - */ -static rt_int32_t w60x_get_sda(void *data) -{ - struct w60x_soft_i2c_config* cfg = (struct w60x_soft_i2c_config*)data; - rt_int16_t sda; - - sda = wm_get_pin(cfg->sda); - - return tls_gpio_read((enum tls_io_name)sda); -} - -/** - * This function gets the scl pin state. - * - * @param The scl pin state. - */ -static rt_int32_t w60x_get_scl(void *data) -{ - struct w60x_soft_i2c_config* cfg = (struct w60x_soft_i2c_config*)data; - rt_int16_t scl; - - scl = wm_get_pin(cfg->scl); - - return tls_gpio_read((enum tls_io_name)scl); -} - - -static const struct rt_i2c_bit_ops w60x_bit_ops_default = -{ - .data = RT_NULL, - .pin_init = w60x_i2c_pin_init, - .set_sda = w60x_set_sda, - .set_scl = w60x_set_scl, - .get_sda = w60x_get_sda, - .get_scl = w60x_get_scl, - .udelay = rt_hw_us_delay, - .delay_us = 1, - .timeout = 100, - .i2c_pin_init_flag = RT_FALSE -}; - -/** - * if i2c is locked, this function will unlock it - * - * @param w60x config class - * - * @return RT_EOK indicates successful unlock. - */ -static rt_err_t w60x_i2c_bus_unlock(const struct w60x_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); - rt_hw_us_delay(100); - rt_pin_write(cfg->scl, PIN_LOW); - rt_hw_us_delay(100); - } - } - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - return -RT_ERROR; - } - - return RT_EOK; -} - -/* I2C initialization function */ -int rt_soft_i2c_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct w60x_i2c); - rt_err_t result; - - for (rt_size_t i = 0; i < obj_num; i++) - { - i2c_obj[i].ops = w60x_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); - w60x_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_DEVICE_EXPORT(rt_soft_i2c_init); - -#endif /* BSP_USING_SOFT_I2C */ diff --git a/bsp/w60x/drivers/drv_soft_i2c.h b/bsp/w60x/drivers/drv_soft_i2c.h deleted file mode 100644 index bd0cdc0431f..00000000000 --- a/bsp/w60x/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 - * 2019-03-22 balanceTWK first version - */ - -#ifndef __DRV_SOFT_I2C__ -#define __DRV_SOFT_I2C__ - -#include -#include -#include - -/* w60x config class */ -struct w60x_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; -/* w60x i2c dirver class */ -struct w60x_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device i2c_bus; -}; - -#ifdef BSP_USING_SOFT_I2C1 -#define I2C1_BUS_CONFIG \ - { \ - .scl = SOFT_I2C1_SCL_PIN, \ - .sda = SOFT_I2C1_SDA_PIN, \ - .bus_name = "i2c1soft", \ - } -#endif - -#ifdef BSP_USING_SOFT_I2C2 -#define I2C2_BUS_CONFIG \ - { \ - .scl = SOFT_I2C2_SCL_PIN, \ - .sda = SOFT_I2C2_SDA_PIN, \ - .bus_name = "i2c2soft", \ - } -#endif - -#ifdef BSP_USING_SOFT_I2C3 -#define I2C3_BUS_CONFIG \ - { \ - .scl = SOFT_I2C3_SCL_PIN, \ - .sda = SOFT_I2C3_SDA_PIN, \ - .bus_name = "i2c3soft", \ - } -#endif - -int rt_hw_i2c_init(void); - -#endif diff --git a/bsp/wch/risc-v/Libraries/ch32_drivers/SConscript b/bsp/wch/risc-v/Libraries/ch32_drivers/SConscript index 3b8e88aa834..4f849e5396d 100644 --- a/bsp/wch/risc-v/Libraries/ch32_drivers/SConscript +++ b/bsp/wch/risc-v/Libraries/ch32_drivers/SConscript @@ -21,9 +21,6 @@ if GetDepend('SOC_RISCV_FAMILY_CH32'): if GetDepend('BSP_USING_I2C'): src += ['drv_i2c.c'] - if GetDepend('BSP_USING_SOFT_I2C'): - src += ['drv_soft_i2c.c'] - if GetDepend('BSP_USING_SPI'): src += ['drv_soft_spi.c','drv_spi.c'] diff --git a/bsp/wch/risc-v/Libraries/ch32_drivers/drv_soft_i2c.c b/bsp/wch/risc-v/Libraries/ch32_drivers/drv_soft_i2c.c deleted file mode 100644 index 149d2efb62d..00000000000 --- a/bsp/wch/risc-v/Libraries/ch32_drivers/drv_soft_i2c.c +++ /dev/null @@ -1,226 +0,0 @@ -/* - * Copyright (c) 2006-2023, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2022-09-19 hg0720 the first version which add from wch - */ - -#include -#include "drv_soft_i2c.h" - -#ifdef BSP_USING_SOFT_I2C - -//#define DRV_DEBUG -#define LOG_TAG "drv.i2c" -#include - -#if !defined(BSP_USING_I2C1) && !defined(BSP_USING_I2C2) -#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 ch32_soft_i2c_config soft_i2c_config[] = -{ -#ifdef BSP_USING_I2C1 - I2C1_BUS_CONFIG, -#endif -#ifdef BSP_USING_I2C2 - I2C2_BUS_CONFIG, -#endif -}; - -static struct ch32_i2c i2c_obj[sizeof(soft_i2c_config) / sizeof(soft_i2c_config[0])]; - -/* - * This function initializes the i2c pin. - * - * @param ch32 i2c dirver class. - */ -static void ch32_i2c_gpio_init(struct ch32_i2c *i2c) -{ - struct ch32_soft_i2c_config* cfg = (struct ch32_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 ch32_i2c_pin_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct ch32_i2c); - - for(rt_size_t i = 0; i < obj_num; i++) - { - ch32_i2c_gpio_init(&i2c_obj[i]); - } -} - -/* - * This function sets the sda pin. - * - * @param Ch32 config class. - * @param The sda pin state. - */ -static void ch32_set_sda(void *data, rt_int32_t state) -{ - struct ch32_soft_i2c_config* cfg = (struct ch32_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 Ch32 config class. - * @param The scl pin state. - */ -static void ch32_set_scl(void *data, rt_int32_t state) -{ - struct ch32_soft_i2c_config* cfg = (struct ch32_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 ch32_get_sda(void *data) -{ - struct ch32_soft_i2c_config* cfg = (struct ch32_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 ch32_get_scl(void *data) -{ - struct ch32_soft_i2c_config* cfg = (struct ch32_soft_i2c_config*)data; - return rt_pin_read(cfg->scl); -} - -/* - * The time delay function. - * - * @param microseconds. - */ -static void ch32_udelay(rt_uint32_t us) -{ - rt_uint32_t ticks; - rt_uint32_t told, tnow, tcnt = 0; - rt_uint32_t reload = SysTick->CMP; - - ticks = us * reload / (1000000 / RT_TICK_PER_SECOND); - told = SysTick->CNT; - while (1) - { - tnow = SysTick->CNT; - if (tnow != told) - { - if (tnow > told) - { - tcnt += tnow - told; - } - else - { - tcnt += reload - told + tnow; - } - told = tnow; - if (tcnt >= ticks) - { - break; - } - } - } -} - -static const struct rt_i2c_bit_ops ch32_bit_ops_default = -{ - .data = RT_NULL, - .pin_init = ch32_i2c_pin_init, - .set_sda = ch32_set_sda, - .set_scl = ch32_set_scl, - .get_sda = ch32_get_sda, - .get_scl = ch32_get_scl, - .udelay = ch32_udelay, - .delay_us = 1, - .timeout = 100, - .i2c_pin_init_flag = RT_FALSE -}; - -/* - * if i2c is locked, this function will unlock it - * - * @param ch32 config class - * - * @return RT_EOK indicates successful unlock. - */ -static rt_err_t ch32_i2c_bus_unlock(const struct ch32_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); - ch32_udelay(100); - rt_pin_write(cfg->scl, PIN_LOW); - ch32_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 ch32_i2c); - rt_err_t result; - - for (rt_size_t i = 0; i < obj_num; i++) - { - i2c_obj[i].ops = ch32_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); - ch32_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/wch/risc-v/Libraries/ch32_drivers/drv_soft_i2c.h b/bsp/wch/risc-v/Libraries/ch32_drivers/drv_soft_i2c.h deleted file mode 100644 index b0d9912fa45..00000000000 --- a/bsp/wch/risc-v/Libraries/ch32_drivers/drv_soft_i2c.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 2006-2023, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2022-09-19 hg0720 the first version which add from wch - */ - -#ifndef __DRV_I2C__ -#define __DRV_I2C__ - -#include -#include -#include - -/* ch32 config class */ -struct ch32_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; - -/* ch32 i2c dirver class */ -struct ch32_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 - -int rt_hw_i2c_init(void); - -#endif diff --git a/bsp/wch/risc-v/ch32v208w-r0/board/Kconfig b/bsp/wch/risc-v/ch32v208w-r0/board/Kconfig index 567e4ce6b52..3787a1b5d74 100644 --- a/bsp/wch/risc-v/ch32v208w-r0/board/Kconfig +++ b/bsp/wch/risc-v/ch32v208w-r0/board/Kconfig @@ -30,8 +30,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_TIM4_PWM_CH2 select BSP_USING_TIM4_PWM_CH3 select BSP_USING_TIM4_PWM_CH4 - select BSP_USING_SOFT_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select RTDUINO_USING_WIRE imply RTDUINO_USING_SERVO default n @@ -120,45 +121,39 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_SOFT_I2C - bool "Enable I2C Bus" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN + config RT_USING_I2C + bool default n - - if BSP_USING_SOFT_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 Bus (software simulation)" + if RT_USING_I2C + config RT_USING_SOFT_I2C + bool "Enable software I2C BUS" default n - - if BSP_USING_I2C1 - comment "Notice: PC7 --> 39; PC6 --> 38" - - config BSP_I2C1_SCL_PIN - int "i2c1 SCL pin number" - range 0 79 - default 38 - config BSP_I2C1_SDA_PIN - int "i2c1 SDA pin number" - range 0 79 - default 39 - endif - - config BSP_USING_I2C2 - bool "Enable I2C2 Bus (software simulation)" - default n - - if BSP_USING_I2C2 - comment "Notice: PC1 --> 33; PC0 --> 32" - config BSP_I2C2_SCL_PIN - int "i2c2 SCL pin number" - range 0 79 - default 32 - config BSP_I2C2_SDA_PIN - int "i2c2 SDA pin number" - range 0 79 - default 33 + if RT_USING_SOFT_I2C + menuconfig RT_USING_SOFT_I2C1 + bool "Enable I2C1 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C1 + comment "Notice: PC7 --> 39; PC6 --> 38" + config RT_SOFT_I2C1_SCL_PIN + int "i2c1 scl pin number" + range 0 79 + default 38 + config RT_SOFT_I2C1_SDA_PIN + int "i2c1 sda pin number" + range 0 79 + default 39 + 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 endif endif diff --git a/bsp/wch/risc-v/ch32v307v-r1/board/Kconfig b/bsp/wch/risc-v/ch32v307v-r1/board/Kconfig index 23c3f1eb3d2..a0054995e89 100644 --- a/bsp/wch/risc-v/ch32v307v-r1/board/Kconfig +++ b/bsp/wch/risc-v/ch32v307v-r1/board/Kconfig @@ -31,8 +31,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_TIM4_PWM_CH4 select BSP_USING_TIM6 select BSP_USING_TIM6_HWTIMER - select BSP_USING_SOFT_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select RTDUINO_USING_WIRE imply RTDUINO_USING_SERVO default n @@ -138,62 +139,41 @@ menu "On-chip Peripheral Drivers" select RT_USING_USB_DEVICE default n - menuconfig BSP_USING_I2C - bool "Enable I2C" - select RT_USING_I2C - - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1" - default n - - config BSP_USING_I2C2 - bool "Enable I2C2" - default n - - endif - - menuconfig BSP_USING_SOFT_I2C - bool "Enable I2C Bus" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - default n - - if BSP_USING_SOFT_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 Bus (software simulation)" - default n - - if BSP_USING_I2C1 - comment "Notice: PB10 --> 26; PB11 --> 27" - - config BSP_I2C1_SCL_PIN - int "i2c1 SCL pin number" - range 0 79 - default 26 - config BSP_I2C1_SDA_PIN - int "i2c1 SDA pin number" - range 0 79 - default 27 - endif - - config BSP_USING_I2C2 - bool "Enable I2C2 Bus (software simulation)" - default n - - if BSP_USING_I2C2 - comment "Notice: PC1 --> 33; PC0 --> 32" - config BSP_I2C2_SCL_PIN - int "i2c2 SCL pin number" - range 0 79 - default 32 - config BSP_I2C2_SDA_PIN - int "i2c2 SDA pin number" - range 0 79 - default 33 - endif - endif + config RT_USING_I2C + bool + default n + if RT_USING_I2C + config RT_USING_SOFT_I2C + bool "Enable software I2C BUS" + default n + if RT_USING_SOFT_I2C + menuconfig RT_USING_SOFT_I2C1 + bool "Enable I2C1 Bus (software simulation)" + default n + if RT_USING_SOFT_I2C1 + comment "Notice: PB10 --> 26; PB11 --> 27" + config RT_SOFT_I2C1_SCL_PIN + int "i2c1 scl pin number" + range 0 79 + default 26 + config RT_SOFT_I2C1_SDA_PIN + int "i2c1 sda pin number" + range 0 79 + default 27 + 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 + endif + endif menuconfig BSP_USING_SPI bool "Enable SPI"