summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCYFS <[email protected]>2026-07-15 17:54:33 +0800
committerRbb666 <[email protected]>2026-07-16 13:19:57 +0800
commit414ff7f3710168dbf99a398e18b2a4ff8448b005 (patch)
tree4d29ff0dadc5cb4aa74941deb4e28bb46ff5ad6d
parent997de9433af42aacb1988489ccb08b6688f440cc (diff)
[bsp][drivers][soft_i2c] unify the software I2C driver
-rw-r--r--bsp/ESP/ESP32_C3/.ci/attachconfig/ci.attachconfig.yml9
-rw-r--r--bsp/ESP/libraries/drivers/Kconfig52
-rw-r--r--bsp/ESP/libraries/drivers/SConscript3
-rw-r--r--bsp/ESP/libraries/drivers/drv_sw_i2c.c199
-rw-r--r--bsp/ESP/libraries/drivers/drv_sw_i2c.h34
-rw-r--r--bsp/Infineon/libraries/HAL_Drivers/SConscript4
-rw-r--r--bsp/Infineon/libraries/HAL_Drivers/drv_soft_i2c.c192
-rw-r--r--bsp/Infineon/libraries/HAL_Drivers/drv_soft_i2c.h43
-rw-r--r--bsp/Infineon/libraries/templates/PSOC62/.ci/attachconfig/ci.attachconfig.yml8
-rw-r--r--bsp/Infineon/libraries/templates/PSOC62/board/Kconfig51
-rw-r--r--bsp/Infineon/psoc6-cy8ckit-062-BLE/.ci/attachconfig/ci.attachconfig.yml8
-rw-r--r--bsp/Infineon/psoc6-cy8ckit-062-BLE/board/Kconfig51
-rw-r--r--bsp/Infineon/psoc6-cy8ckit-062-WIFI-BT/.ci/attachconfig/ci.attachconfig.yml8
-rw-r--r--bsp/Infineon/psoc6-cy8ckit-062-WIFI-BT/board/Kconfig51
-rw-r--r--bsp/Infineon/psoc6-cy8ckit-062S2-43012/.ci/attachconfig/ci.attachconfig.yml8
-rw-r--r--bsp/Infineon/psoc6-cy8ckit-062S2-43012/board/Kconfig51
-rw-r--r--bsp/Infineon/psoc6-cy8ckit-062s4/.ci/attachconfig/ci.attachconfig.yml10
-rw-r--r--bsp/Infineon/psoc6-cy8ckit-062s4/board/Kconfig51
-rw-r--r--bsp/Infineon/psoc6-cy8cproto-062S3-4343W/.ci/attachconfig/ci.attachconfig.yml8
-rw-r--r--bsp/Infineon/psoc6-cy8cproto-062S3-4343W/board/Kconfig51
-rw-r--r--bsp/Infineon/psoc6-evaluationkit-062S2/.ci/attachconfig/ci.attachconfig.yml8
-rw-r--r--bsp/Infineon/psoc6-evaluationkit-062S2/board/Kconfig53
-rw-r--r--bsp/acm32/acm32f0x0-nucleo/.ci/attachconfig/ci.attachconfig.yml8
-rw-r--r--bsp/acm32/acm32f0x0-nucleo/drivers/Kconfig49
-rw-r--r--bsp/acm32/acm32f0x0-nucleo/drivers/drv_soft_i2c.c163
-rw-r--r--bsp/acm32/acm32f0x0-nucleo/drivers/drv_soft_i2c.h44
-rw-r--r--bsp/airm2m/air32f103/.ci/attachconfig/ci.attachconfig.yml8
-rw-r--r--bsp/airm2m/air32f103/board/Kconfig52
-rw-r--r--bsp/airm2m/air32f103/libraries/SConscript3
-rw-r--r--bsp/airm2m/air32f103/libraries/rt_drivers/drv_soft_i2c.c231
-rw-r--r--bsp/airm2m/air32f103/libraries/rt_drivers/drv_soft_i2c.h69
-rw-r--r--bsp/apm32/apm32e103ze-evalboard/.ci/attachconfig/ci.attachconfig.yml16
-rw-r--r--bsp/apm32/apm32e103ze-evalboard/board/Kconfig133
-rw-r--r--bsp/apm32/apm32e103ze-tinyboard/.ci/attachconfig/ci.attachconfig.yml16
-rw-r--r--bsp/apm32/apm32e103ze-tinyboard/board/Kconfig126
-rw-r--r--bsp/apm32/apm32f030r8-miniboard/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/apm32/apm32f030r8-miniboard/board/Kconfig88
-rw-r--r--bsp/apm32/apm32f051r8-evalboard/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/apm32/apm32f051r8-evalboard/board/Kconfig95
-rw-r--r--bsp/apm32/apm32f072vb-miniboard/.ci/attachconfig/ci.attachconfig.yml16
-rw-r--r--bsp/apm32/apm32f072vb-miniboard/board/Kconfig126
-rw-r--r--bsp/apm32/apm32f091vc-miniboard/.ci/attachconfig/ci.attachconfig.yml16
-rw-r--r--bsp/apm32/apm32f091vc-miniboard/board/Kconfig126
-rw-r--r--bsp/apm32/apm32f103vb-miniboard/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/apm32/apm32f103vb-miniboard/board/Kconfig88
-rw-r--r--bsp/apm32/apm32f103xe-minibroard/.ci/attachconfig/ci.attachconfig.yml8
-rw-r--r--bsp/apm32/apm32f103xe-minibroard/board/Kconfig45
-rw-r--r--bsp/apm32/apm32f107vc-evalboard/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/apm32/apm32f107vc-evalboard/board/Kconfig95
-rw-r--r--bsp/apm32/apm32f407ig-minibroard/.ci/attachconfig/ci.attachconfig.yml8
-rw-r--r--bsp/apm32/apm32f407ig-minibroard/board/Kconfig45
-rw-r--r--bsp/apm32/apm32f407zg-evalboard/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/apm32/apm32f407zg-evalboard/board/Kconfig88
-rw-r--r--bsp/apm32/apm32s103vb-miniboard/.ci/attachconfig/ci.attachconfig.yml16
-rw-r--r--bsp/apm32/apm32s103vb-miniboard/board/Kconfig126
-rw-r--r--bsp/apm32/libraries/Drivers/SConscript4
-rw-r--r--bsp/apm32/libraries/Drivers/drv_soft_i2c.c255
-rw-r--r--bsp/at32/at32a403a-start/.ci/attachconfig/ci.attachconfig.yml16
-rw-r--r--bsp/at32/at32a403a-start/board/Kconfig123
-rw-r--r--bsp/at32/at32a423-start/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/at32/at32a423-start/board/Kconfig86
-rw-r--r--bsp/at32/at32f402-start/.ci/attachconfig/ci.attachconfig.yml16
-rw-r--r--bsp/at32/at32f402-start/board/Kconfig123
-rw-r--r--bsp/at32/at32f403a-start/.ci/attachconfig/ci.attachconfig.yml16
-rw-r--r--bsp/at32/at32f403a-start/board/Kconfig123
-rw-r--r--bsp/at32/at32f405-start/.ci/attachconfig/ci.attachconfig.yml16
-rw-r--r--bsp/at32/at32f405-start/board/Kconfig123
-rw-r--r--bsp/at32/at32f407-start/.ci/attachconfig/ci.attachconfig.yml16
-rw-r--r--bsp/at32/at32f407-start/board/Kconfig123
-rw-r--r--bsp/at32/at32f413-start/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/at32/at32f413-start/board/Kconfig86
-rw-r--r--bsp/at32/at32f415-start/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/at32/at32f415-start/board/Kconfig86
-rw-r--r--bsp/at32/at32f421-start/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/at32/at32f421-start/board/Kconfig86
-rw-r--r--bsp/at32/at32f423-start/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/at32/at32f423-start/board/Kconfig86
-rw-r--r--bsp/at32/at32f425-start/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/at32/at32f425-start/board/Kconfig86
-rw-r--r--bsp/at32/at32f435-start/.ci/attachconfig/ci.attachconfig.yml16
-rw-r--r--bsp/at32/at32f435-start/board/Kconfig123
-rw-r--r--bsp/at32/at32f437-start/.ci/attachconfig/ci.attachconfig.yml16
-rw-r--r--bsp/at32/at32f437-start/board/Kconfig123
-rw-r--r--bsp/at32/at32f455-start/.ci/attachconfig/ci.attachconfig.yml16
-rw-r--r--bsp/at32/at32f455-start/board/Kconfig123
-rw-r--r--bsp/at32/at32f456-start/.ci/attachconfig/ci.attachconfig.yml16
-rw-r--r--bsp/at32/at32f456-start/board/Kconfig123
-rw-r--r--bsp/at32/at32f457-start/.ci/attachconfig/ci.attachconfig.yml16
-rw-r--r--bsp/at32/at32f457-start/board/Kconfig123
-rw-r--r--bsp/at32/at32m412-start/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/at32/at32m412-start/board/Kconfig86
-rw-r--r--bsp/at32/at32m416-start/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/at32/at32m416-start/board/Kconfig86
-rw-r--r--bsp/at32/libraries/rt_drivers/SConscript4
-rw-r--r--bsp/at32/libraries/rt_drivers/drv_soft_i2c.c231
-rw-r--r--bsp/at32/libraries/rt_drivers/drv_soft_i2c.h61
-rw-r--r--bsp/at91/at91sam9260/drivers/SConscript3
-rw-r--r--bsp/at91/at91sam9260/drivers/at91_i2c_gpio.c114
-rw-r--r--bsp/at91/at91sam9g45/drivers/SConscript4
-rw-r--r--bsp/at91/at91sam9g45/drivers/at91_i2c_gpio.c114
-rw-r--r--bsp/avr32/at32uc3a0256/.ci/attachconfig/ci.attachconfig.yml8
-rw-r--r--bsp/avr32/at32uc3a0256/Kconfig40
-rw-r--r--bsp/avr32/at32uc3a0256/board.c6
-rw-r--r--bsp/avr32/drivers/SConscript3
-rw-r--r--bsp/avr32/drivers/drv_soft_i2c.c180
-rw-r--r--bsp/avr32/drivers/drv_soft_i2c.h46
-rw-r--r--bsp/bluetrum/ab32vg1-ab-prougen/.ci/attachconfig/ci.attachconfig.yml8
-rw-r--r--bsp/bluetrum/ab32vg1-ab-prougen/board/Kconfig43
-rw-r--r--bsp/bluetrum/libraries/hal_drivers/SConscript3
-rw-r--r--bsp/bluetrum/libraries/hal_drivers/drv_soft_i2c.c224
-rw-r--r--bsp/bluetrum/libraries/hal_drivers/drv_soft_i2c.h72
-rw-r--r--bsp/bouffalo_lab/bl60x/.ci/attachconfig/ci.attachconfig.yml8
-rw-r--r--bsp/bouffalo_lab/bl61x/.ci/attachconfig/ci.attachconfig.yml8
-rw-r--r--bsp/bouffalo_lab/bl70x/.ci/attachconfig/ci.attachconfig.yml8
-rwxr-xr-xbsp/bouffalo_lab/libraries/Kconfig154
-rwxr-xr-xbsp/bouffalo_lab/libraries/rt_drivers/SConscript3
-rw-r--r--bsp/bouffalo_lab/libraries/rt_drivers/drv_soft_i2c.c291
-rw-r--r--bsp/bouffalo_lab/libraries/rt_drivers/drv_soft_i2c.h44
-rwxr-xr-xbsp/cvitek/c906_little/board/Kconfig1
-rwxr-xr-xbsp/cvitek/cv18xx_risc-v/board/Kconfig1
-rw-r--r--bsp/fm33lc026/libraries/HAL_Drivers/SConscript4
-rw-r--r--bsp/gd32/risc-v/gd32vf103r-start/.ci/attachconfig/ci.attachconfig.yml8
-rw-r--r--bsp/gd32/risc-v/gd32vf103r-start/board/Kconfig42
-rw-r--r--bsp/gd32/risc-v/gd32vf103v-eval/.ci/attachconfig/ci.attachconfig.yml8
-rw-r--r--bsp/gd32/risc-v/gd32vf103v-eval/board/Kconfig42
-rw-r--r--bsp/gd32/risc-v/libraries/gd32_drivers/SConscript3
-rw-r--r--bsp/gd32/risc-v/libraries/gd32_drivers/drv_soft_i2c.c212
-rw-r--r--bsp/gd32/risc-v/libraries/gd32_drivers/drv_soft_i2c.h78
-rw-r--r--bsp/hc32/ev_hc32f334_lqfp64/.ci/attachconfig/ci.attachconfig.yml13
-rw-r--r--bsp/hc32/ev_hc32f334_lqfp64/board/Kconfig47
-rw-r--r--bsp/hc32/ev_hc32f448_lqfp80/.ci/attachconfig/ci.attachconfig.yml13
-rw-r--r--bsp/hc32/ev_hc32f448_lqfp80/board/Kconfig47
-rw-r--r--bsp/hc32/ev_hc32f460_lqfp100_v2/.ci/attachconfig/ci.attachconfig.yml13
-rw-r--r--bsp/hc32/ev_hc32f460_lqfp100_v2/board/Kconfig47
-rw-r--r--bsp/hc32/ev_hc32f467_lqfp144/board/Kconfig26
-rw-r--r--bsp/hc32/ev_hc32f472_lqfp100/.ci/attachconfig/ci.attachconfig.yml13
-rw-r--r--bsp/hc32/ev_hc32f472_lqfp100/board/Kconfig47
-rw-r--r--bsp/hc32/ev_hc32f4a0_lqfp176/.ci/attachconfig/ci.attachconfig.yml13
-rw-r--r--bsp/hc32/ev_hc32f4a0_lqfp176/board/Kconfig47
-rw-r--r--bsp/hc32/ev_hc32f4a2_lqfp176/board/Kconfig26
-rw-r--r--bsp/hc32/ev_hc32f4a8_lqfp176/.ci/attachconfig/ci.attachconfig.yml13
-rw-r--r--bsp/hc32/ev_hc32f4a8_lqfp176/board/Kconfig47
-rw-r--r--bsp/hc32/lckfb-hc32f4a0-lqfp100/.ci/attachconfig/ci.attachconfig.yml8
-rw-r--r--bsp/hc32/lckfb-hc32f4a0-lqfp100/board/Kconfig47
-rw-r--r--bsp/hc32/libraries/hc32_drivers/SConscript3
-rw-r--r--bsp/hc32/libraries/hc32_drivers/drv_soft_i2c.c262
-rw-r--r--bsp/hc32/libraries/hc32_drivers/drv_soft_i2c.h102
-rw-r--r--bsp/hc32/tests/SConscript2
-rw-r--r--bsp/hc32/tests/test_soft_i2c.c6
-rw-r--r--bsp/hc32l136/.ci/attachconfig/ci.attachconfig.yml8
-rw-r--r--bsp/hc32l136/board/Kconfig44
-rw-r--r--bsp/hc32l136/drivers/SConscript3
-rw-r--r--bsp/hk32/hk32f030c8-mini/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/hk32/hk32f030c8-mini/board/Kconfig84
-rw-r--r--bsp/hk32/libraries/rt_drivers/SConscript4
-rw-r--r--bsp/hk32/libraries/rt_drivers/drv_soft_i2c.c232
-rw-r--r--bsp/hk32/libraries/rt_drivers/drv_soft_i2c.h69
-rw-r--r--bsp/ht32/ht32f12366/.ci/attachconfig/ci.attachconfig.yml16
-rw-r--r--bsp/ht32/ht32f12366/board/Kconfig141
-rw-r--r--bsp/ht32/ht32f52352/.ci/attachconfig/ci.attachconfig.yml16
-rw-r--r--bsp/ht32/ht32f52352/board/Kconfig141
-rw-r--r--bsp/ht32/ht32f53252/.ci/attachconfig/ci.attachconfig.yml20
-rw-r--r--bsp/ht32/ht32f53252/board/Kconfig141
-rw-r--r--bsp/ht32/libraries/ht32_drivers/SConscript3
-rw-r--r--bsp/ht32/libraries/ht32_drivers/drv_soft_i2c.c228
-rw-r--r--bsp/ht32/libraries/ht32_drivers/drv_soft_i2c.h30
-rw-r--r--bsp/k210/drivers/drv_i2c.c163
-rw-r--r--bsp/loongson/ls1cdev/drivers/drv_i2c.c114
-rw-r--r--bsp/loongson/ls1cdev/drivers/drv_i2c.h17
-rw-r--r--bsp/n32/n32gxx_lxx/libraries/n32_drivers/SConscript4
-rw-r--r--bsp/n32/n32gxx_lxx/libraries/n32_drivers/drv_i2c.c221
-rw-r--r--bsp/n32/n32gxx_lxx/libraries/n32_drivers/drv_i2c.h51
-rw-r--r--bsp/n32/n32gxx_lxx/n32g43xcl-stb/.ci/attachconfig/ci.attachconfig.yml8
-rw-r--r--bsp/n32/n32gxx_lxx/n32g43xcl-stb/board/Kconfig43
-rw-r--r--bsp/n32/n32gxx_lxx/n32g457qel-stb/.ci/attachconfig/ci.attachconfig.yml8
-rw-r--r--bsp/n32/n32gxx_lxx/n32g457qel-stb/board/Kconfig42
-rw-r--r--bsp/n32/n32gxx_lxx/n32g45xcl-stb/.ci/attachconfig/ci.attachconfig.yml8
-rw-r--r--bsp/n32/n32gxx_lxx/n32g45xcl-stb/board/Kconfig42
-rw-r--r--bsp/n32/n32gxx_lxx/n32g45xml-stb/.ci/attachconfig/ci.attachconfig.yml8
-rw-r--r--bsp/n32/n32gxx_lxx/n32g45xml-stb/board/Kconfig42
-rw-r--r--bsp/n32/n32gxx_lxx/n32g45xrl-stb/.ci/attachconfig/ci.attachconfig.yml8
-rw-r--r--bsp/n32/n32gxx_lxx/n32g45xrl-stb/board/Kconfig42
-rw-r--r--bsp/n32/n32gxx_lxx/n32g45xvl-stb/.ci/attachconfig/ci.attachconfig.yml10
-rw-r--r--bsp/n32/n32gxx_lxx/n32g45xvl-stb/board/Kconfig42
-rw-r--r--bsp/n32/n32gxx_lxx/n32g4frml-stb/.ci/attachconfig/ci.attachconfig.yml8
-rw-r--r--bsp/n32/n32gxx_lxx/n32g4frml-stb/board/Kconfig42
-rw-r--r--bsp/n32/n32gxx_lxx/n32l40xcl-stb/.ci/attachconfig/ci.attachconfig.yml8
-rw-r--r--bsp/n32/n32gxx_lxx/n32l40xcl-stb/board/Kconfig43
-rw-r--r--bsp/n32/n32gxx_lxx/n32l436-evb/.ci/attachconfig/ci.attachconfig.yml8
-rw-r--r--bsp/n32/n32gxx_lxx/n32l436-evb/board/Kconfig43
-rw-r--r--bsp/n32/n32gxx_lxx/n32l43xml-stb/.ci/attachconfig/ci.attachconfig.yml8
-rw-r--r--bsp/n32/n32gxx_lxx/n32l43xml-stb/board/Kconfig43
-rw-r--r--bsp/n32/n32gxx_lxx/n32l43xrl-stb/.ci/attachconfig/ci.attachconfig.yml8
-rw-r--r--bsp/n32/n32gxx_lxx/n32l43xrl-stb/board/Kconfig43
-rw-r--r--bsp/n32/n32gxx_lxx/n32wb45xl-evb/.ci/attachconfig/ci.attachconfig.yml8
-rw-r--r--bsp/n32/n32gxx_lxx/n32wb45xl-evb/board/Kconfig42
-rw-r--r--bsp/n32/n32hxxx/libraries/N32_Drivers/drivers/SConscript4
-rw-r--r--bsp/n32/n32hxxx/libraries/N32_Drivers/drivers/drv_soft_i2c.c187
-rw-r--r--bsp/n32/n32hxxx/libraries/N32_Drivers/drivers/drv_soft_i2c.h77
-rw-r--r--bsp/n32/n32hxxx/n32h760zil7-stb/.ci/attachconfig/ci.attachconfig.yml9
-rw-r--r--bsp/n32/n32hxxx/n32h760zil7-stb/board/Kconfig43
-rwxr-xr-xbsp/n32g452xx/Libraries/rt_drivers/SConscript4
-rw-r--r--bsp/n32g452xx/Libraries/rt_drivers/drv_soft_i2c.c231
-rw-r--r--bsp/n32g452xx/Libraries/rt_drivers/drv_soft_i2c.h69
-rw-r--r--bsp/n32g452xx/n32g452xx-mini-system/.ci/attachconfig/ci.attachconfig.yml8
-rwxr-xr-xbsp/n32g452xx/n32g452xx-mini-system/board/Kconfig42
-rw-r--r--bsp/nuvoton/libraries/m031/rtt_port/Kconfig78
-rw-r--r--bsp/nuvoton/libraries/m031/rtt_port/drv_softi2c.c217
-rw-r--r--bsp/nuvoton/libraries/m2354/rtt_port/Kconfig79
-rw-r--r--bsp/nuvoton/libraries/m2354/rtt_port/drv_softi2c.c217
-rw-r--r--bsp/nuvoton/libraries/m460/rtt_port/Kconfig79
-rw-r--r--bsp/nuvoton/libraries/m460/rtt_port/drv_softi2c.c232
-rw-r--r--bsp/nuvoton/libraries/m480/rtt_port/Kconfig79
-rw-r--r--bsp/nuvoton/libraries/m480/rtt_port/drv_softi2c.c217
-rw-r--r--bsp/nuvoton/libraries/ma35/rtt_port/Kconfig79
-rw-r--r--bsp/nuvoton/libraries/ma35/rtt_port/drv_softi2c.c232
-rw-r--r--bsp/nuvoton/libraries/n9h30/rtt_port/Kconfig79
-rw-r--r--bsp/nuvoton/libraries/n9h30/rtt_port/drv_softi2c.c238
-rw-r--r--bsp/nuvoton/libraries/nuc980/rtt_port/Kconfig79
-rw-r--r--bsp/nuvoton/libraries/nuc980/rtt_port/drv_softi2c.c229
-rw-r--r--bsp/nuvoton/ma35-rtp/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/nuvoton/nk-980iot/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/nuvoton/nk-n9h30/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/nuvoton/nk-rtu980/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/nuvoton/numaker-hmi-ma35d1/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/nuvoton/numaker-iot-m467/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/nuvoton/numaker-iot-m487/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/nuvoton/numaker-iot-ma35d1/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/nuvoton/numaker-m032ki/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/nuvoton/numaker-m2354/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/nuvoton/numaker-m467hj/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/nuvoton/numaker-pfm-m487/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/nxp/lpc/lpc54608-LPCXpresso/drivers/drv_i2c.c117
-rw-r--r--bsp/nxp/lpc/lpc55sxx/libraries/drivers/SConscript3
-rw-r--r--bsp/nxp/lpc/lpc55sxx/libraries/drivers/drv_soft_i2c.c213
-rw-r--r--bsp/nxp/lpc/lpc55sxx/libraries/drivers/drv_soft_i2c.h50
-rw-r--r--bsp/nxp/lpc/lpc55sxx/lpc55s69_nxp_evk/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/nxp/lpc/lpc55sxx/lpc55s69_nxp_evk/board/Kconfig83
-rw-r--r--bsp/nxp/mcx/mcxc/Libraries/drivers/SConscript3
-rw-r--r--bsp/nxp/mcx/mcxn/Libraries/drivers/SConscript3
-rw-r--r--bsp/nxp/mcx/mcxn/Libraries/drivers/drv_soft_i2c.c228
-rw-r--r--bsp/nxp/mcx/mcxn/frdm-mcxn236/.ci/attachconfig/ci.attachconfig.yml8
-rw-r--r--bsp/nxp/mcx/mcxn/frdm-mcxn236/board/Kconfig43
-rw-r--r--bsp/raspberry-pico/RP2040/.ci/attachconfig/ci.attachconfig.yml13
-rw-r--r--bsp/raspberry-pico/RP2040/board/Kconfig44
-rw-r--r--bsp/raspberry-pico/RP2350/.ci/attachconfig/ci.attachconfig.yml8
-rw-r--r--bsp/raspberry-pico/RP2350/board/Kconfig44
-rw-r--r--bsp/raspberry-pico/libraries/Drivers/SConscript3
-rw-r--r--bsp/raspberry-pico/libraries/Drivers/drv_soft_i2c.c189
-rw-r--r--bsp/raspberry-pico/libraries/Drivers/drv_soft_i2c.h46
-rw-r--r--bsp/renesas/ra6m3-hmi-board/.ci/attachconfig/attachconfig.yml16
-rw-r--r--bsp/renesas/ra6m3-hmi-board/board/Kconfig131
-rw-r--r--bsp/renesas/ra6m3-hmi-board/board/lvgl/lv_port_indev.c2
-rw-r--r--bsp/renesas/ra6m3-hmi-board/board/rtduino/arduino_pinout/pins_arduino.c47
-rw-r--r--bsp/renesas/ra6m3-hmi-board/board/rtduino/arduino_pinout/pins_arduino.h4
-rw-r--r--bsp/renesas/ra8p1-titan-board/.ci/attachconfig/attachconfig.yml9
-rw-r--r--bsp/renesas/ra8p1-titan-board/board/Kconfig53
-rw-r--r--bsp/renesas/rzn2l_etherkit/.ci/attachconfig/ci.attachconfig.yml8
-rw-r--r--bsp/renesas/rzn2l_etherkit/board/Kconfig48
-rw-r--r--bsp/renesas/rzn2l_rsk/.ci/attachconfig/ci.attachconfig.yml8
-rw-r--r--bsp/renesas/rzn2l_rsk/board/Kconfig48
-rw-r--r--bsp/stm32/libraries/HAL_Drivers/drivers/SConscript4
-rw-r--r--bsp/stm32/libraries/HAL_Drivers/drivers/drv_soft_i2c.c196
-rw-r--r--bsp/stm32/libraries/HAL_Drivers/drivers/drv_soft_i2c.h78
-rw-r--r--bsp/stm32/libraries/templates/stm32l1xx/.ci/attachconfig/ci.attachconfig.yml8
-rw-r--r--bsp/stm32/libraries/templates/stm32l1xx/board/Kconfig49
-rw-r--r--bsp/stm32/libraries/templates/stm32wbxx/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/stm32/libraries/templates/stm32wbxx/board/Kconfig86
-rw-r--r--bsp/stm32/stm32f072-st-nucleo/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/stm32/stm32f072-st-nucleo/applications/arduino_pinout/pins_arduino.c53
-rw-r--r--bsp/stm32/stm32f072-st-nucleo/applications/arduino_pinout/pins_arduino.h4
-rw-r--r--bsp/stm32/stm32f072-st-nucleo/board/Kconfig55
-rw-r--r--bsp/stm32/stm32f091-st-nucleo/.ci/attachconfig/ci.attachconfig.yml9
-rw-r--r--bsp/stm32/stm32f091-st-nucleo/board/Kconfig42
-rw-r--r--bsp/stm32/stm32f103-100ask-pro/.ci/attachconfig/ci.attachconfig.yml9
-rw-r--r--bsp/stm32/stm32f103-100ask-pro/board/Kconfig49
-rw-r--r--bsp/stm32/stm32f103-atk-nano/.ci/attachconfig/ci.attachconfig.yml9
-rw-r--r--bsp/stm32/stm32f103-atk-nano/board/Kconfig49
-rw-r--r--bsp/stm32/stm32f103-atk-warshipv3/.ci/attachconfig/ci.attachconfig.yml9
-rw-r--r--bsp/stm32/stm32f103-atk-warshipv3/board/Kconfig49
-rw-r--r--bsp/stm32/stm32f103-blue-pill/.ci/attachconfig/ci.attachconfig.yml9
-rw-r--r--bsp/stm32/stm32f103-blue-pill/applications/arduino_pinout/pins_arduino.c71
-rw-r--r--bsp/stm32/stm32f103-blue-pill/applications/arduino_pinout/pins_arduino.h4
-rw-r--r--bsp/stm32/stm32f103-blue-pill/board/Kconfig49
-rw-r--r--bsp/stm32/stm32f103-dofly-M3S/.ci/attachconfig/ci.attachconfig.yml9
-rw-r--r--bsp/stm32/stm32f103-dofly-M3S/board/Kconfig50
-rw-r--r--bsp/stm32/stm32f103-fire-arbitrary/.ci/attachconfig/ci.attachconfig.yml9
-rw-r--r--bsp/stm32/stm32f103-fire-arbitrary/board/Kconfig49
-rw-r--r--bsp/stm32/stm32f103-gizwits-gokitv21/.ci/attachconfig/ci.attachconfig.yml9
-rw-r--r--bsp/stm32/stm32f103-gizwits-gokitv21/board/Kconfig41
-rw-r--r--bsp/stm32/stm32f103-hw100k-ibox/.ci/attachconfig/ci.attachconfig.yml9
-rw-r--r--bsp/stm32/stm32f103-hw100k-ibox/board/Kconfig41
-rw-r--r--bsp/stm32/stm32f103-keysking-learning/.ci/attachconfig/ci.attachconfig.yml7
-rw-r--r--bsp/stm32/stm32f103-keysking-learning/board/Kconfig42
-rw-r--r--bsp/stm32/stm32f103-yf-ufun/.ci/attachconfig/ci.attachconfig.yml9
-rw-r--r--bsp/stm32/stm32f103-yf-ufun/board/Kconfig42
-rw-r--r--bsp/stm32/stm32f401-st-nucleo/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/stm32/stm32f401-st-nucleo/applications/arduino_pinout/pins_arduino.c53
-rw-r--r--bsp/stm32/stm32f401-st-nucleo/applications/arduino_pinout/pins_arduino.h4
-rw-r--r--bsp/stm32/stm32f401-st-nucleo/board/Kconfig55
-rw-r--r--bsp/stm32/stm32f401-weact-blackpill/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/stm32/stm32f401-weact-blackpill/applications/arduino_pinout/pins_arduino.c71
-rw-r--r--bsp/stm32/stm32f401-weact-blackpill/applications/arduino_pinout/pins_arduino.h4
-rw-r--r--bsp/stm32/stm32f401-weact-blackpill/board/Kconfig47
-rw-r--r--bsp/stm32/stm32f407-armfly-v5/.ci/attachconfig/ci.attachconfig.yml9
-rw-r--r--bsp/stm32/stm32f407-armfly-v5/board/Kconfig50
-rw-r--r--bsp/stm32/stm32f407-atk-explorer/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/stm32/stm32f407-atk-explorer/board/Kconfig101
-rw-r--r--bsp/stm32/stm32f407-atk-explorer/board/ports/touch/drv_touch.c2
-rw-r--r--bsp/stm32/stm32f407-fk407m2-zgt6/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/stm32/stm32f407-fk407m2-zgt6/board/Kconfig84
-rw-r--r--bsp/stm32/stm32f407-lckfb-skystar/.ci/attachconfig/ci.attachconfig.yml9
-rw-r--r--bsp/stm32/stm32f407-lckfb-skystar/board/Kconfig49
-rw-r--r--bsp/stm32/stm32f407-micu/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/stm32/stm32f407-micu/board/Kconfig111
-rw-r--r--bsp/stm32/stm32f407-robomaster-c/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/stm32/stm32f407-robomaster-c/applications/arduino_pinout/pins_arduino.c35
-rw-r--r--bsp/stm32/stm32f407-robomaster-c/applications/arduino_pinout/pins_arduino.h4
-rw-r--r--bsp/stm32/stm32f407-robomaster-c/board/Kconfig49
-rw-r--r--bsp/stm32/stm32f407-rt-spark/.ci/attachconfig/ci.attachconfig.yml26
-rw-r--r--bsp/stm32/stm32f407-rt-spark/applications/arduino_pinout/pins_arduino.c93
-rw-r--r--bsp/stm32/stm32f407-rt-spark/applications/arduino_pinout/pins_arduino.h4
-rw-r--r--bsp/stm32/stm32f407-rt-spark/board/Kconfig254
-rw-r--r--bsp/stm32/stm32f407-rt-spark/board/ports/audio/drv_mic.c4
-rw-r--r--bsp/stm32/stm32f407-rt-spark/board/ports/audio/drv_sound.c2
-rw-r--r--bsp/stm32/stm32f407-st-discovery/.ci/attachconfig/ci.attachconfig.yml9
-rw-r--r--bsp/stm32/stm32f407-st-discovery/board/Kconfig41
-rw-r--r--bsp/stm32/stm32f410-st-nucleo/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/stm32/stm32f410-st-nucleo/applications/arduino_pinout/pins_arduino.c53
-rw-r--r--bsp/stm32/stm32f410-st-nucleo/applications/arduino_pinout/pins_arduino.h4
-rw-r--r--bsp/stm32/stm32f410-st-nucleo/board/Kconfig50
-rw-r--r--bsp/stm32/stm32f411-atk-nano/.ci/attachconfig/ci.attachconfig.yml9
-rw-r--r--bsp/stm32/stm32f411-atk-nano/board/Kconfig49
-rw-r--r--bsp/stm32/stm32f411-st-nucleo/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/stm32/stm32f411-st-nucleo/applications/arduino_pinout/pins_arduino.c53
-rw-r--r--bsp/stm32/stm32f411-st-nucleo/applications/arduino_pinout/pins_arduino.h4
-rw-r--r--bsp/stm32/stm32f411-st-nucleo/board/Kconfig50
-rw-r--r--bsp/stm32/stm32f411-weact-blackpill/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/stm32/stm32f411-weact-blackpill/applications/arduino_pinout/pins_arduino.c71
-rw-r--r--bsp/stm32/stm32f411-weact-blackpill/applications/arduino_pinout/pins_arduino.h4
-rw-r--r--bsp/stm32/stm32f411-weact-blackpill/board/Kconfig90
-rw-r--r--bsp/stm32/stm32f412-st-nucleo/.ci/attachconfig/ci.attachconfig.yml9
-rw-r--r--bsp/stm32/stm32f412-st-nucleo/applications/arduino_pinout/pins_arduino.c59
-rw-r--r--bsp/stm32/stm32f412-st-nucleo/applications/arduino_pinout/pins_arduino.h4
-rw-r--r--bsp/stm32/stm32f412-st-nucleo/board/Kconfig55
-rw-r--r--bsp/stm32/stm32f413-st-nucleo/.ci/attachconfig/ci.attachconfig.yml11
-rw-r--r--bsp/stm32/stm32f413-st-nucleo/board/Kconfig43
-rw-r--r--bsp/stm32/stm32f427-robomaster-a/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/stm32/stm32f427-robomaster-a/applications/arduino_pinout/pins_arduino.c95
-rw-r--r--bsp/stm32/stm32f427-robomaster-a/applications/arduino_pinout/pins_arduino.h4
-rw-r--r--bsp/stm32/stm32f427-robomaster-a/board/Kconfig55
-rw-r--r--bsp/stm32/stm32f429-armfly-v6/.ci/attachconfig/ci.attachconfig.yml10
-rw-r--r--bsp/stm32/stm32f429-armfly-v6/board/Kconfig49
-rw-r--r--bsp/stm32/stm32f429-atk-apollo/.ci/attachconfig/ci.attachconfig.yml11
-rw-r--r--bsp/stm32/stm32f429-atk-apollo/board/Kconfig58
-rw-r--r--bsp/stm32/stm32f429-atk-apollo/board/ports/audio/drv_mic.c6
-rw-r--r--bsp/stm32/stm32f429-atk-apollo/board/ports/audio/drv_sound.c2
-rw-r--r--bsp/stm32/stm32f429-atk-apollo/board/ports/phy_reset.c2
-rw-r--r--bsp/stm32/stm32f429-fire-challenger/.ci/attachconfig/ci.attachconfig.yml11
-rw-r--r--bsp/stm32/stm32f429-fire-challenger/board/Kconfig50
-rw-r--r--bsp/stm32/stm32f429-st-disco/.ci/attachconfig/ci.attachconfig.yml11
-rw-r--r--bsp/stm32/stm32f429-st-disco/board/Kconfig42
-rw-r--r--bsp/stm32/stm32f469-st-disco/.ci/attachconfig/ci.attachconfig.yml10
-rw-r--r--bsp/stm32/stm32f469-st-disco/applications/arduino_pinout/pins_arduino.c61
-rw-r--r--bsp/stm32/stm32f469-st-disco/applications/arduino_pinout/pins_arduino.h4
-rw-r--r--bsp/stm32/stm32f469-st-disco/applications/lvgl/lv_port_indev.c2
-rw-r--r--bsp/stm32/stm32f469-st-disco/board/Kconfig56
-rw-r--r--bsp/stm32/stm32f746-st-nucleo/.ci/attachconfig/ci.attachconfig.yml8
-rw-r--r--bsp/stm32/stm32f746-st-nucleo/board/Kconfig42
-rw-r--r--bsp/stm32/stm32f767-atk-apollo/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/stm32/stm32f767-atk-apollo/board/Kconfig94
-rw-r--r--bsp/stm32/stm32f767-atk-apollo/board/ports/phy_reset.c2
-rw-r--r--bsp/stm32/stm32f767-fire-challenger-v1/.ci/attachconfig/ci.attachconfig.yml8
-rw-r--r--bsp/stm32/stm32f767-fire-challenger-v1/board/Kconfig74
-rw-r--r--bsp/stm32/stm32g070-st-nucleo/.ci/attachconfig/ci.attachconfig.yml9
-rw-r--r--bsp/stm32/stm32g070-st-nucleo/board/Kconfig42
-rw-r--r--bsp/stm32/stm32g071-st-nucleo/.ci/attachconfig/ci.attachconfig.yml9
-rw-r--r--bsp/stm32/stm32g071-st-nucleo/board/Kconfig42
-rw-r--r--bsp/stm32/stm32g474-st-nucleo/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/stm32/stm32g474-st-nucleo/applications/arduino_pinout/pins_arduino.c53
-rw-r--r--bsp/stm32/stm32g474-st-nucleo/applications/arduino_pinout/pins_arduino.h4
-rw-r--r--bsp/stm32/stm32g474-st-nucleo/board/Kconfig47
-rw-r--r--bsp/stm32/stm32g491-st-nucleo/.ci/attachconfig/ci.attachconfig.yml17
-rw-r--r--bsp/stm32/stm32g491-st-nucleo/board/Kconfig51
-rw-r--r--bsp/stm32/stm32h503-st-nucleo/.ci/attachconfig/ci.attachconfig.yml8
-rw-r--r--bsp/stm32/stm32h503-st-nucleo/applications/arduino_pinout/pins_arduino.c47
-rw-r--r--bsp/stm32/stm32h503-st-nucleo/applications/arduino_pinout/pins_arduino.h4
-rw-r--r--bsp/stm32/stm32h503-st-nucleo/board/Kconfig47
-rw-r--r--bsp/stm32/stm32h563-st-nucleo/.ci/attachconfig/ci.attachconfig.yml8
-rw-r--r--bsp/stm32/stm32h563-st-nucleo/applications/arduino_pinout/pins_arduino.c47
-rw-r--r--bsp/stm32/stm32h563-st-nucleo/applications/arduino_pinout/pins_arduino.h4
-rw-r--r--bsp/stm32/stm32h563-st-nucleo/board/Kconfig47
-rw-r--r--bsp/stm32/stm32h743-atk-apollo/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/stm32/stm32h743-atk-apollo/board/Kconfig86
-rw-r--r--bsp/stm32/stm32h743-atk-apollo/board/ports/drv_ov2640.c4
-rw-r--r--bsp/stm32/stm32h743-openmv-h7plus/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/stm32/stm32h743-openmv-h7plus/board/Kconfig99
-rw-r--r--bsp/stm32/stm32h743-openmv-h7plus/board/ports/drv_ov5640.c2
-rw-r--r--bsp/stm32/stm32h750-armfly-h7-tool/.ci/attachconfig/ci.attachconfig.yml8
-rw-r--r--bsp/stm32/stm32h750-armfly-h7-tool/board/Kconfig42
-rw-r--r--bsp/stm32/stm32h750-artpi/.ci/attachconfig/ci.attachconfig.yml20
-rw-r--r--bsp/stm32/stm32h750-artpi/applications/lvgl/lv_port_indev.c2
-rw-r--r--bsp/stm32/stm32h750-artpi/board/Kconfig140
-rw-r--r--bsp/stm32/stm32h750-fk750m1-vbt6/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/stm32/stm32h750-fk750m1-vbt6/board/Kconfig93
-rw-r--r--bsp/stm32/stm32h750-fk750m1-vbt6/board/port/camera/drv_ov2640.c2
-rw-r--r--bsp/stm32/stm32h750-weact-ministm32h7xx/.ci/attachconfig/ci.attachconfig.yml8
-rw-r--r--bsp/stm32/stm32h750-weact-ministm32h7xx/board/Kconfig42
-rw-r--r--bsp/stm32/stm32h7r7-artpi2/.ci/attachconfig/ci.attachconfig.yml16
-rw-r--r--bsp/stm32/stm32h7r7-artpi2/board/Kconfig131
-rw-r--r--bsp/stm32/stm32h7s7-st-disco/.ci/attachconfig/ci.attachconfig.yml16
-rw-r--r--bsp/stm32/stm32h7s7-st-disco/board/Kconfig131
-rw-r--r--bsp/stm32/stm32l431-BearPi/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/stm32/stm32l431-BearPi/applications/arduino_pinout/pins_arduino.c37
-rw-r--r--bsp/stm32/stm32l431-BearPi/applications/arduino_pinout/pins_arduino.h4
-rw-r--r--bsp/stm32/stm32l431-BearPi/board/Kconfig53
-rw-r--r--bsp/stm32/stm32l431-BearPi/board/ports/mpu6050_meas.c2
-rw-r--r--bsp/stm32/stm32l431-tencentos-tiny-EVB_MX+/.ci/attachconfig/ci.attachconfig.yml8
-rw-r--r--bsp/stm32/stm32l431-tencentos-tiny-EVB_MX+/board/Kconfig42
-rw-r--r--bsp/stm32/stm32l433-ali-startkit/.ci/attachconfig/ci.attachconfig.yml17
-rw-r--r--bsp/stm32/stm32l433-ali-startkit/board/Kconfig121
-rw-r--r--bsp/stm32/stm32l452-st-nucleo/.ci/attachconfig/ci.attachconfig.yml9
-rw-r--r--bsp/stm32/stm32l452-st-nucleo/board/Kconfig41
-rw-r--r--bsp/stm32/stm32l475-atk-pandora/.ci/attachconfig/ci.attachconfig.yml16
-rw-r--r--bsp/stm32/stm32l475-atk-pandora/applications/arduino_pinout/pins_arduino.c93
-rw-r--r--bsp/stm32/stm32l475-atk-pandora/applications/arduino_pinout/pins_arduino.h6
-rw-r--r--bsp/stm32/stm32l475-atk-pandora/board/Kconfig166
-rw-r--r--bsp/stm32/stm32l475-atk-pandora/board/ports/audio/drv_sound.c2
-rw-r--r--bsp/stm32/stm32l475-atk-pandora/board/ports/drv_sensors.c6
-rw-r--r--bsp/stm32/stm32l476-st-nucleo/.ci/attachconfig/ci.attachconfig.yml20
-rw-r--r--bsp/stm32/stm32l476-st-nucleo/applications/arduino_pinout/pins_arduino.c53
-rw-r--r--bsp/stm32/stm32l476-st-nucleo/applications/arduino_pinout/pins_arduino.h4
-rw-r--r--bsp/stm32/stm32l476-st-nucleo/board/Kconfig116
-rw-r--r--bsp/stm32/stm32l496-ali-developer/.ci/attachconfig/ci.attachconfig.yml17
-rw-r--r--bsp/stm32/stm32l496-ali-developer/board/Kconfig121
-rw-r--r--bsp/stm32/stm32l496-st-nucleo/.ci/attachconfig/ci.attachconfig.yml13
-rw-r--r--bsp/stm32/stm32l496-st-nucleo/board/Kconfig38
-rw-r--r--bsp/stm32/stm32l4r5-st-nucleo/.ci/attachconfig/ci.attachconfig.yml13
-rw-r--r--bsp/stm32/stm32l4r5-st-nucleo/board/Kconfig85
-rw-r--r--bsp/stm32/stm32l4r9-st-eval/.ci/attachconfig/ci.attachconfig.yml9
-rw-r--r--bsp/stm32/stm32l4r9-st-eval/board/Kconfig47
-rw-r--r--bsp/stm32/stm32mp157a-st-discovery/.ci/attachconfig/ci.attachconfig.yml20
-rw-r--r--bsp/stm32/stm32mp157a-st-discovery/board/Kconfig176
-rw-r--r--bsp/stm32/stm32mp157a-st-discovery/board/ports/audio/drv_mic.c2
-rw-r--r--bsp/stm32/stm32mp157a-st-discovery/board/ports/audio/drv_sound.c2
-rw-r--r--bsp/stm32/stm32mp157a-st-discovery/board/ports/drv_pmic.c2
-rw-r--r--bsp/stm32/stm32mp157a-st-ev1/.ci/attachconfig/ci.attachconfig.yml16
-rw-r--r--bsp/stm32/stm32mp157a-st-ev1/board/Kconfig143
-rw-r--r--bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_mfx.c2
-rw-r--r--bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_ov5640.c2
-rw-r--r--bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_pmic.c2
-rw-r--r--bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_sound.c2
-rw-r--r--bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_wm8994.c2
-rw-r--r--bsp/stm32/stm32u575-st-nucleo/.ci/attachconfig/ci.attachconfig.yml8
-rw-r--r--bsp/stm32/stm32u575-st-nucleo/applications/arduino_pinout/pins_arduino.c47
-rw-r--r--bsp/stm32/stm32u575-st-nucleo/applications/arduino_pinout/pins_arduino.h4
-rw-r--r--bsp/stm32/stm32u575-st-nucleo/board/Kconfig87
-rw-r--r--bsp/stm32/stm32wb55-st-nucleo/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/stm32/stm32wb55-st-nucleo/board/Kconfig86
-rw-r--r--bsp/synwit/libraries/SWM320_drivers/SConscript3
-rw-r--r--bsp/synwit/libraries/SWM320_drivers/drv_soft_i2c.c241
-rw-r--r--bsp/synwit/libraries/SWM320_drivers/drv_soft_i2c.h19
-rw-r--r--bsp/synwit/libraries/SWM341_drivers/SConscript3
-rw-r--r--bsp/synwit/libraries/SWM341_drivers/drv_soft_i2c.c219
-rw-r--r--bsp/synwit/libraries/SWM341_drivers/drv_soft_i2c.h18
-rw-r--r--bsp/synwit/swm320-mini/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/synwit/swm320-mini/board/Kconfig87
-rw-r--r--bsp/synwit/swm341-mini/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/synwit/swm341-mini/applications/main.c2
-rw-r--r--bsp/synwit/swm341-mini/board/Kconfig92
-rw-r--r--bsp/tae32f5300/.ci/attachconfig/ci.attachconfig.yml8
-rw-r--r--bsp/tae32f5300/drivers/Kconfig44
-rw-r--r--bsp/tkm32F499/.ci/attachconfig/ci.attachconfig.yml8
-rw-r--r--bsp/tkm32F499/drivers/Kconfig42
-rw-r--r--bsp/w60x/drivers/Kconfig64
-rw-r--r--bsp/w60x/drivers/SConscript3
-rw-r--r--bsp/w60x/drivers/drv_soft_i2c.c222
-rw-r--r--bsp/w60x/drivers/drv_soft_i2c.h61
-rw-r--r--bsp/wch/risc-v/Libraries/ch32_drivers/SConscript3
-rw-r--r--bsp/wch/risc-v/Libraries/ch32_drivers/drv_soft_i2c.c226
-rw-r--r--bsp/wch/risc-v/Libraries/ch32_drivers/drv_soft_i2c.h53
-rw-r--r--bsp/wch/risc-v/ch32v208w-r0/.ci/attachconfig/ci.attachconfig.yml12
-rw-r--r--bsp/wch/risc-v/ch32v208w-r0/board/Kconfig90
-rw-r--r--bsp/wch/risc-v/ch32v307v-r1/.ci/attachconfig/ci.attachconfig.yml13
-rw-r--r--bsp/wch/risc-v/ch32v307v-r1/board/Kconfig91
-rw-r--r--bsp/wch/risc-v/yd-ch32v307vct6/.ci/attachconfig/ci.attachconfig.yml13
-rw-r--r--bsp/wch/risc-v/yd-ch32v307vct6/board/Kconfig89
-rw-r--r--components/drivers/i2c/Kconfig123
488 files changed, 9939 insertions, 14091 deletions
diff --git a/bsp/ESP/ESP32_C3/.ci/attachconfig/ci.attachconfig.yml b/bsp/ESP/ESP32_C3/.ci/attachconfig/ci.attachconfig.yml
index a2a990be1c..ca2eddb6ad 100644
--- a/bsp/ESP/ESP32_C3/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/ESP/ESP32_C3/.ci/attachconfig/ci.attachconfig.yml
@@ -24,8 +24,11 @@ devices.swi2c:
depends:
- devices.i2c
kconfig:
- - CONFIG_BSP_USING_SW_I2C=y
- - CONFIG_BSP_USING_SW_I2C0=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C0=y
+ - CONFIG_RT_SOFT_I2C0_SCL_PIN=19
+ - CONFIG_RT_SOFT_I2C0_SDA_PIN=18
+ - CONFIG_RT_SOFT_I2C0_BUS_NAME="swi2c0"
devices.spi:
kconfig:
- CONFIG_RT_USING_SPI=y
@@ -60,4 +63,4 @@ devices.at:
- CONFIG_RT_USING_AT=y
- CONFIG_AT_USING_CLIENT=y
- CONFIG_RT_USING_SAL=y
- - CONFIG_RT_USING_NETDEV=y \ No newline at end of file
+ - CONFIG_RT_USING_NETDEV=y
diff --git a/bsp/ESP/libraries/drivers/Kconfig b/bsp/ESP/libraries/drivers/Kconfig
index b7cb8f1275..1d2c125d59 100644
--- a/bsp/ESP/libraries/drivers/Kconfig
+++ b/bsp/ESP/libraries/drivers/Kconfig
@@ -75,25 +75,27 @@ 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"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
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
+ select RT_USING_I2C
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C0
+ bool "Enable software I2C0 Bus (swi2c0)"
+ default n
+ select RT_USING_SOFT_I2C0
+ if BSP_USING_SOFT_I2C0
+ config RT_SOFT_I2C0_SCL_PIN
+ int "swi2c0 SCL pin number"
+ default 19
+ config RT_SOFT_I2C0_SDA_PIN
+ int "swi2c0 SDA pin number"
+ default 18
+ endif
+ endif
+
+
endif
menuconfig BSP_USING_SPI
@@ -171,4 +173,16 @@ config BSP_ENABLE_GDBSTUB
bool "Enable ESP_GDBSTUB compontent"
default n
-endmenu \ No newline at end of file
+ config RT_SOFT_I2C0_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C0
+
+ config RT_SOFT_I2C0_SCL_PIN_DEFAULT
+ int
+ default 19 if RT_USING_SOFT_I2C0
+
+ config RT_SOFT_I2C0_SDA_PIN_DEFAULT
+ int
+ default 18 if RT_USING_SOFT_I2C0
+
+endmenu
diff --git a/bsp/ESP/libraries/drivers/SConscript b/bsp/ESP/libraries/drivers/SConscript
index 74d91cca65..c8d534e164 100644
--- a/bsp/ESP/libraries/drivers/SConscript
+++ b/bsp/ESP/libraries/drivers/SConscript
@@ -18,9 +18,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/ESP/libraries/drivers/drv_sw_i2c.c b/bsp/ESP/libraries/drivers/drv_sw_i2c.c
deleted file mode 100644
index fbfed4d71d..0000000000
--- a/bsp/ESP/libraries/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 <rtthread.h>
-#include <rtdevice.h>
-#define LOG_TAG "drv.i2c"
-#ifdef RT_USING_I2C
-#ifdef BSP_USING_SW_I2C
-#include "rthw.h"
-#include "rttypes.h"
-#include <rtdbg.h>
-#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/ESP/libraries/drivers/drv_sw_i2c.h b/bsp/ESP/libraries/drivers/drv_sw_i2c.h
deleted file mode 100644
index ab353e473f..0000000000
--- a/bsp/ESP/libraries/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 <rtthread.h>
-#include <rtdevice.h>
-#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 017b3cb4d7..280ee05b70 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_I2C1') or 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 9c20a54ca1..0000000000
--- 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 <board.h>
-#include "drv_soft_i2c.h"
-
-#ifdef RT_USING_I2C
-
-/*#define DRV_DEBUG*/
-#define LOG_TAG "drv.i2c"
-#include <drv_log.h>
-
-#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 2e49a62c2f..0000000000
--- 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 <rtthread.h>
-#include <rthw.h>
-#include <rtdevice.h>
-
-/* 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/libraries/templates/PSOC62/.ci/attachconfig/ci.attachconfig.yml b/bsp/Infineon/libraries/templates/PSOC62/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..6cbc2bc3c3
--- /dev/null
+++ b/bsp/Infineon/libraries/templates/PSOC62/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=105
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=106
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/Infineon/libraries/templates/PSOC62/board/Kconfig b/bsp/Infineon/libraries/templates/PSOC62/board/Kconfig
index 07a230d796..5a771696dd 100644
--- a/bsp/Infineon/libraries/templates/PSOC62/board/Kconfig
+++ b/bsp/Infineon/libraries/templates/PSOC62/board/Kconfig
@@ -173,29 +173,26 @@ menu "On-chip Peripheral Drivers"
default 105
endif
endif
-
- menuconfig BSP_USING_I2C
- bool "Enable Software I2C Bus"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- config BSP_USING_I2C1
- bool "Enable I2C1 Bus (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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 105
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 106
+ endif
+ endif
+
menuconfig BSP_USING_RTC
bool "Enable RTC"
@@ -250,4 +247,16 @@ menu "On-chip Peripheral Drivers"
endif
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 105 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 106 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/Infineon/psoc6-cy8ckit-062-BLE/.ci/attachconfig/ci.attachconfig.yml b/bsp/Infineon/psoc6-cy8ckit-062-BLE/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..6cbc2bc3c3
--- /dev/null
+++ b/bsp/Infineon/psoc6-cy8ckit-062-BLE/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=105
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=106
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/Infineon/psoc6-cy8ckit-062-BLE/board/Kconfig b/bsp/Infineon/psoc6-cy8ckit-062-BLE/board/Kconfig
index 77a4380e4a..3acbc9e3c2 100644
--- a/bsp/Infineon/psoc6-cy8ckit-062-BLE/board/Kconfig
+++ b/bsp/Infineon/psoc6-cy8ckit-062-BLE/board/Kconfig
@@ -173,29 +173,26 @@ menu "On-chip Peripheral Drivers"
default 105
endif
endif
-
- menuconfig BSP_USING_I2C
- bool "Enable Software I2C Bus"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- config BSP_USING_I2C1
- bool "Enable I2C1 Bus (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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 105
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 106
+ endif
+ endif
+
menuconfig BSP_USING_RTC
bool "Enable RTC"
@@ -250,4 +247,16 @@ menu "On-chip Peripheral Drivers"
endif
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 105 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 106 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/Infineon/psoc6-cy8ckit-062-WIFI-BT/.ci/attachconfig/ci.attachconfig.yml b/bsp/Infineon/psoc6-cy8ckit-062-WIFI-BT/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..6cbc2bc3c3
--- /dev/null
+++ b/bsp/Infineon/psoc6-cy8ckit-062-WIFI-BT/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=105
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=106
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/Infineon/psoc6-cy8ckit-062-WIFI-BT/board/Kconfig b/bsp/Infineon/psoc6-cy8ckit-062-WIFI-BT/board/Kconfig
index 6b19951456..c1bda32bfa 100644
--- a/bsp/Infineon/psoc6-cy8ckit-062-WIFI-BT/board/Kconfig
+++ b/bsp/Infineon/psoc6-cy8ckit-062-WIFI-BT/board/Kconfig
@@ -181,29 +181,26 @@ menu "On-chip Peripheral Drivers"
default 105
endif
endif
-
- menuconfig BSP_USING_I2C
- bool "Enable Software I2C Bus"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- config BSP_USING_I2C1
- bool "Enable I2C1 Bus (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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 105
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 106
+ endif
+ endif
+
menuconfig BSP_USING_RTC
bool "Enable RTC"
@@ -258,4 +255,16 @@ menu "On-chip Peripheral Drivers"
endif
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 105 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 106 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/Infineon/psoc6-cy8ckit-062S2-43012/.ci/attachconfig/ci.attachconfig.yml b/bsp/Infineon/psoc6-cy8ckit-062S2-43012/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..6cbc2bc3c3
--- /dev/null
+++ b/bsp/Infineon/psoc6-cy8ckit-062S2-43012/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=105
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=106
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/Infineon/psoc6-cy8ckit-062S2-43012/board/Kconfig b/bsp/Infineon/psoc6-cy8ckit-062S2-43012/board/Kconfig
index 0a5cec3667..7378d38f77 100644
--- a/bsp/Infineon/psoc6-cy8ckit-062S2-43012/board/Kconfig
+++ b/bsp/Infineon/psoc6-cy8ckit-062S2-43012/board/Kconfig
@@ -180,29 +180,26 @@ menu "On-chip Peripheral Drivers"
default 105
endif
endif
-
- menuconfig BSP_USING_I2C
- bool "Enable Software I2C Bus"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- config BSP_USING_I2C1
- bool "Enable I2C1 Bus (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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 105
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 106
+ endif
+ endif
+
config BSP_USING_USBD
bool "Enable USB Device"
@@ -325,4 +322,16 @@ menu "Board extended module Drivers"
endif
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 105 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 106 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/Infineon/psoc6-cy8ckit-062s4/.ci/attachconfig/ci.attachconfig.yml b/bsp/Infineon/psoc6-cy8ckit-062s4/.ci/attachconfig/ci.attachconfig.yml
index d453530aff..ab4f866f4e 100644
--- a/bsp/Infineon/psoc6-cy8ckit-062s4/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/Infineon/psoc6-cy8ckit-062s4/.ci/attachconfig/ci.attachconfig.yml
@@ -9,3 +9,13 @@ utest.pin:
- CONFIG_RT_USING_UTESTCASES=y
- CONFIG_RT_CONSOLEBUF_SIZE=256
- CONFIG_RT_UTEST_PIN=y
+
+# ------ devices CI ------
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=105
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=106
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/Infineon/psoc6-cy8ckit-062s4/board/Kconfig b/bsp/Infineon/psoc6-cy8ckit-062s4/board/Kconfig
index bfe1fd8b86..9de4f6fd81 100644
--- a/bsp/Infineon/psoc6-cy8ckit-062s4/board/Kconfig
+++ b/bsp/Infineon/psoc6-cy8ckit-062s4/board/Kconfig
@@ -173,29 +173,26 @@ menu "On-chip Peripheral Drivers"
default 105
endif
endif
-
- menuconfig BSP_USING_I2C
- bool "Enable Software I2C Bus"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- config BSP_USING_I2C1
- bool "Enable I2C1 Bus (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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 105
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 106
+ endif
+ endif
+
menuconfig BSP_USING_RTC
bool "Enable RTC"
@@ -250,4 +247,16 @@ menu "On-chip Peripheral Drivers"
endif
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 105 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 106 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/Infineon/psoc6-cy8cproto-062S3-4343W/.ci/attachconfig/ci.attachconfig.yml b/bsp/Infineon/psoc6-cy8cproto-062S3-4343W/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..6cbc2bc3c3
--- /dev/null
+++ b/bsp/Infineon/psoc6-cy8cproto-062S3-4343W/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=105
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=106
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/Infineon/psoc6-cy8cproto-062S3-4343W/board/Kconfig b/bsp/Infineon/psoc6-cy8cproto-062S3-4343W/board/Kconfig
index 6006e7e97d..4bfbbf1433 100644
--- a/bsp/Infineon/psoc6-cy8cproto-062S3-4343W/board/Kconfig
+++ b/bsp/Infineon/psoc6-cy8cproto-062S3-4343W/board/Kconfig
@@ -180,29 +180,26 @@ menu "On-chip Peripheral Drivers"
default 105
endif
endif
-
- menuconfig BSP_USING_I2C
- bool "Enable Software I2C Bus"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- config BSP_USING_I2C1
- bool "Enable I2C1 Bus (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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 105
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 106
+ endif
+ endif
+
config BSP_USING_USBD
bool "Enable USB Device"
@@ -325,4 +322,16 @@ menu "Board extended module Drivers"
endif
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 105 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 106 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/Infineon/psoc6-evaluationkit-062S2/.ci/attachconfig/ci.attachconfig.yml b/bsp/Infineon/psoc6-evaluationkit-062S2/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..6cbc2bc3c3
--- /dev/null
+++ b/bsp/Infineon/psoc6-evaluationkit-062S2/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=105
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=106
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/Infineon/psoc6-evaluationkit-062S2/board/Kconfig b/bsp/Infineon/psoc6-evaluationkit-062S2/board/Kconfig
index ef00b67eba..d98584b94b 100644
--- a/bsp/Infineon/psoc6-evaluationkit-062S2/board/Kconfig
+++ b/bsp/Infineon/psoc6-evaluationkit-062S2/board/Kconfig
@@ -229,29 +229,26 @@ menu "On-chip Peripheral Drivers"
default 65
endif
endif
-
- menuconfig BSP_USING_I2C
- bool "Enable Software I2C Bus"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- config BSP_USING_I2C1
- bool "Enable I2C1 Bus (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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 105
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 106
+ endif
+ endif
+
menuconfig BSP_USING_RTC
bool "Enable RTC"
@@ -487,4 +484,16 @@ menu "Board extended module Drivers"
default n
endmenu
-endmenu \ No newline at end of file
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 105 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 106 if RT_USING_SOFT_I2C1
+
+endmenu
diff --git a/bsp/acm32/acm32f0x0-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/acm32/acm32f0x0-nucleo/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..872296ed47
--- /dev/null
+++ b/bsp/acm32/acm32f0x0-nucleo/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C0=y
+ - CONFIG_RT_SOFT_I2C0_SCL_PIN=54
+ - CONFIG_RT_SOFT_I2C0_SDA_PIN=55
+ - CONFIG_RT_SOFT_I2C0_BUS_NAME="swi2c0"
diff --git a/bsp/acm32/acm32f0x0-nucleo/drivers/Kconfig b/bsp/acm32/acm32f0x0-nucleo/drivers/Kconfig
index e112183e2b..1bcc5bfb6d 100644
--- a/bsp/acm32/acm32f0x0-nucleo/drivers/Kconfig
+++ b/bsp/acm32/acm32f0x0-nucleo/drivers/Kconfig
@@ -105,28 +105,26 @@ menu "On-chip Peripheral Drivers"
default n
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
+ bool "Enable software I2C (swi2c)"
default n
+ select RT_USING_I2C
+ select RT_USING_SOFT_I2C
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
+ menuconfig BSP_USING_SOFT_I2C0
+ bool "Enable software I2C0 Bus (swi2c0)"
+ default n
+ select RT_USING_SOFT_I2C0
+ if BSP_USING_SOFT_I2C0
+ config RT_SOFT_I2C0_SCL_PIN
+ int "swi2c0 SCL pin number"
+ default 54
+ config RT_SOFT_I2C0_SDA_PIN
+ int "swi2c0 SDA pin number"
+ default 55
+ endif
+ endif
+
menu "Hardware CAN"
config BSP_USING_CAN1
@@ -256,5 +254,16 @@ menu "Board extended module Drivers"
endmenu
-endmenu
+ config RT_SOFT_I2C0_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C0
+
+ config RT_SOFT_I2C0_SCL_PIN_DEFAULT
+ int
+ default 54 if RT_USING_SOFT_I2C0
+ config RT_SOFT_I2C0_SDA_PIN_DEFAULT
+ int
+ default 55 if RT_USING_SOFT_I2C0
+
+endmenu
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 47b8e9fb06..0000000000
--- 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 e66083b0d9..0000000000
--- 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 <rtthread.h>
-#include <board.h>
-#include <rtdbg.h>
-#include <rtdevice.h>
-#include <drivers/dev_pin.h>
-
-/* 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/.ci/attachconfig/ci.attachconfig.yml b/bsp/airm2m/air32f103/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..08f15d590b
--- /dev/null
+++ b/bsp/airm2m/air32f103/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=24
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=25
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/airm2m/air32f103/board/Kconfig b/bsp/airm2m/air32f103/board/Kconfig
index 65f1c9b152..e3a7201469 100644
--- a/bsp/airm2m/air32f103/board/Kconfig
+++ b/bsp/airm2m/air32f103/board/Kconfig
@@ -48,28 +48,26 @@ menu "On-chip Peripheral Drivers"
bool "Enable UART3"
default n
endif
-
- menuconfig BSP_USING_SOFTI2C
- bool "Enable SOFT I2C"
- select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
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
+ select RT_USING_I2C
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 24
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 25
+ endif
+ endif
+
menuconfig BSP_USING_SPI
bool "Enable SPI BUS"
@@ -131,4 +129,16 @@ menu "On-chip Peripheral Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 24 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 25 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/airm2m/air32f103/libraries/SConscript b/bsp/airm2m/air32f103/libraries/SConscript
index 8848f19239..575a0af08b 100644
--- a/bsp/airm2m/air32f103/libraries/SConscript
+++ b/bsp/airm2m/air32f103/libraries/SConscript
@@ -45,9 +45,6 @@ if GetDepend(['RT_USING_SERIAL']):
else:
src += ['rt_drivers/drv_usart.c']
-if GetDepend(['RT_USING_I2C','RT_USING_I2C_BITOPS']):
- src += ['rt_drivers/drv_soft_i2c.c']
-
if GetDepend(['RT_USING_SPI', 'BSP_USING_SPI']):
src += ['rt_drivers/drv_spi.c']
diff --git a/bsp/airm2m/air32f103/libraries/rt_drivers/drv_soft_i2c.c b/bsp/airm2m/air32f103/libraries/rt_drivers/drv_soft_i2c.c
deleted file mode 100644
index 5ca9a4e55b..0000000000
--- a/bsp/airm2m/air32f103/libraries/rt_drivers/drv_soft_i2c.c
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- * Copyright (c) 2006-2022, RT-Thread Development Team
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Change Logs:
- * Date Author Notes
- * 2022-02-22 airm2m first version
- */
-
-#include <board.h>
-#include "drv_soft_i2c.h"
-
-#ifdef RT_USING_I2C
-
-//#define DRV_DEBUG
-#define LOG_TAG "drv.i2c"
-#include <drv_log.h>
-
-#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 air32_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 air32_i2c i2c_obj[sizeof(soft_i2c_config) / sizeof(soft_i2c_config[0])];
-
-/**
- * This function initializes the i2c pin.
- *
- * @param air32 i2c dirver class.
- */
-static void air32_i2c_gpio_init(struct air32_i2c *i2c)
-{
- struct air32_soft_i2c_config* cfg = (struct air32_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 air32_i2c_pin_init(void)
-{
- rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct air32_i2c);
-
- for(rt_size_t i = 0; i < obj_num; i++)
- {
- air32_i2c_gpio_init(&i2c_obj[i]);
- }
-}
-
-/**
- * This function sets the sda pin.
- *
- * @param air32 config class.
- * @param The sda pin state.
- */
-static void air32_set_sda(void *data, rt_int32_t state)
-{
- struct air32_soft_i2c_config* cfg = (struct air32_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 air32 config class.
- * @param The scl pin state.
- */
-static void air32_set_scl(void *data, rt_int32_t state)
-{
- struct air32_soft_i2c_config* cfg = (struct air32_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 air32_get_sda(void *data)
-{
- struct air32_soft_i2c_config* cfg = (struct air32_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 air32_get_scl(void *data)
-{
- struct air32_soft_i2c_config* cfg = (struct air32_soft_i2c_config*)data;
- return rt_pin_read(cfg->scl);
-}
-/**
- * The time delay function.
- *
- * @param microseconds.
- */
-static void air32_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 air32_bit_ops_default =
-{
- .data = RT_NULL,
- .pin_init = air32_i2c_pin_init,
- .set_sda = air32_set_sda,
- .set_scl = air32_set_scl,
- .get_sda = air32_get_sda,
- .get_scl = air32_get_scl,
- .udelay = air32_udelay,
- .delay_us = 1,
- .timeout = 100,
- .i2c_pin_init_flag = RT_FALSE
-};
-
-/**
- * if i2c is locked, this function will unlock it
- *
- * @param air32 config class
- *
- * @return RT_EOK indicates successful unlock.
- */
-static rt_err_t air32_i2c_bus_unlock(const struct air32_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);
- air32_udelay(100);
- rt_pin_write(cfg->scl, PIN_LOW);
- air32_udelay(100);
- }
- }
- if (PIN_LOW == rt_pin_read(cfg->sda))
- {
- return -RT_ERROR;
- }
-
- return RT_EOK;
-}
-
-/* I2C initialization function */
-int rt_sw_i2c_init(void)
-{
- rt_err_t result;
-
- for (rt_size_t i = 0; i < sizeof(i2c_obj) / sizeof(struct air32_i2c); i++)
- {
- i2c_obj[i].ops = air32_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);
- air32_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_sw_i2c_init);
-
-#endif /* RT_USING_I2C */
diff --git a/bsp/airm2m/air32f103/libraries/rt_drivers/drv_soft_i2c.h b/bsp/airm2m/air32f103/libraries/rt_drivers/drv_soft_i2c.h
deleted file mode 100644
index 2d7c723dc6..0000000000
--- a/bsp/airm2m/air32f103/libraries/rt_drivers/drv_soft_i2c.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (c) 2006-2022, RT-Thread Development Team
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Change Logs:
- * Date Author Notes
- * 2022-02-22 airm2m first version
- */
-
-#ifndef __DRV_I2C__
-#define __DRV_I2C__
-
-#include <rtthread.h>
-#include <rthw.h>
-#include <rtdevice.h>
-
-/* air32 config class */
-struct air32_soft_i2c_config
-{
- rt_uint8_t scl;
- rt_uint8_t sda;
- const char *bus_name;
-};
-/* air32 i2c dirver class */
-struct air32_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_sw_i2c_init(void);
-
-#endif
diff --git a/bsp/apm32/apm32e103ze-evalboard/.ci/attachconfig/ci.attachconfig.yml b/bsp/apm32/apm32e103ze-evalboard/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..7cd4362ffc
--- /dev/null
+++ b/bsp/apm32/apm32e103ze-evalboard/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,16 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
+ - CONFIG_RT_USING_SOFT_I2C3=y
+ - CONFIG_RT_SOFT_I2C3_SCL_PIN=8
+ - CONFIG_RT_SOFT_I2C3_SDA_PIN=41
+ - CONFIG_RT_SOFT_I2C3_BUS_NAME="swi2c3"
diff --git a/bsp/apm32/apm32e103ze-evalboard/board/Kconfig b/bsp/apm32/apm32e103ze-evalboard/board/Kconfig
index c8c59dee47..4d3471e371 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 (swi2c1)"
+ select RT_USING_I2C
+ select BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C1
default n
config BSP_USING_SDCARD
@@ -41,6 +42,18 @@ menu "Onboard Peripheral Drivers"
select BSP_USING_DMC
default n
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
endmenu
menu "On-chip Peripheral Drivers"
@@ -105,54 +118,52 @@ menu "On-chip Peripheral Drivers"
bool "RTC USING LSI"
endchoice
endif
-
- menuconfig BSP_USING_I2C
- bool "Enable I2C BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- config BSP_USING_I2C1
- bool "Enable I2C1 BUS"
- if BSP_USING_I2C1
- 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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 22
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 23
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C3
+ bool "Enable software I2C3 Bus (swi2c3)"
+ default n
+ select RT_USING_SOFT_I2C3
+ if BSP_USING_SOFT_I2C3
+ config RT_SOFT_I2C3_SCL_PIN
+ int "swi2c3 SCL pin number"
+ default 8
+ config RT_SOFT_I2C3_SDA_PIN
+ int "swi2c3 SDA pin number"
+ default 41
+ endif
+ endif
+
menuconfig BSP_USING_SPI
bool "Enable SPI"
@@ -271,4 +282,28 @@ menu "On-chip Peripheral Drivers"
endmenu
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C3_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SCL_PIN_DEFAULT
+ int
+ default 8 if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SDA_PIN_DEFAULT
+ int
+ default 41 if RT_USING_SOFT_I2C3
+
endmenu
diff --git a/bsp/apm32/apm32e103ze-tinyboard/.ci/attachconfig/ci.attachconfig.yml b/bsp/apm32/apm32e103ze-tinyboard/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..7cd4362ffc
--- /dev/null
+++ b/bsp/apm32/apm32e103ze-tinyboard/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,16 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
+ - CONFIG_RT_USING_SOFT_I2C3=y
+ - CONFIG_RT_SOFT_I2C3_SCL_PIN=8
+ - CONFIG_RT_SOFT_I2C3_SDA_PIN=41
+ - CONFIG_RT_SOFT_I2C3_BUS_NAME="swi2c3"
diff --git a/bsp/apm32/apm32e103ze-tinyboard/board/Kconfig b/bsp/apm32/apm32e103ze-tinyboard/board/Kconfig
index 4ff30f548e..9924000108 100644
--- a/bsp/apm32/apm32e103ze-tinyboard/board/Kconfig
+++ b/bsp/apm32/apm32e103ze-tinyboard/board/Kconfig
@@ -86,54 +86,52 @@ menu "On-chip Peripheral Drivers"
bool "RTC USING LSI"
endchoice
endif
-
- menuconfig BSP_USING_I2C
- bool "Enable I2C BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- config BSP_USING_I2C1
- bool "Enable I2C1 BUS"
- if BSP_USING_I2C1
- 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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 22
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 23
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C3
+ bool "Enable software I2C3 Bus (swi2c3)"
+ default n
+ select RT_USING_SOFT_I2C3
+ if BSP_USING_SOFT_I2C3
+ config RT_SOFT_I2C3_SCL_PIN
+ int "swi2c3 SCL pin number"
+ default 8
+ config RT_SOFT_I2C3_SDA_PIN
+ int "swi2c3 SDA pin number"
+ default 41
+ endif
+ endif
+
menuconfig BSP_USING_SPI
bool "Enable SPI"
@@ -248,4 +246,40 @@ menu "On-chip Peripheral Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C3_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SCL_PIN_DEFAULT
+ int
+ default 8 if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SDA_PIN_DEFAULT
+ int
+ default 41 if RT_USING_SOFT_I2C3
+
endmenu
diff --git a/bsp/apm32/apm32f030r8-miniboard/.ci/attachconfig/ci.attachconfig.yml b/bsp/apm32/apm32f030r8-miniboard/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..d88fbcccd5
--- /dev/null
+++ b/bsp/apm32/apm32f030r8-miniboard/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,12 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=26
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=27
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
diff --git a/bsp/apm32/apm32f030r8-miniboard/board/Kconfig b/bsp/apm32/apm32f030r8-miniboard/board/Kconfig
index c583254b83..e3cde3f9c9 100644
--- a/bsp/apm32/apm32f030r8-miniboard/board/Kconfig
+++ b/bsp/apm32/apm32f030r8-miniboard/board/Kconfig
@@ -67,41 +67,39 @@ menu "On-chip Peripheral Drivers"
bool "RTC USING LSI"
endchoice
endif
-
- menuconfig BSP_USING_I2C
- bool "Enable I2C BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- config BSP_USING_I2C1
- bool "Enable I2C1 BUS"
- if BSP_USING_I2C1
- 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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 26
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 27
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 22
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 23
+ endif
+ endif
+
menuconfig BSP_USING_SPI
bool "Enable SPI"
@@ -193,4 +191,28 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 26 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 27 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C2
+
endmenu
diff --git a/bsp/apm32/apm32f051r8-evalboard/.ci/attachconfig/ci.attachconfig.yml b/bsp/apm32/apm32f051r8-evalboard/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..d88fbcccd5
--- /dev/null
+++ b/bsp/apm32/apm32f051r8-evalboard/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,12 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=26
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=27
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
diff --git a/bsp/apm32/apm32f051r8-evalboard/board/Kconfig b/bsp/apm32/apm32f051r8-evalboard/board/Kconfig
index aef90aa40b..974d428ead 100644
--- a/bsp/apm32/apm32f051r8-evalboard/board/Kconfig
+++ b/bsp/apm32/apm32f051r8-evalboard/board/Kconfig
@@ -16,11 +16,24 @@ menu "Onboard Peripheral Drivers"
default y
config BSP_USING_EEPROM
- bool "Enable I2C EEPROM (i2c1 software simulation)"
- select BSP_USING_I2C
- select BSP_USING_I2C1
+ bool "Enable I2C EEPROM (swi2c1)"
+ select RT_USING_I2C
+ select BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C1
default n
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 26 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 27 if RT_USING_SOFT_I2C1
+
endmenu
menu "On-chip Peripheral Drivers"
@@ -79,41 +92,39 @@ menu "On-chip Peripheral Drivers"
bool "RTC USING LSI"
endchoice
endif
-
- menuconfig BSP_USING_I2C
- bool "Enable I2C BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- config BSP_USING_I2C1
- bool "Enable I2C1 BUS"
- if BSP_USING_I2C1
- 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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 26
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 27
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 22
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 23
+ endif
+ endif
+
menuconfig BSP_USING_SPI
bool "Enable SPI"
@@ -205,4 +216,16 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C2
+
endmenu
diff --git a/bsp/apm32/apm32f072vb-miniboard/.ci/attachconfig/ci.attachconfig.yml b/bsp/apm32/apm32f072vb-miniboard/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..f08ad08d18
--- /dev/null
+++ b/bsp/apm32/apm32f072vb-miniboard/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,16 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=26
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=27
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
+ - CONFIG_RT_USING_SOFT_I2C3=y
+ - CONFIG_RT_SOFT_I2C3_SCL_PIN=8
+ - CONFIG_RT_SOFT_I2C3_SDA_PIN=41
+ - CONFIG_RT_SOFT_I2C3_BUS_NAME="swi2c3"
diff --git a/bsp/apm32/apm32f072vb-miniboard/board/Kconfig b/bsp/apm32/apm32f072vb-miniboard/board/Kconfig
index cae05eae10..6416306f2b 100644
--- a/bsp/apm32/apm32f072vb-miniboard/board/Kconfig
+++ b/bsp/apm32/apm32f072vb-miniboard/board/Kconfig
@@ -67,54 +67,52 @@ menu "On-chip Peripheral Drivers"
bool "RTC USING LSI"
endchoice
endif
-
- menuconfig BSP_USING_I2C
- bool "Enable I2C BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- config BSP_USING_I2C1
- bool "Enable I2C1 BUS"
- if BSP_USING_I2C1
- 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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 26
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 27
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 22
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 23
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C3
+ bool "Enable software I2C3 Bus (swi2c3)"
+ default n
+ select RT_USING_SOFT_I2C3
+ if BSP_USING_SOFT_I2C3
+ config RT_SOFT_I2C3_SCL_PIN
+ int "swi2c3 SCL pin number"
+ default 8
+ config RT_SOFT_I2C3_SDA_PIN
+ int "swi2c3 SDA pin number"
+ default 41
+ endif
+ endif
+
menuconfig BSP_USING_SPI
bool "Enable SPI"
@@ -214,4 +212,40 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 26 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 27 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C3_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SCL_PIN_DEFAULT
+ int
+ default 8 if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SDA_PIN_DEFAULT
+ int
+ default 41 if RT_USING_SOFT_I2C3
+
endmenu
diff --git a/bsp/apm32/apm32f091vc-miniboard/.ci/attachconfig/ci.attachconfig.yml b/bsp/apm32/apm32f091vc-miniboard/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..f08ad08d18
--- /dev/null
+++ b/bsp/apm32/apm32f091vc-miniboard/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,16 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=26
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=27
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
+ - CONFIG_RT_USING_SOFT_I2C3=y
+ - CONFIG_RT_SOFT_I2C3_SCL_PIN=8
+ - CONFIG_RT_SOFT_I2C3_SDA_PIN=41
+ - CONFIG_RT_SOFT_I2C3_BUS_NAME="swi2c3"
diff --git a/bsp/apm32/apm32f091vc-miniboard/board/Kconfig b/bsp/apm32/apm32f091vc-miniboard/board/Kconfig
index 757ecc8b85..53666c4a67 100644
--- a/bsp/apm32/apm32f091vc-miniboard/board/Kconfig
+++ b/bsp/apm32/apm32f091vc-miniboard/board/Kconfig
@@ -67,54 +67,52 @@ menu "On-chip Peripheral Drivers"
bool "RTC USING LSI"
endchoice
endif
-
- menuconfig BSP_USING_I2C
- bool "Enable I2C BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- config BSP_USING_I2C1
- bool "Enable I2C1 BUS"
- if BSP_USING_I2C1
- 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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 26
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 27
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 22
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 23
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C3
+ bool "Enable software I2C3 Bus (swi2c3)"
+ default n
+ select RT_USING_SOFT_I2C3
+ if BSP_USING_SOFT_I2C3
+ config RT_SOFT_I2C3_SCL_PIN
+ int "swi2c3 SCL pin number"
+ default 8
+ config RT_SOFT_I2C3_SDA_PIN
+ int "swi2c3 SDA pin number"
+ default 41
+ endif
+ endif
+
menuconfig BSP_USING_SPI
bool "Enable SPI"
@@ -214,4 +212,40 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 26 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 27 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C3_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SCL_PIN_DEFAULT
+ int
+ default 8 if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SDA_PIN_DEFAULT
+ int
+ default 41 if RT_USING_SOFT_I2C3
+
endmenu
diff --git a/bsp/apm32/apm32f103vb-miniboard/.ci/attachconfig/ci.attachconfig.yml b/bsp/apm32/apm32f103vb-miniboard/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..840e3e8093
--- /dev/null
+++ b/bsp/apm32/apm32f103vb-miniboard/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,12 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=0
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=1
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
diff --git a/bsp/apm32/apm32f103vb-miniboard/board/Kconfig b/bsp/apm32/apm32f103vb-miniboard/board/Kconfig
index 6abbc34415..b18f0da3e7 100644
--- a/bsp/apm32/apm32f103vb-miniboard/board/Kconfig
+++ b/bsp/apm32/apm32f103vb-miniboard/board/Kconfig
@@ -69,41 +69,39 @@ menu "On-chip Peripheral Drivers"
bool "RTC USING LSI"
endchoice
endif
-
- menuconfig BSP_USING_I2C
- bool "Enable I2C BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- config BSP_USING_I2C1
- bool "Enable I2C1 BUS"
- if BSP_USING_I2C1
- 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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 0
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 1
+ endif
+ endif
+
menuconfig BSP_USING_SPI
bool "Enable SPI"
@@ -205,4 +203,28 @@ menu "On-chip Peripheral Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 0 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 1 if RT_USING_SOFT_I2C2
+
endmenu
diff --git a/bsp/apm32/apm32f103xe-minibroard/.ci/attachconfig/ci.attachconfig.yml b/bsp/apm32/apm32f103xe-minibroard/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..d626be14a5
--- /dev/null
+++ b/bsp/apm32/apm32f103xe-minibroard/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/apm32/apm32f103xe-minibroard/board/Kconfig b/bsp/apm32/apm32f103xe-minibroard/board/Kconfig
index 12182a2c48..4c5467276d 100644
--- a/bsp/apm32/apm32f103xe-minibroard/board/Kconfig
+++ b/bsp/apm32/apm32f103xe-minibroard/board/Kconfig
@@ -80,23 +80,26 @@ menu "On-chip Peripheral Drivers"
bool "RTC USING LSI"
endchoice
endif
-
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
+ endif
+
menuconfig BSP_USING_SPI
bool "Enable SPI"
@@ -211,4 +214,16 @@ menu "On-chip Peripheral Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/apm32/apm32f107vc-evalboard/.ci/attachconfig/ci.attachconfig.yml b/bsp/apm32/apm32f107vc-evalboard/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..840e3e8093
--- /dev/null
+++ b/bsp/apm32/apm32f107vc-evalboard/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,12 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=0
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=1
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
diff --git a/bsp/apm32/apm32f107vc-evalboard/board/Kconfig b/bsp/apm32/apm32f107vc-evalboard/board/Kconfig
index 31d7d7113a..13145613e7 100644
--- a/bsp/apm32/apm32f107vc-evalboard/board/Kconfig
+++ b/bsp/apm32/apm32f107vc-evalboard/board/Kconfig
@@ -24,9 +24,10 @@ menu "Onboard Peripheral Drivers"
default n
config BSP_USING_EEPROM
- bool "Enable I2C EEPROM (i2c1 software simulation)"
- select BSP_USING_I2C
- select BSP_USING_I2C1
+ bool "Enable I2C EEPROM (swi2c1)"
+ select RT_USING_I2C
+ select BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C1
default n
config BSP_USING_ETH
@@ -41,6 +42,18 @@ menu "Onboard Peripheral Drivers"
depends on BSP_USING_ETH
default y
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
endmenu
menu "On-chip Peripheral Drivers"
@@ -99,41 +112,39 @@ menu "On-chip Peripheral Drivers"
bool "RTC USING LSI"
endchoice
endif
-
- menuconfig BSP_USING_I2C
- bool "Enable I2C BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- config BSP_USING_I2C1
- bool "Enable I2C1 BUS"
- if BSP_USING_I2C1
- 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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 0
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 1
+ endif
+ endif
+
menuconfig BSP_USING_SPI
bool "Enable SPI"
@@ -242,4 +253,16 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 0 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 1 if RT_USING_SOFT_I2C2
+
endmenu
diff --git a/bsp/apm32/apm32f407ig-minibroard/.ci/attachconfig/ci.attachconfig.yml b/bsp/apm32/apm32f407ig-minibroard/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..d626be14a5
--- /dev/null
+++ b/bsp/apm32/apm32f407ig-minibroard/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/apm32/apm32f407ig-minibroard/board/Kconfig b/bsp/apm32/apm32f407ig-minibroard/board/Kconfig
index d14dafe814..4e6da91758 100644
--- a/bsp/apm32/apm32f407ig-minibroard/board/Kconfig
+++ b/bsp/apm32/apm32f407ig-minibroard/board/Kconfig
@@ -69,23 +69,26 @@ menu "On-chip Peripheral Drivers"
bool "RTC USING LSI"
endchoice
endif
-
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
+ endif
+
menuconfig BSP_USING_SPI
bool "Enable SPI"
@@ -214,4 +217,16 @@ menu "On-chip Peripheral Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/apm32/apm32f407zg-evalboard/.ci/attachconfig/ci.attachconfig.yml b/bsp/apm32/apm32f407zg-evalboard/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..840e3e8093
--- /dev/null
+++ b/bsp/apm32/apm32f407zg-evalboard/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,12 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=0
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=1
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
diff --git a/bsp/apm32/apm32f407zg-evalboard/board/Kconfig b/bsp/apm32/apm32f407zg-evalboard/board/Kconfig
index 3d933499a0..de81680763 100644
--- a/bsp/apm32/apm32f407zg-evalboard/board/Kconfig
+++ b/bsp/apm32/apm32f407zg-evalboard/board/Kconfig
@@ -111,41 +111,39 @@ menu "On-chip Peripheral Drivers"
bool "RTC USING LSI"
endchoice
endif
-
- menuconfig BSP_USING_I2C
- bool "Enable I2C BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- config BSP_USING_I2C1
- bool "Enable I2C1 BUS"
- if BSP_USING_I2C1
- 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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 0
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 1
+ endif
+ endif
+
menuconfig BSP_USING_SPI
bool "Enable SPI"
@@ -292,4 +290,28 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 0 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 1 if RT_USING_SOFT_I2C2
+
endmenu
diff --git a/bsp/apm32/apm32s103vb-miniboard/.ci/attachconfig/ci.attachconfig.yml b/bsp/apm32/apm32s103vb-miniboard/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..7cd4362ffc
--- /dev/null
+++ b/bsp/apm32/apm32s103vb-miniboard/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,16 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
+ - CONFIG_RT_USING_SOFT_I2C3=y
+ - CONFIG_RT_SOFT_I2C3_SCL_PIN=8
+ - CONFIG_RT_SOFT_I2C3_SDA_PIN=41
+ - CONFIG_RT_SOFT_I2C3_BUS_NAME="swi2c3"
diff --git a/bsp/apm32/apm32s103vb-miniboard/board/Kconfig b/bsp/apm32/apm32s103vb-miniboard/board/Kconfig
index af6d754f8d..58321e8208 100644
--- a/bsp/apm32/apm32s103vb-miniboard/board/Kconfig
+++ b/bsp/apm32/apm32s103vb-miniboard/board/Kconfig
@@ -74,54 +74,52 @@ menu "On-chip Peripheral Drivers"
bool "RTC USING LSI"
endchoice
endif
-
- menuconfig BSP_USING_I2C
- bool "Enable I2C BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- config BSP_USING_I2C1
- bool "Enable I2C1 BUS"
- if BSP_USING_I2C1
- 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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 22
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 23
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C3
+ bool "Enable software I2C3 Bus (swi2c3)"
+ default n
+ select RT_USING_SOFT_I2C3
+ if BSP_USING_SOFT_I2C3
+ config RT_SOFT_I2C3_SCL_PIN
+ int "swi2c3 SCL pin number"
+ default 8
+ config RT_SOFT_I2C3_SDA_PIN
+ int "swi2c3 SDA pin number"
+ default 41
+ endif
+ endif
+
menuconfig BSP_USING_SPI
bool "Enable SPI"
@@ -210,4 +208,40 @@ menu "On-chip Peripheral Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C3_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SCL_PIN_DEFAULT
+ int
+ default 8 if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SDA_PIN_DEFAULT
+ int
+ default 41 if RT_USING_SOFT_I2C3
+
endmenu
diff --git a/bsp/apm32/libraries/Drivers/SConscript b/bsp/apm32/libraries/Drivers/SConscript
index a5d05ad815..03b78577da 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 bb488c75b4..0000000000
--- 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 <sys/time.h>
-
-#ifdef RT_USING_I2C
-
-#define DBG_TAG "drv.i2c"
-#define DBG_LVL DBG_INFO
-#include <rtdbg.h>
-
-#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/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32a403a-start/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..f726ac2613
--- /dev/null
+++ b/bsp/at32/at32a403a-start/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,16 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=26
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=27
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
+ - CONFIG_RT_USING_SOFT_I2C3=y
+ - CONFIG_RT_SOFT_I2C3_SCL_PIN=8
+ - CONFIG_RT_SOFT_I2C3_SDA_PIN=41
+ - CONFIG_RT_SOFT_I2C3_BUS_NAME="swi2c3"
diff --git a/bsp/at32/at32a403a-start/board/Kconfig b/bsp/at32/at32a403a-start/board/Kconfig
index b7d8486d27..af31ed0b23 100644
--- a/bsp/at32/at32a403a-start/board/Kconfig
+++ b/bsp/at32/at32a403a-start/board/Kconfig
@@ -237,51 +237,52 @@ menu "On-chip Peripheral Drivers"
select BSP_SPI2_TX_USING_DMA
default n
endif
-
- menuconfig BSP_USING_I2C
- bool "Enable I2C BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- config BSP_USING_I2C1
- bool "Enable I2C1 BUS"
- if BSP_USING_I2C1
- config BSP_I2C1_SCL_PIN
- int "i2c1 scl pin number"
- range 0 63
- default 22
- config BSP_I2C1_SDA_PIN
- int "I2C1 sda pin number"
- range 0 63
- default 23
- endif
- config BSP_USING_I2C2
- bool "Enable I2C2 BUS"
- if BSP_USING_I2C2
- config BSP_I2C2_SCL_PIN
- int "i2c2 scl pin number"
- range 0 63
- default 26
- config BSP_I2C2_SDA_PIN
- int "I2C2 sda pin number"
- range 0 63
- default 27
- endif
- config BSP_USING_I2C3
- bool "Enable I2C3 BUS"
- if BSP_USING_I2C3
- config BSP_I2C3_SCL_PIN
- int "i2c3 scl pin number"
- range 0 63
- default 8
- config BSP_I2C3_SDA_PIN
- int "I2C3 sda pin number"
- range 0 63
- default 41
- endif
- endif
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 26
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 27
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C3
+ bool "Enable software I2C3 Bus (swi2c3)"
+ default n
+ select RT_USING_SOFT_I2C3
+ if BSP_USING_SOFT_I2C3
+ config RT_SOFT_I2C3_SCL_PIN
+ int "swi2c3 SCL pin number"
+ default 8
+ config RT_SOFT_I2C3_SDA_PIN
+ int "swi2c3 SDA pin number"
+ default 41
+ endif
+ endif
+
menuconfig BSP_USING_HARD_I2C
bool "Enable I2C BUS (hardware driver)"
@@ -381,4 +382,40 @@ menu "On-chip Peripheral Drivers"
endif
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 26 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 27 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C3_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SCL_PIN_DEFAULT
+ int
+ default 8 if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SDA_PIN_DEFAULT
+ int
+ default 41 if RT_USING_SOFT_I2C3
+
endmenu
diff --git a/bsp/at32/at32a423-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32a423-start/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..8b33403ed0
--- /dev/null
+++ b/bsp/at32/at32a423-start/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,12 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=26
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=27
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
diff --git a/bsp/at32/at32a423-start/board/Kconfig b/bsp/at32/at32a423-start/board/Kconfig
index 6da7a57f63..4888c433b1 100644
--- a/bsp/at32/at32a423-start/board/Kconfig
+++ b/bsp/at32/at32a423-start/board/Kconfig
@@ -261,39 +261,39 @@ menu "On-chip Peripheral Drivers"
select BSP_SPI3_TX_USING_DMA
default n
endif
-
- menuconfig BSP_USING_I2C
- bool "Enable I2C BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- config BSP_USING_I2C1
- bool "Enable I2C1 BUS"
- if BSP_USING_I2C1
- config BSP_I2C1_SCL_PIN
- int "i2c1 scl pin number"
- range 0 63
- default 22
- config BSP_I2C1_SDA_PIN
- int "I2C1 sda pin number"
- range 0 63
- default 23
- endif
- config BSP_USING_I2C2
- bool "Enable I2C2 BUS"
- if BSP_USING_I2C2
- config BSP_I2C2_SCL_PIN
- int "i2c2 scl pin number"
- range 0 63
- default 26
- config BSP_I2C2_SDA_PIN
- int "I2C2 sda pin number"
- range 0 63
- default 27
- endif
- endif
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 26
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 27
+ endif
+ endif
+
menuconfig BSP_USING_HARD_I2C
bool "Enable I2C BUS (hardware driver)"
@@ -380,4 +380,28 @@ menu "On-chip Peripheral Drivers"
endif
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 26 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 27 if RT_USING_SOFT_I2C2
+
endmenu
diff --git a/bsp/at32/at32f402-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f402-start/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..f726ac2613
--- /dev/null
+++ b/bsp/at32/at32f402-start/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,16 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=26
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=27
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
+ - CONFIG_RT_USING_SOFT_I2C3=y
+ - CONFIG_RT_SOFT_I2C3_SCL_PIN=8
+ - CONFIG_RT_SOFT_I2C3_SDA_PIN=41
+ - CONFIG_RT_SOFT_I2C3_BUS_NAME="swi2c3"
diff --git a/bsp/at32/at32f402-start/board/Kconfig b/bsp/at32/at32f402-start/board/Kconfig
index 58d9aa1a64..6d0f45296a 100644
--- a/bsp/at32/at32f402-start/board/Kconfig
+++ b/bsp/at32/at32f402-start/board/Kconfig
@@ -260,51 +260,52 @@ menu "On-chip Peripheral Drivers"
select BSP_SPI2_TX_USING_DMA
default n
endif
-
- menuconfig BSP_USING_I2C
- bool "Enable I2C BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- config BSP_USING_I2C1
- bool "Enable I2C1 BUS"
- if BSP_USING_I2C1
- config BSP_I2C1_SCL_PIN
- int "i2c1 scl pin number"
- range 0 63
- default 22
- config BSP_I2C1_SDA_PIN
- int "I2C1 sda pin number"
- range 0 63
- default 23
- endif
- config BSP_USING_I2C2
- bool "Enable I2C2 BUS"
- if BSP_USING_I2C2
- config BSP_I2C2_SCL_PIN
- int "i2c2 scl pin number"
- range 0 63
- default 26
- config BSP_I2C2_SDA_PIN
- int "I2C2 sda pin number"
- range 0 63
- default 27
- endif
- config BSP_USING_I2C3
- bool "Enable I2C3 BUS"
- if BSP_USING_I2C3
- config BSP_I2C3_SCL_PIN
- int "i2c3 scl pin number"
- range 0 63
- default 8
- config BSP_I2C3_SDA_PIN
- int "I2C3 sda pin number"
- range 0 63
- default 41
- endif
- endif
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 26
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 27
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C3
+ bool "Enable software I2C3 Bus (swi2c3)"
+ default n
+ select RT_USING_SOFT_I2C3
+ if BSP_USING_SOFT_I2C3
+ config RT_SOFT_I2C3_SCL_PIN
+ int "swi2c3 SCL pin number"
+ default 8
+ config RT_SOFT_I2C3_SDA_PIN
+ int "swi2c3 SDA pin number"
+ default 41
+ endif
+ endif
+
menuconfig BSP_USING_HARD_I2C
bool "Enable I2C BUS (hardware driver)"
@@ -378,4 +379,40 @@ menu "On-chip Peripheral Drivers"
endif
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 26 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 27 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C3_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SCL_PIN_DEFAULT
+ int
+ default 8 if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SDA_PIN_DEFAULT
+ int
+ default 41 if RT_USING_SOFT_I2C3
+
endmenu
diff --git a/bsp/at32/at32f403a-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f403a-start/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..f726ac2613
--- /dev/null
+++ b/bsp/at32/at32f403a-start/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,16 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=26
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=27
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
+ - CONFIG_RT_USING_SOFT_I2C3=y
+ - CONFIG_RT_SOFT_I2C3_SCL_PIN=8
+ - CONFIG_RT_SOFT_I2C3_SDA_PIN=41
+ - CONFIG_RT_SOFT_I2C3_BUS_NAME="swi2c3"
diff --git a/bsp/at32/at32f403a-start/board/Kconfig b/bsp/at32/at32f403a-start/board/Kconfig
index a12ff97a97..e3bdd8d8fd 100644
--- a/bsp/at32/at32f403a-start/board/Kconfig
+++ b/bsp/at32/at32f403a-start/board/Kconfig
@@ -237,51 +237,52 @@ menu "On-chip Peripheral Drivers"
select BSP_SPI2_TX_USING_DMA
default n
endif
-
- menuconfig BSP_USING_I2C
- bool "Enable I2C BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- config BSP_USING_I2C1
- bool "Enable I2C1 BUS"
- if BSP_USING_I2C1
- config BSP_I2C1_SCL_PIN
- int "i2c1 scl pin number"
- range 0 63
- default 22
- config BSP_I2C1_SDA_PIN
- int "I2C1 sda pin number"
- range 0 63
- default 23
- endif
- config BSP_USING_I2C2
- bool "Enable I2C2 BUS"
- if BSP_USING_I2C2
- config BSP_I2C2_SCL_PIN
- int "i2c2 scl pin number"
- range 0 63
- default 26
- config BSP_I2C2_SDA_PIN
- int "I2C2 sda pin number"
- range 0 63
- default 27
- endif
- config BSP_USING_I2C3
- bool "Enable I2C3 BUS"
- if BSP_USING_I2C3
- config BSP_I2C3_SCL_PIN
- int "i2c3 scl pin number"
- range 0 63
- default 8
- config BSP_I2C3_SDA_PIN
- int "I2C3 sda pin number"
- range 0 63
- default 41
- endif
- endif
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 26
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 27
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C3
+ bool "Enable software I2C3 Bus (swi2c3)"
+ default n
+ select RT_USING_SOFT_I2C3
+ if BSP_USING_SOFT_I2C3
+ config RT_SOFT_I2C3_SCL_PIN
+ int "swi2c3 SCL pin number"
+ default 8
+ config RT_SOFT_I2C3_SDA_PIN
+ int "swi2c3 SDA pin number"
+ default 41
+ endif
+ endif
+
menuconfig BSP_USING_HARD_I2C
bool "Enable I2C BUS (hardware driver)"
@@ -381,4 +382,40 @@ menu "On-chip Peripheral Drivers"
endif
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 26 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 27 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C3_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SCL_PIN_DEFAULT
+ int
+ default 8 if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SDA_PIN_DEFAULT
+ int
+ default 41 if RT_USING_SOFT_I2C3
+
endmenu
diff --git a/bsp/at32/at32f405-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f405-start/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..f726ac2613
--- /dev/null
+++ b/bsp/at32/at32f405-start/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,16 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=26
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=27
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
+ - CONFIG_RT_USING_SOFT_I2C3=y
+ - CONFIG_RT_SOFT_I2C3_SCL_PIN=8
+ - CONFIG_RT_SOFT_I2C3_SDA_PIN=41
+ - CONFIG_RT_SOFT_I2C3_BUS_NAME="swi2c3"
diff --git a/bsp/at32/at32f405-start/board/Kconfig b/bsp/at32/at32f405-start/board/Kconfig
index 50f523cd4c..7012bd6184 100644
--- a/bsp/at32/at32f405-start/board/Kconfig
+++ b/bsp/at32/at32f405-start/board/Kconfig
@@ -279,51 +279,52 @@ menu "On-chip Peripheral Drivers"
select BSP_SPI2_TX_USING_DMA
default n
endif
-
- menuconfig BSP_USING_I2C
- bool "Enable I2C BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- config BSP_USING_I2C1
- bool "Enable I2C1 BUS"
- if BSP_USING_I2C1
- config BSP_I2C1_SCL_PIN
- int "i2c1 scl pin number"
- range 0 63
- default 22
- config BSP_I2C1_SDA_PIN
- int "I2C1 sda pin number"
- range 0 63
- default 23
- endif
- config BSP_USING_I2C2
- bool "Enable I2C2 BUS"
- if BSP_USING_I2C2
- config BSP_I2C2_SCL_PIN
- int "i2c2 scl pin number"
- range 0 63
- default 26
- config BSP_I2C2_SDA_PIN
- int "I2C2 sda pin number"
- range 0 63
- default 27
- endif
- config BSP_USING_I2C3
- bool "Enable I2C3 BUS"
- if BSP_USING_I2C3
- config BSP_I2C3_SCL_PIN
- int "i2c3 scl pin number"
- range 0 63
- default 8
- config BSP_I2C3_SDA_PIN
- int "I2C3 sda pin number"
- range 0 63
- default 41
- endif
- endif
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 26
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 27
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C3
+ bool "Enable software I2C3 Bus (swi2c3)"
+ default n
+ select RT_USING_SOFT_I2C3
+ if BSP_USING_SOFT_I2C3
+ config RT_SOFT_I2C3_SCL_PIN
+ int "swi2c3 SCL pin number"
+ default 8
+ config RT_SOFT_I2C3_SDA_PIN
+ int "swi2c3 SDA pin number"
+ default 41
+ endif
+ endif
+
menuconfig BSP_USING_HARD_I2C
bool "Enable I2C BUS (hardware driver)"
@@ -397,4 +398,40 @@ menu "On-chip Peripheral Drivers"
endif
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 26 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 27 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C3_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SCL_PIN_DEFAULT
+ int
+ default 8 if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SDA_PIN_DEFAULT
+ int
+ default 41 if RT_USING_SOFT_I2C3
+
endmenu
diff --git a/bsp/at32/at32f407-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f407-start/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..f726ac2613
--- /dev/null
+++ b/bsp/at32/at32f407-start/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,16 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=26
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=27
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
+ - CONFIG_RT_USING_SOFT_I2C3=y
+ - CONFIG_RT_SOFT_I2C3_SCL_PIN=8
+ - CONFIG_RT_SOFT_I2C3_SDA_PIN=41
+ - CONFIG_RT_SOFT_I2C3_BUS_NAME="swi2c3"
diff --git a/bsp/at32/at32f407-start/board/Kconfig b/bsp/at32/at32f407-start/board/Kconfig
index c4c7e65048..2187761bca 100644
--- a/bsp/at32/at32f407-start/board/Kconfig
+++ b/bsp/at32/at32f407-start/board/Kconfig
@@ -260,51 +260,52 @@ menu "On-chip Peripheral Drivers"
select BSP_SPI2_TX_USING_DMA
default n
endif
-
- menuconfig BSP_USING_I2C
- bool "Enable I2C BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- config BSP_USING_I2C1
- bool "Enable I2C1 BUS"
- if BSP_USING_I2C1
- config BSP_I2C1_SCL_PIN
- int "i2c1 scl pin number"
- range 0 63
- default 22
- config BSP_I2C1_SDA_PIN
- int "I2C1 sda pin number"
- range 0 63
- default 23
- endif
- config BSP_USING_I2C2
- bool "Enable I2C2 BUS"
- if BSP_USING_I2C2
- config BSP_I2C2_SCL_PIN
- int "i2c2 scl pin number"
- range 0 63
- default 26
- config BSP_I2C2_SDA_PIN
- int "I2C2 sda pin number"
- range 0 63
- default 27
- endif
- config BSP_USING_I2C3
- bool "Enable I2C3 BUS"
- if BSP_USING_I2C3
- config BSP_I2C3_SCL_PIN
- int "i2c3 scl pin number"
- range 0 63
- default 8
- config BSP_I2C3_SDA_PIN
- int "I2C3 sda pin number"
- range 0 63
- default 41
- endif
- endif
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 26
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 27
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C3
+ bool "Enable software I2C3 Bus (swi2c3)"
+ default n
+ select RT_USING_SOFT_I2C3
+ if BSP_USING_SOFT_I2C3
+ config RT_SOFT_I2C3_SCL_PIN
+ int "swi2c3 SCL pin number"
+ default 8
+ config RT_SOFT_I2C3_SDA_PIN
+ int "swi2c3 SDA pin number"
+ default 41
+ endif
+ endif
+
menuconfig BSP_USING_HARD_I2C
bool "Enable I2C BUS (hardware driver)"
@@ -404,4 +405,40 @@ menu "On-chip Peripheral Drivers"
endif
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 26 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 27 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C3_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SCL_PIN_DEFAULT
+ int
+ default 8 if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SDA_PIN_DEFAULT
+ int
+ default 41 if RT_USING_SOFT_I2C3
+
endmenu
diff --git a/bsp/at32/at32f413-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f413-start/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..8b33403ed0
--- /dev/null
+++ b/bsp/at32/at32f413-start/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,12 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=26
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=27
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
diff --git a/bsp/at32/at32f413-start/board/Kconfig b/bsp/at32/at32f413-start/board/Kconfig
index b809dd5702..2da7d6844e 100644
--- a/bsp/at32/at32f413-start/board/Kconfig
+++ b/bsp/at32/at32f413-start/board/Kconfig
@@ -237,39 +237,39 @@ menu "On-chip Peripheral Drivers"
select BSP_SPI2_TX_USING_DMA
default n
endif
-
- menuconfig BSP_USING_I2C
- bool "Enable I2C BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- config BSP_USING_I2C1
- bool "Enable I2C1 BUS"
- if BSP_USING_I2C1
- config BSP_I2C1_SCL_PIN
- int "i2c1 scl pin number"
- range 0 63
- default 22
- config BSP_I2C1_SDA_PIN
- int "I2C1 sda pin number"
- range 0 63
- default 23
- endif
- config BSP_USING_I2C2
- bool "Enable I2C2 BUS"
- if BSP_USING_I2C2
- config BSP_I2C2_SCL_PIN
- int "i2c2 scl pin number"
- range 0 63
- default 26
- config BSP_I2C2_SDA_PIN
- int "I2C2 sda pin number"
- range 0 63
- default 27
- endif
- endif
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 26
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 27
+ endif
+ endif
+
menuconfig BSP_USING_HARD_I2C
bool "Enable I2C BUS (hardware driver)"
@@ -344,4 +344,28 @@ menu "On-chip Peripheral Drivers"
endif
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 26 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 27 if RT_USING_SOFT_I2C2
+
endmenu
diff --git a/bsp/at32/at32f415-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f415-start/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..8b33403ed0
--- /dev/null
+++ b/bsp/at32/at32f415-start/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,12 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=26
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=27
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
diff --git a/bsp/at32/at32f415-start/board/Kconfig b/bsp/at32/at32f415-start/board/Kconfig
index fd29cc332e..37a81975eb 100644
--- a/bsp/at32/at32f415-start/board/Kconfig
+++ b/bsp/at32/at32f415-start/board/Kconfig
@@ -252,39 +252,39 @@ menu "On-chip Peripheral Drivers"
select BSP_SPI2_TX_USING_DMA
default n
endif
-
- menuconfig BSP_USING_I2C
- bool "Enable I2C BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- config BSP_USING_I2C1
- bool "Enable I2C1 BUS"
- if BSP_USING_I2C1
- config BSP_I2C1_SCL_PIN
- int "i2c1 scl pin number"
- range 0 63
- default 22
- config BSP_I2C1_SDA_PIN
- int "I2C1 sda pin number"
- range 0 63
- default 23
- endif
- config BSP_USING_I2C2
- bool "Enable I2C2 BUS"
- if BSP_USING_I2C2
- config BSP_I2C2_SCL_PIN
- int "i2c2 scl pin number"
- range 0 63
- default 26
- config BSP_I2C2_SDA_PIN
- int "I2C2 sda pin number"
- range 0 63
- default 27
- endif
- endif
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 26
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 27
+ endif
+ endif
+
menuconfig BSP_USING_HARD_I2C
bool "Enable I2C BUS (hardware driver)"
@@ -353,4 +353,28 @@ menu "On-chip Peripheral Drivers"
endif
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 26 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 27 if RT_USING_SOFT_I2C2
+
endmenu
diff --git a/bsp/at32/at32f421-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f421-start/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..8b33403ed0
--- /dev/null
+++ b/bsp/at32/at32f421-start/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,12 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=26
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=27
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
diff --git a/bsp/at32/at32f421-start/board/Kconfig b/bsp/at32/at32f421-start/board/Kconfig
index e037d8d499..3b8bbd6ca4 100644
--- a/bsp/at32/at32f421-start/board/Kconfig
+++ b/bsp/at32/at32f421-start/board/Kconfig
@@ -181,39 +181,39 @@ menu "On-chip Peripheral Drivers"
select BSP_SPI2_TX_USING_DMA
default n
endif
-
- menuconfig BSP_USING_I2C
- bool "Enable I2C BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- config BSP_USING_I2C1
- bool "Enable I2C1 BUS"
- if BSP_USING_I2C1
- config BSP_I2C1_SCL_PIN
- int "i2c1 scl pin number"
- range 0 63
- default 22
- config BSP_I2C1_SDA_PIN
- int "I2C1 sda pin number"
- range 0 63
- default 23
- endif
- config BSP_USING_I2C2
- bool "Enable I2C2 BUS"
- if BSP_USING_I2C2
- config BSP_I2C2_SCL_PIN
- int "i2c2 scl pin number"
- range 0 63
- default 26
- config BSP_I2C2_SDA_PIN
- int "I2C2 sda pin number"
- range 0 63
- default 27
- endif
- endif
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 26
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 27
+ endif
+ endif
+
menuconfig BSP_USING_HARD_I2C
bool "Enable I2C BUS (hardware driver)"
@@ -262,4 +262,28 @@ menu "On-chip Peripheral Drivers"
endif
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 26 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 27 if RT_USING_SOFT_I2C2
+
endmenu
diff --git a/bsp/at32/at32f423-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f423-start/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..8b33403ed0
--- /dev/null
+++ b/bsp/at32/at32f423-start/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,12 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=26
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=27
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
diff --git a/bsp/at32/at32f423-start/board/Kconfig b/bsp/at32/at32f423-start/board/Kconfig
index 51da2462ab..05dafa6bd8 100644
--- a/bsp/at32/at32f423-start/board/Kconfig
+++ b/bsp/at32/at32f423-start/board/Kconfig
@@ -261,39 +261,39 @@ menu "On-chip Peripheral Drivers"
select BSP_SPI3_TX_USING_DMA
default n
endif
-
- menuconfig BSP_USING_I2C
- bool "Enable I2C BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- config BSP_USING_I2C1
- bool "Enable I2C1 BUS"
- if BSP_USING_I2C1
- config BSP_I2C1_SCL_PIN
- int "i2c1 scl pin number"
- range 0 63
- default 22
- config BSP_I2C1_SDA_PIN
- int "I2C1 sda pin number"
- range 0 63
- default 23
- endif
- config BSP_USING_I2C2
- bool "Enable I2C2 BUS"
- if BSP_USING_I2C2
- config BSP_I2C2_SCL_PIN
- int "i2c2 scl pin number"
- range 0 63
- default 26
- config BSP_I2C2_SDA_PIN
- int "I2C2 sda pin number"
- range 0 63
- default 27
- endif
- endif
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 26
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 27
+ endif
+ endif
+
menuconfig BSP_USING_HARD_I2C
bool "Enable I2C BUS (hardware driver)"
@@ -380,4 +380,28 @@ menu "On-chip Peripheral Drivers"
endif
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 26 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 27 if RT_USING_SOFT_I2C2
+
endmenu
diff --git a/bsp/at32/at32f425-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f425-start/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..8b33403ed0
--- /dev/null
+++ b/bsp/at32/at32f425-start/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,12 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=26
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=27
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
diff --git a/bsp/at32/at32f425-start/board/Kconfig b/bsp/at32/at32f425-start/board/Kconfig
index cc47c54329..6cac7dfd56 100644
--- a/bsp/at32/at32f425-start/board/Kconfig
+++ b/bsp/at32/at32f425-start/board/Kconfig
@@ -261,39 +261,39 @@ menu "On-chip Peripheral Drivers"
select BSP_SPI3_TX_USING_DMA
default n
endif
-
- menuconfig BSP_USING_I2C
- bool "Enable I2C BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- config BSP_USING_I2C1
- bool "Enable I2C1 BUS"
- if BSP_USING_I2C1
- config BSP_I2C1_SCL_PIN
- int "i2c1 scl pin number"
- range 0 63
- default 22
- config BSP_I2C1_SDA_PIN
- int "I2C1 sda pin number"
- range 0 63
- default 23
- endif
- config BSP_USING_I2C2
- bool "Enable I2C2 BUS"
- if BSP_USING_I2C2
- config BSP_I2C2_SCL_PIN
- int "i2c2 scl pin number"
- range 0 63
- default 26
- config BSP_I2C2_SDA_PIN
- int "I2C2 sda pin number"
- range 0 63
- default 27
- endif
- endif
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 26
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 27
+ endif
+ endif
+
menuconfig BSP_USING_HARD_I2C
bool "Enable I2C BUS (hardware driver)"
@@ -352,4 +352,28 @@ menu "On-chip Peripheral Drivers"
endif
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 26 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 27 if RT_USING_SOFT_I2C2
+
endmenu
diff --git a/bsp/at32/at32f435-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f435-start/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..f726ac2613
--- /dev/null
+++ b/bsp/at32/at32f435-start/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,16 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=26
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=27
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
+ - CONFIG_RT_USING_SOFT_I2C3=y
+ - CONFIG_RT_SOFT_I2C3_SCL_PIN=8
+ - CONFIG_RT_SOFT_I2C3_SDA_PIN=41
+ - CONFIG_RT_SOFT_I2C3_BUS_NAME="swi2c3"
diff --git a/bsp/at32/at32f435-start/board/Kconfig b/bsp/at32/at32f435-start/board/Kconfig
index f00c2718f4..b38541d23e 100644
--- a/bsp/at32/at32f435-start/board/Kconfig
+++ b/bsp/at32/at32f435-start/board/Kconfig
@@ -286,51 +286,52 @@ menu "On-chip Peripheral Drivers"
select BSP_SPI2_TX_USING_DMA
default n
endif
-
- menuconfig BSP_USING_I2C
- bool "Enable I2C BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- config BSP_USING_I2C1
- bool "Enable I2C1 BUS"
- if BSP_USING_I2C1
- config BSP_I2C1_SCL_PIN
- int "i2c1 scl pin number"
- range 0 63
- default 22
- config BSP_I2C1_SDA_PIN
- int "I2C1 sda pin number"
- range 0 63
- default 23
- endif
- config BSP_USING_I2C2
- bool "Enable I2C2 BUS"
- if BSP_USING_I2C2
- config BSP_I2C2_SCL_PIN
- int "i2c2 scl pin number"
- range 0 63
- default 26
- config BSP_I2C2_SDA_PIN
- int "I2C2 sda pin number"
- range 0 63
- default 27
- endif
- config BSP_USING_I2C3
- bool "Enable I2C3 BUS"
- if BSP_USING_I2C3
- config BSP_I2C3_SCL_PIN
- int "i2c3 scl pin number"
- range 0 63
- default 8
- config BSP_I2C3_SDA_PIN
- int "I2C3 sda pin number"
- range 0 63
- default 41
- endif
- endif
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 26
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 27
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C3
+ bool "Enable software I2C3 Bus (swi2c3)"
+ default n
+ select RT_USING_SOFT_I2C3
+ if BSP_USING_SOFT_I2C3
+ config RT_SOFT_I2C3_SCL_PIN
+ int "swi2c3 SCL pin number"
+ default 8
+ config RT_SOFT_I2C3_SDA_PIN
+ int "swi2c3 SDA pin number"
+ default 41
+ endif
+ endif
+
menuconfig BSP_USING_HARD_I2C
bool "Enable I2C BUS (hardware driver)"
@@ -430,4 +431,40 @@ menu "On-chip Peripheral Drivers"
endif
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 26 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 27 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C3_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SCL_PIN_DEFAULT
+ int
+ default 8 if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SDA_PIN_DEFAULT
+ int
+ default 41 if RT_USING_SOFT_I2C3
+
endmenu
diff --git a/bsp/at32/at32f437-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f437-start/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..f726ac2613
--- /dev/null
+++ b/bsp/at32/at32f437-start/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,16 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=26
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=27
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
+ - CONFIG_RT_USING_SOFT_I2C3=y
+ - CONFIG_RT_SOFT_I2C3_SCL_PIN=8
+ - CONFIG_RT_SOFT_I2C3_SDA_PIN=41
+ - CONFIG_RT_SOFT_I2C3_BUS_NAME="swi2c3"
diff --git a/bsp/at32/at32f437-start/board/Kconfig b/bsp/at32/at32f437-start/board/Kconfig
index da90f3c231..3c52f6d8d5 100644
--- a/bsp/at32/at32f437-start/board/Kconfig
+++ b/bsp/at32/at32f437-start/board/Kconfig
@@ -309,51 +309,52 @@ menu "On-chip Peripheral Drivers"
select BSP_SPI2_TX_USING_DMA
default n
endif
-
- menuconfig BSP_USING_I2C
- bool "Enable I2C BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- config BSP_USING_I2C1
- bool "Enable I2C1 BUS"
- if BSP_USING_I2C1
- config BSP_I2C1_SCL_PIN
- int "i2c1 scl pin number"
- range 0 63
- default 22
- config BSP_I2C1_SDA_PIN
- int "I2C1 sda pin number"
- range 0 63
- default 23
- endif
- config BSP_USING_I2C2
- bool "Enable I2C2 BUS"
- if BSP_USING_I2C2
- config BSP_I2C2_SCL_PIN
- int "i2c2 scl pin number"
- range 0 63
- default 26
- config BSP_I2C2_SDA_PIN
- int "I2C2 sda pin number"
- range 0 63
- default 27
- endif
- config BSP_USING_I2C3
- bool "Enable I2C3 BUS"
- if BSP_USING_I2C3
- config BSP_I2C3_SCL_PIN
- int "i2c3 scl pin number"
- range 0 63
- default 8
- config BSP_I2C3_SDA_PIN
- int "I2C3 sda pin number"
- range 0 63
- default 41
- endif
- endif
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 26
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 27
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C3
+ bool "Enable software I2C3 Bus (swi2c3)"
+ default n
+ select RT_USING_SOFT_I2C3
+ if BSP_USING_SOFT_I2C3
+ config RT_SOFT_I2C3_SCL_PIN
+ int "swi2c3 SCL pin number"
+ default 8
+ config RT_SOFT_I2C3_SDA_PIN
+ int "swi2c3 SDA pin number"
+ default 41
+ endif
+ endif
+
menuconfig BSP_USING_HARD_I2C
bool "Enable I2C BUS (hardware driver)"
@@ -453,4 +454,40 @@ menu "On-chip Peripheral Drivers"
endif
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 26 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 27 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C3_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SCL_PIN_DEFAULT
+ int
+ default 8 if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SDA_PIN_DEFAULT
+ int
+ default 41 if RT_USING_SOFT_I2C3
+
endmenu
diff --git a/bsp/at32/at32f455-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f455-start/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..f726ac2613
--- /dev/null
+++ b/bsp/at32/at32f455-start/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,16 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=26
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=27
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
+ - CONFIG_RT_USING_SOFT_I2C3=y
+ - CONFIG_RT_SOFT_I2C3_SCL_PIN=8
+ - CONFIG_RT_SOFT_I2C3_SDA_PIN=41
+ - CONFIG_RT_SOFT_I2C3_BUS_NAME="swi2c3"
diff --git a/bsp/at32/at32f455-start/board/Kconfig b/bsp/at32/at32f455-start/board/Kconfig
index c8f39b0b80..ef4c6e6e5f 100644
--- a/bsp/at32/at32f455-start/board/Kconfig
+++ b/bsp/at32/at32f455-start/board/Kconfig
@@ -272,51 +272,52 @@ menu "On-chip Peripheral Drivers"
select BSP_SPI2_TX_USING_DMA
default n
endif
-
- menuconfig BSP_USING_I2C
- bool "Enable I2C BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- config BSP_USING_I2C1
- bool "Enable I2C1 BUS"
- if BSP_USING_I2C1
- config BSP_I2C1_SCL_PIN
- int "i2c1 scl pin number"
- range 0 63
- default 22
- config BSP_I2C1_SDA_PIN
- int "I2C1 sda pin number"
- range 0 63
- default 23
- endif
- config BSP_USING_I2C2
- bool "Enable I2C2 BUS"
- if BSP_USING_I2C2
- config BSP_I2C2_SCL_PIN
- int "i2c2 scl pin number"
- range 0 63
- default 26
- config BSP_I2C2_SDA_PIN
- int "I2C2 sda pin number"
- range 0 63
- default 27
- endif
- config BSP_USING_I2C3
- bool "Enable I2C3 BUS"
- if BSP_USING_I2C3
- config BSP_I2C3_SCL_PIN
- int "i2c3 scl pin number"
- range 0 63
- default 8
- config BSP_I2C3_SDA_PIN
- int "I2C3 sda pin number"
- range 0 63
- default 41
- endif
- endif
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 26
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 27
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C3
+ bool "Enable software I2C3 Bus (swi2c3)"
+ default n
+ select RT_USING_SOFT_I2C3
+ if BSP_USING_SOFT_I2C3
+ config RT_SOFT_I2C3_SCL_PIN
+ int "swi2c3 SCL pin number"
+ default 8
+ config RT_SOFT_I2C3_SDA_PIN
+ int "swi2c3 SDA pin number"
+ default 41
+ endif
+ endif
+
menuconfig BSP_USING_HARD_I2C
bool "Enable I2C BUS (hardware driver)"
@@ -419,4 +420,40 @@ menu "On-chip Peripheral Drivers"
endif
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 26 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 27 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C3_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SCL_PIN_DEFAULT
+ int
+ default 8 if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SDA_PIN_DEFAULT
+ int
+ default 41 if RT_USING_SOFT_I2C3
+
endmenu
diff --git a/bsp/at32/at32f456-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f456-start/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..f726ac2613
--- /dev/null
+++ b/bsp/at32/at32f456-start/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,16 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=26
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=27
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
+ - CONFIG_RT_USING_SOFT_I2C3=y
+ - CONFIG_RT_SOFT_I2C3_SCL_PIN=8
+ - CONFIG_RT_SOFT_I2C3_SDA_PIN=41
+ - CONFIG_RT_SOFT_I2C3_BUS_NAME="swi2c3"
diff --git a/bsp/at32/at32f456-start/board/Kconfig b/bsp/at32/at32f456-start/board/Kconfig
index b474dba771..f4c2d8896b 100644
--- a/bsp/at32/at32f456-start/board/Kconfig
+++ b/bsp/at32/at32f456-start/board/Kconfig
@@ -272,51 +272,52 @@ menu "On-chip Peripheral Drivers"
select BSP_SPI2_TX_USING_DMA
default n
endif
-
- menuconfig BSP_USING_I2C
- bool "Enable I2C BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- config BSP_USING_I2C1
- bool "Enable I2C1 BUS"
- if BSP_USING_I2C1
- config BSP_I2C1_SCL_PIN
- int "i2c1 scl pin number"
- range 0 63
- default 22
- config BSP_I2C1_SDA_PIN
- int "I2C1 sda pin number"
- range 0 63
- default 23
- endif
- config BSP_USING_I2C2
- bool "Enable I2C2 BUS"
- if BSP_USING_I2C2
- config BSP_I2C2_SCL_PIN
- int "i2c2 scl pin number"
- range 0 63
- default 26
- config BSP_I2C2_SDA_PIN
- int "I2C2 sda pin number"
- range 0 63
- default 27
- endif
- config BSP_USING_I2C3
- bool "Enable I2C3 BUS"
- if BSP_USING_I2C3
- config BSP_I2C3_SCL_PIN
- int "i2c3 scl pin number"
- range 0 63
- default 8
- config BSP_I2C3_SDA_PIN
- int "I2C3 sda pin number"
- range 0 63
- default 41
- endif
- endif
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 26
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 27
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C3
+ bool "Enable software I2C3 Bus (swi2c3)"
+ default n
+ select RT_USING_SOFT_I2C3
+ if BSP_USING_SOFT_I2C3
+ config RT_SOFT_I2C3_SCL_PIN
+ int "swi2c3 SCL pin number"
+ default 8
+ config RT_SOFT_I2C3_SDA_PIN
+ int "swi2c3 SDA pin number"
+ default 41
+ endif
+ endif
+
menuconfig BSP_USING_HARD_I2C
bool "Enable I2C BUS (hardware driver)"
@@ -419,4 +420,40 @@ menu "On-chip Peripheral Drivers"
endif
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 26 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 27 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C3_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SCL_PIN_DEFAULT
+ int
+ default 8 if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SDA_PIN_DEFAULT
+ int
+ default 41 if RT_USING_SOFT_I2C3
+
endmenu
diff --git a/bsp/at32/at32f457-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f457-start/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..f726ac2613
--- /dev/null
+++ b/bsp/at32/at32f457-start/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,16 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=26
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=27
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
+ - CONFIG_RT_USING_SOFT_I2C3=y
+ - CONFIG_RT_SOFT_I2C3_SCL_PIN=8
+ - CONFIG_RT_SOFT_I2C3_SDA_PIN=41
+ - CONFIG_RT_SOFT_I2C3_BUS_NAME="swi2c3"
diff --git a/bsp/at32/at32f457-start/board/Kconfig b/bsp/at32/at32f457-start/board/Kconfig
index 2fce389a82..c10686fec4 100644
--- a/bsp/at32/at32f457-start/board/Kconfig
+++ b/bsp/at32/at32f457-start/board/Kconfig
@@ -272,51 +272,52 @@ menu "On-chip Peripheral Drivers"
select BSP_SPI2_TX_USING_DMA
default n
endif
-
- menuconfig BSP_USING_I2C
- bool "Enable I2C BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- config BSP_USING_I2C1
- bool "Enable I2C1 BUS"
- if BSP_USING_I2C1
- config BSP_I2C1_SCL_PIN
- int "i2c1 scl pin number"
- range 0 63
- default 22
- config BSP_I2C1_SDA_PIN
- int "I2C1 sda pin number"
- range 0 63
- default 23
- endif
- config BSP_USING_I2C2
- bool "Enable I2C2 BUS"
- if BSP_USING_I2C2
- config BSP_I2C2_SCL_PIN
- int "i2c2 scl pin number"
- range 0 63
- default 26
- config BSP_I2C2_SDA_PIN
- int "I2C2 sda pin number"
- range 0 63
- default 27
- endif
- config BSP_USING_I2C3
- bool "Enable I2C3 BUS"
- if BSP_USING_I2C3
- config BSP_I2C3_SCL_PIN
- int "i2c3 scl pin number"
- range 0 63
- default 8
- config BSP_I2C3_SDA_PIN
- int "I2C3 sda pin number"
- range 0 63
- default 41
- endif
- endif
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 26
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 27
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C3
+ bool "Enable software I2C3 Bus (swi2c3)"
+ default n
+ select RT_USING_SOFT_I2C3
+ if BSP_USING_SOFT_I2C3
+ config RT_SOFT_I2C3_SCL_PIN
+ int "swi2c3 SCL pin number"
+ default 8
+ config RT_SOFT_I2C3_SDA_PIN
+ int "swi2c3 SDA pin number"
+ default 41
+ endif
+ endif
+
menuconfig BSP_USING_HARD_I2C
bool "Enable I2C BUS (hardware driver)"
@@ -419,4 +420,40 @@ menu "On-chip Peripheral Drivers"
endif
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 26 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 27 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C3_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SCL_PIN_DEFAULT
+ int
+ default 8 if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SDA_PIN_DEFAULT
+ int
+ default 41 if RT_USING_SOFT_I2C3
+
endmenu
diff --git a/bsp/at32/at32m412-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32m412-start/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..8b33403ed0
--- /dev/null
+++ b/bsp/at32/at32m412-start/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,12 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=26
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=27
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
diff --git a/bsp/at32/at32m412-start/board/Kconfig b/bsp/at32/at32m412-start/board/Kconfig
index 02d3b0c5b4..bda898610d 100644
--- a/bsp/at32/at32m412-start/board/Kconfig
+++ b/bsp/at32/at32m412-start/board/Kconfig
@@ -181,39 +181,39 @@ menu "On-chip Peripheral Drivers"
select BSP_SPI2_TX_USING_DMA
default n
endif
-
- menuconfig BSP_USING_I2C
- bool "Enable I2C BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- config BSP_USING_I2C1
- bool "Enable I2C1 BUS"
- if BSP_USING_I2C1
- config BSP_I2C1_SCL_PIN
- int "i2c1 scl pin number"
- range 0 63
- default 22
- config BSP_I2C1_SDA_PIN
- int "I2C1 sda pin number"
- range 0 63
- default 23
- endif
- config BSP_USING_I2C2
- bool "Enable I2C2 BUS"
- if BSP_USING_I2C2
- config BSP_I2C2_SCL_PIN
- int "i2c2 scl pin number"
- range 0 63
- default 26
- config BSP_I2C2_SDA_PIN
- int "I2C2 sda pin number"
- range 0 63
- default 27
- endif
- endif
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 26
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 27
+ endif
+ endif
+
menuconfig BSP_USING_HARD_I2C
bool "Enable I2C BUS (hardware driver)"
@@ -282,4 +282,28 @@ menu "On-chip Peripheral Drivers"
endif
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 26 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 27 if RT_USING_SOFT_I2C2
+
endmenu
diff --git a/bsp/at32/at32m416-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32m416-start/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..8b33403ed0
--- /dev/null
+++ b/bsp/at32/at32m416-start/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,12 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=26
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=27
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
diff --git a/bsp/at32/at32m416-start/board/Kconfig b/bsp/at32/at32m416-start/board/Kconfig
index 92791fd229..097ec6e581 100644
--- a/bsp/at32/at32m416-start/board/Kconfig
+++ b/bsp/at32/at32m416-start/board/Kconfig
@@ -181,39 +181,39 @@ menu "On-chip Peripheral Drivers"
select BSP_SPI2_TX_USING_DMA
default n
endif
-
- menuconfig BSP_USING_I2C
- bool "Enable I2C BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- config BSP_USING_I2C1
- bool "Enable I2C1 BUS"
- if BSP_USING_I2C1
- config BSP_I2C1_SCL_PIN
- int "i2c1 scl pin number"
- range 0 63
- default 22
- config BSP_I2C1_SDA_PIN
- int "I2C1 sda pin number"
- range 0 63
- default 23
- endif
- config BSP_USING_I2C2
- bool "Enable I2C2 BUS"
- if BSP_USING_I2C2
- config BSP_I2C2_SCL_PIN
- int "i2c2 scl pin number"
- range 0 63
- default 26
- config BSP_I2C2_SDA_PIN
- int "I2C2 sda pin number"
- range 0 63
- default 27
- endif
- endif
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 26
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 27
+ endif
+ endif
+
menuconfig BSP_USING_HARD_I2C
bool "Enable I2C BUS (hardware driver)"
@@ -282,4 +282,28 @@ menu "On-chip Peripheral Drivers"
endif
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 26 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 27 if RT_USING_SOFT_I2C2
+
endmenu
diff --git a/bsp/at32/libraries/rt_drivers/SConscript b/bsp/at32/libraries/rt_drivers/SConscript
index 090fde5feb..fa6fa3dec5 100644
--- a/bsp/at32/libraries/rt_drivers/SConscript
+++ b/bsp/at32/libraries/rt_drivers/SConscript
@@ -40,10 +40,6 @@ if GetDepend('BSP_USING_SDRAM'):
if GetDepend(['BSP_USING_EMAC', 'RT_USING_LWIP']):
src += ['drv_emac.c']
-if GetDepend(['RT_USING_I2C', 'RT_USING_I2C_BITOPS']):
- if GetDepend('BSP_USING_I2C1') or GetDepend('BSP_USING_I2C2') or GetDepend('BSP_USING_I2C3') or GetDepend('BSP_USING_I2C4'):
- src += ['drv_soft_i2c.c']
-
if GetDepend(['BSP_USING_HARD_I2C']):
src += Glob('drv_hard_i2c.c')
diff --git a/bsp/at32/libraries/rt_drivers/drv_soft_i2c.c b/bsp/at32/libraries/rt_drivers/drv_soft_i2c.c
deleted file mode 100644
index 711d1e66f5..0000000000
--- a/bsp/at32/libraries/rt_drivers/drv_soft_i2c.c
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- * Copyright (c) 2006-2021, RT-Thread Development Team
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Change Logs:
- * Date Author Notes
- * 2022-05-16 shelton first version
- */
-
-#include "drv_common.h"
-#include "drv_soft_i2c.h"
-
-#ifdef RT_USING_I2C
-
-#define LOG_TAG "drv.i2c"
-#include <drv_log.h>
-
-#if !defined(BSP_USING_I2C1) && !defined(BSP_USING_I2C2) && \
- !defined(BSP_USING_I2C3)
-#error "Please define at least one BSP_USING_I2Cx"
-/* this driver can be disabled at menuconfig RT-Thread Components Device Drivers */
-#endif
-
-static const struct at32_soft_i2c_config soft_i2c_config[] =
-{
-#ifdef BSP_USING_I2C1
- I2C1_BUS_CONFIG,
-#endif
-#ifdef BSP_USING_I2C2
- I2C2_BUS_CONFIG,
-#endif
-#ifdef BSP_USING_I2C3
- I2C3_BUS_CONFIG,
-#endif
-};
-
-static struct at32_i2c i2c_obj[sizeof(soft_i2c_config) / sizeof(soft_i2c_config[0])];
-
-/**
- * this function initializes the i2c pin.
- *
- * @param at32 i2c dirver class.
- */
-static void at32_i2c_gpio_init(struct at32_i2c *i2c)
-{
- struct at32_soft_i2c_config* cfg = (struct at32_soft_i2c_config*)i2c->ops.data;
-
- rt_pin_mode(cfg->scl, PIN_MODE_OUTPUT_OD);
- rt_pin_mode(cfg->sda, PIN_MODE_OUTPUT_OD);
-
- rt_pin_write(cfg->scl, PIN_HIGH);
- rt_pin_write(cfg->sda, PIN_HIGH);
-}
-
-static void at32_i2c_pin_init(void)
-{
- rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct at32_i2c);
-
- for(rt_size_t i = 0; i < obj_num; i++)
- {
- at32_i2c_gpio_init(&i2c_obj[i]);
- }
-}
-
-/**
- * this function sets the sda pin.
- *
- * @param at32 config class.
- * @param the sda pin state.
- */
-static void at32_set_sda(void *data, rt_int32_t state)
-{
- struct at32_soft_i2c_config* cfg = (struct at32_soft_i2c_config*)data;
- if (state)
- {
- rt_pin_write(cfg->sda, PIN_HIGH);
- }
- else
- {
- rt_pin_write(cfg->sda, PIN_LOW);
- }
-}
-
-/**
- * this function sets the scl pin.
- *
- * @param at32 config class.
- * @param the scl pin state.
- */
-static void at32_set_scl(void *data, rt_int32_t state)
-{
- struct at32_soft_i2c_config* cfg = (struct at32_soft_i2c_config*)data;
- if (state)
- {
- rt_pin_write(cfg->scl, PIN_HIGH);
- }
- else
- {
- rt_pin_write(cfg->scl, PIN_LOW);
- }
-}
-
-/**
- * this function gets the sda pin state.
- *
- * @param the sda pin state.
- */
-static rt_int32_t at32_get_sda(void *data)
-{
- struct at32_soft_i2c_config* cfg = (struct at32_soft_i2c_config*)data;
- return rt_pin_read(cfg->sda);
-}
-
-/**
- * this function gets the scl pin state.
- *
- * @param the scl pin state.
- */
-static rt_int32_t at32_get_scl(void *data)
-{
- struct at32_soft_i2c_config* cfg = (struct at32_soft_i2c_config*)data;
- return rt_pin_read(cfg->scl);
-}
-
-/**
- * the time delay function.
- *
- * @param microseconds.
- */
-static void at32_udelay(rt_uint32_t us)
-{
- rt_uint32_t ticks;
- rt_uint32_t told, tnow, tcnt = 0;
- rt_uint32_t reload = SysTick->LOAD;
-
- ticks = us * reload / (1000000 / RT_TICK_PER_SECOND);
- told = SysTick->VAL;
- while (1)
- {
- tnow = SysTick->VAL;
- if (tnow != told)
- {
- if (tnow < told)
- {
- tcnt += told - tnow;
- }
- else
- {
- tcnt += reload - tnow + told;
- }
- told = tnow;
- if (tcnt >= ticks)
- {
- break;
- }
- }
- }
-}
-
-static const struct rt_i2c_bit_ops at32_bit_ops_default =
-{
- .data = RT_NULL,
- .pin_init = at32_i2c_pin_init,
- .set_sda = at32_set_sda,
- .set_scl = at32_set_scl,
- .get_sda = at32_get_sda,
- .get_scl = at32_get_scl,
- .udelay = at32_udelay,
- .delay_us = 1,
- .timeout = 100,
- .i2c_pin_init_flag = RT_FALSE
-};
-
-/**
- * if i2c is locked, this function will unlock it
- *
- * @param at32 config class
- *
- * @return RT_EOK indicates successful unlock.
- */
-static rt_err_t at32_i2c_bus_unlock(const struct at32_soft_i2c_config *cfg)
-{
- rt_int32_t i = 0;
-
- if (PIN_LOW == rt_pin_read(cfg->sda))
- {
- while (i++ < 9)
- {
- rt_pin_write(cfg->scl, PIN_HIGH);
- at32_udelay(100);
- rt_pin_write(cfg->scl, PIN_LOW);
- at32_udelay(100);
- }
- }
- if (PIN_LOW == rt_pin_read(cfg->sda))
- {
- return -RT_ERROR;
- }
-
- return RT_EOK;
-}
-
-/* i2c initialization function */
-int rt_hw_i2c_init(void)
-{
- rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct at32_i2c);
- rt_err_t result;
-
- for (rt_size_t i = 0; i < obj_num; i++)
- {
- i2c_obj[i].ops = at32_bit_ops_default;
- i2c_obj[i].ops.data = (void*)&soft_i2c_config[i];
- i2c_obj[i].i2c_bus.priv = &i2c_obj[i].ops;
-
- result = rt_i2c_bit_add_bus(&i2c_obj[i].i2c_bus, soft_i2c_config[i].bus_name);
- RT_ASSERT(result == RT_EOK);
- at32_i2c_bus_unlock(&soft_i2c_config[i]);
-
- LOG_D("software simulation %s init done, pin scl: %d, pin sda %d",
- soft_i2c_config[i].bus_name,
- soft_i2c_config[i].scl,
- soft_i2c_config[i].sda);
- }
-
- return RT_EOK;
-}
-
-INIT_BOARD_EXPORT(rt_hw_i2c_init);
-
-#endif /* RT_USING_I2C */
diff --git a/bsp/at32/libraries/rt_drivers/drv_soft_i2c.h b/bsp/at32/libraries/rt_drivers/drv_soft_i2c.h
deleted file mode 100644
index fecab31b4d..0000000000
--- a/bsp/at32/libraries/rt_drivers/drv_soft_i2c.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (c) 2006-2021, RT-Thread Development Team
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Change Logs:
- * Date Author Notes
- * 2020-01-09 shelton first version
- */
-
-#ifndef __DRV_I2C__
-#define __DRV_I2C__
-
-#include <rtthread.h>
-#include <rthw.h>
-#include <rtdevice.h>
-
-/* at32 config class */
-struct at32_soft_i2c_config
-{
- rt_uint8_t scl;
- rt_uint8_t sda;
- const char *bus_name;
-};
-/* at32 i2c dirver class */
-struct at32_i2c
-{
- struct rt_i2c_bit_ops ops;
- struct rt_i2c_bus_device i2c_bus;
-};
-
-#ifdef BSP_USING_I2C1
-#define I2C1_BUS_CONFIG \
- { \
- .scl = BSP_I2C1_SCL_PIN, \
- .sda = BSP_I2C1_SDA_PIN, \
- .bus_name = "i2c1", \
- }
-#endif
-
-#ifdef BSP_USING_I2C2
-#define I2C2_BUS_CONFIG \
- { \
- .scl = BSP_I2C2_SCL_PIN, \
- .sda = BSP_I2C2_SDA_PIN, \
- .bus_name = "i2c2", \
- }
-#endif
-
-#ifdef BSP_USING_I2C3
-#define I2C3_BUS_CONFIG \
- { \
- .scl = BSP_I2C3_SCL_PIN, \
- .sda = BSP_I2C3_SDA_PIN, \
- .bus_name = "i2c3", \
- }
-#endif
-
-int rt_hw_i2c_init(void);
-
-#endif
diff --git a/bsp/at91/at91sam9260/drivers/SConscript b/bsp/at91/at91sam9260/drivers/SConscript
index 13402ecb14..c6e83b1dee 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 09500e5007..0000000000
--- 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 <rtdevice.h>
-#include <rthw.h>
-#include <at91sam926x.h>
-
-
-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 6425c453f5..ad649d8785 100644
--- a/bsp/at91/at91sam9g45/drivers/SConscript
+++ b/bsp/at91/at91sam9g45/drivers/SConscript
@@ -20,10 +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]
group = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH)
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 a25dc11bb2..0000000000
--- 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 <rtdevice.h>
-#include <rthw.h>
-#include <at91sam9g45.h>
-
-
-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/.ci/attachconfig/ci.attachconfig.yml b/bsp/avr32/at32uc3a0256/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..331b736fa2
--- /dev/null
+++ b/bsp/avr32/at32uc3a0256/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=30
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=29
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/avr32/at32uc3a0256/Kconfig b/bsp/avr32/at32uc3a0256/Kconfig
index cb4d873dc4..acfc338cc9 100644
--- a/bsp/avr32/at32uc3a0256/Kconfig
+++ b/bsp/avr32/at32uc3a0256/Kconfig
@@ -122,23 +122,35 @@ menu "On-chip Peripheral Drivers"
endif
menuconfig BSP_USING_SOFT_I2C
- bool "Enable I2C BUS (software simulation)"
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
+ select RT_USING_SOFT_I2C
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
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 30
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 29
+ endif
endif
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 30 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 29 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/avr32/at32uc3a0256/board.c b/bsp/avr32/at32uc3a0256/board.c
index 64281a3ec6..9955c39bec 100644
--- a/bsp/avr32/at32uc3a0256/board.c
+++ b/bsp/avr32/at32uc3a0256/board.c
@@ -8,7 +8,6 @@
* 2010-03-30 Kyle First version
* 2023-10-13 Raman Gopalan Move UART specific code sections into the drv_uart files
* 2023-10-20 Raman Gopalan Initialize GPIO sub-system
- * 2023-12-01 Raman Gopalan Initialize software I2C sub-system
*/
#include <rtthread.h>
@@ -19,7 +18,6 @@
#include "intc.h"
#include "drv_uart.h"
#include "drv_gpio.h"
-#include "drv_soft_i2c.h"
/**
* System tick interrupt handler.
@@ -80,10 +78,6 @@ void rt_hw_board_init(void)
rt_hw_gpio_init();
#endif
-#ifdef BSP_USING_SOFT_I2C
- rt_sw_i2c_init();
-#endif
-
#ifdef RT_USING_CONSOLE
rt_console_set_device(RT_CONSOLE_DEVICE_NAME);
#endif
diff --git a/bsp/avr32/drivers/SConscript b/bsp/avr32/drivers/SConscript
index 2ecd23b5d6..46ba2b7542 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 2f7b15969d..0000000000
--- 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 <rtdbg.h>
-#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 01d81d7289..0000000000
--- 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 <rtdevice.h>
-#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/.ci/attachconfig/ci.attachconfig.yml b/bsp/bluetrum/ab32vg1-ab-prougen/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..0b0d86ca46
--- /dev/null
+++ b/bsp/bluetrum/ab32vg1-ab-prougen/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=16
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=15
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/bluetrum/ab32vg1-ab-prougen/board/Kconfig b/bsp/bluetrum/ab32vg1-ab-prougen/board/Kconfig
index 670a59980c..1990ad7827 100644
--- a/bsp/bluetrum/ab32vg1-ab-prougen/board/Kconfig
+++ b/bsp/bluetrum/ab32vg1-ab-prougen/board/Kconfig
@@ -86,24 +86,25 @@ menu "On-chip Peripheral Drivers"
select RT_USING_DFS_ELMFAT
default n
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 16
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 15
+ endif
endif
-
menuconfig BSP_USING_PWM
bool "Enable PWM"
default n
@@ -243,4 +244,16 @@ menu "On-chip Peripheral Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 16 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 15 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/bluetrum/libraries/hal_drivers/SConscript b/bsp/bluetrum/libraries/hal_drivers/SConscript
index 0a6dd7e0cd..258dc71d59 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 9d0c383b5d..0000000000
--- 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 <board.h>
-#include "drv_soft_i2c.h"
-
-#ifdef RT_USING_I2C
-
-// #define DRV_DEBUG
-#define LOG_TAG "drv.i2c"
-#include <drv_log.h>
-
-#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 216c3c4c67..0000000000
--- 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 <rtthread.h>
-#include <rthw.h>
-#include <rtdevice.h>
-
-/* 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/bl60x/.ci/attachconfig/ci.attachconfig.yml b/bsp/bouffalo_lab/bl60x/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..6d57d803d9
--- /dev/null
+++ b/bsp/bouffalo_lab/bl60x/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=0
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=1
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/bouffalo_lab/bl61x/.ci/attachconfig/ci.attachconfig.yml b/bsp/bouffalo_lab/bl61x/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..6d57d803d9
--- /dev/null
+++ b/bsp/bouffalo_lab/bl61x/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=0
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=1
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/bouffalo_lab/bl70x/.ci/attachconfig/ci.attachconfig.yml b/bsp/bouffalo_lab/bl70x/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..6d57d803d9
--- /dev/null
+++ b/bsp/bouffalo_lab/bl70x/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=0
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=1
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/bouffalo_lab/libraries/Kconfig b/bsp/bouffalo_lab/libraries/Kconfig
index c12477ca80..9103aca225 100755
--- a/bsp/bouffalo_lab/libraries/Kconfig
+++ b/bsp/bouffalo_lab/libraries/Kconfig
@@ -1076,129 +1076,25 @@ menu "General Drivers Configuration"
endif
endif
- if !BSP_USING_HW_I2C
- menuconfig BSP_USING_SOFT_I2C1
- bool "Enable I2C1 BUS (software simulation)"
- select RT_USING_I2C_BITOPS
- select BSP_USING_GPIO
- default n
- if BSP_USING_SOFT_I2C1
- choice
- prompt "I2C1 SCL"
- default SOFT_I2C1_SCL_USING_GPIO0
-
- config SOFT_I2C1_SCL_USING_GPIO0
- bool "GPIO_0"
- config SOFT_I2C1_SCL_USING_GPIO2
- bool "GPIO_2"
- config SOFT_I2C1_SCL_USING_GPIO4
- bool "GPIO_4"
- config SOFT_I2C1_SCL_USING_GPIO6
- bool "GPIO_6"
- config SOFT_I2C1_SCL_USING_GPIO8
- bool "GPIO_8"
- config SOFT_I2C1_SCL_USING_GPIO10
- bool "GPIO_10"
- config SOFT_I2C1_SCL_USING_GPIO12
- bool "GPIO_12"
- config SOFT_I2C1_SCL_USING_GPIO14
- bool "GPIO_14"
- config SOFT_I2C1_SCL_USING_GPIO16
- bool "GPIO_16"
- config SOFT_I2C1_SCL_USING_GPIO18
- bool "GPIO_18"
- config SOFT_I2C1_SCL_USING_GPIO20
- bool "GPIO_20"
- config SOFT_I2C1_SCL_USING_GPIO22
- bool "GPIO_22"
- config SOFT_I2C1_SCL_USING_GPIO24
- bool "GPIO_8"
- config SOFT_I2C1_SCL_USING_GPIO26
- bool "GPIO_26"
- config SOFT_I2C1_SCL_USING_GPIO28
- bool "GPIO_28"
- config SOFT_I2C1_SCL_USING_GPIO30
- bool "GPIO_30"
- config SOFT_I2C1_SCL_USING_GPIO32
- bool "GPIO_32"
- config SOFT_I2C1_SCL_USING_GPIO34
- bool "GPIO_34"
- config SOFT_I2C1_SDA_USING_GPIO36
- depends on BSP_USING_BL808
- bool "GPIO_36"
- config SOFT_I2C1_SDA_USING_GPIO38
- depends on BSP_USING_BL808
- bool "GPIO_38"
- config SOFT_I2C1_SDA_USING_GPIO40
- depends on BSP_USING_BL808
- bool "GPIO_40"
- config SOFT_I2C1_SDA_USING_GPIO42
- depends on BSP_USING_BL808
- bool "GPIO_42"
- config SOFT_I2C1_SDA_USING_GPIO44
- depends on BSP_USING_BL808
- bool "GPIO_44"
- endchoice
-
- choice
- prompt "I2C1 SDA"
- default SOFT_I2C1_SDA_USING_GPIO1
-
- config SOFT_I2C1_SDA_USING_GPIO1
- bool "GPIO_1"
- config SOFT_I2C1_SDA_USING_GPIO3
- bool "GPIO_3"
- config SOFT_I2C1_SDA_USING_GPIO5
- bool "GPIO_5"
- config SOFT_I2C1_SDA_USING_GPIO7
- bool "GPIO_7"
- config SOFT_I2C1_SDA_USING_GPIO9
- bool "GPIO_9"
- config SOFT_I2C1_SDA_USING_GPIO11
- bool "GPIO_11"
- config SOFT_I2C1_SDA_USING_GPIO13
- bool "GPIO_13"
- config SOFT_I2C1_SDA_USING_GPIO15
- bool "GPIO_15"
- config SOFT_I2C1_SDA_USING_GPIO17
- bool "GPIO_17"
- config SOFT_I2C1_SDA_USING_GPIO19
- bool "GPIO_19"
- config SOFT_I2C1_SDA_USING_GPIO21
- bool "GPIO_21"
- config SOFT_I2C1_SDA_USING_GPIO23
- bool "GPIO_23"
- config SOFT_I2C1_SDA_USING_GPIO25
- bool "GPIO_25"
- config SOFT_I2C1_SDA_USING_GPIO27
- bool "GPIO_27"
- config SOFT_I2C1_SDA_USING_GPIO29
- bool "GPIO_29"
- config SOFT_I2C1_SDA_USING_GPIO31
- bool "GPIO_31"
- config SOFT_I2C1_SDA_USING_GPIO33
- bool "GPIO_33"
- config SOFT_I2C1_SDA_USING_GPIO35
- depends on BSP_USING_BL808
- bool "GPIO_35"
- config SOFT_I2C1_SDA_USING_GPIO37
- depends on BSP_USING_BL808
- bool "GPIO_37"
- config SOFT_I2C1_SDA_USING_GPIO39
- depends on BSP_USING_BL808
- bool "GPIO_39"
- config SOFT_I2C1_SDA_USING_GPIO41
- depends on BSP_USING_BL808
- bool "GPIO_41"
- config SOFT_I2C1_SDA_USING_GPIO43
- depends on BSP_USING_BL808
- bool "GPIO_43"
- config SOFT_I2C1_SDA_USING_GPIO45
- depends on BSP_USING_BL808
- bool "GPIO_45"
- endchoice
- endif
- endif
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
+ default n
+ select RT_USING_I2C
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 0
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 1
+ endif
+ endif
endif
menuconfig BSP_USING_SPI
@@ -1516,4 +1412,16 @@ menu "General Drivers Configuration"
bool "Enable Secure Digital Host Controller(SDH)"
default n
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 0 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 1 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/bouffalo_lab/libraries/rt_drivers/SConscript b/bsp/bouffalo_lab/libraries/rt_drivers/SConscript
index 39396ad7a7..0e533f1eae 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 5a4ad8bb50..0000000000
--- 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 <rtdbg.h>
-#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 3275c2c4c6..0000000000
--- 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 <rtthread.h>
-#include <rthw.h>
-#include <rtdevice.h>
-
-/* 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/cvitek/c906_little/board/Kconfig b/bsp/cvitek/c906_little/board/Kconfig
index 104648aa69..6d24570dc6 100755
--- a/bsp/cvitek/c906_little/board/Kconfig
+++ b/bsp/cvitek/c906_little/board/Kconfig
@@ -79,7 +79,6 @@ menu "General Drivers Configuration"
menuconfig BSP_USING_I2C
bool "Using I2C"
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
select RT_USING_PIN
default n
diff --git a/bsp/cvitek/cv18xx_risc-v/board/Kconfig b/bsp/cvitek/cv18xx_risc-v/board/Kconfig
index d0cb78020e..9cef189799 100755
--- a/bsp/cvitek/cv18xx_risc-v/board/Kconfig
+++ b/bsp/cvitek/cv18xx_risc-v/board/Kconfig
@@ -79,7 +79,6 @@ menu "General Drivers Configuration"
menuconfig BSP_USING_I2C
bool "Using I2C"
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
select RT_USING_PIN
default n
diff --git a/bsp/fm33lc026/libraries/HAL_Drivers/SConscript b/bsp/fm33lc026/libraries/HAL_Drivers/SConscript
index 704e728356..985ba83a56 100644
--- a/bsp/fm33lc026/libraries/HAL_Drivers/SConscript
+++ b/bsp/fm33lc026/libraries/HAL_Drivers/SConscript
@@ -23,10 +23,6 @@ if GetDepend(['RT_USING_PWM']):
if GetDepend(['RT_USING_SPI']):
src += ['drv_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_ADC']):
src += Glob('drv_adc.c')
diff --git a/bsp/gd32/risc-v/gd32vf103r-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/gd32/risc-v/gd32vf103r-start/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..08f15d590b
--- /dev/null
+++ b/bsp/gd32/risc-v/gd32vf103r-start/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=24
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=25
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/gd32/risc-v/gd32vf103r-start/board/Kconfig b/bsp/gd32/risc-v/gd32vf103r-start/board/Kconfig
index abd9f94bc6..121c7602ce 100644
--- a/bsp/gd32/risc-v/gd32vf103r-start/board/Kconfig
+++ b/bsp/gd32/risc-v/gd32vf103r-start/board/Kconfig
@@ -99,23 +99,25 @@ menu "On-chip Peripheral Drivers"
default n
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 24
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 25
+ endif
endif
-
menuconfig BSP_USING_ADC
bool "Enable ADC"
default n
@@ -179,5 +181,17 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 24 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 25 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/gd32/risc-v/gd32vf103v-eval/.ci/attachconfig/ci.attachconfig.yml b/bsp/gd32/risc-v/gd32vf103v-eval/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..08f15d590b
--- /dev/null
+++ b/bsp/gd32/risc-v/gd32vf103v-eval/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=24
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=25
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/gd32/risc-v/gd32vf103v-eval/board/Kconfig b/bsp/gd32/risc-v/gd32vf103v-eval/board/Kconfig
index 421d2da24f..ca13680e66 100644
--- a/bsp/gd32/risc-v/gd32vf103v-eval/board/Kconfig
+++ b/bsp/gd32/risc-v/gd32vf103v-eval/board/Kconfig
@@ -99,23 +99,25 @@ menu "On-chip Peripheral Drivers"
default n
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 24
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 25
+ endif
endif
-
menuconfig BSP_USING_ADC
bool "Enable ADC"
default n
@@ -182,5 +184,17 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 24 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 25 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/gd32/risc-v/libraries/gd32_drivers/SConscript b/bsp/gd32/risc-v/libraries/gd32_drivers/SConscript
index 05e694d9e2..4de168c835 100644
--- a/bsp/gd32/risc-v/libraries/gd32_drivers/SConscript
+++ b/bsp/gd32/risc-v/libraries/gd32_drivers/SConscript
@@ -17,9 +17,6 @@ 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']
if GetDepend(['RT_USING_I2C', 'BSP_USING_HW_I2C']):
if GetDepend('BSP_USING_HW_I2C0') or GetDepend('BSP_USING_HW_I2C1'):
src += ['drv_i2c.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 b149131c5c..0000000000
--- 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 <rtdbg.h>
-
-#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 af91af4c97..0000000000
--- 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 <rtthread.h>
-#include <rthw.h>
-#include <rtdevice.h>
-#include <board.h>
-
-#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_hc32f334_lqfp64/.ci/attachconfig/ci.attachconfig.yml b/bsp/hc32/ev_hc32f334_lqfp64/.ci/attachconfig/ci.attachconfig.yml
index 2fcf64d293..87664e42b0 100644
--- a/bsp/hc32/ev_hc32f334_lqfp64/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/hc32/ev_hc32f334_lqfp64/.ci/attachconfig/ci.attachconfig.yml
@@ -93,10 +93,6 @@ devices.rtc:
kconfig:
- CONFIG_BSP_USING_RTC=y
- CONFIG_RT_USING_ALARM=y
-devices.soft_i2c:
- kconfig:
- - CONFIG_BSP_USING_I2C=y
- - CONFIG_BSP_USING_I2C1_SW=y
devices.spi:
kconfig:
- CONFIG_BSP_USING_SPI=y
@@ -135,3 +131,12 @@ peripheral.spi_flash:
- CONFIG_BSP_USING_SPI_FLASH=y
- CONFIG_BSP_USING_SPI=y
- CONFIG_BSP_USING_SPI1=y
+
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/hc32/ev_hc32f334_lqfp64/board/Kconfig b/bsp/hc32/ev_hc32f334_lqfp64/board/Kconfig
index 74d429bcc1..fd1eced7ad 100644
--- a/bsp/hc32/ev_hc32f334_lqfp64/board/Kconfig
+++ b/bsp/hc32/ev_hc32f334_lqfp64/board/Kconfig
@@ -183,24 +183,25 @@ menu "On-chip Peripheral Drivers"
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 68
- default 22 # PB6
- config BSP_I2C1_SDA_PIN
- int "I2C1 sda pin number"
- range 1 68
- default 23 # PB7
- endif
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
+ default n
+ select RT_USING_I2C
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
endif
-
if BSP_USING_I2C
config BSP_I2C_USING_DMA
bool
@@ -574,4 +575,16 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/hc32/ev_hc32f448_lqfp80/.ci/attachconfig/ci.attachconfig.yml b/bsp/hc32/ev_hc32f448_lqfp80/.ci/attachconfig/ci.attachconfig.yml
index 38498a3c9b..8ee6e6f61f 100644
--- a/bsp/hc32/ev_hc32f448_lqfp80/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/hc32/ev_hc32f448_lqfp80/.ci/attachconfig/ci.attachconfig.yml
@@ -89,10 +89,6 @@ devices.rtc:
kconfig:
- CONFIG_BSP_USING_RTC=y
- CONFIG_RT_USING_ALARM=y
-devices.soft_i2c:
- kconfig:
- - CONFIG_BSP_USING_I2C=y
- - CONFIG_BSP_USING_I2C1_SW=y
devices.spi:
kconfig:
- CONFIG_BSP_USING_SPI=y
@@ -131,3 +127,12 @@ devices.watchdog_wdt:
peripheral.spi_flash:
kconfig:
- CONFIG_BSP_USING_SPI_FLASH=y
+
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=10
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=9
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/hc32/ev_hc32f448_lqfp80/board/Kconfig b/bsp/hc32/ev_hc32f448_lqfp80/board/Kconfig
index e0f7eb0c5b..55020011cf 100644
--- a/bsp/hc32/ev_hc32f448_lqfp80/board/Kconfig
+++ b/bsp/hc32/ev_hc32f448_lqfp80/board/Kconfig
@@ -232,24 +232,25 @@ menu "On-chip Peripheral Drivers"
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 80
- default 10
- config BSP_I2C1_SDA_PIN
- int "I2C1 sda pin number"
- range 1 80
- default 9
- endif
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
+ default n
+ select RT_USING_I2C
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 10
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 9
+ endif
endif
-
if BSP_USING_I2C
config BSP_I2C_USING_DMA
bool
@@ -694,4 +695,16 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 10 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 9 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/hc32/ev_hc32f460_lqfp100_v2/.ci/attachconfig/ci.attachconfig.yml b/bsp/hc32/ev_hc32f460_lqfp100_v2/.ci/attachconfig/ci.attachconfig.yml
index 1412567fb0..9e8ef49aa0 100644
--- a/bsp/hc32/ev_hc32f460_lqfp100_v2/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/hc32/ev_hc32f460_lqfp100_v2/.ci/attachconfig/ci.attachconfig.yml
@@ -90,10 +90,6 @@ devices.sdio:
- CONFIG_BSP_USING_SDIO1=y
- CONFIG_RT_USING_DFS=y
- CONFIG_RT_USING_DFS_ELMFAT=y
-devices.soft_i2c:
- kconfig:
- - CONFIG_BSP_USING_I2C=y
- - CONFIG_BSP_USING_I2C1_SW=y
devices.spi:
kconfig:
- CONFIG_BSP_USING_SPI=y
@@ -164,3 +160,12 @@ devices.watchdog_wdt:
peripheral.spi_flash:
kconfig:
- CONFIG_BSP_USING_SPI_FLASH=y
+
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=36
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=7
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/hc32/ev_hc32f460_lqfp100_v2/board/Kconfig b/bsp/hc32/ev_hc32f460_lqfp100_v2/board/Kconfig
index 4fa6b3994a..87f8bb4bec 100644
--- a/bsp/hc32/ev_hc32f460_lqfp100_v2/board/Kconfig
+++ b/bsp/hc32/ev_hc32f460_lqfp100_v2/board/Kconfig
@@ -176,24 +176,25 @@ menu "On-chip Peripheral Drivers"
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 36
- config BSP_I2C1_SDA_PIN
- int "I2C1 sda pin number"
- range 1 100
- default 7
- endif
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
+ default n
+ select RT_USING_I2C
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 36
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 7
+ endif
endif
-
if BSP_USING_I2C
config BSP_I2C_USING_DMA
bool
@@ -683,4 +684,16 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 36 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 7 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/hc32/ev_hc32f467_lqfp144/board/Kconfig b/bsp/hc32/ev_hc32f467_lqfp144/board/Kconfig
index b20ce60140..bba3f853e2 100644
--- a/bsp/hc32/ev_hc32f467_lqfp144/board/Kconfig
+++ b/bsp/hc32/ev_hc32f467_lqfp144/board/Kconfig
@@ -312,22 +312,34 @@ menu "On-chip Peripheral Drivers"
if BSP_USING_I2C
menuconfig BSP_USING_I2C1_SW
- bool "Enable I2C1 BUS (software simulation)"
+ bool "Enable software I2C1 Bus (swi2c1)"
default n
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
+ select RT_USING_SOFT_I2C
+ select RT_USING_SOFT_I2C1
if BSP_USING_I2C1_SW
- config BSP_I2C1_SCL_PIN
- int "I2C1 scl pin number"
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
range 1 144
default 8 # PA8
- config BSP_I2C1_SDA_PIN
- int "I2C1 sda pin number"
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
range 1 144
default 23 # PB7
endif
endif
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 8 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
if BSP_USING_I2C
config BSP_I2C_USING_DMA
bool
diff --git a/bsp/hc32/ev_hc32f472_lqfp100/.ci/attachconfig/ci.attachconfig.yml b/bsp/hc32/ev_hc32f472_lqfp100/.ci/attachconfig/ci.attachconfig.yml
index a4c0a565b3..d65fad8dd8 100644
--- a/bsp/hc32/ev_hc32f472_lqfp100/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/hc32/ev_hc32f472_lqfp100/.ci/attachconfig/ci.attachconfig.yml
@@ -90,10 +90,6 @@ devices.rtc:
kconfig:
- CONFIG_BSP_USING_RTC=y
- CONFIG_RT_USING_ALARM=y
-devices.soft_i2c:
- kconfig:
- - CONFIG_BSP_USING_I2C=y
- - CONFIG_BSP_USING_I2C1_SW=y
devices.spi:
kconfig:
- CONFIG_BSP_USING_SPI=y
@@ -164,3 +160,12 @@ devices.watchdog_wdt:
peripheral.spi_flash:
kconfig:
- CONFIG_BSP_USING_SPI_FLASH=y
+
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=10
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=9
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/hc32/ev_hc32f472_lqfp100/board/Kconfig b/bsp/hc32/ev_hc32f472_lqfp100/board/Kconfig
index 965ab1b51b..8f3f80125d 100644
--- a/bsp/hc32/ev_hc32f472_lqfp100/board/Kconfig
+++ b/bsp/hc32/ev_hc32f472_lqfp100/board/Kconfig
@@ -232,24 +232,25 @@ menu "On-chip Peripheral Drivers"
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 10
- config BSP_I2C1_SDA_PIN
- int "I2C1 sda pin number"
- range 1 100
- default 9
- endif
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
+ default n
+ select RT_USING_I2C
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 10
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 9
+ endif
endif
-
if BSP_USING_I2C
config BSP_I2C_USING_DMA
bool
@@ -784,4 +785,16 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 10 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 9 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/hc32/ev_hc32f4a0_lqfp176/.ci/attachconfig/ci.attachconfig.yml b/bsp/hc32/ev_hc32f4a0_lqfp176/.ci/attachconfig/ci.attachconfig.yml
index 9f5f286638..57503cc5b4 100644
--- a/bsp/hc32/ev_hc32f4a0_lqfp176/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/hc32/ev_hc32f4a0_lqfp176/.ci/attachconfig/ci.attachconfig.yml
@@ -96,10 +96,6 @@ devices.sdio:
- CONFIG_BSP_USING_SDIO1=y
- CONFIG_RT_USING_DFS=y
- CONFIG_RT_USING_DFS_ELMFAT=y
-devices.soft_i2c:
- kconfig:
- - CONFIG_BSP_USING_I2C=y
- - CONFIG_BSP_USING_I2C1_SW=y
devices.spi:
kconfig:
- CONFIG_BSP_USING_SPI=y
@@ -193,3 +189,12 @@ peripheral.exmc_sdram:
peripheral.spi_flash:
kconfig:
- CONFIG_BSP_USING_SPI_FLASH=y
+
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=8
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/hc32/ev_hc32f4a0_lqfp176/board/Kconfig b/bsp/hc32/ev_hc32f4a0_lqfp176/board/Kconfig
index a89de95004..75b786541c 100644
--- a/bsp/hc32/ev_hc32f4a0_lqfp176/board/Kconfig
+++ b/bsp/hc32/ev_hc32f4a0_lqfp176/board/Kconfig
@@ -357,24 +357,25 @@ menu "On-chip Peripheral Drivers"
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 8 # PA8
- config BSP_I2C1_SDA_PIN
- int "I2C1 sda pin number"
- range 1 176
- default 23 # PB7
- endif
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
+ default n
+ select RT_USING_I2C
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 8
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
endif
-
if BSP_USING_I2C
config BSP_I2C_USING_DMA
bool
@@ -1038,4 +1039,16 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 8 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/hc32/ev_hc32f4a2_lqfp176/board/Kconfig b/bsp/hc32/ev_hc32f4a2_lqfp176/board/Kconfig
index 450edc974a..3fdfe5cc43 100644
--- a/bsp/hc32/ev_hc32f4a2_lqfp176/board/Kconfig
+++ b/bsp/hc32/ev_hc32f4a2_lqfp176/board/Kconfig
@@ -359,22 +359,34 @@ menu "On-chip Peripheral Drivers"
if BSP_USING_I2C
menuconfig BSP_USING_I2C1_SW
- bool "Enable I2C1 BUS (software simulation)"
+ bool "Enable software I2C1 Bus (swi2c1)"
default n
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
+ select RT_USING_SOFT_I2C
+ select RT_USING_SOFT_I2C1
if BSP_USING_I2C1_SW
- config BSP_I2C1_SCL_PIN
- int "i2c1 scl pin number"
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
range 1 176
default 8 # PA8
- config BSP_I2C1_SDA_PIN
- int "I2C1 sda pin number"
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
range 1 176
default 23 # PB7
endif
endif
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 8 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
if BSP_USING_I2C
config BSP_I2C_USING_DMA
bool
diff --git a/bsp/hc32/ev_hc32f4a8_lqfp176/.ci/attachconfig/ci.attachconfig.yml b/bsp/hc32/ev_hc32f4a8_lqfp176/.ci/attachconfig/ci.attachconfig.yml
index 66e9f4c0b4..c6818d0ecd 100644
--- a/bsp/hc32/ev_hc32f4a8_lqfp176/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/hc32/ev_hc32f4a8_lqfp176/.ci/attachconfig/ci.attachconfig.yml
@@ -103,10 +103,6 @@ devices.sdio:
- CONFIG_BSP_USING_SDIO1=y
- CONFIG_RT_USING_DFS=y
- CONFIG_RT_USING_DFS_ELMFAT=y
-devices.soft_i2c:
- kconfig:
- - CONFIG_BSP_USING_I2C=y
- - CONFIG_BSP_USING_I2C1_SW=y
devices.spi:
kconfig:
- CONFIG_BSP_USING_SPI=y
@@ -200,3 +196,12 @@ peripheral.exmc_sdram:
peripheral.spi_flash:
kconfig:
- CONFIG_BSP_USING_SPI_FLASH=y
+
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=8
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/hc32/ev_hc32f4a8_lqfp176/board/Kconfig b/bsp/hc32/ev_hc32f4a8_lqfp176/board/Kconfig
index b54cb33518..470c4badf4 100644
--- a/bsp/hc32/ev_hc32f4a8_lqfp176/board/Kconfig
+++ b/bsp/hc32/ev_hc32f4a8_lqfp176/board/Kconfig
@@ -346,24 +346,25 @@ menu "On-chip Peripheral Drivers"
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 8 # PA8
- config BSP_I2C1_SDA_PIN
- int "I2C1 sda pin number"
- range 1 176
- default 23 # PB7
- endif
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
+ default n
+ select RT_USING_I2C
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 8
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
endif
-
if BSP_USING_I2C
config BSP_I2C_USING_DMA
bool
@@ -1036,4 +1037,16 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 8 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/hc32/lckfb-hc32f4a0-lqfp100/.ci/attachconfig/ci.attachconfig.yml b/bsp/hc32/lckfb-hc32f4a0-lqfp100/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..bf1a5ff758
--- /dev/null
+++ b/bsp/hc32/lckfb-hc32f4a0-lqfp100/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=51
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=90
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/hc32/lckfb-hc32f4a0-lqfp100/board/Kconfig b/bsp/hc32/lckfb-hc32f4a0-lqfp100/board/Kconfig
index b449422c99..8f040f0445 100644
--- a/bsp/hc32/lckfb-hc32f4a0-lqfp100/board/Kconfig
+++ b/bsp/hc32/lckfb-hc32f4a0-lqfp100/board/Kconfig
@@ -353,24 +353,25 @@ menu "On-chip Peripheral Drivers"
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
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
+ default n
+ select RT_USING_I2C
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 51
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 90
+ endif
endif
-
if BSP_USING_I2C
config BSP_I2C_USING_DMA
bool
@@ -958,4 +959,16 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 51 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 90 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/hc32/libraries/hc32_drivers/SConscript b/bsp/hc32/libraries/hc32_drivers/SConscript
index 3edb6bc1c8..9e0ed1a502 100644
--- a/bsp/hc32/libraries/hc32_drivers/SConscript
+++ b/bsp/hc32/libraries/hc32_drivers/SConscript
@@ -26,9 +26,6 @@ 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 1472b36c46..0000000000
--- a/bsp/hc32/libraries/hc32_drivers/drv_soft_i2c.c
+++ /dev/null
@@ -1,262 +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 <drv_log.h>
-
-/*******************************************************************************
- * 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 = hc32_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 52abc57764..0000000000
--- a/bsp/hc32/libraries/hc32_drivers/drv_soft_i2c.h
+++ /dev/null
@@ -1,102 +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 <rtdevice.h>
-
-/* 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/hc32/tests/SConscript b/bsp/hc32/tests/SConscript
index 74d279fda2..047375d4c4 100644
--- a/bsp/hc32/tests/SConscript
+++ b/bsp/hc32/tests/SConscript
@@ -24,7 +24,7 @@ if GetDepend(['BSP_USING_QSPI']):
if GetDepend(['BSP_USING_I2C']):
src += ['test_i2c.c']
- if GetDepend(['RT_USING_I2C_BITOPS']):
+ if GetDepend(['RT_USING_SOFT_I2C1']):
src += ['test_soft_i2c.c']
if GetDepend(['BSP_USING_ETH', 'RT_USING_LWIP']):
diff --git a/bsp/hc32/tests/test_soft_i2c.c b/bsp/hc32/tests/test_soft_i2c.c
index fd2b3b8127..2fb87be6f1 100644
--- a/bsp/hc32/tests/test_soft_i2c.c
+++ b/bsp/hc32/tests/test_soft_i2c.c
@@ -25,10 +25,10 @@
#if defined(RT_USING_I2C)
-#if defined(BSP_USING_I2C1_SW)
+#if defined(RT_USING_SOFT_I2C1)
/* using i2c1 control oled12864 */
-#define SW_I2C_NAME "i2c1_sw"
+#define SW_I2C_NAME RT_SOFT_I2C1_BUS_NAME
#define SSD1306_ADDR (0x78U >> 1)
#define SSD1306_MD_CMD (0x00U)
#define SSD1306_MD_DATA (0x40U)
@@ -336,7 +336,7 @@ rt_uint8_t logo_array[][SYM_BYTE_SIZE] = {
MSH_CMD_EXPORT(sw_i2c_sample, soft i2c sample);
-#endif /* BSP_USING_I2C1_SW */
+#endif /* RT_USING_SOFT_I2C1 */
#endif/* RT_USING_I2C */
/*
diff --git a/bsp/hc32l136/.ci/attachconfig/ci.attachconfig.yml b/bsp/hc32l136/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..bf1a5ff758
--- /dev/null
+++ b/bsp/hc32l136/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=51
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=90
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/hc32l136/board/Kconfig b/bsp/hc32l136/board/Kconfig
index 641c61c83a..09493f6e36 100644
--- a/bsp/hc32l136/board/Kconfig
+++ b/bsp/hc32l136/board/Kconfig
@@ -31,27 +31,41 @@ menu "On-chip Peripheral Drivers"
default y
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
- default y
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
+ default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 51
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 90
+ endif
endif
-
endmenu
menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 51 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 90 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/hc32l136/drivers/SConscript b/bsp/hc32l136/drivers/SConscript
index 951195c3d7..0258ca131b 100644
--- a/bsp/hc32l136/drivers/SConscript
+++ b/bsp/hc32l136/drivers/SConscript
@@ -13,9 +13,6 @@ if GetDepend(['RT_USING_PIN']):
if GetDepend(['RT_USING_SERIAL']):
src += ['drv_usart.c']
-if GetDepend(['RT_USING_I2C', 'RT_USING_I2C_BITOPS']):
- src += ['drv_soft_i2c.c']
-
CPPPATH = [cwd]
group = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH)
diff --git a/bsp/hk32/hk32f030c8-mini/.ci/attachconfig/ci.attachconfig.yml b/bsp/hk32/hk32f030c8-mini/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..41fd8a8a94
--- /dev/null
+++ b/bsp/hk32/hk32f030c8-mini/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,12 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=24
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=25
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=26
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=27
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
diff --git a/bsp/hk32/hk32f030c8-mini/board/Kconfig b/bsp/hk32/hk32f030c8-mini/board/Kconfig
index e3e8e27c2f..ea733fb15b 100644
--- a/bsp/hk32/hk32f030c8-mini/board/Kconfig
+++ b/bsp/hk32/hk32f030c8-mini/board/Kconfig
@@ -102,42 +102,38 @@ menu "On-chip Peripheral Drivers"
default n
endif
- menuconfig BSP_USING_I2C
- bool "Enable I2C BUS"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- config BSP_USING_I2C1
- bool "Enable I2C1 BUS (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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 24
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ 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
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 26
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 27
+ endif
endif
-
menuconfig BSP_USING_ADC
bool "Enable ADC"
default n
@@ -153,4 +149,28 @@ menu "On-chip Peripheral Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 24 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 25 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 26 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 27 if RT_USING_SOFT_I2C2
+
endmenu
diff --git a/bsp/hk32/libraries/rt_drivers/SConscript b/bsp/hk32/libraries/rt_drivers/SConscript
index c816e2c8fb..6947366c4e 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 6daf5b30a3..0000000000
--- 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 <board.h>
-#include "drv_soft_i2c.h"
-
-#ifdef RT_USING_I2C
-
-#define LOG_TAG "drv.i2c"
-#include <drv_log.h>
-
-#if !defined(BSP_USING_I2C1) && !defined(BSP_USING_I2C2) && !defined(BSP_USING_I2C3) && !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 59864f1447..0000000000
--- 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 <rtthread.h>
-#include <rthw.h>
-#include <rtdevice.h>
-
-/* 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/.ci/attachconfig/ci.attachconfig.yml b/bsp/ht32/ht32f12366/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..b05aa7d5b6
--- /dev/null
+++ b/bsp/ht32/ht32f12366/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,16 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C0=y
+ - CONFIG_RT_SOFT_I2C0_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C0_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C0_BUS_NAME="swi2c0"
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=24
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=25
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=26
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=27
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
diff --git a/bsp/ht32/ht32f12366/board/Kconfig b/bsp/ht32/ht32f12366/board/Kconfig
index 78fde32927..6a0ca4f74f 100644
--- a/bsp/ht32/ht32f12366/board/Kconfig
+++ b/bsp/ht32/ht32f12366/board/Kconfig
@@ -209,70 +209,51 @@ menu "On-chip Peripheral Drivers"
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
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
+ default n
+ select RT_USING_I2C
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C0
+ bool "Enable software I2C0 Bus (swi2c0)"
+ default n
+ select RT_USING_SOFT_I2C0
+ if BSP_USING_SOFT_I2C0
+ config RT_SOFT_I2C0_SCL_PIN
+ int "swi2c0 SCL pin number"
+ default 22
+ config RT_SOFT_I2C0_SDA_PIN
+ int "swi2c0 SDA pin number"
+ default 23
+ endif
- 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
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 24
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 25
+ endif
- config BSP_I2C2_SDA_PIN
- int "i2c2 sda pin number"
- range 0 51
- default 27
- endif
- endif
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 26
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 27
+ endif
+ endif
endif
menuconfig BSP_USING_ADC
@@ -447,4 +428,40 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C0_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C0
+
+ config RT_SOFT_I2C0_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C0
+
+ config RT_SOFT_I2C0_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C0
+
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 24 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 25 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 26 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 27 if RT_USING_SOFT_I2C2
+
endmenu
diff --git a/bsp/ht32/ht32f52352/.ci/attachconfig/ci.attachconfig.yml b/bsp/ht32/ht32f52352/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..b05aa7d5b6
--- /dev/null
+++ b/bsp/ht32/ht32f52352/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,16 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C0=y
+ - CONFIG_RT_SOFT_I2C0_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C0_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C0_BUS_NAME="swi2c0"
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=24
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=25
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=26
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=27
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
diff --git a/bsp/ht32/ht32f52352/board/Kconfig b/bsp/ht32/ht32f52352/board/Kconfig
index 8ba20cd72d..d8755a6d19 100644
--- a/bsp/ht32/ht32f52352/board/Kconfig
+++ b/bsp/ht32/ht32f52352/board/Kconfig
@@ -209,70 +209,51 @@ menu "On-chip Peripheral Drivers"
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
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
+ default n
+ select RT_USING_I2C
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C0
+ bool "Enable software I2C0 Bus (swi2c0)"
+ default n
+ select RT_USING_SOFT_I2C0
+ if BSP_USING_SOFT_I2C0
+ config RT_SOFT_I2C0_SCL_PIN
+ int "swi2c0 SCL pin number"
+ default 22
+ config RT_SOFT_I2C0_SDA_PIN
+ int "swi2c0 SDA pin number"
+ default 23
+ endif
- 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
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 24
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 25
+ endif
- config BSP_I2C2_SDA_PIN
- int "i2c2 sda pin number"
- range 0 51
- default 27
- endif
- endif
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 26
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 27
+ endif
+ endif
endif
menuconfig BSP_USING_ADC
@@ -446,4 +427,40 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C0_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C0
+
+ config RT_SOFT_I2C0_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C0
+
+ config RT_SOFT_I2C0_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C0
+
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 24 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 25 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 26 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 27 if RT_USING_SOFT_I2C2
+
endmenu
diff --git a/bsp/ht32/ht32f53252/.ci/attachconfig/ci.attachconfig.yml b/bsp/ht32/ht32f53252/.ci/attachconfig/ci.attachconfig.yml
index 817cf4e3d0..cd9ba3032b 100644
--- a/bsp/ht32/ht32f53252/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/ht32/ht32f53252/.ci/attachconfig/ci.attachconfig.yml
@@ -10,9 +10,25 @@ devices.uart:
kconfig:
- CONFIG_BSP_USING_UART=y
- CONFIG_BSP_USING_USART1=y
-# ------ SEGGER CI ------
segger:
kconfig:
- CONFIG_BSP_USING_GPIO=y
- CONFIG_BSP_USING_UART=y
- - CONFIG_BSP_USING_USART1=y \ No newline at end of file
+ - CONFIG_BSP_USING_USART1=y
+
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C0=y
+ - CONFIG_RT_SOFT_I2C0_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C0_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C0_BUS_NAME="swi2c0"
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=24
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=25
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=26
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=27
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
diff --git a/bsp/ht32/ht32f53252/board/Kconfig b/bsp/ht32/ht32f53252/board/Kconfig
index 8ba20cd72d..d8755a6d19 100644
--- a/bsp/ht32/ht32f53252/board/Kconfig
+++ b/bsp/ht32/ht32f53252/board/Kconfig
@@ -209,70 +209,51 @@ menu "On-chip Peripheral Drivers"
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
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
+ default n
+ select RT_USING_I2C
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C0
+ bool "Enable software I2C0 Bus (swi2c0)"
+ default n
+ select RT_USING_SOFT_I2C0
+ if BSP_USING_SOFT_I2C0
+ config RT_SOFT_I2C0_SCL_PIN
+ int "swi2c0 SCL pin number"
+ default 22
+ config RT_SOFT_I2C0_SDA_PIN
+ int "swi2c0 SDA pin number"
+ default 23
+ endif
- 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
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 24
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 25
+ endif
- config BSP_I2C2_SDA_PIN
- int "i2c2 sda pin number"
- range 0 51
- default 27
- endif
- endif
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 26
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 27
+ endif
+ endif
endif
menuconfig BSP_USING_ADC
@@ -446,4 +427,40 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C0_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C0
+
+ config RT_SOFT_I2C0_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C0
+
+ config RT_SOFT_I2C0_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C0
+
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 24 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 25 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 26 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 27 if RT_USING_SOFT_I2C2
+
endmenu
diff --git a/bsp/ht32/libraries/ht32_drivers/SConscript b/bsp/ht32/libraries/ht32_drivers/SConscript
index 86ba719ad9..1bb5a2d96c 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 269eaf5eee..0000000000
--- 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 <rtdbg.h>
-#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 3ce48ee6ef..0000000000
--- 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 <rtthread.h>
-#include <rthw.h>
-#ifdef RT_USING_DEVICE
- #include <rtdevice.h>
-#endif
-#include "drv_common.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __DRV_I2C_H__ */
-
diff --git a/bsp/k210/drivers/drv_i2c.c b/bsp/k210/drivers/drv_i2c.c
index eb707b757c..74da3c3dc9 100644
--- a/bsp/k210/drivers/drv_i2c.c
+++ b/bsp/k210/drivers/drv_i2c.c
@@ -15,31 +15,8 @@
#include "i2c.h"
#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,
@@ -196,89 +173,6 @@ static const struct rt_i2c_bus_device_ops i2c_ops =
.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;
@@ -287,90 +181,33 @@ int rt_hw_i2c_init(void)
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;
}
diff --git a/bsp/loongson/ls1cdev/drivers/drv_i2c.c b/bsp/loongson/ls1cdev/drivers/drv_i2c.c
deleted file mode 100644
index 6904155eb5..0000000000
--- a/bsp/loongson/ls1cdev/drivers/drv_i2c.c
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright (c) 2006-2018, RT-Thread Development Team
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Change Logs:
- * Date Author Notes
- * 2017-11-14 勤为本 first version
- */
-
-#include <rtthread.h>
-#include <drivers/dev_i2c.h>
-#include <drivers/dev_i2c_bit_ops.h>
-#include "drv_i2c.h"
-#include "../libraries/ls1c_gpio.h"
-#include "../libraries/ls1c_delay.h"
-
-
-#define LS1C_I2C_SCL (51) // gpio57
-#define LS1C_I2C_SDA (50) // gpio56
-
-#define LS1C_SET_GPIO_MODE
-
-static void ls1c_i2c_gpio_init(void)
-{
- gpio_init(LS1C_I2C_SCL, gpio_mode_output);
- gpio_set(LS1C_I2C_SCL, gpio_level_high);
-
- gpio_init(LS1C_I2C_SDA, gpio_mode_output);
- gpio_set(LS1C_I2C_SDA, gpio_level_high);
-
- return ;
-}
-
-
-static void ls1c_udelay(rt_uint32_t us)
-{
- delay_us((int)us);
-}
-
-
-static void ls1c_set_sda(void *data, rt_int32_t state)
-{
-#ifdef LS1C_SET_GPIO_MODE
- gpio_init(LS1C_I2C_SDA, gpio_mode_output);
- ls1c_udelay(5);
-#endif
- gpio_set(LS1C_I2C_SDA, state);
- return ;
-}
-
-
-static void ls1c_set_scl(void *data, rt_int32_t state)
-{
-#ifdef LS1C_SET_GPIO_MODE
- gpio_init(LS1C_I2C_SCL, gpio_mode_output);
- ls1c_udelay(5);
-#endif
- gpio_set(LS1C_I2C_SCL, state);
- return ;
-}
-
-
-static rt_int32_t ls1c_get_sda(void *data)
-{
-#ifdef LS1C_SET_GPIO_MODE
- gpio_init(LS1C_I2C_SDA, gpio_mode_input);
- ls1c_udelay(5);
-#endif
- return gpio_get(LS1C_I2C_SDA);
-}
-
-
-static rt_int32_t ls1c_get_scl(void *data)
-{
-#ifdef LS1C_SET_GPIO_MODE
- gpio_init(LS1C_I2C_SCL, gpio_mode_input);
- ls1c_udelay(5);
-#endif
- return gpio_get(LS1C_I2C_SCL);
-}
-
-
-static const struct rt_i2c_bit_ops bit_ops =
-{
- .data = RT_NULL,
- .pin_init = ls1c_i2c_gpio_init,
- .set_sda = ls1c_set_sda,
- .set_scl = ls1c_set_scl,
- .get_sda = ls1c_get_sda,
- .get_scl = ls1c_get_scl,
- .udelay = ls1c_udelay,
- .delay_us = 20, // 此值为周期(us)
- .timeout = 10, // 单位为tick
- .i2c_pin_init_flag = RT_FALSE
-};
-
-
-
-int ls1c_i2c_init(void)
-{
- static struct rt_i2c_bus_device bus = {0};
-
- bus.priv = (void *)&bit_ops;
-
- rt_i2c_bit_add_bus(&bus, "i2c3");
-
- return RT_EOK;
-}
-
-
-
-
-
diff --git a/bsp/loongson/ls1cdev/drivers/drv_i2c.h b/bsp/loongson/ls1cdev/drivers/drv_i2c.h
deleted file mode 100644
index cbacdbb0f5..0000000000
--- a/bsp/loongson/ls1cdev/drivers/drv_i2c.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * Copyright (c) 2006-2018, RT-Thread Development Team
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Change Logs:
- * Date Author Notes
- * 2017-11-14 勤为本 first version
- */
-
-#ifndef LS1C_DRV_I2C_H
-#define LS1C_DRV_I2C_H
-
-int ls1c_i2c_init(void);
-
-#endif
-
diff --git a/bsp/n32/n32gxx_lxx/libraries/n32_drivers/SConscript b/bsp/n32/n32gxx_lxx/libraries/n32_drivers/SConscript
index c25aeacdc8..3fa0923c9e 100644
--- a/bsp/n32/n32gxx_lxx/libraries/n32_drivers/SConscript
+++ b/bsp/n32/n32gxx_lxx/libraries/n32_drivers/SConscript
@@ -26,10 +26,6 @@ if GetDepend(['RT_USING_PWM']):
if GetDepend(['RT_USING_SPI']):
src += ['drv_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_i2c.c']
-
if GetDepend(['RT_USING_ADC']):
src += Glob('drv_adc.c')
diff --git a/bsp/n32/n32gxx_lxx/libraries/n32_drivers/drv_i2c.c b/bsp/n32/n32gxx_lxx/libraries/n32_drivers/drv_i2c.c
index 6f22c63a93..d4dec283af 100644
--- a/bsp/n32/n32gxx_lxx/libraries/n32_drivers/drv_i2c.c
+++ b/bsp/n32/n32gxx_lxx/libraries/n32_drivers/drv_i2c.c
@@ -20,204 +20,6 @@
#endif
#include <rtdbg.h>
-
-#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/n32gxx_lxx/libraries/n32_drivers/drv_i2c.h b/bsp/n32/n32gxx_lxx/libraries/n32_drivers/drv_i2c.h
index 93b2f19658..549cfc75e7 100644
--- a/bsp/n32/n32gxx_lxx/libraries/n32_drivers/drv_i2c.h
+++ b/bsp/n32/n32gxx_lxx/libraries/n32_drivers/drv_i2c.h
@@ -20,57 +20,6 @@
extern "C" {
#endif
-/* 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
-
struct rt_i2c_bus
{
struct rt_i2c_bus_device parent;
diff --git a/bsp/n32/n32gxx_lxx/n32g43xcl-stb/.ci/attachconfig/ci.attachconfig.yml b/bsp/n32/n32gxx_lxx/n32g43xcl-stb/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..d626be14a5
--- /dev/null
+++ b/bsp/n32/n32gxx_lxx/n32g43xcl-stb/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/n32/n32gxx_lxx/n32g43xcl-stb/board/Kconfig b/bsp/n32/n32gxx_lxx/n32g43xcl-stb/board/Kconfig
index 2325be729d..98e6ecbd99 100644
--- a/bsp/n32/n32gxx_lxx/n32g43xcl-stb/board/Kconfig
+++ b/bsp/n32/n32gxx_lxx/n32g43xcl-stb/board/Kconfig
@@ -64,24 +64,25 @@ menu "On-chip Peripheral Drivers"
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
endif
-
menuconfig BSP_USING_RTC
bool "Enable RTC"
select RT_USING_RTC
@@ -265,4 +266,16 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/n32/n32gxx_lxx/n32g457qel-stb/.ci/attachconfig/ci.attachconfig.yml b/bsp/n32/n32gxx_lxx/n32g457qel-stb/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..d626be14a5
--- /dev/null
+++ b/bsp/n32/n32gxx_lxx/n32g457qel-stb/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/n32/n32gxx_lxx/n32g457qel-stb/board/Kconfig b/bsp/n32/n32gxx_lxx/n32g457qel-stb/board/Kconfig
index 870dfd6240..6fa3209025 100644
--- a/bsp/n32/n32gxx_lxx/n32g457qel-stb/board/Kconfig
+++ b/bsp/n32/n32gxx_lxx/n32g457qel-stb/board/Kconfig
@@ -75,23 +75,25 @@ menu "On-chip Peripheral Drivers"
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
endif
-
menuconfig BSP_USING_RTC
bool "Enable RTC"
select RT_USING_RTC
@@ -292,4 +294,16 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/n32/n32gxx_lxx/n32g45xcl-stb/.ci/attachconfig/ci.attachconfig.yml b/bsp/n32/n32gxx_lxx/n32g45xcl-stb/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..d626be14a5
--- /dev/null
+++ b/bsp/n32/n32gxx_lxx/n32g45xcl-stb/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/n32/n32gxx_lxx/n32g45xcl-stb/board/Kconfig b/bsp/n32/n32gxx_lxx/n32g45xcl-stb/board/Kconfig
index 86024542c0..b7638374cf 100644
--- a/bsp/n32/n32gxx_lxx/n32g45xcl-stb/board/Kconfig
+++ b/bsp/n32/n32gxx_lxx/n32g45xcl-stb/board/Kconfig
@@ -72,23 +72,25 @@ menu "On-chip Peripheral Drivers"
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
endif
-
menuconfig BSP_USING_RTC
bool "Enable RTC"
select RT_USING_RTC
@@ -291,4 +293,16 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/n32/n32gxx_lxx/n32g45xml-stb/.ci/attachconfig/ci.attachconfig.yml b/bsp/n32/n32gxx_lxx/n32g45xml-stb/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..d626be14a5
--- /dev/null
+++ b/bsp/n32/n32gxx_lxx/n32g45xml-stb/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/n32/n32gxx_lxx/n32g45xml-stb/board/Kconfig b/bsp/n32/n32gxx_lxx/n32g45xml-stb/board/Kconfig
index f336f3042f..c25cc4936a 100644
--- a/bsp/n32/n32gxx_lxx/n32g45xml-stb/board/Kconfig
+++ b/bsp/n32/n32gxx_lxx/n32g45xml-stb/board/Kconfig
@@ -75,23 +75,25 @@ menu "On-chip Peripheral Drivers"
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
endif
-
menuconfig BSP_USING_RTC
bool "Enable RTC"
select RT_USING_RTC
@@ -292,4 +294,16 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/n32/n32gxx_lxx/n32g45xrl-stb/.ci/attachconfig/ci.attachconfig.yml b/bsp/n32/n32gxx_lxx/n32g45xrl-stb/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..d626be14a5
--- /dev/null
+++ b/bsp/n32/n32gxx_lxx/n32g45xrl-stb/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/n32/n32gxx_lxx/n32g45xrl-stb/board/Kconfig b/bsp/n32/n32gxx_lxx/n32g45xrl-stb/board/Kconfig
index afc8ec9e5c..4104145472 100644
--- a/bsp/n32/n32gxx_lxx/n32g45xrl-stb/board/Kconfig
+++ b/bsp/n32/n32gxx_lxx/n32g45xrl-stb/board/Kconfig
@@ -75,23 +75,25 @@ menu "On-chip Peripheral Drivers"
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
endif
-
menuconfig BSP_USING_RTC
bool "Enable RTC"
select RT_USING_RTC
@@ -292,4 +294,16 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/n32/n32gxx_lxx/n32g45xvl-stb/.ci/attachconfig/ci.attachconfig.yml b/bsp/n32/n32gxx_lxx/n32g45xvl-stb/.ci/attachconfig/ci.attachconfig.yml
index d63beb299e..f0c2884397 100644
--- a/bsp/n32/n32gxx_lxx/n32g45xvl-stb/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/n32/n32gxx_lxx/n32g45xvl-stb/.ci/attachconfig/ci.attachconfig.yml
@@ -20,4 +20,12 @@ peripheral.uartv2:
- CONFIG_BSP_UART2_RX_BUFSIZE=1024
- CONFIG_BSP_UART2_TX_BUFSIZE=1024
-
+devices.soft_i2c:
+ <<: *scons
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/n32/n32gxx_lxx/n32g45xvl-stb/board/Kconfig b/bsp/n32/n32gxx_lxx/n32g45xvl-stb/board/Kconfig
index f71c05030a..9ef229eff4 100644
--- a/bsp/n32/n32gxx_lxx/n32g45xvl-stb/board/Kconfig
+++ b/bsp/n32/n32gxx_lxx/n32g45xvl-stb/board/Kconfig
@@ -405,23 +405,25 @@ menu "On-chip Peripheral Drivers"
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
endif
-
menuconfig BSP_USING_RTC
bool "Enable RTC"
select RT_USING_RTC
@@ -625,4 +627,16 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/n32/n32gxx_lxx/n32g4frml-stb/.ci/attachconfig/ci.attachconfig.yml b/bsp/n32/n32gxx_lxx/n32g4frml-stb/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..d626be14a5
--- /dev/null
+++ b/bsp/n32/n32gxx_lxx/n32g4frml-stb/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/n32/n32gxx_lxx/n32g4frml-stb/board/Kconfig b/bsp/n32/n32gxx_lxx/n32g4frml-stb/board/Kconfig
index 961f796db7..b4606f9611 100644
--- a/bsp/n32/n32gxx_lxx/n32g4frml-stb/board/Kconfig
+++ b/bsp/n32/n32gxx_lxx/n32g4frml-stb/board/Kconfig
@@ -75,23 +75,25 @@ menu "On-chip Peripheral Drivers"
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
endif
-
menuconfig BSP_USING_RTC
bool "Enable RTC"
select RT_USING_RTC
@@ -290,4 +292,16 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/n32/n32gxx_lxx/n32l40xcl-stb/.ci/attachconfig/ci.attachconfig.yml b/bsp/n32/n32gxx_lxx/n32l40xcl-stb/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..d626be14a5
--- /dev/null
+++ b/bsp/n32/n32gxx_lxx/n32l40xcl-stb/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/n32/n32gxx_lxx/n32l40xcl-stb/board/Kconfig b/bsp/n32/n32gxx_lxx/n32l40xcl-stb/board/Kconfig
index 9c7600c3e1..73ecf9119e 100644
--- a/bsp/n32/n32gxx_lxx/n32l40xcl-stb/board/Kconfig
+++ b/bsp/n32/n32gxx_lxx/n32l40xcl-stb/board/Kconfig
@@ -64,24 +64,25 @@ menu "On-chip Peripheral Drivers"
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
endif
-
menuconfig BSP_USING_RTC
bool "Enable RTC"
select RT_USING_RTC
@@ -310,4 +311,16 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/n32/n32gxx_lxx/n32l436-evb/.ci/attachconfig/ci.attachconfig.yml b/bsp/n32/n32gxx_lxx/n32l436-evb/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..d626be14a5
--- /dev/null
+++ b/bsp/n32/n32gxx_lxx/n32l436-evb/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/n32/n32gxx_lxx/n32l436-evb/board/Kconfig b/bsp/n32/n32gxx_lxx/n32l436-evb/board/Kconfig
index 6f85182039..4899a911ad 100644
--- a/bsp/n32/n32gxx_lxx/n32l436-evb/board/Kconfig
+++ b/bsp/n32/n32gxx_lxx/n32l436-evb/board/Kconfig
@@ -64,24 +64,25 @@ menu "On-chip Peripheral Drivers"
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
endif
-
menuconfig BSP_USING_RTC
bool "Enable RTC"
select RT_USING_RTC
@@ -308,4 +309,16 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/n32/n32gxx_lxx/n32l43xml-stb/.ci/attachconfig/ci.attachconfig.yml b/bsp/n32/n32gxx_lxx/n32l43xml-stb/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..d626be14a5
--- /dev/null
+++ b/bsp/n32/n32gxx_lxx/n32l43xml-stb/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/n32/n32gxx_lxx/n32l43xml-stb/board/Kconfig b/bsp/n32/n32gxx_lxx/n32l43xml-stb/board/Kconfig
index d9a04c2509..e80382754a 100644
--- a/bsp/n32/n32gxx_lxx/n32l43xml-stb/board/Kconfig
+++ b/bsp/n32/n32gxx_lxx/n32l43xml-stb/board/Kconfig
@@ -64,24 +64,25 @@ menu "On-chip Peripheral Drivers"
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
endif
-
menuconfig BSP_USING_RTC
bool "Enable RTC"
select RT_USING_RTC
@@ -308,4 +309,16 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/n32/n32gxx_lxx/n32l43xrl-stb/.ci/attachconfig/ci.attachconfig.yml b/bsp/n32/n32gxx_lxx/n32l43xrl-stb/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..d626be14a5
--- /dev/null
+++ b/bsp/n32/n32gxx_lxx/n32l43xrl-stb/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/n32/n32gxx_lxx/n32l43xrl-stb/board/Kconfig b/bsp/n32/n32gxx_lxx/n32l43xrl-stb/board/Kconfig
index b0e0d5efb4..5e1d88d2d5 100644
--- a/bsp/n32/n32gxx_lxx/n32l43xrl-stb/board/Kconfig
+++ b/bsp/n32/n32gxx_lxx/n32l43xrl-stb/board/Kconfig
@@ -64,24 +64,25 @@ menu "On-chip Peripheral Drivers"
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
endif
-
menuconfig BSP_USING_RTC
bool "Enable RTC"
select RT_USING_RTC
@@ -308,4 +309,16 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/n32/n32gxx_lxx/n32wb45xl-evb/.ci/attachconfig/ci.attachconfig.yml b/bsp/n32/n32gxx_lxx/n32wb45xl-evb/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..08f15d590b
--- /dev/null
+++ b/bsp/n32/n32gxx_lxx/n32wb45xl-evb/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=24
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=25
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/n32/n32gxx_lxx/n32wb45xl-evb/board/Kconfig b/bsp/n32/n32gxx_lxx/n32wb45xl-evb/board/Kconfig
index 0de27deaa4..2d12a7e2db 100644
--- a/bsp/n32/n32gxx_lxx/n32wb45xl-evb/board/Kconfig
+++ b/bsp/n32/n32gxx_lxx/n32wb45xl-evb/board/Kconfig
@@ -75,23 +75,25 @@ menu "On-chip Peripheral Drivers"
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 24
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 25
+ endif
endif
-
menuconfig BSP_USING_RTC
bool "Enable RTC"
select RT_USING_RTC
@@ -287,4 +289,16 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 24 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 25 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/n32/n32hxxx/libraries/N32_Drivers/drivers/SConscript b/bsp/n32/n32hxxx/libraries/N32_Drivers/drivers/SConscript
index 3dda86ed0c..bb9d95e4e3 100644
--- a/bsp/n32/n32hxxx/libraries/N32_Drivers/drivers/SConscript
+++ b/bsp/n32/n32hxxx/libraries/N32_Drivers/drivers/SConscript
@@ -17,10 +17,6 @@ if GetDepend(['RT_USING_SERIAL']):
if GetDepend(['RT_USING_SPI']):
src += ['drv_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') or GetDepend('BSP_USING_HARD_I2C5') or GetDepend('BSP_USING_HARD_I2C6') or GetDepend('BSP_USING_HARD_I2C7') or GetDepend('BSP_USING_HARD_I2C8') or GetDepend('BSP_USING_HARD_I2C9') or GetDepend('BSP_USING_HARD_I2C10'):
src += ['drv_hard_i2c.c']
diff --git a/bsp/n32/n32hxxx/libraries/N32_Drivers/drivers/drv_soft_i2c.c b/bsp/n32/n32hxxx/libraries/N32_Drivers/drivers/drv_soft_i2c.c
deleted file mode 100644
index 5a0a7b911f..0000000000
--- a/bsp/n32/n32hxxx/libraries/N32_Drivers/drivers/drv_soft_i2c.c
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * Copyright (c) 2006-2025, RT-Thread Development Team
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Change Logs:
- * Date Author Notes
- * 2026-01-24 ox-horse first version
- */
-
-#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 <drv_log.h>
-
-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
-#ifdef BSP_USING_I2C5
- I2C5_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);
-}
-
-/**
- * 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);
-}
-
-
-static const struct rt_i2c_bit_ops n32_bit_ops_default =
-{
- .data = RT_NULL,
- .set_sda = n32_set_sda,
- .set_scl = n32_set_scl,
- .get_sda = n32_get_sda,
- .get_scl = n32_get_scl,
- .udelay = rt_hw_us_delay,
- .delay_us = 1,
- .timeout = 100
-};
-
-/**
- * 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);
- 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 n32_i2c); 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;
-
- n32_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);
- 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 /* defined(BSP_USING_I2C1) || defined(BSP_USING_I2C2) || defined(BSP_USING_I2C3) || defined(BSP_USING_I2C4) || defined(BSP_USING_I2C5) */
-
diff --git a/bsp/n32/n32hxxx/libraries/N32_Drivers/drivers/drv_soft_i2c.h b/bsp/n32/n32hxxx/libraries/N32_Drivers/drivers/drv_soft_i2c.h
deleted file mode 100644
index 2695e5896e..0000000000
--- a/bsp/n32/n32hxxx/libraries/N32_Drivers/drivers/drv_soft_i2c.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (c) 2006-2025, RT-Thread Development Team
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Change Logs:
- * Date Author Notes
- * 2026-01-24 ox-horse first version
- */
-
-#ifndef __DRV_SOFT_I2C_H__
-#define __DRV_SOFT_I2C_H__
-
-#include <rtthread.h>
-#include <rthw.h>
-#include <rtdevice.h>
-
-/* 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
-
-#ifdef BSP_USING_I2C5
-#define I2C5_BUS_CONFIG \
- { \
- .scl = BSP_I2C5_SCL_PIN, \
- .sda = BSP_I2C5_SDA_PIN, \
- .bus_name = "i2c5", \
- }
-#endif
-
-#endif /* __DRV_SOFT_I2C_H__ */
diff --git a/bsp/n32/n32hxxx/n32h760zil7-stb/.ci/attachconfig/ci.attachconfig.yml b/bsp/n32/n32hxxx/n32h760zil7-stb/.ci/attachconfig/ci.attachconfig.yml
index e4646070a9..bafb8dec3c 100644
--- a/bsp/n32/n32hxxx/n32h760zil7-stb/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/n32/n32hxxx/n32h760zil7-stb/.ci/attachconfig/ci.attachconfig.yml
@@ -8,3 +8,12 @@ nano:
kconfig:
- CONFIG_RT_USING_NANO=y
+devices.soft_i2c:
+ <<: *scons
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/n32/n32hxxx/n32h760zil7-stb/board/Kconfig b/bsp/n32/n32hxxx/n32h760zil7-stb/board/Kconfig
index 0ac364d0bf..25f11e5d9a 100644
--- a/bsp/n32/n32hxxx/n32h760zil7-stb/board/Kconfig
+++ b/bsp/n32/n32hxxx/n32h760zil7-stb/board/Kconfig
@@ -81,24 +81,25 @@ menu "On-chip Peripheral Drivers"
default n
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
endif
-
menuconfig BSP_USING_HARD_I2C
bool "Enable Hard I2C BUS"
default n
@@ -162,4 +163,16 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/n32g452xx/Libraries/rt_drivers/SConscript b/bsp/n32g452xx/Libraries/rt_drivers/SConscript
index cf9e595798..80515ad981 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 2a5bed3033..0000000000
--- 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 <board.h>
-#include "drv_soft_i2c.h"
-
-#ifdef RT_USING_I2C
-
-#define LOG_TAG "drv.i2c"
-#include <drv_log.h>
-
-#if !defined(BSP_USING_I2C1) && !defined(BSP_USING_I2C2) && !defined(BSP_USING_I2C3) && !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 12e84df088..0000000000
--- 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 <rtthread.h>
-#include <rthw.h>
-#include <rtdevice.h>
-
-/* 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/.ci/attachconfig/ci.attachconfig.yml b/bsp/n32g452xx/n32g452xx-mini-system/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..44e6ac9692
--- /dev/null
+++ b/bsp/n32g452xx/n32g452xx-mini-system/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=29
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=30
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/n32g452xx/n32g452xx-mini-system/board/Kconfig b/bsp/n32g452xx/n32g452xx-mini-system/board/Kconfig
index 373a7d69e2..9fd5a1cfbe 100755
--- a/bsp/n32g452xx/n32g452xx-mini-system/board/Kconfig
+++ b/bsp/n32g452xx/n32g452xx-mini-system/board/Kconfig
@@ -340,23 +340,25 @@ menu "On-chip Peripheral Drivers"
default n
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 29
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 30
+ endif
endif
-
menuconfig BSP_USING_ADC
bool "Enable ADC"
default n
@@ -394,4 +396,16 @@ menu "On-chip Peripheral Drivers"
endif
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 29 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 30 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/nuvoton/libraries/m031/rtt_port/Kconfig b/bsp/nuvoton/libraries/m031/rtt_port/Kconfig
index 6a640a1978..dd5bff39ec 100644
--- a/bsp/nuvoton/libraries/m031/rtt_port/Kconfig
+++ b/bsp/nuvoton/libraries/m031/rtt_port/Kconfig
@@ -580,46 +580,37 @@ config SOC_SERIES_M032
endif
menuconfig BSP_USING_SOFT_I2C
- bool "Enable SOFT I2C"
-
+ bool "Enable software I2C (swi2c)"
+ default n
+ select RT_USING_I2C
+ select RT_USING_SOFT_I2C
if BSP_USING_SOFT_I2C
- config BSP_USING_SOFT_I2C0
- bool "Enable SOFT I2C0"
- select RT_USING_I2C
- select RT_USING_I2C_BITOPS
+ menuconfig BSP_USING_SOFT_I2C0
+ bool "Enable software I2C0 Bus (swi2c0)"
default n
-
+ select RT_USING_SOFT_I2C0
if BSP_USING_SOFT_I2C0
- config BSP_SOFT_I2C0_SCL_PIN
- hex "Specify the pin index of SCL of SOFT I2C0"
- range 0 0x7F
- default 0x18
-
- config BSP_SOFT_I2C0_SDA_PIN
- hex "Specify the pin index of SDA of SOFT I2C0"
- range 0 0x7F
- default 0x17
+ config RT_SOFT_I2C0_SCL_PIN
+ int "swi2c0 SCL pin number"
+ default 0x18
+ config RT_SOFT_I2C0_SDA_PIN
+ int "swi2c0 SDA pin number"
+ default 0x17
endif
- config BSP_USING_SOFT_I2C1
- bool "Enable SOFT I2C1"
- select RT_USING_I2C
- select RT_USING_I2C_BITOPS
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
default n
-
+ select RT_USING_SOFT_I2C1
if BSP_USING_SOFT_I2C1
- config BSP_SOFT_I2C1_SCL_PIN
- hex "Specify the pin index of SCL of SOFT I2C1"
- range 0 0x7F
- default 0x0B
-
- config BSP_SOFT_I2C1_SDA_PIN
- hex "Specify the pin index of SDA of SOFT I2C1"
- range 0 0x7F
- default 0x0A
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 0x0B
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 0x0A
endif
endif
-
config BSP_USING_WDT
bool "Enable Watchdog Timer(WDT)"
select RT_USING_WDT
@@ -631,5 +622,30 @@ config SOC_SERIES_M032
config BSP_USING_USBD
bool "Enable Full-Speed USB Device Controller(USBD)"
+
+
select RT_USING_USB_DEVICE
+ config RT_SOFT_I2C0_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C0
+
+ config RT_SOFT_I2C0_SCL_PIN_DEFAULT
+ int
+ default 0x18 if RT_USING_SOFT_I2C0
+
+ config RT_SOFT_I2C0_SDA_PIN_DEFAULT
+ int
+ default 0x17 if RT_USING_SOFT_I2C0
+
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 0x0B if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 0x0A if RT_USING_SOFT_I2C1
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 bd4f6af0fa..0000000000
--- 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 <rtconfig.h>
-
-#if (defined(BSP_USING_SOFT_I2C) && defined(BSP_USING_GPIO) && defined(RT_USING_I2C_BITOPS) && defined(RT_USING_I2C) && defined(RT_USING_PIN))
-
-#include <rtthread.h>
-#include <rthw.h>
-#include <rtdevice.h>
-#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 <rtdbg.h>
-
-#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/Kconfig b/bsp/nuvoton/libraries/m2354/rtt_port/Kconfig
index 67632a4754..b588054971 100644
--- a/bsp/nuvoton/libraries/m2354/rtt_port/Kconfig
+++ b/bsp/nuvoton/libraries/m2354/rtt_port/Kconfig
@@ -876,46 +876,37 @@ config SOC_SERIES_M2354
menuconfig BSP_USING_SOFT_I2C
- bool "Enable SOFT I2C"
-
+ bool "Enable software I2C (swi2c)"
+ default n
+ select RT_USING_I2C
+ select RT_USING_SOFT_I2C
if BSP_USING_SOFT_I2C
- config BSP_USING_SOFT_I2C0
- bool "Enable SOFT I2C0"
- select RT_USING_I2C
- select RT_USING_I2C_BITOPS
+ menuconfig BSP_USING_SOFT_I2C0
+ bool "Enable software I2C0 Bus (swi2c0)"
default n
-
+ select RT_USING_SOFT_I2C0
if BSP_USING_SOFT_I2C0
- config BSP_SOFT_I2C0_SCL_PIN
- hex "Specify the pin index of SCL of SOFT I2C0"
- range 0 0x7F
- default 0x18
-
- config BSP_SOFT_I2C0_SDA_PIN
- hex "Specify the pin index of SDA of SOFT I2C0"
- range 0 0x7F
- default 0x17
+ config RT_SOFT_I2C0_SCL_PIN
+ int "swi2c0 SCL pin number"
+ default 0x18
+ config RT_SOFT_I2C0_SDA_PIN
+ int "swi2c0 SDA pin number"
+ default 0x17
endif
- config BSP_USING_SOFT_I2C1
- bool "Enable SOFT I2C1"
- select RT_USING_I2C
- select RT_USING_I2C_BITOPS
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
default n
-
+ select RT_USING_SOFT_I2C1
if BSP_USING_SOFT_I2C1
- config BSP_SOFT_I2C1_SCL_PIN
- hex "Specify the pin index of SCL of SOFT I2C1"
- range 0 0x7F
- default 0x0B
-
- config BSP_SOFT_I2C1_SDA_PIN
- hex "Specify the pin index of SDA of SOFT I2C1"
- range 0 0x7F
- default 0x0A
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 0x0B
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 0x0A
endif
endif
-
config BSP_USING_WDT
bool "Enable Watchdog Timer(WDT)"
select RT_USING_WDT
@@ -948,4 +939,30 @@ config SOC_SERIES_M2354
config BSP_USING_OTG
bool "Enable Full-Speed USB On-The-Go(OTG)"
select BSP_USING_USBH
+
+
select BSP_USING_USBD
+
+ config RT_SOFT_I2C0_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C0
+
+ config RT_SOFT_I2C0_SCL_PIN_DEFAULT
+ int
+ default 0x18 if RT_USING_SOFT_I2C0
+
+ config RT_SOFT_I2C0_SDA_PIN_DEFAULT
+ int
+ default 0x17 if RT_USING_SOFT_I2C0
+
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 0x0B if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 0x0A if RT_USING_SOFT_I2C1
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 0d2039a563..0000000000
--- 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 <rtconfig.h>
-
-#if (defined(BSP_USING_SOFT_I2C) && defined(BSP_USING_GPIO) && defined(RT_USING_I2C_BITOPS) && defined(RT_USING_I2C) && defined(RT_USING_PIN))
-
-#include <rtthread.h>
-#include <rthw.h>
-#include <rtdevice.h>
-#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 <rtdbg.h>
-
-#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/Kconfig b/bsp/nuvoton/libraries/m460/rtt_port/Kconfig
index e4a2ec8b7d..6b3e91915a 100644
--- a/bsp/nuvoton/libraries/m460/rtt_port/Kconfig
+++ b/bsp/nuvoton/libraries/m460/rtt_port/Kconfig
@@ -1054,46 +1054,37 @@ config SOC_SERIES_M460
menuconfig BSP_USING_SOFT_I2C
- bool "Enable SOFT I2C"
-
+ bool "Enable software I2C (swi2c)"
+ default n
+ select RT_USING_I2C
+ select RT_USING_SOFT_I2C
if BSP_USING_SOFT_I2C
- config BSP_USING_SOFT_I2C0
- bool "Enable SOFT I2C0"
- select RT_USING_I2C
- select RT_USING_I2C_BITOPS
+ menuconfig BSP_USING_SOFT_I2C0
+ bool "Enable software I2C0 Bus (swi2c0)"
default n
-
+ select RT_USING_SOFT_I2C0
if BSP_USING_SOFT_I2C0
- config BSP_SOFT_I2C0_SCL_PIN
- hex "Specify the pin index of SCL of SOFT I2C0"
- range 0 0x7F
- default 0x18
-
- config BSP_SOFT_I2C0_SDA_PIN
- hex "Specify the pin index of SDA of SOFT I2C0"
- range 0 0x7F
- default 0x17
+ config RT_SOFT_I2C0_SCL_PIN
+ int "swi2c0 SCL pin number"
+ default 0x18
+ config RT_SOFT_I2C0_SDA_PIN
+ int "swi2c0 SDA pin number"
+ default 0x17
endif
- config BSP_USING_SOFT_I2C1
- bool "Enable SOFT I2C1"
- select RT_USING_I2C
- select RT_USING_I2C_BITOPS
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
default n
-
+ select RT_USING_SOFT_I2C1
if BSP_USING_SOFT_I2C1
- config BSP_SOFT_I2C1_SCL_PIN
- hex "Specify the pin index of SCL of SOFT I2C1"
- range 0 0x7F
- default 0x0B
-
- config BSP_SOFT_I2C1_SDA_PIN
- hex "Specify the pin index of SDA of SOFT I2C1"
- range 0 0x7F
- default 0x0A
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 0x0B
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 0x0A
endif
endif
-
config BSP_USING_WDT
bool "Enable Watchdog Timer(WDT)"
select RT_USING_WDT
@@ -1135,4 +1126,30 @@ config SOC_SERIES_M460
config BSP_USING_HSOTG
bool "Enable High-Speed USB On-The-Go(HSOTG)"
select BSP_USING_HSUSBH
+
+
select BSP_USING_HSUSBD
+
+ config RT_SOFT_I2C0_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C0
+
+ config RT_SOFT_I2C0_SCL_PIN_DEFAULT
+ int
+ default 0x18 if RT_USING_SOFT_I2C0
+
+ config RT_SOFT_I2C0_SDA_PIN_DEFAULT
+ int
+ default 0x17 if RT_USING_SOFT_I2C0
+
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 0x0B if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 0x0A if RT_USING_SOFT_I2C1
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 196737f7b4..0000000000
--- 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 <rtconfig.h>
-
-#if (defined(BSP_USING_SOFT_I2C) && defined(RT_USING_I2C_BITOPS) && defined(RT_USING_I2C) && defined(RT_USING_PIN))
-
-#include <rtthread.h>
-#include <rthw.h>
-#include <rtdevice.h>
-#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 <rtdbg.h>
-
-#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/Kconfig b/bsp/nuvoton/libraries/m480/rtt_port/Kconfig
index 87a82cf98b..4acc0f7bb7 100644
--- a/bsp/nuvoton/libraries/m480/rtt_port/Kconfig
+++ b/bsp/nuvoton/libraries/m480/rtt_port/Kconfig
@@ -864,46 +864,37 @@ config SOC_SERIES_M480
menuconfig BSP_USING_SOFT_I2C
- bool "Enable SOFT I2C"
-
+ bool "Enable software I2C (swi2c)"
+ default n
+ select RT_USING_I2C
+ select RT_USING_SOFT_I2C
if BSP_USING_SOFT_I2C
- config BSP_USING_SOFT_I2C0
- bool "Enable SOFT I2C0"
- select RT_USING_I2C
- select RT_USING_I2C_BITOPS
+ menuconfig BSP_USING_SOFT_I2C0
+ bool "Enable software I2C0 Bus (swi2c0)"
default n
-
+ select RT_USING_SOFT_I2C0
if BSP_USING_SOFT_I2C0
- config BSP_SOFT_I2C0_SCL_PIN
- hex "Specify the pin index of SCL of SOFT I2C0"
- range 0 0x7F
- default 0x18
-
- config BSP_SOFT_I2C0_SDA_PIN
- hex "Specify the pin index of SDA of SOFT I2C0"
- range 0 0x7F
- default 0x17
+ config RT_SOFT_I2C0_SCL_PIN
+ int "swi2c0 SCL pin number"
+ default 0x18
+ config RT_SOFT_I2C0_SDA_PIN
+ int "swi2c0 SDA pin number"
+ default 0x17
endif
- config BSP_USING_SOFT_I2C1
- bool "Enable SOFT I2C1"
- select RT_USING_I2C
- select RT_USING_I2C_BITOPS
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
default n
-
+ select RT_USING_SOFT_I2C1
if BSP_USING_SOFT_I2C1
- config BSP_SOFT_I2C1_SCL_PIN
- hex "Specify the pin index of SCL of SOFT I2C1"
- range 0 0x7F
- default 0x0B
-
- config BSP_SOFT_I2C1_SDA_PIN
- hex "Specify the pin index of SDA of SOFT I2C1"
- range 0 0x7F
- default 0x0A
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 0x0B
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 0x0A
endif
endif
-
config BSP_USING_WDT
bool "Enable Watchdog Timer(WDT)"
select RT_USING_WDT
@@ -941,4 +932,30 @@ config SOC_SERIES_M480
config BSP_USING_HSOTG
bool "Enable High-Speed USB On-The-Go(HSOTG)"
select BSP_USING_HSUSBH
+
+
select BSP_USING_HSUSBD
+
+ config RT_SOFT_I2C0_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C0
+
+ config RT_SOFT_I2C0_SCL_PIN_DEFAULT
+ int
+ default 0x18 if RT_USING_SOFT_I2C0
+
+ config RT_SOFT_I2C0_SDA_PIN_DEFAULT
+ int
+ default 0x17 if RT_USING_SOFT_I2C0
+
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 0x0B if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 0x0A if RT_USING_SOFT_I2C1
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 54208fbd61..0000000000
--- 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 <rtconfig.h>
-
-#if (defined(BSP_USING_SOFT_I2C) && defined(BSP_USING_GPIO) && defined(RT_USING_I2C_BITOPS) && defined(RT_USING_I2C) && defined(RT_USING_PIN))
-
-#include <rtthread.h>
-#include <rthw.h>
-#include <rtdevice.h>
-#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 <rtdbg.h>
-
-#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/Kconfig b/bsp/nuvoton/libraries/ma35/rtt_port/Kconfig
index ef43e5c16d..ebfdd11768 100644
--- a/bsp/nuvoton/libraries/ma35/rtt_port/Kconfig
+++ b/bsp/nuvoton/libraries/ma35/rtt_port/Kconfig
@@ -1022,46 +1022,37 @@
endif
menuconfig BSP_USING_SOFT_I2C
- bool "Enable SOFT I2C"
-
+ bool "Enable software I2C (swi2c)"
+ default n
+ select RT_USING_I2C
+ select RT_USING_SOFT_I2C
if BSP_USING_SOFT_I2C
- config BSP_USING_SOFT_I2C0
- bool "Enable SOFT I2C0"
- select RT_USING_I2C
- select RT_USING_I2C_BITOPS
+ menuconfig BSP_USING_SOFT_I2C0
+ bool "Enable software I2C0 Bus (swi2c0)"
default n
-
+ select RT_USING_SOFT_I2C0
if BSP_USING_SOFT_I2C0
- config BSP_SOFT_I2C0_SCL_PIN
- hex "Specify the pin index of SCL of SOFT I2C0"
- range 0 0xDF
- default 0x19
-
- config BSP_SOFT_I2C0_SDA_PIN
- hex "Specify the pin index of SDA of SOFT I2C0"
- range 0 0xDF
- default 0x18
+ config RT_SOFT_I2C0_SCL_PIN
+ int "swi2c0 SCL pin number"
+ default 0x19
+ config RT_SOFT_I2C0_SDA_PIN
+ int "swi2c0 SDA pin number"
+ default 0x18
endif
- config BSP_USING_SOFT_I2C1
- bool "Enable SOFT I2C1"
- select RT_USING_I2C
- select RT_USING_I2C_BITOPS
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
default n
-
+ select RT_USING_SOFT_I2C1
if BSP_USING_SOFT_I2C1
- config BSP_SOFT_I2C1_SCL_PIN
- hex "Specify the pin index of SCL of SOFT I2C1"
- range 0 0xDF
- default 0x0B
-
- config BSP_SOFT_I2C1_SDA_PIN
- hex "Specify the pin index of SDA of SOFT I2C1"
- range 0 0xDF
- default 0x0A
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 0x0B
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 0x0A
endif
endif
-
config BSP_USING_DISP
bool "Enable Display"
depends on !USE_MA35D1_SUBM
@@ -1182,4 +1173,30 @@
config BSP_USING_HSUSBH1
bool "Enable HSUSBH1"
default y
+
+
endif
+
+ config RT_SOFT_I2C0_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C0
+
+ config RT_SOFT_I2C0_SCL_PIN_DEFAULT
+ int
+ default 0x19 if RT_USING_SOFT_I2C0
+
+ config RT_SOFT_I2C0_SDA_PIN_DEFAULT
+ int
+ default 0x18 if RT_USING_SOFT_I2C0
+
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 0x0B if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 0x0A if RT_USING_SOFT_I2C1
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 69462bfa39..0000000000
--- 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 <rtconfig.h>
-
-#if (defined(BSP_USING_SOFT_I2C) && defined(RT_USING_I2C_BITOPS) && defined(RT_USING_I2C) && defined(RT_USING_PIN))
-
-#include <rtthread.h>
-#include <rthw.h>
-#include <rtdevice.h>
-#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 <rtdbg.h>
-
-#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/Kconfig b/bsp/nuvoton/libraries/n9h30/rtt_port/Kconfig
index 1f8df1448a..75166d5024 100644
--- a/bsp/nuvoton/libraries/n9h30/rtt_port/Kconfig
+++ b/bsp/nuvoton/libraries/n9h30/rtt_port/Kconfig
@@ -414,46 +414,37 @@ config SOC_SERIES_N9H30
endif
menuconfig BSP_USING_SOFT_I2C
- bool "Enable SOFT I2C"
-
+ bool "Enable software I2C (swi2c)"
+ default n
+ select RT_USING_I2C
+ select RT_USING_SOFT_I2C
if BSP_USING_SOFT_I2C
- config BSP_USING_SOFT_I2C0
- bool "Enable SOFT I2C0"
- select RT_USING_I2C
- select RT_USING_I2C_BITOPS
+ menuconfig BSP_USING_SOFT_I2C0
+ bool "Enable software I2C0 Bus (swi2c0)"
default n
-
+ select RT_USING_SOFT_I2C0
if BSP_USING_SOFT_I2C0
- config BSP_SOFT_I2C0_SCL_PIN
- hex "Specify the pin index of SCL of SOFT I2C0"
- range 0 0x7F
- default 0x18
-
- config BSP_SOFT_I2C0_SDA_PIN
- hex "Specify the pin index of SDA of SOFT I2C0"
- range 0 0x7F
- default 0x17
+ config RT_SOFT_I2C0_SCL_PIN
+ int "swi2c0 SCL pin number"
+ default 0x18
+ config RT_SOFT_I2C0_SDA_PIN
+ int "swi2c0 SDA pin number"
+ default 0x17
endif
- config BSP_USING_SOFT_I2C1
- bool "Enable SOFT I2C1"
- select RT_USING_I2C
- select RT_USING_I2C_BITOPS
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
default n
-
+ select RT_USING_SOFT_I2C1
if BSP_USING_SOFT_I2C1
- config BSP_SOFT_I2C1_SCL_PIN
- hex "Specify the pin index of SCL of SOFT I2C1"
- range 0 0x7F
- default 0x0B
-
- config BSP_SOFT_I2C1_SDA_PIN
- hex "Specify the pin index of SDA of SOFT I2C1"
- range 0 0x7F
- default 0x0A
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 0x0B
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 0x0A
endif
endif
-
config BSP_USING_WDT
bool "Enable Watchdog Timer(WDT)"
select RT_USING_WDT
@@ -533,4 +524,30 @@ config SOC_SERIES_N9H30
config BSP_USING_USBH
bool "Enable USB Host Controller(USBH)"
select RT_USING_USB_HOST
+
+
select RT_USBH_MSTORAGE
+
+ config RT_SOFT_I2C0_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C0
+
+ config RT_SOFT_I2C0_SCL_PIN_DEFAULT
+ int
+ default 0x18 if RT_USING_SOFT_I2C0
+
+ config RT_SOFT_I2C0_SDA_PIN_DEFAULT
+ int
+ default 0x17 if RT_USING_SOFT_I2C0
+
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 0x0B if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 0x0A if RT_USING_SOFT_I2C1
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 8defbe38eb..0000000000
--- 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 <rtconfig.h>
-
-#if (defined(BSP_USING_SOFT_I2C) && defined(RT_USING_I2C_BITOPS) && defined(RT_USING_I2C) && defined(RT_USING_PIN))
-
-#include <rtthread.h>
-#include <rthw.h>
-#include <rtdevice.h>
-#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 <rtdbg.h>
-
-#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/Kconfig b/bsp/nuvoton/libraries/nuc980/rtt_port/Kconfig
index af7e441fce..0f45065f1c 100644
--- a/bsp/nuvoton/libraries/nuc980/rtt_port/Kconfig
+++ b/bsp/nuvoton/libraries/nuc980/rtt_port/Kconfig
@@ -543,46 +543,37 @@ config SOC_SERIES_NUC980
endif
menuconfig BSP_USING_SOFT_I2C
- bool "Enable SOFT I2C"
-
+ bool "Enable software I2C (swi2c)"
+ default n
+ select RT_USING_I2C
+ select RT_USING_SOFT_I2C
if BSP_USING_SOFT_I2C
- config BSP_USING_SOFT_I2C0
- bool "Enable SOFT I2C0"
- select RT_USING_I2C
- select RT_USING_I2C_BITOPS
+ menuconfig BSP_USING_SOFT_I2C0
+ bool "Enable software I2C0 Bus (swi2c0)"
default n
-
+ select RT_USING_SOFT_I2C0
if BSP_USING_SOFT_I2C0
- config BSP_SOFT_I2C0_SCL_PIN
- hex "Specify the pin index of SCL of SOFT I2C0"
- range 0 0x7F
- default 0x18
-
- config BSP_SOFT_I2C0_SDA_PIN
- hex "Specify the pin index of SDA of SOFT I2C0"
- range 0 0x7F
- default 0x17
+ config RT_SOFT_I2C0_SCL_PIN
+ int "swi2c0 SCL pin number"
+ default 0x18
+ config RT_SOFT_I2C0_SDA_PIN
+ int "swi2c0 SDA pin number"
+ default 0x17
endif
- config BSP_USING_SOFT_I2C1
- bool "Enable SOFT I2C1"
- select RT_USING_I2C
- select RT_USING_I2C_BITOPS
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
default n
-
+ select RT_USING_SOFT_I2C1
if BSP_USING_SOFT_I2C1
- config BSP_SOFT_I2C1_SCL_PIN
- hex "Specify the pin index of SCL of SOFT I2C1"
- range 0 0x7F
- default 0x0B
-
- config BSP_SOFT_I2C1_SDA_PIN
- hex "Specify the pin index of SDA of SOFT I2C1"
- range 0 0x7F
- default 0x0A
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 0x0B
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 0x0A
endif
endif
-
config BSP_USING_WDT
bool "Enable Watchdog Timer(WDT)"
select RT_USING_WDT
@@ -599,4 +590,30 @@ config SOC_SERIES_NUC980
config BSP_USING_USBH
bool "Enable USB Host Controller(USBH)"
select RT_USING_USB_HOST
+
+
select RT_USBH_MSTORAGE
+
+ config RT_SOFT_I2C0_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C0
+
+ config RT_SOFT_I2C0_SCL_PIN_DEFAULT
+ int
+ default 0x18 if RT_USING_SOFT_I2C0
+
+ config RT_SOFT_I2C0_SDA_PIN_DEFAULT
+ int
+ default 0x17 if RT_USING_SOFT_I2C0
+
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 0x0B if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 0x0A if RT_USING_SOFT_I2C1
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 adc62cb4c1..0000000000
--- 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 <rtconfig.h>
-
-#if (defined(BSP_USING_SOFT_I2C) && defined(RT_USING_I2C_BITOPS) && defined(RT_USING_I2C) && defined(RT_USING_PIN))
-
-#include <rtthread.h>
-#include <rthw.h>
-#include <rtdevice.h>
-#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 <rtdbg.h>
-
-#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/ma35-rtp/.ci/attachconfig/ci.attachconfig.yml b/bsp/nuvoton/ma35-rtp/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..e7d053497b
--- /dev/null
+++ b/bsp/nuvoton/ma35-rtp/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,12 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C0=y
+ - CONFIG_RT_SOFT_I2C0_SCL_PIN=0x19
+ - CONFIG_RT_SOFT_I2C0_SDA_PIN=0x18
+ - CONFIG_RT_SOFT_I2C0_BUS_NAME="swi2c0"
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=0x0B
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=0x0A
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/nuvoton/nk-980iot/.ci/attachconfig/ci.attachconfig.yml b/bsp/nuvoton/nk-980iot/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..f5ba058f8e
--- /dev/null
+++ b/bsp/nuvoton/nk-980iot/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,12 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C0=y
+ - CONFIG_RT_SOFT_I2C0_SCL_PIN=0x18
+ - CONFIG_RT_SOFT_I2C0_SDA_PIN=0x17
+ - CONFIG_RT_SOFT_I2C0_BUS_NAME="swi2c0"
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=0x0B
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=0x0A
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/nuvoton/nk-n9h30/.ci/attachconfig/ci.attachconfig.yml b/bsp/nuvoton/nk-n9h30/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..f5ba058f8e
--- /dev/null
+++ b/bsp/nuvoton/nk-n9h30/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,12 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C0=y
+ - CONFIG_RT_SOFT_I2C0_SCL_PIN=0x18
+ - CONFIG_RT_SOFT_I2C0_SDA_PIN=0x17
+ - CONFIG_RT_SOFT_I2C0_BUS_NAME="swi2c0"
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=0x0B
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=0x0A
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/nuvoton/nk-rtu980/.ci/attachconfig/ci.attachconfig.yml b/bsp/nuvoton/nk-rtu980/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..f5ba058f8e
--- /dev/null
+++ b/bsp/nuvoton/nk-rtu980/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,12 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C0=y
+ - CONFIG_RT_SOFT_I2C0_SCL_PIN=0x18
+ - CONFIG_RT_SOFT_I2C0_SDA_PIN=0x17
+ - CONFIG_RT_SOFT_I2C0_BUS_NAME="swi2c0"
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=0x0B
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=0x0A
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/nuvoton/numaker-hmi-ma35d1/.ci/attachconfig/ci.attachconfig.yml b/bsp/nuvoton/numaker-hmi-ma35d1/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..e7d053497b
--- /dev/null
+++ b/bsp/nuvoton/numaker-hmi-ma35d1/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,12 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C0=y
+ - CONFIG_RT_SOFT_I2C0_SCL_PIN=0x19
+ - CONFIG_RT_SOFT_I2C0_SDA_PIN=0x18
+ - CONFIG_RT_SOFT_I2C0_BUS_NAME="swi2c0"
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=0x0B
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=0x0A
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/nuvoton/numaker-iot-m467/.ci/attachconfig/ci.attachconfig.yml b/bsp/nuvoton/numaker-iot-m467/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..f5ba058f8e
--- /dev/null
+++ b/bsp/nuvoton/numaker-iot-m467/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,12 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C0=y
+ - CONFIG_RT_SOFT_I2C0_SCL_PIN=0x18
+ - CONFIG_RT_SOFT_I2C0_SDA_PIN=0x17
+ - CONFIG_RT_SOFT_I2C0_BUS_NAME="swi2c0"
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=0x0B
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=0x0A
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/nuvoton/numaker-iot-m487/.ci/attachconfig/ci.attachconfig.yml b/bsp/nuvoton/numaker-iot-m487/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..f5ba058f8e
--- /dev/null
+++ b/bsp/nuvoton/numaker-iot-m487/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,12 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C0=y
+ - CONFIG_RT_SOFT_I2C0_SCL_PIN=0x18
+ - CONFIG_RT_SOFT_I2C0_SDA_PIN=0x17
+ - CONFIG_RT_SOFT_I2C0_BUS_NAME="swi2c0"
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=0x0B
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=0x0A
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/nuvoton/numaker-iot-ma35d1/.ci/attachconfig/ci.attachconfig.yml b/bsp/nuvoton/numaker-iot-ma35d1/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..e7d053497b
--- /dev/null
+++ b/bsp/nuvoton/numaker-iot-ma35d1/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,12 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C0=y
+ - CONFIG_RT_SOFT_I2C0_SCL_PIN=0x19
+ - CONFIG_RT_SOFT_I2C0_SDA_PIN=0x18
+ - CONFIG_RT_SOFT_I2C0_BUS_NAME="swi2c0"
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=0x0B
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=0x0A
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/nuvoton/numaker-m032ki/.ci/attachconfig/ci.attachconfig.yml b/bsp/nuvoton/numaker-m032ki/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..f5ba058f8e
--- /dev/null
+++ b/bsp/nuvoton/numaker-m032ki/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,12 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C0=y
+ - CONFIG_RT_SOFT_I2C0_SCL_PIN=0x18
+ - CONFIG_RT_SOFT_I2C0_SDA_PIN=0x17
+ - CONFIG_RT_SOFT_I2C0_BUS_NAME="swi2c0"
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=0x0B
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=0x0A
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/nuvoton/numaker-m2354/.ci/attachconfig/ci.attachconfig.yml b/bsp/nuvoton/numaker-m2354/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..f5ba058f8e
--- /dev/null
+++ b/bsp/nuvoton/numaker-m2354/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,12 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C0=y
+ - CONFIG_RT_SOFT_I2C0_SCL_PIN=0x18
+ - CONFIG_RT_SOFT_I2C0_SDA_PIN=0x17
+ - CONFIG_RT_SOFT_I2C0_BUS_NAME="swi2c0"
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=0x0B
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=0x0A
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/nuvoton/numaker-m467hj/.ci/attachconfig/ci.attachconfig.yml b/bsp/nuvoton/numaker-m467hj/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..f5ba058f8e
--- /dev/null
+++ b/bsp/nuvoton/numaker-m467hj/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,12 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C0=y
+ - CONFIG_RT_SOFT_I2C0_SCL_PIN=0x18
+ - CONFIG_RT_SOFT_I2C0_SDA_PIN=0x17
+ - CONFIG_RT_SOFT_I2C0_BUS_NAME="swi2c0"
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=0x0B
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=0x0A
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/nuvoton/numaker-pfm-m487/.ci/attachconfig/ci.attachconfig.yml b/bsp/nuvoton/numaker-pfm-m487/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..f5ba058f8e
--- /dev/null
+++ b/bsp/nuvoton/numaker-pfm-m487/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,12 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C0=y
+ - CONFIG_RT_SOFT_I2C0_SCL_PIN=0x18
+ - CONFIG_RT_SOFT_I2C0_SDA_PIN=0x17
+ - CONFIG_RT_SOFT_I2C0_BUS_NAME="swi2c0"
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=0x0B
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=0x0A
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/nxp/lpc/lpc54608-LPCXpresso/drivers/drv_i2c.c b/bsp/nxp/lpc/lpc54608-LPCXpresso/drivers/drv_i2c.c
index 9ac4704b46..e1d470b022 100644
--- a/bsp/nxp/lpc/lpc54608-LPCXpresso/drivers/drv_i2c.c
+++ b/bsp/nxp/lpc/lpc54608-LPCXpresso/drivers/drv_i2c.c
@@ -12,80 +12,10 @@
#include <rtdevice.h>
#include "board.h"
#include "fsl_iocon.h"
-#include "fsl_gpio.h"
#include "fsl_i2c.h"
#ifdef RT_USING_I2C
-#ifdef RT_USING_I2C_BITOPS
-
-struct lpc_i2c_bit_data
-{
- struct
- {
- GPIO_Type *base;
- uint32_t port;
- uint32_t pin;
- } scl, sda;
-};
-
-static void gpio_set_sda(void *data, rt_int32_t state)
-{
- struct lpc_i2c_bit_data *bd = data;
-
- if (state)
- {
- //bd->sda.base->B[bd->sda.port][bd->sda.pin] = 1;
- GPIO_WritePinOutput(bd->sda.base, bd->sda.port, bd->sda.pin, 1);
- }
- else
- {
- GPIO_WritePinOutput(bd->sda.base, bd->sda.port, bd->sda.pin, 0);
- }
-}
-
-static void gpio_set_scl(void *data, rt_int32_t state)
-{
- struct lpc_i2c_bit_data *bd = data;
-
- if (state)
- {
- //bd->scl.base->B[bd->sda.port][bd->sda.pin] = 1;
- GPIO_WritePinOutput(bd->scl.base, bd->scl.port, bd->scl.pin, 1);
- }
- else
- {
- //bd->scl.base->B[bd->sda.port][bd->sda.pin] = 0;
- GPIO_WritePinOutput(bd->scl.base, bd->scl.port, bd->scl.pin, 0);
- }
-}
-
-static rt_int32_t gpio_get_sda(void *data)
-{
- struct lpc_i2c_bit_data *bd = data;
-
- return GPIO_ReadPinInput(bd->sda.base, bd->sda.port, bd->sda.pin) & 0x01;
-}
-
-static rt_int32_t gpio_get_scl(void *data)
-{
- struct lpc_i2c_bit_data *bd = data;
-
- return GPIO_ReadPinInput(bd->scl.base, bd->scl.port, bd->scl.pin) & 0x01;
-}
-
-static void gpio_udelay(rt_uint32_t us)
-{
- volatile rt_int32_t i;
- for (; us > 0; us--)
- {
- i = 10;
- while (i--);
- }
-}
-
-#else /* RT_USING_I2C_BITOPS */
-
#define IOCON_PIO_DIGITAL_EN 0x0100u /*!< Enables digital function */
#define IOCON_PIO_FUNC0 0x00u /*!< Selects pin function 0 */
#define IOCON_PIO_FUNC1 0x01u /*!< Selects pin function 1 */
@@ -205,53 +135,8 @@ static const struct rt_i2c_bus_device_ops i2c_ops =
RT_NULL
};
-#endif /* RT_USING_I2C_BITOPS */
-
int rt_hw_i2c_init(void)
{
-#ifdef RT_USING_I2C_BITOPS
- /* register I2C1: SCL/P0_20 SDA/P0_19 */
- {
- static struct rt_i2c_bus_device i2c_device;
-
- static const struct lpc_i2c_bit_data _i2c_bdata =
- {
- /* SCL */ {GPIO, 3, 24},
- /* SDA */ {GPIO, 3, 23},
- };
-
- static const struct rt_i2c_bit_ops _i2c_bit_ops =
- {
- (void*)&_i2c_bdata,
- gpio_set_sda,
- gpio_set_scl,
- gpio_get_sda,
- gpio_get_scl,
-
- gpio_udelay,
-
- 5,
- 100
- };
-
- gpio_pin_config_t pin_config = {
- kGPIO_DigitalOutput, 0,
- };
-
- CLOCK_EnableClock(kCLOCK_Gpio3);
-
- /* Enable touch panel controller */
- GPIO_PinInit(GPIO, _i2c_bdata.sda.port, _i2c_bdata.sda.pin, &pin_config);
- GPIO_PinInit(GPIO, _i2c_bdata.scl.port, _i2c_bdata.scl.pin, &pin_config);
-
- GPIO_WritePinOutput(GPIO, _i2c_bdata.sda.port, _i2c_bdata.sda.pin, 1);
- GPIO_WritePinOutput(GPIO, _i2c_bdata.scl.port, _i2c_bdata.scl.pin, 1);
-
- i2c_device.priv = (void *)&_i2c_bit_ops;
- rt_i2c_bit_add_bus(&i2c_device, "i2c2");
- } /* register I2C */
-
-#else /* RT_USING_I2C_BITOPS */
static struct lpc_i2c_bus lpc_i2c2;
/* attach 12 MHz clock to FLEXCOMM2 (I2C master for touch controller) */
@@ -295,8 +180,6 @@ int rt_hw_i2c_init(void)
lpc_i2c2.I2C = I2C2;
rt_i2c_bus_device_register(&lpc_i2c2.parent, "i2c2");
-#endif /* RT_USING_I2C_BITOPS */
-
return 0;
}
INIT_DEVICE_EXPORT(rt_hw_i2c_init);
diff --git a/bsp/nxp/lpc/lpc55sxx/libraries/drivers/SConscript b/bsp/nxp/lpc/lpc55sxx/libraries/drivers/SConscript
index 772d3452bb..a921d8d849 100644
--- a/bsp/nxp/lpc/lpc55sxx/libraries/drivers/SConscript
+++ b/bsp/nxp/lpc/lpc55sxx/libraries/drivers/SConscript
@@ -43,9 +43,6 @@ if GetDepend('BSP_USING_I2S'):
if GetDepend('BSP_USING_WM8904'):
src += ['drv_sound_wm8904.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/nxp/lpc/lpc55sxx/libraries/drivers/drv_soft_i2c.c b/bsp/nxp/lpc/lpc55sxx/libraries/drivers/drv_soft_i2c.c
deleted file mode 100644
index 9de56d4ffb..0000000000
--- a/bsp/nxp/lpc/lpc55sxx/libraries/drivers/drv_soft_i2c.c
+++ /dev/null
@@ -1,213 +0,0 @@
-/*
- * Copyright (c) 2006-2023, RT-Thread Development Team
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Change Logs:
- * Date Author Notes
- * 2023-04-11 linshire the first version
- */
-
-#include "board.h"
-#include "drv_soft_i2c.h"
-
-#ifdef BSP_USING_SOFT_I2C
-
-#define LOG_TAG "drv.soft_i2c"
-#include <drv_log.h>
-
-#if !defined(BSP_USING_SOFT_I2C1) && !defined(BSP_USING_SOFT_I2C2)
-#error "Please define at least one BSP_USING_SOFT_I2Cx"
-/* this driver can be disabled at menuconfig -> RT-Thread Components -> Device Drivers */
-#endif
-
-static const struct lpc55s69_soft_i2c_config soft_i2c_config[] =
-{
-#ifdef BSP_USING_SOFT_I2C1
- SOFT_I2C1_BUS_CONFIG,
-#endif
-#ifdef BSP_USING_SOFT_I2C2
- SOFT_I2C2_BUS_CONFIG,
-#endif
-};
-
-static struct lpc55s69_i2c i2c_obj[sizeof(soft_i2c_config) / sizeof(soft_i2c_config[0])];
-
-/**
- * This function initializes the i2c pin.
- *
- * @param lpc55s69 i2c dirver class.
- */
-static void lpc55s69_i2c_gpio_init(struct lpc55s69_i2c *i2c)
-{
- struct lpc55s69_soft_i2c_config* cfg = (struct lpc55s69_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.
- *
- * @param lpc55s69 config class.
- * @param The sda pin state.
- */
-static void lpc55s69_set_sda(void *data, rt_int32_t state)
-{
- struct lpc55s69_soft_i2c_config* cfg = (struct lpc55s69_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 lpc55s69 config class.
- * @param The scl pin state.
- */
-static void lpc55s69_set_scl(void *data, rt_int32_t state)
-{
- struct lpc55s69_soft_i2c_config* cfg = (struct lpc55s69_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 lpc55s69_get_sda(void *data)
-{
- struct lpc55s69_soft_i2c_config* cfg = (struct lpc55s69_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 lpc55s69_get_scl(void *data)
-{
- struct lpc55s69_soft_i2c_config* cfg = (struct lpc55s69_soft_i2c_config*)data;
- return rt_pin_read(cfg->scl);
-}
-/**
- * The time delay function.
- *
- * @param microseconds.
- */
-static void lpc55s69_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 lpc55s69_bit_ops_default =
-{
- .data = RT_NULL,
- .set_sda = lpc55s69_set_sda,
- .set_scl = lpc55s69_set_scl,
- .get_sda = lpc55s69_get_sda,
- .get_scl = lpc55s69_get_scl,
- .udelay = lpc55s69_udelay,
- .delay_us = 1,
- .timeout = 100
-};
-
-/**
- * if i2c is locked, this function will unlock it
- *
- * @param lpc55s69 config class
- *
- * @return RT_EOK indicates successful unlock.
- */
-static rt_err_t lpc55s69_i2c_bus_unlock(const struct lpc55s69_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);
- lpc55s69_udelay(100);
- rt_pin_write(cfg->scl, PIN_LOW);
- lpc55s69_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 lpc55s69_i2c); i++)
- {
- i2c_obj[i].ops = lpc55s69_bit_ops_default;
- i2c_obj[i].ops.data = (void*)&soft_i2c_config[i];
- i2c_obj[i].i2c_bus.priv = &i2c_obj[i].ops;
- lpc55s69_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);
- lpc55s69_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_soft_i2c_init);
-
-#endif /* BSP_USING_SOFT_I2C */
diff --git a/bsp/nxp/lpc/lpc55sxx/libraries/drivers/drv_soft_i2c.h b/bsp/nxp/lpc/lpc55sxx/libraries/drivers/drv_soft_i2c.h
deleted file mode 100644
index 41fd652490..0000000000
--- a/bsp/nxp/lpc/lpc55sxx/libraries/drivers/drv_soft_i2c.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 2006-2023, RT-Thread Development Team
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Change Logs:
- * Date Author Notes
- * 2023-04-11 linshrie first version
- */
-
-#ifndef __DRV_I2C__
-#define __DRV_I2C__
-
-#include <rtdevice.h>
-
-/* lpc55s69 config class */
-struct lpc55s69_soft_i2c_config
-{
- rt_uint8_t scl;
- rt_uint8_t sda;
- const char *bus_name;
-};
-/* lpc55s69 i2c dirver class */
-struct lpc55s69_i2c
-{
- struct rt_i2c_bit_ops ops;
- struct rt_i2c_bus_device i2c_bus;
-};
-
-#ifdef BSP_USING_SOFT_I2C1
-#define SOFT_I2C1_BUS_CONFIG \
- { \
- .scl = BSP_SOFT_I2C1_SCL_PIN, \
- .sda = BSP_SOFT_I2C1_SDA_PIN, \
- .bus_name = "si2c1", \
- }
-#endif /*BSP_USING_SOFT_I2C1*/
-
-#ifdef BSP_USING_SOFT_I2C2
-#define SOFT_I2C2_BUS_CONFIG \
- { \
- .scl = BSP_SOFT_I2C2_SCL_PIN, \
- .sda = BSP_SOFT_I2C2_SDA_PIN, \
- .bus_name = "si2c2", \
- }
-#endif /*BSP_USING_SOFT_I2C2*/
-
-int rt_soft_i2c_init(void);
-
-#endif
diff --git a/bsp/nxp/lpc/lpc55sxx/lpc55s69_nxp_evk/.ci/attachconfig/ci.attachconfig.yml b/bsp/nxp/lpc/lpc55sxx/lpc55s69_nxp_evk/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..1e501cb75b
--- /dev/null
+++ b/bsp/nxp/lpc/lpc55sxx/lpc55s69_nxp_evk/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,12 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=16
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=41
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=19
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=43
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
diff --git a/bsp/nxp/lpc/lpc55sxx/lpc55s69_nxp_evk/board/Kconfig b/bsp/nxp/lpc/lpc55sxx/lpc55s69_nxp_evk/board/Kconfig
index 10269eb496..e76b37862f 100644
--- a/bsp/nxp/lpc/lpc55sxx/lpc55s69_nxp_evk/board/Kconfig
+++ b/bsp/nxp/lpc/lpc55sxx/lpc55s69_nxp_evk/board/Kconfig
@@ -118,42 +118,37 @@ menu "On-chip Peripheral Drivers"
endif
menuconfig BSP_USING_SOFT_I2C
- bool "Enable software I2C bus"
- select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
+ bool "Enable software I2C (swi2c)"
default n
-
+ select RT_USING_I2C
+ select RT_USING_SOFT_I2C
if BSP_USING_SOFT_I2C
- config BSP_USING_SOFT_I2C1
- bool "Enable I2C1 Bus (software simulation)"
- default n
- if BSP_USING_SOFT_I2C1
- comment "Notice: num = 32 * PORTx + PINx + 1"
- comment "0_15 --> 16; 1_8 --> 41"
- config BSP_SOFT_I2C1_SCL_PIN
- int "si2c1 SCL pin number"
- default 16
- config BSP_SOFT_I2C1_SDA_PIN
- int "si2c1 SDA pin number"
- default 41
- endif
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 16
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 41
+ endif
- config BSP_USING_SOFT_I2C2
- bool "Enable I2C2 Bus (software simulation)"
- default n
- if BSP_USING_SOFT_I2C2
- comment "Notice: num = 32 * PORTx + PINx + 1"
- comment "0_18 --> 19; 1_10 --> 43"
- config BSP_SOFT_I2C2_SCL_PIN
- int "si2c2 SCL pin number"
- default 19
- config BSP_SOFT_I2C2_SDA_PIN
- int "si2c2 SDA pin number"
- default 43
- endif
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 19
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 43
+ endif
endif
-
menuconfig BSP_USING_SPI
config BSP_USING_SPI
bool "Enable SPI"
@@ -411,4 +406,28 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 16 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 41 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 19 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 43 if RT_USING_SOFT_I2C2
+
endmenu
diff --git a/bsp/nxp/mcx/mcxc/Libraries/drivers/SConscript b/bsp/nxp/mcx/mcxc/Libraries/drivers/SConscript
index 56456e2fec..34b64cb75d 100644
--- a/bsp/nxp/mcx/mcxc/Libraries/drivers/SConscript
+++ b/bsp/nxp/mcx/mcxc/Libraries/drivers/SConscript
@@ -19,9 +19,6 @@ if GetDepend('BSP_USING_SPI'):
if GetDepend('BSP_USING_I2C'):
src += ['drv_i2c.c']
-if GetDepend('BSP_USING_SW_I2C'):
- src += ['drv_soft_i2c.c']
-
if GetDepend('BSP_USING_ADC'):
src += ['drv_adc.c']
diff --git a/bsp/nxp/mcx/mcxn/Libraries/drivers/SConscript b/bsp/nxp/mcx/mcxn/Libraries/drivers/SConscript
index 1dee3db356..d5144b227d 100644
--- a/bsp/nxp/mcx/mcxn/Libraries/drivers/SConscript
+++ b/bsp/nxp/mcx/mcxn/Libraries/drivers/SConscript
@@ -22,9 +22,6 @@ if GetDepend('BSP_USING_SDIO'):
if GetDepend('BSP_USING_I2C'):
src += ['drv_i2c.c']
-if GetDepend('BSP_USING_SW_I2C'):
- src += ['drv_soft_i2c.c']
-
if GetDepend('BSP_USING_ADC'):
src += ['drv_adc.c']
diff --git a/bsp/nxp/mcx/mcxn/Libraries/drivers/drv_soft_i2c.c b/bsp/nxp/mcx/mcxn/Libraries/drivers/drv_soft_i2c.c
deleted file mode 100644
index 5190ee4a59..0000000000
--- a/bsp/nxp/mcx/mcxn/Libraries/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-06-25 Andeyqi the first version
- */
-#include <rtthread.h>
-#include <rthw.h>
-#include <rtdevice.h>
-#include <board.h>
-
-#ifdef BSP_USING_SW_I2C
-
-#define LOG_TAG "drv.i2c"
-#include <rtdbg.h>
-
-/* MCXNXXX config class */
-struct mcxnxxx_soft_i2c_config
-{
- rt_uint8_t scl;
- rt_uint8_t sda;
- const char *bus_name;
-};
-
-/* MCXNXXX i2c dirver class */
-struct mcxnxxx_i2c
-{
- struct rt_i2c_bit_ops ops;
- struct rt_i2c_bus_device i2c2_bus;
-};
-
-#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 = "swi2c0", \
- }
-#endif
-
-static const struct mcxnxxx_soft_i2c_config soft_i2c_config[] =
-{
-#if defined(BSP_USING_SW_I2C0)
- SW_I2C0_BUS_CONFIG,
-#endif
-};
-
-static struct mcxnxxx_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 mcxnxxx_i2c_gpio_init(struct mcxnxxx_i2c *i2c)
-{
- struct mcxnxxx_soft_i2c_config* cfg = (struct mcxnxxx_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);
-}
-
-/**
- * @brief This function sets the sda pin.
- * @param data, state
- * @retval None
- */
-static void mcxnxxx_set_sda(void *data, rt_int32_t state)
-{
- struct mcxnxxx_soft_i2c_config* cfg = (struct mcxnxxx_soft_i2c_config*)data;
-
- 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);
- }
-}
-
-/**
- * @brief This function sets the scl pin.
- * @param data, state
- * @retval None
- */
-static void mcxnxxx_set_scl(void *data, rt_int32_t state)
-{
- struct mcxnxxx_soft_i2c_config* cfg = (struct mcxnxxx_soft_i2c_config*)data;
-
- 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);
- }
-}
-
-/**
- * @brief This function gets the sda pin state.
- * @param data
- * @retval None
- */
-static rt_int32_t mcxnxxx_get_sda(void *data)
-{
- struct mcxnxxx_soft_i2c_config* cfg = (struct mcxnxxx_soft_i2c_config*)data;
-
- rt_pin_mode(cfg->sda, PIN_MODE_INPUT);
-
- return rt_pin_read(cfg->sda);
-}
-
-
-/**
- * @brief This function gets the scl pin state.
- * @param data
- * @retval None
- */
-static rt_int32_t mcxnxxx_get_scl(void *data)
-{
- struct mcxnxxx_soft_i2c_config* cfg = (struct mcxnxxx_soft_i2c_config*)data;
-
- rt_pin_mode(cfg->scl,PIN_MODE_INPUT);
-
- return rt_pin_read(cfg->scl);
-}
-
-/**
- * @brief The time delay function.
- * @param us
- * @retval None
- */
-static void mcxnxxx_udelay(rt_uint32_t us)
-{
- rt_uint32_t frequency = CLOCK_GetCoreSysClkFreq();
-
- int i = (frequency/ 4000000 * us);
- while(i)
- {
- i--;
- }
-}
-
-static const struct rt_i2c_bit_ops mcxnxxx_bit_ops_default =
-{
- .data = RT_NULL,
- .set_sda = mcxnxxx_set_sda,
- .set_scl = mcxnxxx_set_scl,
- .get_sda = mcxnxxx_get_sda,
- .get_scl = mcxnxxx_get_scl,
- .udelay = mcxnxxx_udelay,
- .delay_us = 1,
- .timeout = 100
-};
-
-/**
- * @brief if i2c is locked, this function will unlock it
- * @param cfg
- * @retval RT_EOK indicates successful unlock.
- */
-static rt_err_t mcxnxxx_i2c_bus_unlock(const struct mcxnxxx_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);
- mcxnxxx_udelay(100);
- rt_pin_write(cfg->scl, PIN_LOW);
- mcxnxxx_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_soft_i2c_init(void)
-{
- rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct mcxnxxx_i2c);
- rt_err_t result;
-
- for (int i = 0; i < obj_num; i++)
- {
- i2c_obj[i].ops = mcxnxxx_bit_ops_default;
- i2c_obj[i].ops.data = (void*)&soft_i2c_config[i];
- i2c_obj[i].i2c2_bus.priv = &i2c_obj[i].ops;
- mcxnxxx_i2c_gpio_init(&i2c_obj[i]);
-
- result = rt_i2c_bit_add_bus(&i2c_obj[i].i2c2_bus, soft_i2c_config[i].bus_name);
-
- RT_ASSERT(result == RT_EOK);
-
- mcxnxxx_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_hw_soft_i2c_init);
-
-#endif /* RT_USING_I2C */
diff --git a/bsp/nxp/mcx/mcxn/frdm-mcxn236/.ci/attachconfig/ci.attachconfig.yml b/bsp/nxp/mcx/mcxn/frdm-mcxn236/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..e74cbea5fd
--- /dev/null
+++ b/bsp/nxp/mcx/mcxn/frdm-mcxn236/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C0=y
+ - CONFIG_RT_SOFT_I2C0_SCL_PIN=129
+ - CONFIG_RT_SOFT_I2C0_SDA_PIN=128
+ - CONFIG_RT_SOFT_I2C0_BUS_NAME="swi2c0"
diff --git a/bsp/nxp/mcx/mcxn/frdm-mcxn236/board/Kconfig b/bsp/nxp/mcx/mcxn/frdm-mcxn236/board/Kconfig
index 95d456e625..5d09780f2b 100644
--- a/bsp/nxp/mcx/mcxn/frdm-mcxn236/board/Kconfig
+++ b/bsp/nxp/mcx/mcxn/frdm-mcxn236/board/Kconfig
@@ -66,28 +66,25 @@ menu "On-chip Peripheral Drivers"
default y
endif
- menuconfig BSP_USING_SW_I2C
- bool "Enable I2C BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_SW_I2C
- config BSP_USING_SW_I2C0
- bool "Enable soft I2C0"
- default y
- if BSP_USING_SW_I2C0
- config BSP_SW_I2C0_SCL_PIN
- int "SWI2C0 scl pin number"
- range 0 159
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C0
+ bool "Enable software I2C0 Bus (swi2c0)"
+ default n
+ select RT_USING_SOFT_I2C0
+ if BSP_USING_SOFT_I2C0
+ config RT_SOFT_I2C0_SCL_PIN
+ int "swi2c0 SCL pin number"
default 129
- config BSP_SW_I2C0_SDA_PIN
- int "SWI2C0 sda pin number"
- range 0 159
+ config RT_SOFT_I2C0_SDA_PIN
+ int "swi2c0 SDA pin number"
default 128
- endif
+ endif
endif
-
menuconfig BSP_USING_SPI
config BSP_USING_SPI
bool "Enable SPI"
@@ -237,4 +234,16 @@ menu "Board extended module Drivers"
endif
endmenu
+ config RT_SOFT_I2C0_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C0
+
+ config RT_SOFT_I2C0_SCL_PIN_DEFAULT
+ int
+ default 129 if RT_USING_SOFT_I2C0
+
+ config RT_SOFT_I2C0_SDA_PIN_DEFAULT
+ int
+ default 128 if RT_USING_SOFT_I2C0
+
endmenu
diff --git a/bsp/raspberry-pico/RP2040/.ci/attachconfig/ci.attachconfig.yml b/bsp/raspberry-pico/RP2040/.ci/attachconfig/ci.attachconfig.yml
index e1aa367595..89aed8b014 100644
--- a/bsp/raspberry-pico/RP2040/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/raspberry-pico/RP2040/.ci/attachconfig/ci.attachconfig.yml
@@ -6,7 +6,6 @@ component.cplusplus:
<<: *scons
kconfig:
- CONFIG_RT_USING_CPLUSPLUS=y
-# ------ online-packages CI ------
online-packages.rtduino.core:
<<: *scons
kconfig:
@@ -224,4 +223,14 @@ online-packages.multimedia.lvgl-demo:
<<: *scons
kconfig:
- CONFIG_BSP_USING_LVGL=y
- - CONFIG_BSP_USING_LVGL_DEMO=y \ No newline at end of file
+ - CONFIG_BSP_USING_LVGL_DEMO=y
+
+devices.soft_i2c:
+ <<: *scons
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=2
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=3
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/raspberry-pico/RP2040/board/Kconfig b/bsp/raspberry-pico/RP2040/board/Kconfig
index b1b70a9a38..9df9bf3e2a 100644
--- a/bsp/raspberry-pico/RP2040/board/Kconfig
+++ b/bsp/raspberry-pico/RP2040/board/Kconfig
@@ -129,27 +129,24 @@ menu "On-chip Peripheral Drivers"
endif
menuconfig BSP_USING_SOFT_I2C
- bool "Enable I2C BUS (software simulation)"
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
+ select RT_USING_SOFT_I2C
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
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 2
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 3
+ endif
endif
-
menuconfig BSP_USING_SOFT_SPI
bool "Enable soft SPI BUS"
default n
@@ -684,7 +681,6 @@ menu "On-chip Peripheral Drivers"
menuconfig BSP_USING_I2C
bool "Enable I2C"
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
select RT_USING_PIN
default n
@@ -810,4 +806,16 @@ menu "On-chip Peripheral Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 2 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 3 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/raspberry-pico/RP2350/.ci/attachconfig/ci.attachconfig.yml b/bsp/raspberry-pico/RP2350/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..4298872332
--- /dev/null
+++ b/bsp/raspberry-pico/RP2350/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=2
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=3
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/raspberry-pico/RP2350/board/Kconfig b/bsp/raspberry-pico/RP2350/board/Kconfig
index b1b70a9a38..9df9bf3e2a 100644
--- a/bsp/raspberry-pico/RP2350/board/Kconfig
+++ b/bsp/raspberry-pico/RP2350/board/Kconfig
@@ -129,27 +129,24 @@ menu "On-chip Peripheral Drivers"
endif
menuconfig BSP_USING_SOFT_I2C
- bool "Enable I2C BUS (software simulation)"
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
+ select RT_USING_SOFT_I2C
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
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 2
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 3
+ endif
endif
-
menuconfig BSP_USING_SOFT_SPI
bool "Enable soft SPI BUS"
default n
@@ -684,7 +681,6 @@ menu "On-chip Peripheral Drivers"
menuconfig BSP_USING_I2C
bool "Enable I2C"
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
select RT_USING_PIN
default n
@@ -810,4 +806,16 @@ menu "On-chip Peripheral Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 2 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 3 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/raspberry-pico/libraries/Drivers/SConscript b/bsp/raspberry-pico/libraries/Drivers/SConscript
index 5afbe70b28..20d95d2b14 100644
--- a/bsp/raspberry-pico/libraries/Drivers/SConscript
+++ b/bsp/raspberry-pico/libraries/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/libraries/Drivers/drv_soft_i2c.c b/bsp/raspberry-pico/libraries/Drivers/drv_soft_i2c.c
deleted file mode 100644
index bbda17c61c..0000000000
--- a/bsp/raspberry-pico/libraries/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 <rtdbg.h>
-#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/libraries/Drivers/drv_soft_i2c.h b/bsp/raspberry-pico/libraries/Drivers/drv_soft_i2c.h
deleted file mode 100644
index b5e663b673..0000000000
--- a/bsp/raspberry-pico/libraries/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 <rtdevice.h>
-#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/ra6m3-hmi-board/.ci/attachconfig/attachconfig.yml b/bsp/renesas/ra6m3-hmi-board/.ci/attachconfig/attachconfig.yml
index 6844a3c3e0..2e533fefb9 100644
--- a/bsp/renesas/ra6m3-hmi-board/.ci/attachconfig/attachconfig.yml
+++ b/bsp/renesas/ra6m3-hmi-board/.ci/attachconfig/attachconfig.yml
@@ -14,8 +14,16 @@ devices.gpio:
devices.uart:
kconfig:
- CONFIG_BSP_USING_UART=y
+
devices.soft_i2c:
- kconfig:
- - CONFIG_RT_USING_I2C=y
- - CONFIG_RT_USING_SOFT_I2C=y
- - CONFIG_RT_USING_SOFT_I2C0=y
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C0=y
+ - CONFIG_RT_SOFT_I2C0_SCL_PIN=0x202
+ - CONFIG_RT_SOFT_I2C0_SDA_PIN=0x203
+ - CONFIG_RT_SOFT_I2C0_BUS_NAME="swi2c0"
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=0x202
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=0x203
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/renesas/ra6m3-hmi-board/board/Kconfig b/bsp/renesas/ra6m3-hmi-board/board/Kconfig
index 49d678eac7..ca46d6b09a 100644
--- a/bsp/renesas/ra6m3-hmi-board/board/Kconfig
+++ b/bsp/renesas/ra6m3-hmi-board/board/Kconfig
@@ -14,8 +14,8 @@ menu "Hardware Drivers Config"
select BSP_USING_PWM2
select BSP_USING_PWM8
select RT_USING_I2C
- select RT_USING_SOFT_I2C
- select RT_USING_SOFT_I2C0
+ select BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C0
select BSP_USING_SOFT_SPI
select BSP_USING_SOFT_SPI1
select RTDUINO_USING_WIRE
@@ -72,8 +72,8 @@ menu "Hardware Drivers Config"
select RT_USING_TOUCH
select RT_TOUCH_PIN_IRQ
select RT_USING_I2C
- select RT_USING_SOFT_I2C
- select RT_USING_SOFT_I2C1
+ select BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C1
default n
menuconfig BSP_USING_LVGL
@@ -112,7 +112,32 @@ menu "Hardware Drivers Config"
help
Enable this option to include LVGL stress demo. -- LVGL9.3.x
endif
- endmenu
+
+ config RT_SOFT_I2C0_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C0
+
+ config RT_SOFT_I2C0_SCL_PIN_DEFAULT
+ int
+ default 514 if RT_USING_SOFT_I2C0
+
+ config RT_SOFT_I2C0_SDA_PIN_DEFAULT
+ int
+ default 515 if RT_USING_SOFT_I2C0
+
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 514 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 515 if RT_USING_SOFT_I2C1
+
+endmenu
menu "On-chip Peripheral Drivers"
@@ -218,68 +243,6 @@ menu "Hardware Drivers Config"
endif
endif
- config RT_USING_I2C
- bool
- default n
- 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
- hex "i2c0 scl pin number (hex)"
- range 0x0000 0xFFFF
- default 0x202
- config RT_SOFT_I2C0_SDA_PIN
- hex "i2c0 sda pin number (hex)"
- range 0x0000 0xFFFF
- default 0x203
- config RT_SOFT_I2C0_BUS_NAME
- string "Bus name"
- default "i2c0"
- config RT_SOFT_I2C0_TIMING_DELAY
- int "Timing delay (us)"
- range 0 32767
- default 10
- config RT_SOFT_I2C0_TIMING_TIMEOUT
- int "Timing timeout (tick)"
- range 0 32767
- default 10
- endif
-
- menuconfig RT_USING_SOFT_I2C1
- bool "Enable I2C1 Bus (software simulation)"
- default 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
- hex "i2c1 scl pin number (hex)"
- range 0x0000 0xFFFF
- default 0x202
- config RT_SOFT_I2C1_SDA_PIN
- hex "i2c1 sda pin number (hex)"
- range 0x0000 0xFFFF
- default 0x203
- 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
@@ -710,6 +673,40 @@ menu "Hardware Drivers Config"
endif
endif
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
+ default n
+ select RT_USING_I2C
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C0
+ bool "Enable software I2C0 Bus (swi2c0)"
+ default n
+ select RT_USING_SOFT_I2C0
+ if BSP_USING_SOFT_I2C0
+ config RT_SOFT_I2C0_SCL_PIN
+ int "swi2c0 SCL pin number"
+ default 514
+ config RT_SOFT_I2C0_SDA_PIN
+ int "swi2c0 SDA pin number"
+ default 515
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 514
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 515
+ endif
+ endif
+
+
endmenu
menu "Board extended module Drivers"
diff --git a/bsp/renesas/ra6m3-hmi-board/board/lvgl/lv_port_indev.c b/bsp/renesas/ra6m3-hmi-board/board/lvgl/lv_port_indev.c
index e0af324b7a..b936824166 100644
--- a/bsp/renesas/ra6m3-hmi-board/board/lvgl/lv_port_indev.c
+++ b/bsp/renesas/ra6m3-hmi-board/board/lvgl/lv_port_indev.c
@@ -112,7 +112,7 @@ rt_err_t rt_hw_gt911_register(void)
rt_base_t int_pin = rt_pin_get(INT_PIN);
rt_base_t rst_pin = rt_pin_get(RST_PIN);
- cfg.dev_name = "i2c1";
+ cfg.dev_name = "swi2c1";
cfg.irq_pin.pin = int_pin;
cfg.irq_pin.mode = PIN_MODE_INPUT_PULLDOWN;
cfg.user_data = &rst_pin;
diff --git a/bsp/renesas/ra6m3-hmi-board/board/rtduino/arduino_pinout/pins_arduino.c b/bsp/renesas/ra6m3-hmi-board/board/rtduino/arduino_pinout/pins_arduino.c
index 6982913435..ffa06c9f0e 100644
--- a/bsp/renesas/ra6m3-hmi-board/board/rtduino/arduino_pinout/pins_arduino.c
+++ b/bsp/renesas/ra6m3-hmi-board/board/rtduino/arduino_pinout/pins_arduino.c
@@ -22,28 +22,27 @@
* Analog pins MUST give the device name and channel(ADC, PWM or DAC).
* Arduino Pin must keep in sequence.
*/
-const pin_map_t pin_map_table[]=
-{
- {D0, BSP_IO_PORT_02_PIN_06, "uart4"}, /* Serial4-RX */
- {D1, BSP_IO_PORT_02_PIN_05, "uart4"}, /* Serial4-TX */
- {D2, BSP_IO_PORT_00_PIN_08},
- {D3, BSP_IO_PORT_05_PIN_06},
- {D4, BSP_IO_PORT_06_PIN_03},
- {D5, BSP_IO_PORT_06_PIN_04, "pwm8", 0},
- {D6, BSP_IO_PORT_06_PIN_05, "pwm8", 0},
- {D7, BSP_IO_PORT_02_PIN_08},
- {D8, BSP_IO_PORT_02_PIN_07},
- {D9, BSP_IO_PORT_00_PIN_09},
- {D10, BSP_IO_PORT_07_PIN_12, "pwm2", 0}, /* PWM */
- {D11, BSP_IO_PORT_05_PIN_12, "pwm0", 0}, /* PWM */
- {D12, BSP_IO_PORT_05_PIN_11},
- {D13, BSP_IO_PORT_02_PIN_04},
- {D14, BSP_IO_PORT_02_PIN_03, "i2c0"}, /* I2C-SDA (Soft Wire) */
- {D15, BSP_IO_PORT_02_PIN_02, "i2c0"}, /* I2C-SCL (Soft Wire) */
- {A0, BSP_IO_PORT_00_PIN_00, "adc0", 0}, /* ADC */
- {A1, BSP_IO_PORT_00_PIN_01, "adc0", 1}, /* ADC */
- {A2, BSP_IO_PORT_00_PIN_02, "adc0", 2}, /* ADC */
- {A3, BSP_IO_PORT_00_PIN_03, "adc0", 7}, /* ADC */
- {A4, BSP_IO_PORT_05_PIN_08, "adc0", 20}, /* ADC */
- {A5, BSP_IO_PORT_00_PIN_14, "adc0", 5} /* ADC */
+const pin_map_t pin_map_table[] = {
+ { D0, BSP_IO_PORT_02_PIN_06, "uart4" }, /* Serial4-RX */
+ { D1, BSP_IO_PORT_02_PIN_05, "uart4" }, /* Serial4-TX */
+ { D2, BSP_IO_PORT_00_PIN_08 },
+ { D3, BSP_IO_PORT_05_PIN_06 },
+ { D4, BSP_IO_PORT_06_PIN_03 },
+ { D5, BSP_IO_PORT_06_PIN_04, "pwm8", 0 },
+ { D6, BSP_IO_PORT_06_PIN_05, "pwm8", 0 },
+ { D7, BSP_IO_PORT_02_PIN_08 },
+ { D8, BSP_IO_PORT_02_PIN_07 },
+ { D9, BSP_IO_PORT_00_PIN_09 },
+ { D10, BSP_IO_PORT_07_PIN_12, "pwm2", 0 }, /* PWM */
+ { D11, BSP_IO_PORT_05_PIN_12, "pwm0", 0 }, /* PWM */
+ { D12, BSP_IO_PORT_05_PIN_11 },
+ { D13, BSP_IO_PORT_02_PIN_04 },
+ { D14, BSP_IO_PORT_02_PIN_03, "swi2c0" }, /* I2C-SDA (Soft Wire) */
+ { D15, BSP_IO_PORT_02_PIN_02, "swi2c0" }, /* I2C-SCL (Soft Wire) */
+ { A0, BSP_IO_PORT_00_PIN_00, "adc0", 0 }, /* ADC */
+ { A1, BSP_IO_PORT_00_PIN_01, "adc0", 1 }, /* ADC */
+ { A2, BSP_IO_PORT_00_PIN_02, "adc0", 2 }, /* ADC */
+ { A3, BSP_IO_PORT_00_PIN_03, "adc0", 7 }, /* ADC */
+ { A4, BSP_IO_PORT_05_PIN_08, "adc0", 20 }, /* ADC */
+ { A5, BSP_IO_PORT_00_PIN_14, "adc0", 5 } /* ADC */
};
diff --git a/bsp/renesas/ra6m3-hmi-board/board/rtduino/arduino_pinout/pins_arduino.h b/bsp/renesas/ra6m3-hmi-board/board/rtduino/arduino_pinout/pins_arduino.h
index 72ec3eb9f1..510b26e963 100644
--- a/bsp/renesas/ra6m3-hmi-board/board/rtduino/arduino_pinout/pins_arduino.h
+++ b/bsp/renesas/ra6m3-hmi-board/board/rtduino/arduino_pinout/pins_arduino.h
@@ -39,8 +39,8 @@
#define F_CPU 120000000L /* CPU:120MHz */
-/* i2c0 : P203-SDA P202-SCL */
-#define RTDUINO_DEFAULT_IIC_BUS_NAME "i2c0"
+/* swi2c0 : P203-SDA P202-SCL */
+#define RTDUINO_DEFAULT_IIC_BUS_NAME "swi2c0"
/* Serial4(uart4) : P205-TX P206-RX */
#define RTDUINO_SERIAL2_DEVICE_NAME "uart4"
diff --git a/bsp/renesas/ra8p1-titan-board/.ci/attachconfig/attachconfig.yml b/bsp/renesas/ra8p1-titan-board/.ci/attachconfig/attachconfig.yml
index 56cd5ad1a7..01cc75d8b2 100644
--- a/bsp/renesas/ra8p1-titan-board/.ci/attachconfig/attachconfig.yml
+++ b/bsp/renesas/ra8p1-titan-board/.ci/attachconfig/attachconfig.yml
@@ -39,6 +39,15 @@ devices.rtc:
kconfig:
- CONFIG_BSP_USING_ONCHIP_RTC=y
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=0x050C
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=0x050B
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+
# ------ utest CI ------
utest.pin:
kconfig:
diff --git a/bsp/renesas/ra8p1-titan-board/board/Kconfig b/bsp/renesas/ra8p1-titan-board/board/Kconfig
index 7d1e754f49..800f8e0e6b 100644
--- a/bsp/renesas/ra8p1-titan-board/board/Kconfig
+++ b/bsp/renesas/ra8p1-titan-board/board/Kconfig
@@ -586,28 +586,24 @@ menu "Hardware Drivers Config"
endif
menuconfig BSP_USING_SOFT_I2C
- bool "Enable software I2C bus"
- select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
+ bool "Enable software I2C (swi2c)"
default n
+ select RT_USING_I2C
+ select RT_USING_SOFT_I2C
if 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
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 1292
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 1291
+ endif
endif
-
menuconfig BSP_USING_SDHI
bool "Enable SDHI"
default n
@@ -750,8 +746,8 @@ menu "Hardware Drivers Config"
bool "Enable ceu camera driver"
default n
select RT_USING_I2C
- select BSP_USING_I2C
- select BSP_USING_I2C1
+ select BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C1
if BSP_USING_CEU_CAMERA
menu "Camera Pins Configure"
@@ -766,7 +762,7 @@ menu "Hardware Drivers Config"
config SENSOR_BUS_NAME
string "Sensor I2C Bus Name"
depends on RT_USING_I2C
- default "i2c1"
+ default "swi2c1"
config SENSOR_MT9V034
int "Sensor support MT9V034"
@@ -802,6 +798,18 @@ menu "Hardware Drivers Config"
default 0
endif
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 1292 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 1291 if RT_USING_SOFT_I2C1
+
config BSP_USING_G2D
bool
default n
@@ -851,4 +859,5 @@ menu "Hardware Drivers Config"
default 0x0303
endif
endmenu
+
endmenu
diff --git a/bsp/renesas/rzn2l_etherkit/.ci/attachconfig/ci.attachconfig.yml b/bsp/renesas/rzn2l_etherkit/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..8e4f07c856
--- /dev/null
+++ b/bsp/renesas/rzn2l_etherkit/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=0x0B03
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=0x050E
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/renesas/rzn2l_etherkit/board/Kconfig b/bsp/renesas/rzn2l_etherkit/board/Kconfig
index e4cff33116..e7d9450ce8 100644
--- a/bsp/renesas/rzn2l_etherkit/board/Kconfig
+++ b/bsp/renesas/rzn2l_etherkit/board/Kconfig
@@ -445,7 +445,6 @@ menu "Hardware Drivers Config"
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_HW_I2C
@@ -461,23 +460,26 @@ 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
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
+ default n
+ select RT_USING_I2C
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 0x0B03
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 0x050E
+ endif
+ endif
endif
-
menuconfig BSP_USING_SPI
bool "Enable SPI BUS"
default n
@@ -562,4 +564,16 @@ menu "Hardware Drivers Config"
default 0x1706
endif
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 0x0B03 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 0x050E if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/renesas/rzn2l_rsk/.ci/attachconfig/ci.attachconfig.yml b/bsp/renesas/rzn2l_rsk/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..8e4f07c856
--- /dev/null
+++ b/bsp/renesas/rzn2l_rsk/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=0x0B03
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=0x050E
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/renesas/rzn2l_rsk/board/Kconfig b/bsp/renesas/rzn2l_rsk/board/Kconfig
index 9060c7c18d..270259d304 100644
--- a/bsp/renesas/rzn2l_rsk/board/Kconfig
+++ b/bsp/renesas/rzn2l_rsk/board/Kconfig
@@ -84,7 +84,6 @@ menu "Hardware Drivers Config"
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_HW_I2C
@@ -100,23 +99,26 @@ 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
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
+ default n
+ select RT_USING_I2C
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 0x0B03
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 0x050E
+ endif
+ endif
endif
-
menuconfig BSP_USING_SPI
bool "Enable SPI BUS"
default n
@@ -191,4 +193,16 @@ menu "Hardware Drivers Config"
default 0x1706
endif
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 0x0B03 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 0x050E if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/stm32/libraries/HAL_Drivers/drivers/SConscript b/bsp/stm32/libraries/HAL_Drivers/drivers/SConscript
index be974a8bc8..458940a6e6 100644
--- a/bsp/stm32/libraries/HAL_Drivers/drivers/SConscript
+++ b/bsp/stm32/libraries/HAL_Drivers/drivers/SConscript
@@ -35,10 +35,6 @@ if GetDepend(['RT_USING_QSPI']):
if GetDepend('RT_USING_SOFT_SPI'):
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'):
src += ['drv_hard_i2c.c']
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 37ffde2d40..0000000000
--- 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 <drv_log.h>
-
-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 40c77f566d..0000000000
--- 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 <rtthread.h>
-#include <rthw.h>
-#include <rtdevice.h>
-
-/* 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/libraries/templates/stm32l1xx/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/libraries/templates/stm32l1xx/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..d626be14a5
--- /dev/null
+++ b/bsp/stm32/libraries/templates/stm32l1xx/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/stm32/libraries/templates/stm32l1xx/board/Kconfig b/bsp/stm32/libraries/templates/stm32l1xx/board/Kconfig
index d95f206f82..cb0593c180 100644
--- a/bsp/stm32/libraries/templates/stm32l1xx/board/Kconfig
+++ b/bsp/stm32/libraries/templates/stm32l1xx/board/Kconfig
@@ -20,8 +20,10 @@ menu "Onboard Peripheral Drivers"
select BSP_USING_USBD
default n
config BSP_USING_EEPROM
- bool "Enable I2C EEPROM (i2c1)"
- select BSP_USING_I2C1
+ bool "Enable I2C EEPROM (swi2c1)"
+ select RT_USING_I2C
+ select BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C1
default n
config BSP_USING_SPI_FLASH
@@ -38,6 +40,18 @@ menu "Onboard Peripheral Drivers"
select BSP_USING_ADC1
default n
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
endmenu
menu "On-chip Peripheral Drivers"
@@ -157,22 +171,24 @@ menu "On-chip Peripheral Drivers"
select BSP_SPI2_TX_USING_DMA
default n
endif
-
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
endif
menuconfig BSP_USING_ADC
@@ -219,4 +235,5 @@ menu "Board extended module Drivers"
endmenu
+
endmenu
diff --git a/bsp/stm32/libraries/templates/stm32wbxx/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/libraries/templates/stm32wbxx/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..7dc954e324
--- /dev/null
+++ b/bsp/stm32/libraries/templates/stm32wbxx/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,12 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=24
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=25
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C3=y
+ - CONFIG_RT_SOFT_I2C3_SCL_PIN=29
+ - CONFIG_RT_SOFT_I2C3_SDA_PIN=30
+ - CONFIG_RT_SOFT_I2C3_BUS_NAME="swi2c3"
diff --git a/bsp/stm32/libraries/templates/stm32wbxx/board/Kconfig b/bsp/stm32/libraries/templates/stm32wbxx/board/Kconfig
index 1287e9a63f..6d30a2912d 100644
--- a/bsp/stm32/libraries/templates/stm32wbxx/board/Kconfig
+++ b/bsp/stm32/libraries/templates/stm32wbxx/board/Kconfig
@@ -82,44 +82,38 @@ menu "On-chip Peripheral Drivers"
- menuconfig BSP_USING_I2C
- bool "Enable I2C BUS"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- 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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 24
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ 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
+ menuconfig BSP_USING_SOFT_I2C3
+ bool "Enable software I2C3 Bus (swi2c3)"
+ default n
+ select RT_USING_SOFT_I2C3
+ if BSP_USING_SOFT_I2C3
+ config RT_SOFT_I2C3_SCL_PIN
+ int "swi2c3 SCL pin number"
+ default 29
+ config RT_SOFT_I2C3_SDA_PIN
+ int "swi2c3 SDA pin number"
+ default 30
+ endif
endif
-
menuconfig BSP_USING_TIM
bool "Enable timer"
default n
@@ -170,4 +164,28 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 24 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 25 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C3_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SCL_PIN_DEFAULT
+ int
+ default 29 if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SDA_PIN_DEFAULT
+ int
+ default 30 if RT_USING_SOFT_I2C3
+
endmenu
diff --git a/bsp/stm32/stm32f072-st-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f072-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
index 2a7fcdfd27..a863524b07 100644
--- a/bsp/stm32/stm32f072-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/stm32/stm32f072-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
@@ -11,4 +11,14 @@ nano:
peripheral.arduino:
<<: *scons
kconfig:
- - CONFIG_BSP_USING_ARDUINO=y
+ - CONFIG_BSP_USING_ARDUINO=y
+
+devices.soft_i2c:
+ <<: *scons
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=24
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=25
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/stm32/stm32f072-st-nucleo/applications/arduino_pinout/pins_arduino.c b/bsp/stm32/stm32f072-st-nucleo/applications/arduino_pinout/pins_arduino.c
index d3fdecd0b0..a671cafb02 100644
--- a/bsp/stm32/stm32f072-st-nucleo/applications/arduino_pinout/pins_arduino.c
+++ b/bsp/stm32/stm32f072-st-nucleo/applications/arduino_pinout/pins_arduino.c
@@ -23,33 +23,32 @@
* Analog pins MUST give the device name and channel(ADC, PWM or DAC).
* Arduino Pin must keep in sequence.
*/
-const pin_map_t pin_map_table[]=
-{
- {D0, GET_PIN(A,3), "uart2"}, /* Serial-Rx */
- {D1, GET_PIN(A,2), "uart2"}, /* Serial-Tx */
- {D2, GET_PIN(A,10)},
- {D3, GET_PIN(B,3), "pwm2", 2}, /* PWM */
- {D4, GET_PIN(B,5)},
- {D5, GET_PIN(B,4), "pwm3", 1}, /* PWM */
- {D6, GET_PIN(B,10), "pwm2", 3}, /* PWM */
- {D7, GET_PIN(A,8)},
- {D8, GET_PIN(A,9)},
- {D9, GET_PIN(C,7), "pwm3", 2}, /* PWM */
- {D10, GET_PIN(B,6), "pwm16", -1}, /* PWM */
- {D11, GET_PIN(A,7), "pwm17", 1}, /* PWM */
- {D12, GET_PIN(A,6)},
- {D13, GET_PIN(A,5)}, /* LED_BUILTIN */
- {D14, GET_PIN(B,9), "i2c1"}, /* I2C-SDA (Wire) */
- {D15, GET_PIN(B,8), "i2c1"}, /* I2C-SCL (Wire) */
- {D16, GET_PIN(C,13)}, /* USER KEY */
- {A0, GET_PIN(A,0), "adc1", 0}, /* ADC */
- {A1, GET_PIN(A,1), "adc1", 1}, /* ADC */
- {A2, GET_PIN(A,4), "adc1", 4}, /* ADC */
- {A3, GET_PIN(B,0), "adc1", 8}, /* ADC */
- {A4, GET_PIN(C,1), "adc1", 11}, /* ADC */
- {A5, GET_PIN(C,0), "adc1", 10}, /* ADC */
- {A6, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF}, /* ADC, On-Chip: internal reference voltage */
- {A7, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER}, /* ADC, On-Chip: internal temperature sensor */
+const pin_map_t pin_map_table[] = {
+ { D0, GET_PIN(A, 3), "uart2" }, /* Serial-Rx */
+ { D1, GET_PIN(A, 2), "uart2" }, /* Serial-Tx */
+ { D2, GET_PIN(A, 10) },
+ { D3, GET_PIN(B, 3), "pwm2", 2 }, /* PWM */
+ { D4, GET_PIN(B, 5) },
+ { D5, GET_PIN(B, 4), "pwm3", 1 }, /* PWM */
+ { D6, GET_PIN(B, 10), "pwm2", 3 }, /* PWM */
+ { D7, GET_PIN(A, 8) },
+ { D8, GET_PIN(A, 9) },
+ { D9, GET_PIN(C, 7), "pwm3", 2 }, /* PWM */
+ { D10, GET_PIN(B, 6), "pwm16", -1 }, /* PWM */
+ { D11, GET_PIN(A, 7), "pwm17", 1 }, /* PWM */
+ { D12, GET_PIN(A, 6) },
+ { D13, GET_PIN(A, 5) }, /* LED_BUILTIN */
+ { D14, GET_PIN(B, 9), "swi2c1" }, /* I2C-SDA (Wire) */
+ { D15, GET_PIN(B, 8), "swi2c1" }, /* I2C-SCL (Wire) */
+ { D16, GET_PIN(C, 13) }, /* USER KEY */
+ { A0, GET_PIN(A, 0), "adc1", 0 }, /* ADC */
+ { A1, GET_PIN(A, 1), "adc1", 1 }, /* ADC */
+ { A2, GET_PIN(A, 4), "adc1", 4 }, /* ADC */
+ { A3, GET_PIN(B, 0), "adc1", 8 }, /* ADC */
+ { A4, GET_PIN(C, 1), "adc1", 11 }, /* ADC */
+ { A5, GET_PIN(C, 0), "adc1", 10 }, /* ADC */
+ { A6, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF }, /* ADC, On-Chip: internal reference voltage */
+ { A7, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER }, /* ADC, On-Chip: internal temperature sensor */
};
#ifdef RTDUINO_USING_SPI
diff --git a/bsp/stm32/stm32f072-st-nucleo/applications/arduino_pinout/pins_arduino.h b/bsp/stm32/stm32f072-st-nucleo/applications/arduino_pinout/pins_arduino.h
index aff1e18c22..00fac8c150 100644
--- a/bsp/stm32/stm32f072-st-nucleo/applications/arduino_pinout/pins_arduino.h
+++ b/bsp/stm32/stm32f072-st-nucleo/applications/arduino_pinout/pins_arduino.h
@@ -44,8 +44,8 @@
#define LED_BUILTIN D13 /* Default Built-in LED */
-/* i2c1 - PB9-SDA PB8-SCL */
-#define RTDUINO_DEFAULT_IIC_BUS_NAME "i2c1"
+/* swi2c1 - PB9-SDA PB8-SCL */
+#define RTDUINO_DEFAULT_IIC_BUS_NAME "swi2c1"
#define SS D10
#define RTDUINO_DEFAULT_SPI_BUS_NAME "spi1"
diff --git a/bsp/stm32/stm32f072-st-nucleo/board/Kconfig b/bsp/stm32/stm32f072-st-nucleo/board/Kconfig
index 69900f4061..7351ebe243 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 BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C1
select BSP_USING_SPI
select BSP_USING_SPI1
select BSP_SPI1_TX_USING_DMA
@@ -36,6 +37,19 @@ menu "Onboard Peripheral Drivers"
imply RTDUINO_USING_SERVO
default n
+
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 24 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 25 if RT_USING_SOFT_I2C1
+
endmenu
menu "On-chip Peripheral Drivers"
@@ -193,30 +207,25 @@ menu "On-chip Peripheral Drivers"
endif
endif
- menuconfig BSP_USING_I2C
- bool "Enable I2C BUS"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
-
- if BSP_USING_I2C
- config BSP_USING_I2C1
- bool "Enable I2C1 Bus (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
- endif
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 24
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 25
+ endif
endif
-
source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig"
endmenu
diff --git a/bsp/stm32/stm32f091-st-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f091-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
index e4646070a9..5f0a7623e1 100644
--- a/bsp/stm32/stm32f091-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/stm32/stm32f091-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
@@ -8,3 +8,12 @@ nano:
kconfig:
- CONFIG_RT_USING_NANO=y
+devices.soft_i2c:
+ <<: *scons
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=34
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=35
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/stm32/stm32f091-st-nucleo/board/Kconfig b/bsp/stm32/stm32f091-st-nucleo/board/Kconfig
index d5ea59755e..42c5da149f 100644
--- a/bsp/stm32/stm32f091-st-nucleo/board/Kconfig
+++ b/bsp/stm32/stm32f091-st-nucleo/board/Kconfig
@@ -117,23 +117,25 @@ menu "On-chip Peripheral Drivers"
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 34
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 35
+ endif
endif
-
menuconfig BSP_USING_TIM
bool "Enable timer"
default n
@@ -211,4 +213,16 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 34 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 35 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/stm32/stm32f103-100ask-pro/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f103-100ask-pro/.ci/attachconfig/ci.attachconfig.yml
index e4646070a9..bafb8dec3c 100644
--- a/bsp/stm32/stm32f103-100ask-pro/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/stm32/stm32f103-100ask-pro/.ci/attachconfig/ci.attachconfig.yml
@@ -8,3 +8,12 @@ nano:
kconfig:
- CONFIG_RT_USING_NANO=y
+devices.soft_i2c:
+ <<: *scons
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/stm32/stm32f103-100ask-pro/board/Kconfig b/bsp/stm32/stm32f103-100ask-pro/board/Kconfig
index 65919379fc..62dd05e54c 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 (swi2c1)"
+ select RT_USING_I2C
+ select BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C1
default n
config BSP_USING_EXT_SRAM
@@ -43,6 +45,18 @@ menu "Onboard Peripheral Drivers"
help
Chip name is IS62WV51216BLL, 1Mbytes static RAMs organized as 512K words by 16bits.
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
endmenu
menu "On-chip Peripheral Drivers"
@@ -217,23 +231,25 @@ menu "On-chip Peripheral Drivers"
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
endif
-
menuconfig BSP_USING_TIM
bool "Enable timer"
default n
@@ -292,4 +308,5 @@ menu "Board extended module Drivers"
endmenu
+
endmenu
diff --git a/bsp/stm32/stm32f103-atk-nano/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f103-atk-nano/.ci/attachconfig/ci.attachconfig.yml
index e4646070a9..bafb8dec3c 100644
--- a/bsp/stm32/stm32f103-atk-nano/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/stm32/stm32f103-atk-nano/.ci/attachconfig/ci.attachconfig.yml
@@ -8,3 +8,12 @@ nano:
kconfig:
- CONFIG_RT_USING_NANO=y
+devices.soft_i2c:
+ <<: *scons
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/stm32/stm32f103-atk-nano/board/Kconfig b/bsp/stm32/stm32f103-atk-nano/board/Kconfig
index 282086aecd..ea7b185e36 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 (swi2c1)"
+ select RT_USING_I2C
+ select BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C1
default n
config BSP_USING_SPI_FLASH
@@ -27,6 +29,18 @@ menu "Onboard Peripheral Drivers"
select BSP_USING_ADC1
default n
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
endmenu
menu "On-chip Peripheral Drivers"
@@ -218,22 +232,24 @@ menu "On-chip Peripheral Drivers"
select BSP_SPI2_TX_USING_DMA
default n
endif
-
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
endif
menuconfig BSP_USING_ADC
@@ -280,4 +296,5 @@ menu "Board extended module Drivers"
endmenu
+
endmenu
diff --git a/bsp/stm32/stm32f103-atk-warshipv3/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f103-atk-warshipv3/.ci/attachconfig/ci.attachconfig.yml
index e4646070a9..bafb8dec3c 100644
--- a/bsp/stm32/stm32f103-atk-warshipv3/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/stm32/stm32f103-atk-warshipv3/.ci/attachconfig/ci.attachconfig.yml
@@ -8,3 +8,12 @@ nano:
kconfig:
- CONFIG_RT_USING_NANO=y
+devices.soft_i2c:
+ <<: *scons
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/stm32/stm32f103-atk-warshipv3/board/Kconfig b/bsp/stm32/stm32f103-atk-warshipv3/board/Kconfig
index 0d7330f082..8976d2a742 100644
--- a/bsp/stm32/stm32f103-atk-warshipv3/board/Kconfig
+++ b/bsp/stm32/stm32f103-atk-warshipv3/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 (swi2c1)"
+ select RT_USING_I2C
+ select BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C1
default n
config BSP_USING_SPI_FLASH
@@ -40,6 +42,18 @@ menu "Onboard Peripheral Drivers"
select RT_USING_DFS_ELMFAT
default n
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
endmenu
menu "On-chip Peripheral Drivers"
@@ -232,23 +246,25 @@ menu "On-chip Peripheral Drivers"
default n
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
endif
-
menuconfig BSP_USING_ADC
bool "Enable ADC"
default n
@@ -320,4 +336,5 @@ menu "Board extended module Drivers"
endmenu
+
endmenu
diff --git a/bsp/stm32/stm32f103-blue-pill/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f103-blue-pill/.ci/attachconfig/ci.attachconfig.yml
index bec3d8400c..597afb24a5 100644
--- a/bsp/stm32/stm32f103-blue-pill/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/stm32/stm32f103-blue-pill/.ci/attachconfig/ci.attachconfig.yml
@@ -25,7 +25,12 @@ devices.uart1:
devices.i2c1:
<<: *scons
kconfig:
- - CONFIG_BSP_USING_I2C1=y
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=24
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=25
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
devices.pwm2:
<<: *scons
kconfig:
@@ -41,4 +46,4 @@ devices.adc:
<<: *scons
kconfig:
- CONFIG_BSP_USING_ADC=y
- - CONFIG_BSP_USING_ADC1=y \ No newline at end of file
+ - CONFIG_BSP_USING_ADC1=y
diff --git a/bsp/stm32/stm32f103-blue-pill/applications/arduino_pinout/pins_arduino.c b/bsp/stm32/stm32f103-blue-pill/applications/arduino_pinout/pins_arduino.c
index 267d7d9e29..ec83a53468 100644
--- a/bsp/stm32/stm32f103-blue-pill/applications/arduino_pinout/pins_arduino.c
+++ b/bsp/stm32/stm32f103-blue-pill/applications/arduino_pinout/pins_arduino.c
@@ -19,40 +19,39 @@
* Analog pins MUST give the device name and channel(ADC, PWM or DAC).
* Arduino Pin must keep in sequence.
*/
-const pin_map_t pin_map_table[]=
-{
- {D0, GET_PIN(B,7)},
- {D1, GET_PIN(B,6)},
- {D2, GET_PIN(B,5), "pwm3", 2}, /* PWM */
- {D3, GET_PIN(B,4), "pwm3", 1}, /* PWM */
- {D4, GET_PIN(B,3), "pwm2", 2}, /* PWM */
- {D5, GET_PIN(A,15), "pwm2", 1}, /* PWM */
- {D6, GET_PIN(A,8)},
- {D7, GET_PIN(B,12)}, /* SPI-SS */
- {D8, GET_PIN(C,13)}, /* LED_BUILTIN */
- {D9, GET_PIN(C,14)},
- {D10, GET_PIN(C,15)},
- {D11, GET_PIN(A,0)},
- {D12, GET_PIN(B,0), "pwm3", 3}, /* PWM */
- {D13, GET_PIN(B,1), "pwm3", 4}, /* PWM */
- {D14, GET_PIN(B,9), "i2c1"}, /* I2C-SDA (Wire) */
- {D15, GET_PIN(B,8), "i2c1"}, /* I2C-SCL (Wire) */
- {D16, GET_PIN(A,12), "usb"}, /* SerialUSB */
- {D17, GET_PIN(A,11), "usb"}, /* SerialUSB */
- {D18, GET_PIN(A,10), "uart1"}, /* Serial-Rx */
- {D19, GET_PIN(A,9), "uart1"}, /* Serial-Tx */
- {D20, GET_PIN(A,2), "uart2"}, /* Serial2-Tx */
- {D21, GET_PIN(A,3), "uart2"}, /* Serial2-Rx */
- {D22, GET_PIN(B,10), "uart3"}, /* Serial3-Tx */
- {D23, GET_PIN(B,11), "uart3"}, /* Serial3-Rx */
- {D24, GET_PIN(B,15), "spi2"}, /* SPI-MOSI */
- {D25, GET_PIN(B,14), "spi2"}, /* SPI-MISO */
- {D26, GET_PIN(B,13), "spi2"}, /* SPI-SCK */
- {A0, GET_PIN(A,1), "adc1", 1}, /* ADC */
- {A1, GET_PIN(A,4), "adc1", 4}, /* ADC */
- {A2, GET_PIN(A,5), "adc1", 5}, /* ADC */
- {A3, GET_PIN(A,6), "adc1", 6}, /* ADC */
- {A4, GET_PIN(A,7), "adc1", 7}, /* ADC */
- {A5, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF}, /* ADC, On-Chip: internal reference voltage */
- {A6, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER}, /* ADC, On-Chip: internal temperature sensor */
+const pin_map_t pin_map_table[] = {
+ { D0, GET_PIN(B, 7) },
+ { D1, GET_PIN(B, 6) },
+ { D2, GET_PIN(B, 5), "pwm3", 2 }, /* PWM */
+ { D3, GET_PIN(B, 4), "pwm3", 1 }, /* PWM */
+ { D4, GET_PIN(B, 3), "pwm2", 2 }, /* PWM */
+ { D5, GET_PIN(A, 15), "pwm2", 1 }, /* PWM */
+ { D6, GET_PIN(A, 8) },
+ { D7, GET_PIN(B, 12) }, /* SPI-SS */
+ { D8, GET_PIN(C, 13) }, /* LED_BUILTIN */
+ { D9, GET_PIN(C, 14) },
+ { D10, GET_PIN(C, 15) },
+ { D11, GET_PIN(A, 0) },
+ { D12, GET_PIN(B, 0), "pwm3", 3 }, /* PWM */
+ { D13, GET_PIN(B, 1), "pwm3", 4 }, /* PWM */
+ { D14, GET_PIN(B, 9), "swi2c1" }, /* I2C-SDA (Wire) */
+ { D15, GET_PIN(B, 8), "swi2c1" }, /* I2C-SCL (Wire) */
+ { D16, GET_PIN(A, 12), "usb" }, /* SerialUSB */
+ { D17, GET_PIN(A, 11), "usb" }, /* SerialUSB */
+ { D18, GET_PIN(A, 10), "uart1" }, /* Serial-Rx */
+ { D19, GET_PIN(A, 9), "uart1" }, /* Serial-Tx */
+ { D20, GET_PIN(A, 2), "uart2" }, /* Serial2-Tx */
+ { D21, GET_PIN(A, 3), "uart2" }, /* Serial2-Rx */
+ { D22, GET_PIN(B, 10), "uart3" }, /* Serial3-Tx */
+ { D23, GET_PIN(B, 11), "uart3" }, /* Serial3-Rx */
+ { D24, GET_PIN(B, 15), "spi2" }, /* SPI-MOSI */
+ { D25, GET_PIN(B, 14), "spi2" }, /* SPI-MISO */
+ { D26, GET_PIN(B, 13), "spi2" }, /* SPI-SCK */
+ { A0, GET_PIN(A, 1), "adc1", 1 }, /* ADC */
+ { A1, GET_PIN(A, 4), "adc1", 4 }, /* ADC */
+ { A2, GET_PIN(A, 5), "adc1", 5 }, /* ADC */
+ { A3, GET_PIN(A, 6), "adc1", 6 }, /* ADC */
+ { A4, GET_PIN(A, 7), "adc1", 7 }, /* ADC */
+ { A5, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF }, /* ADC, On-Chip: internal reference voltage */
+ { A6, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER }, /* ADC, On-Chip: internal temperature sensor */
};
diff --git a/bsp/stm32/stm32f103-blue-pill/applications/arduino_pinout/pins_arduino.h b/bsp/stm32/stm32f103-blue-pill/applications/arduino_pinout/pins_arduino.h
index 09aced045a..e680e3d70f 100644
--- a/bsp/stm32/stm32f103-blue-pill/applications/arduino_pinout/pins_arduino.h
+++ b/bsp/stm32/stm32f103-blue-pill/applications/arduino_pinout/pins_arduino.h
@@ -53,8 +53,8 @@
#define LED_BUILTIN D8 /* Default Built-in LED */
-/* i2c1 : PB9-SDA PB8-SCL */
-#define RTDUINO_DEFAULT_IIC_BUS_NAME "i2c1"
+/* swi2c1 : PB9-SDA PB8-SCL */
+#define RTDUINO_DEFAULT_IIC_BUS_NAME "swi2c1"
/* spi2 : PB13-SCK PB14-MISO PB15-MOSI */
#define SS D7 /* Chip select pin of default spi */
diff --git a/bsp/stm32/stm32f103-blue-pill/board/Kconfig b/bsp/stm32/stm32f103-blue-pill/board/Kconfig
index 0c359e8e79..a3cccaff9d 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 BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C1
select BSP_USING_SPI
select BSP_USING_SPI2
# select BSP_SPI2_TX_USING_DMA
@@ -37,6 +38,19 @@ menu "Onboard Peripheral Drivers"
imply RTDUINO_USING_SERVO
default n
+
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 24 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 25 if RT_USING_SOFT_I2C1
+
endmenu
menu "On-chip Peripheral Drivers"
@@ -156,23 +170,25 @@ menu "On-chip Peripheral Drivers"
endif
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 24
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 25
+ endif
endif
-
menuconfig BSP_USING_PWM
bool "Enable PWM"
default n
@@ -275,4 +291,5 @@ menu "Board extended module Drivers"
endmenu
+
endmenu
diff --git a/bsp/stm32/stm32f103-dofly-M3S/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f103-dofly-M3S/.ci/attachconfig/ci.attachconfig.yml
index e4646070a9..0041f2e902 100644
--- a/bsp/stm32/stm32f103-dofly-M3S/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/stm32/stm32f103-dofly-M3S/.ci/attachconfig/ci.attachconfig.yml
@@ -8,3 +8,12 @@ nano:
kconfig:
- CONFIG_RT_USING_NANO=y
+devices.soft_i2c:
+ <<: *scons
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=26
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=27
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
diff --git a/bsp/stm32/stm32f103-dofly-M3S/board/Kconfig b/bsp/stm32/stm32f103-dofly-M3S/board/Kconfig
index ecf31ff302..aa71ae084a 100644
--- a/bsp/stm32/stm32f103-dofly-M3S/board/Kconfig
+++ b/bsp/stm32/stm32f103-dofly-M3S/board/Kconfig
@@ -28,9 +28,23 @@ menu "Onboard Peripheral Drivers"
default n
config BSP_USING_EEPROM
- bool "Enable I2C EEPROM (i2c2)"
- select BSP_USING_I2C2
+ bool "Enable I2C EEPROM (swi2c2)"
+ select RT_USING_I2C
+ select BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C2
default n
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 26 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 27 if RT_USING_SOFT_I2C2
+
endmenu
menu "On-chip Peripheral Drivers"
@@ -136,24 +150,25 @@ menu "On-chip Peripheral Drivers"
default n
endif
- menuconfig BSP_USING_I2C2
- bool "Enable I2C2 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 26
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 27
+ endif
endif
-
config BSP_USING_ON_CHIP_FLASH
bool "Enable on-chip FLASH"
default n
@@ -178,4 +193,5 @@ menu "Board extended module Drivers"
endmenu
+
endmenu
diff --git a/bsp/stm32/stm32f103-fire-arbitrary/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f103-fire-arbitrary/.ci/attachconfig/ci.attachconfig.yml
index e4646070a9..bafb8dec3c 100644
--- a/bsp/stm32/stm32f103-fire-arbitrary/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/stm32/stm32f103-fire-arbitrary/.ci/attachconfig/ci.attachconfig.yml
@@ -8,3 +8,12 @@ nano:
kconfig:
- CONFIG_RT_USING_NANO=y
+devices.soft_i2c:
+ <<: *scons
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/stm32/stm32f103-fire-arbitrary/board/Kconfig b/bsp/stm32/stm32f103-fire-arbitrary/board/Kconfig
index 75787559a1..93e033c0af 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 (swi2c1)"
+ select RT_USING_I2C
+ select BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C1
default n
config BSP_USING_ETH
@@ -83,6 +85,18 @@ menu "Onboard Peripheral Drivers"
select RT_USING_DFS_ELMFAT
default n
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
endmenu
menu "On-chip Peripheral Drivers"
@@ -257,23 +271,25 @@ menu "On-chip Peripheral Drivers"
default n
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
endif
-
menuconfig BSP_USING_TIM
bool "Enable timer"
default n
@@ -388,4 +404,5 @@ menu "Board extended module Drivers"
endmenu
+
endmenu
diff --git a/bsp/stm32/stm32f103-gizwits-gokitv21/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f103-gizwits-gokitv21/.ci/attachconfig/ci.attachconfig.yml
index e4646070a9..38f5930b0f 100644
--- a/bsp/stm32/stm32f103-gizwits-gokitv21/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/stm32/stm32f103-gizwits-gokitv21/.ci/attachconfig/ci.attachconfig.yml
@@ -8,3 +8,12 @@ nano:
kconfig:
- CONFIG_RT_USING_NANO=y
+devices.soft_i2c:
+ <<: *scons
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=15
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=16
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/stm32/stm32f103-gizwits-gokitv21/board/Kconfig b/bsp/stm32/stm32f103-gizwits-gokitv21/board/Kconfig
index 73b2de6d74..2f6a02aecd 100644
--- a/bsp/stm32/stm32f103-gizwits-gokitv21/board/Kconfig
+++ b/bsp/stm32/stm32f103-gizwits-gokitv21/board/Kconfig
@@ -109,21 +109,24 @@ menu "On-chip Peripheral Drivers"
default n
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 15
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 16
+ endif
endif
source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig"
@@ -133,4 +136,16 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 15 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 16 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/stm32/stm32f103-hw100k-ibox/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f103-hw100k-ibox/.ci/attachconfig/ci.attachconfig.yml
index e4646070a9..bafb8dec3c 100644
--- a/bsp/stm32/stm32f103-hw100k-ibox/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/stm32/stm32f103-hw100k-ibox/.ci/attachconfig/ci.attachconfig.yml
@@ -8,3 +8,12 @@ nano:
kconfig:
- CONFIG_RT_USING_NANO=y
+devices.soft_i2c:
+ <<: *scons
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/stm32/stm32f103-hw100k-ibox/board/Kconfig b/bsp/stm32/stm32f103-hw100k-ibox/board/Kconfig
index 401cbdfc31..159492e090 100644
--- a/bsp/stm32/stm32f103-hw100k-ibox/board/Kconfig
+++ b/bsp/stm32/stm32f103-hw100k-ibox/board/Kconfig
@@ -228,21 +228,24 @@ 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)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
endif
menuconfig BSP_USING_SPI
bool "Enable SPI BUS"
@@ -323,4 +326,16 @@ menu "Board extended module Drivers"
default n
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/stm32/stm32f103-keysking-learning/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f103-keysking-learning/.ci/attachconfig/ci.attachconfig.yml
index 5d0c8906b8..fff98fe34e 100644
--- a/bsp/stm32/stm32f103-keysking-learning/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/stm32/stm32f103-keysking-learning/.ci/attachconfig/ci.attachconfig.yml
@@ -23,7 +23,12 @@ devices.adc:
devices.i2c1:
<<: *scons
kconfig:
- - CONFIG_BSP_USING_I2C1=y
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=24
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=25
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
devices.pwm2:
<<: *scons
kconfig:
diff --git a/bsp/stm32/stm32f103-keysking-learning/board/Kconfig b/bsp/stm32/stm32f103-keysking-learning/board/Kconfig
index ae9a9bd106..8e2f11ac8d 100644
--- a/bsp/stm32/stm32f103-keysking-learning/board/Kconfig
+++ b/bsp/stm32/stm32f103-keysking-learning/board/Kconfig
@@ -104,23 +104,39 @@ menu "On-chip Peripheral Drivers"
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ range 0 143
+ default 24
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ range 0 143
+ default 25
+ endif
endif
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 24 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 25 if RT_USING_SOFT_I2C1
menuconfig BSP_USING_PWM
bool "Enable PWM"
diff --git a/bsp/stm32/stm32f103-yf-ufun/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f103-yf-ufun/.ci/attachconfig/ci.attachconfig.yml
index e4646070a9..38f5930b0f 100644
--- a/bsp/stm32/stm32f103-yf-ufun/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/stm32/stm32f103-yf-ufun/.ci/attachconfig/ci.attachconfig.yml
@@ -8,3 +8,12 @@ nano:
kconfig:
- CONFIG_RT_USING_NANO=y
+devices.soft_i2c:
+ <<: *scons
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=15
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=16
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/stm32/stm32f103-yf-ufun/board/Kconfig b/bsp/stm32/stm32f103-yf-ufun/board/Kconfig
index 7c3b526bc2..9b8fb8efcf 100644
--- a/bsp/stm32/stm32f103-yf-ufun/board/Kconfig
+++ b/bsp/stm32/stm32f103-yf-ufun/board/Kconfig
@@ -76,23 +76,25 @@ menu "On-chip Peripheral Drivers"
default n
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 15
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 16
+ endif
endif
-
menuconfig BSP_USING_PWM
bool "Enable PWM"
default n
@@ -131,4 +133,16 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 15 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 16 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/stm32/stm32f401-st-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f401-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
index 2a7fcdfd27..a863524b07 100644
--- a/bsp/stm32/stm32f401-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/stm32/stm32f401-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
@@ -11,4 +11,14 @@ nano:
peripheral.arduino:
<<: *scons
kconfig:
- - CONFIG_BSP_USING_ARDUINO=y
+ - CONFIG_BSP_USING_ARDUINO=y
+
+devices.soft_i2c:
+ <<: *scons
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=24
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=25
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/stm32/stm32f401-st-nucleo/applications/arduino_pinout/pins_arduino.c b/bsp/stm32/stm32f401-st-nucleo/applications/arduino_pinout/pins_arduino.c
index f4a2c69347..7f8f90125b 100644
--- a/bsp/stm32/stm32f401-st-nucleo/applications/arduino_pinout/pins_arduino.c
+++ b/bsp/stm32/stm32f401-st-nucleo/applications/arduino_pinout/pins_arduino.c
@@ -23,33 +23,32 @@
* Analog pins MUST give the device name and channel(ADC, PWM or DAC).
* Arduino Pin must keep in sequence.
*/
-const pin_map_t pin_map_table[]=
-{
- {D0, GET_PIN(A,3), "uart2"}, /* Serial-Rx */
- {D1, GET_PIN(A,2), "uart2"}, /* Serial-Tx */
- {D2, GET_PIN(A,10)},
- {D3, GET_PIN(B,3), "pwm2", 2}, /* PWM */
- {D4, GET_PIN(B,5)},
- {D5, GET_PIN(B,4), "pwm3", 1}, /* PWM */
- {D6, GET_PIN(B,10), "pwm2", 3}, /* PWM */
- {D7, GET_PIN(A,8)},
- {D8, GET_PIN(A,9)},
- {D9, GET_PIN(C,7), "pwm3", 2}, /* PWM */
- {D10, GET_PIN(B,6), "pwm4", 1}, /* PWM */
- {D11, GET_PIN(A,7), "pwm1", -1}, /* PWM */
- {D12, GET_PIN(A,6)},
- {D13, GET_PIN(A,5)}, /* LED_BUILTIN */
- {D14, GET_PIN(B,9), "i2c1"}, /* I2C-SDA (Wire) */
- {D15, GET_PIN(B,8), "i2c1"}, /* I2C-SCL (Wire) */
- {D16, GET_PIN(C,13)}, /* USER KEY */
- {A0, GET_PIN(A,0), "adc1", 0}, /* ADC */
- {A1, GET_PIN(A,1), "adc1", 1}, /* ADC */
- {A2, GET_PIN(A,4), "adc1", 4}, /* ADC */
- {A3, GET_PIN(B,0), "adc1", 8}, /* ADC */
- {A4, GET_PIN(C,1), "adc1", 11}, /* ADC */
- {A5, GET_PIN(C,0), "adc1", 10}, /* ADC */
- {A6, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF}, /* ADC, On-Chip: internal reference voltage */
- {A7, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER}, /* ADC, On-Chip: internal temperature sensor */
+const pin_map_t pin_map_table[] = {
+ { D0, GET_PIN(A, 3), "uart2" }, /* Serial-Rx */
+ { D1, GET_PIN(A, 2), "uart2" }, /* Serial-Tx */
+ { D2, GET_PIN(A, 10) },
+ { D3, GET_PIN(B, 3), "pwm2", 2 }, /* PWM */
+ { D4, GET_PIN(B, 5) },
+ { D5, GET_PIN(B, 4), "pwm3", 1 }, /* PWM */
+ { D6, GET_PIN(B, 10), "pwm2", 3 }, /* PWM */
+ { D7, GET_PIN(A, 8) },
+ { D8, GET_PIN(A, 9) },
+ { D9, GET_PIN(C, 7), "pwm3", 2 }, /* PWM */
+ { D10, GET_PIN(B, 6), "pwm4", 1 }, /* PWM */
+ { D11, GET_PIN(A, 7), "pwm1", -1 }, /* PWM */
+ { D12, GET_PIN(A, 6) },
+ { D13, GET_PIN(A, 5) }, /* LED_BUILTIN */
+ { D14, GET_PIN(B, 9), "swi2c1" }, /* I2C-SDA (Wire) */
+ { D15, GET_PIN(B, 8), "swi2c1" }, /* I2C-SCL (Wire) */
+ { D16, GET_PIN(C, 13) }, /* USER KEY */
+ { A0, GET_PIN(A, 0), "adc1", 0 }, /* ADC */
+ { A1, GET_PIN(A, 1), "adc1", 1 }, /* ADC */
+ { A2, GET_PIN(A, 4), "adc1", 4 }, /* ADC */
+ { A3, GET_PIN(B, 0), "adc1", 8 }, /* ADC */
+ { A4, GET_PIN(C, 1), "adc1", 11 }, /* ADC */
+ { A5, GET_PIN(C, 0), "adc1", 10 }, /* ADC */
+ { A6, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF }, /* ADC, On-Chip: internal reference voltage */
+ { A7, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER }, /* ADC, On-Chip: internal temperature sensor */
};
#ifdef RTDUINO_USING_SPI
diff --git a/bsp/stm32/stm32f401-st-nucleo/applications/arduino_pinout/pins_arduino.h b/bsp/stm32/stm32f401-st-nucleo/applications/arduino_pinout/pins_arduino.h
index 1a314d4fc4..9d56d2dcc3 100644
--- a/bsp/stm32/stm32f401-st-nucleo/applications/arduino_pinout/pins_arduino.h
+++ b/bsp/stm32/stm32f401-st-nucleo/applications/arduino_pinout/pins_arduino.h
@@ -44,8 +44,8 @@
#define LED_BUILTIN D13 /* Default Built-in LED */
-/* i2c1 - PB9-SDA PB8-SCL */
-#define RTDUINO_DEFAULT_IIC_BUS_NAME "i2c1"
+/* swi2c1 - PB9-SDA PB8-SCL */
+#define RTDUINO_DEFAULT_IIC_BUS_NAME "swi2c1"
#define SS D10
#define RTDUINO_DEFAULT_SPI_BUS_NAME "spi1"
diff --git a/bsp/stm32/stm32f401-st-nucleo/board/Kconfig b/bsp/stm32/stm32f401-st-nucleo/board/Kconfig
index a4ddfc0c2c..64d3c2f82a 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 BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C1
select BSP_USING_SPI
select BSP_USING_SPI1
select BSP_SPI1_TX_USING_DMA
@@ -38,6 +39,19 @@ menu "Onboard Peripheral Drivers"
imply RTDUINO_USING_SERVO
default n
+
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 24 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 25 if RT_USING_SOFT_I2C1
+
endmenu
menu "On-chip Peripheral Drivers"
@@ -206,30 +220,25 @@ menu "On-chip Peripheral Drivers"
default n
endif
- menuconfig BSP_USING_I2C
- bool "Enable I2C BUS"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
-
- if BSP_USING_I2C
- config BSP_USING_I2C1
- bool "Enable I2C1 Bus (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
- endif
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 24
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 25
+ endif
endif
-
source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig"
endmenu
diff --git a/bsp/stm32/stm32f401-weact-blackpill/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f401-weact-blackpill/.ci/attachconfig/ci.attachconfig.yml
index 2a7fcdfd27..13f7825282 100644
--- a/bsp/stm32/stm32f401-weact-blackpill/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/stm32/stm32f401-weact-blackpill/.ci/attachconfig/ci.attachconfig.yml
@@ -11,4 +11,14 @@ nano:
peripheral.arduino:
<<: *scons
kconfig:
- - CONFIG_BSP_USING_ARDUINO=y
+ - CONFIG_BSP_USING_ARDUINO=y
+
+devices.soft_i2c:
+ <<: *scons
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=47
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=46
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/stm32/stm32f401-weact-blackpill/applications/arduino_pinout/pins_arduino.c b/bsp/stm32/stm32f401-weact-blackpill/applications/arduino_pinout/pins_arduino.c
index 924204820c..fa6806d05e 100644
--- a/bsp/stm32/stm32f401-weact-blackpill/applications/arduino_pinout/pins_arduino.c
+++ b/bsp/stm32/stm32f401-weact-blackpill/applications/arduino_pinout/pins_arduino.c
@@ -19,40 +19,39 @@
* Analog pins MUST give the device name and channel(ADC, PWM or DAC).
* Arduino Pin must keep in sequence.
*/
-const pin_map_t pin_map_table[]=
-{
- {D0, GET_PIN(C,13)}, /* LED_BUILTIN */
- {D1, GET_PIN(C,14), "i2c1"}, /* I2C-SDA (Wire) */
- {D2, GET_PIN(C,15), "i2c1"}, /* I2C-SCL (Wire) */
- {D3, GET_PIN(A,2), "uart2"}, /* Serial2-TX */
- {D4, GET_PIN(A,3), "uart2"}, /* Serial2-RX */
- {D5, GET_PIN(B,2)},
- {D6, GET_PIN(B,10)},
- {D7, GET_PIN(B,9), "pwm4", 4}, /* PWM */
- {D8, GET_PIN(B,8), "pwm4", 3}, /* PWM */
- {D9, GET_PIN(B,7), "pwm4", 2}, /* PWM */
- {D10, GET_PIN(B,6), "pwm4", 1}, /* PWM */
- {D11, GET_PIN(B,5)},
- {D12, GET_PIN(B,4)},
- {D13, GET_PIN(B,3)},
- {D14, GET_PIN(A,15)},
- {D15, GET_PIN(A,12)},
- {D16, GET_PIN(A,11)},
- {D17, GET_PIN(A,10), "uart1"}, /* Serial-RX */
- {D18, GET_PIN(A,9), "uart1"}, /* Serial-TX */
- {D19, GET_PIN(A,8)},
- {D20, GET_PIN(B,15), "pwm1", 3}, /* PWM */
- {D21, GET_PIN(B,14), "pwm1", 2}, /* PWM */
- {D22, GET_PIN(B,13), "pwm1", 1}, /* PWM */
- {D23, GET_PIN(B,12)},
- {A0, GET_PIN(A,0), "adc1", 0}, /* ADC */
- {A1, GET_PIN(A,1), "adc1", 1}, /* ADC */
- {A2, GET_PIN(A,4), "adc1", 4}, /* ADC */
- {A3, GET_PIN(A,5), "adc1", 5}, /* ADC */
- {A4, GET_PIN(A,6), "adc1", 6}, /* ADC */
- {A5, GET_PIN(A,7), "adc1", 7}, /* ADC */
- {A6, GET_PIN(B,0), "adc1", 8}, /* ADC */
- {A7, GET_PIN(B,1), "adc1", 9}, /* ADC */
- {A8, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF}, /* ADC, On-Chip: internal reference voltage */
- {A9, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER}, /* ADC, On-Chip: internal temperature sensor */
+const pin_map_t pin_map_table[] = {
+ { D0, GET_PIN(C, 13) }, /* LED_BUILTIN */
+ { D1, GET_PIN(C, 14), "swi2c1" }, /* I2C-SDA (Wire) */
+ { D2, GET_PIN(C, 15), "swi2c1" }, /* I2C-SCL (Wire) */
+ { D3, GET_PIN(A, 2), "uart2" }, /* Serial2-TX */
+ { D4, GET_PIN(A, 3), "uart2" }, /* Serial2-RX */
+ { D5, GET_PIN(B, 2) },
+ { D6, GET_PIN(B, 10) },
+ { D7, GET_PIN(B, 9), "pwm4", 4 }, /* PWM */
+ { D8, GET_PIN(B, 8), "pwm4", 3 }, /* PWM */
+ { D9, GET_PIN(B, 7), "pwm4", 2 }, /* PWM */
+ { D10, GET_PIN(B, 6), "pwm4", 1 }, /* PWM */
+ { D11, GET_PIN(B, 5) },
+ { D12, GET_PIN(B, 4) },
+ { D13, GET_PIN(B, 3) },
+ { D14, GET_PIN(A, 15) },
+ { D15, GET_PIN(A, 12) },
+ { D16, GET_PIN(A, 11) },
+ { D17, GET_PIN(A, 10), "uart1" }, /* Serial-RX */
+ { D18, GET_PIN(A, 9), "uart1" }, /* Serial-TX */
+ { D19, GET_PIN(A, 8) },
+ { D20, GET_PIN(B, 15), "pwm1", 3 }, /* PWM */
+ { D21, GET_PIN(B, 14), "pwm1", 2 }, /* PWM */
+ { D22, GET_PIN(B, 13), "pwm1", 1 }, /* PWM */
+ { D23, GET_PIN(B, 12) },
+ { A0, GET_PIN(A, 0), "adc1", 0 }, /* ADC */
+ { A1, GET_PIN(A, 1), "adc1", 1 }, /* ADC */
+ { A2, GET_PIN(A, 4), "adc1", 4 }, /* ADC */
+ { A3, GET_PIN(A, 5), "adc1", 5 }, /* ADC */
+ { A4, GET_PIN(A, 6), "adc1", 6 }, /* ADC */
+ { A5, GET_PIN(A, 7), "adc1", 7 }, /* ADC */
+ { A6, GET_PIN(B, 0), "adc1", 8 }, /* ADC */
+ { A7, GET_PIN(B, 1), "adc1", 9 }, /* ADC */
+ { A8, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF }, /* ADC, On-Chip: internal reference voltage */
+ { A9, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER }, /* ADC, On-Chip: internal temperature sensor */
};
diff --git a/bsp/stm32/stm32f401-weact-blackpill/applications/arduino_pinout/pins_arduino.h b/bsp/stm32/stm32f401-weact-blackpill/applications/arduino_pinout/pins_arduino.h
index 464900f466..48e8664fd7 100644
--- a/bsp/stm32/stm32f401-weact-blackpill/applications/arduino_pinout/pins_arduino.h
+++ b/bsp/stm32/stm32f401-weact-blackpill/applications/arduino_pinout/pins_arduino.h
@@ -53,8 +53,8 @@
#define LED_BUILTIN D0 /* Default Built-in LED */
-/* i2c1 : PC14-SDA PC15-SCL */
-#define RTDUINO_DEFAULT_IIC_BUS_NAME "i2c1"
+/* swi2c1 : PC14-SDA PC15-SCL */
+#define RTDUINO_DEFAULT_IIC_BUS_NAME "swi2c1"
/* Serial2 : PA2-TX PA3-RX */
#define RTDUINO_SERIAL2_DEVICE_NAME "uart2"
diff --git a/bsp/stm32/stm32f401-weact-blackpill/board/Kconfig b/bsp/stm32/stm32f401-weact-blackpill/board/Kconfig
index 492a539d26..f2fcab1b1f 100644
--- a/bsp/stm32/stm32f401-weact-blackpill/board/Kconfig
+++ b/bsp/stm32/stm32f401-weact-blackpill/board/Kconfig
@@ -20,12 +20,26 @@ 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 BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C1
select RTDUINO_USING_WIRE
imply RTDUINO_USING_SERVO
default n
+
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 47 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 46 if RT_USING_SOFT_I2C1
+
endmenu
menu "On-chip Peripheral Drivers"
@@ -162,21 +176,25 @@ menu "On-chip Peripheral Drivers"
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 47
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 46
+ endif
endif
-
source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig"
endmenu
@@ -185,4 +203,5 @@ menu "Board extended module Drivers"
endmenu
+
endmenu
diff --git a/bsp/stm32/stm32f407-armfly-v5/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f407-armfly-v5/.ci/attachconfig/ci.attachconfig.yml
index e4646070a9..92ab220708 100644
--- a/bsp/stm32/stm32f407-armfly-v5/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/stm32/stm32f407-armfly-v5/.ci/attachconfig/ci.attachconfig.yml
@@ -8,3 +8,12 @@ nano:
kconfig:
- CONFIG_RT_USING_NANO=y
+devices.soft_i2c:
+ <<: *scons
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=116
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=117
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
diff --git a/bsp/stm32/stm32f407-armfly-v5/board/Kconfig b/bsp/stm32/stm32f407-armfly-v5/board/Kconfig
index 613d1cfb85..8218079aee 100644
--- a/bsp/stm32/stm32f407-armfly-v5/board/Kconfig
+++ b/bsp/stm32/stm32f407-armfly-v5/board/Kconfig
@@ -24,13 +24,27 @@ menu "Onboard Peripheral Drivers"
default n
config BSP_USING_MPU6050
- bool "Enable MPU6050(i2c2)"
- select BSP_USING_I2C2
+ bool "Enable MPU6050(swi2c2)"
+ select RT_USING_I2C
+ select BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C2
select PKG_USING_MPU6XXX
select PKG_USING_MPU6XXX_SAMPLE
select PKG_USING_MPU6XXX_LATEST_VERSION
default n
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 116 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 117 if RT_USING_SOFT_I2C2
+
endmenu
menu "On-chip Peripheral Drivers"
@@ -143,24 +157,25 @@ menu "On-chip Peripheral Drivers"
default n
endif
- menuconfig BSP_USING_I2C2
- bool "Enable I2C2 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 116
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 117
+ endif
endif
-
menuconfig BSP_USING_TIM
bool "Enable timer"
default n
@@ -240,4 +255,5 @@ menu "Board extended module Drivers"
endmenu
+
endmenu
diff --git a/bsp/stm32/stm32f407-atk-explorer/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f407-atk-explorer/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..4295636697
--- /dev/null
+++ b/bsp/stm32/stm32f407-atk-explorer/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,12 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=24
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=25
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=16
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=91
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
diff --git a/bsp/stm32/stm32f407-atk-explorer/board/Kconfig b/bsp/stm32/stm32f407-atk-explorer/board/Kconfig
index 1cd3f3eb67..454e46f872 100644
--- a/bsp/stm32/stm32f407-atk-explorer/board/Kconfig
+++ b/bsp/stm32/stm32f407-atk-explorer/board/Kconfig
@@ -42,8 +42,10 @@ menu "Onboard Peripheral Drivers"
default n
if BSP_USING_TOUCH
config BSP_USING_TOUCH_CAP
- bool "Use LCD TOUCH Capacitance (i2c2)"
- select BSP_USING_I2C2
+ bool "Use LCD TOUCH Capacitance (swi2c2)"
+ select RT_USING_I2C
+ select BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C2
default n
if BSP_USING_TOUCH_CAP
config BSP_TOUCH_INT_PIN
@@ -100,8 +102,10 @@ menu "Onboard Peripheral Drivers"
default n
config BSP_USING_EEPROM
- bool "Enable I2C EEPROM (i2c1)"
- select BSP_USING_I2C1
+ bool "Enable I2C EEPROM (swi2c1)"
+ select RT_USING_I2C
+ select BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C1
default n
config BSP_ETH_LEGACY_MODULE_ENABLED
@@ -123,9 +127,11 @@ menu "Onboard Peripheral Drivers"
default y
config BSP_USING_MPU6050
- bool "Enable MPU6050 (i2c1)"
+ bool "Enable MPU6050 (swi2c1)"
default n
- select BSP_USING_I2C1
+ select RT_USING_I2C
+ select BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C1
select PKG_USING_MPU6XXX
menuconfig BSP_USING_CAN
@@ -163,6 +169,30 @@ menu "Onboard Peripheral Drivers"
default n
endif
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 24 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 25 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 16 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 91 if RT_USING_SOFT_I2C2
+
endmenu
menu "On-chip Peripheral Drivers"
@@ -508,40 +538,38 @@ menu "On-chip Peripheral Drivers"
default n
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 24
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 25
+ endif
- menuconfig BSP_USING_I2C2
- bool "Enable LCD Touch BUS (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, PB0"
- range 0 143
- default 16
- config BSP_I2C2_SDA_PIN
- int "I2C2 sda pin number, PF11"
- range 0 143
- default 91
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 16
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 91
+ endif
endif
-
menuconfig BSP_USING_DAC
bool "Enable DAC"
default n
@@ -663,4 +691,5 @@ menu "Board extended module Drivers"
endmenu
+
endmenu
diff --git a/bsp/stm32/stm32f407-atk-explorer/board/ports/touch/drv_touch.c b/bsp/stm32/stm32f407-atk-explorer/board/ports/touch/drv_touch.c
index 66f63d9525..aa13e2458c 100644
--- a/bsp/stm32/stm32f407-atk-explorer/board/ports/touch/drv_touch.c
+++ b/bsp/stm32/stm32f407-atk-explorer/board/ports/touch/drv_touch.c
@@ -154,7 +154,7 @@ static int rt_touch_thread_init(void)
rt_list_t *l;
touch_drv_t current_driver;
rt_thread_t tid = RT_NULL;
- i2c_bus = (struct rt_i2c_bus_device *)rt_device_find("i2c2");
+ i2c_bus = (struct rt_i2c_bus_device *)rt_device_find("swi2c2");
RT_ASSERT(i2c_bus);
current_driver = RT_NULL;
if (rt_device_open((rt_device_t)i2c_bus, RT_DEVICE_OFLAG_RDWR) != RT_EOK)
diff --git a/bsp/stm32/stm32f407-fk407m2-zgt6/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f407-fk407m2-zgt6/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..4295636697
--- /dev/null
+++ b/bsp/stm32/stm32f407-fk407m2-zgt6/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,12 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=24
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=25
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=16
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=91
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
diff --git a/bsp/stm32/stm32f407-fk407m2-zgt6/board/Kconfig b/bsp/stm32/stm32f407-fk407m2-zgt6/board/Kconfig
index 97bf737ac2..a4b907076b 100644
--- a/bsp/stm32/stm32f407-fk407m2-zgt6/board/Kconfig
+++ b/bsp/stm32/stm32f407-fk407m2-zgt6/board/Kconfig
@@ -366,42 +366,38 @@ menu "On-chip Peripheral Drivers"
default n
endif
- menuconfig BSP_USING_I2C
- bool "Enable soft I2C BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- 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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 24
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ 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
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 16
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 91
+ endif
endif
-
menuconfig BSP_USING_DAC
bool "Enable DAC"
default n
@@ -492,4 +488,28 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 24 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 25 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 16 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 91 if RT_USING_SOFT_I2C2
+
endmenu
diff --git a/bsp/stm32/stm32f407-lckfb-skystar/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f407-lckfb-skystar/.ci/attachconfig/ci.attachconfig.yml
index e4646070a9..12d7fdc2c9 100644
--- a/bsp/stm32/stm32f407-lckfb-skystar/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/stm32/stm32f407-lckfb-skystar/.ci/attachconfig/ci.attachconfig.yml
@@ -8,3 +8,12 @@ nano:
kconfig:
- CONFIG_RT_USING_NANO=y
+devices.soft_i2c:
+ <<: *scons
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=24
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=25
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/stm32/stm32f407-lckfb-skystar/board/Kconfig b/bsp/stm32/stm32f407-lckfb-skystar/board/Kconfig
index 606c772551..0a9ad19cad 100644
--- a/bsp/stm32/stm32f407-lckfb-skystar/board/Kconfig
+++ b/bsp/stm32/stm32f407-lckfb-skystar/board/Kconfig
@@ -439,28 +439,25 @@ menu "On-chip Peripheral Drivers"
default n
endif
- menuconfig BSP_USING_I2C
- bool "Enable I2C"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
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
+ select RT_USING_I2C
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 24
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 25
+ endif
endif
-
config BSP_USING_ONBOARD_PM
bool "Enable Power Management"
select RT_USING_PM
@@ -538,4 +535,16 @@ menu "On-chip Peripheral Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 24 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 25 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/stm32/stm32f407-micu/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f407-micu/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..8b33403ed0
--- /dev/null
+++ b/bsp/stm32/stm32f407-micu/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,12 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=26
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=27
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
diff --git a/bsp/stm32/stm32f407-micu/board/Kconfig b/bsp/stm32/stm32f407-micu/board/Kconfig
index 25202dfa2f..aa364c3b0b 100644
--- a/bsp/stm32/stm32f407-micu/board/Kconfig
+++ b/bsp/stm32/stm32f407-micu/board/Kconfig
@@ -25,22 +25,48 @@ menu "Onboard Peripheral Drivers"
default n
config BSP_USING_AHT20
- bool "Enable AHT20(i2c1)"
- select BSP_USING_I2C
- select BSP_USING_I2C1
+ bool "Enable AHT20(swi2c1)"
+ select RT_USING_I2C
+ select BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C1
select PKG_USING_SENSORS_DRIVERS
select PKG_USING_AHT10
default n
config BSP_USING_ICM20608
- bool "Enable ICM20608(i2c1)"
- select BSP_USING_I2C
- select BSP_USING_I2C1
+ bool "Enable ICM20608(swi2c1)"
+ select RT_USING_I2C
+ select BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C1
select PKG_USING_SENSORS_DRIVERS
select PKG_USING_ICM20608
default n
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 26 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 27 if RT_USING_SOFT_I2C2
+
endmenu
menu "On-chip Peripheral Drivers"
@@ -135,45 +161,38 @@ menu "On-chip Peripheral Drivers"
endchoice
endif
- menuconfig BSP_USING_I2C
- bool "Enable I2C"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
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 22
- config BSP_I2C1_SDA_PIN
- int "I2C1 sda pin number"
- range 0 143
- default 23
- endif
+ select RT_USING_I2C
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
- menuconfig BSP_USING_I2C2
- bool "Enable I2C2 BUS (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"
- range 0 143
- default 26
- config BSP_I2C2_SDA_PIN
- int "I2C2 sda pin number"
- range 0 143
- default 27
- endif
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 26
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 27
+ endif
endif
-
menuconfig BSP_USING_TIM
bool "Enable timer"
default n
@@ -245,8 +264,9 @@ menu "Board extended module Drivers"
config BSP_USING_SSD1306
bool "Enable SSD1306 OLED"
- select BSP_USING_I2C
- select BSP_USING_I2C2
+ select RT_USING_I2C
+ select BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C2
select PKG_USING_SSD1306
default n
help
@@ -255,4 +275,5 @@ menu "Board extended module Drivers"
endmenu
-endmenu \ No newline at end of file
+
+endmenu
diff --git a/bsp/stm32/stm32f407-robomaster-c/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f407-robomaster-c/.ci/attachconfig/ci.attachconfig.yml
index 2a7fcdfd27..51f84c2e74 100644
--- a/bsp/stm32/stm32f407-robomaster-c/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/stm32/stm32f407-robomaster-c/.ci/attachconfig/ci.attachconfig.yml
@@ -11,4 +11,14 @@ nano:
peripheral.arduino:
<<: *scons
kconfig:
- - CONFIG_BSP_USING_ARDUINO=y
+ - CONFIG_BSP_USING_ARDUINO=y
+
+devices.soft_i2c:
+ <<: *scons
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=81
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=80
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/stm32/stm32f407-robomaster-c/applications/arduino_pinout/pins_arduino.c b/bsp/stm32/stm32f407-robomaster-c/applications/arduino_pinout/pins_arduino.c
index e105537530..db3498e2ca 100644
--- a/bsp/stm32/stm32f407-robomaster-c/applications/arduino_pinout/pins_arduino.c
+++ b/bsp/stm32/stm32f407-robomaster-c/applications/arduino_pinout/pins_arduino.c
@@ -19,22 +19,21 @@
* Analog pins MUST give the device name and channel(ADC, PWM or DAC).
* Arduino Pin must keep in sequence.
*/
-const pin_map_t pin_map_table[]=
-{
- {D0, GET_PIN(H,11)}, /* LED_BUILTIN */
- {D1, GET_PIN(B,7), "uart1"}, /* Serial-RX */
- {D2, GET_PIN(A,9), "uart1"}, /* Serial-TX */
- {D3, GET_PIN(G,9), "uart6"}, /* Serial-RX */
- {D4, GET_PIN(G,14), "uart6"}, /* Serial-TX */
- {D5, GET_PIN(F,1), "i2c1"}, /* I2C-SCL (Wire) */
- {D6, GET_PIN(F,0), "i2c1"}, /* I2C-SDA (Wire) */
- {D7, GET_PIN(E,9), "pwm1", 1}, /* PWM */
- {D8, GET_PIN(E,11), "pwm1", 2}, /* PWM */
- {D9, GET_PIN(E,13), "pwm1", 3}, /* PWM */
- {D10, GET_PIN(E,14), "pwm1", 4}, /* PWM */
- {D11, GET_PIN(C,6), "pwm8", 1}, /* PWM */
- {D12, GET_PIN(I,6), "pwm8", 2}, /* PWM */
- {D13, GET_PIN(I,7), "pwm8", 3}, /* PWM */
- {A0, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF}, /* ADC, On-Chip: internal temperature sensor */
- {A1, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER}, /* ADC, On-Chip: internal reference voltage */
+const pin_map_t pin_map_table[] = {
+ { D0, GET_PIN(H, 11) }, /* LED_BUILTIN */
+ { D1, GET_PIN(B, 7), "uart1" }, /* Serial-RX */
+ { D2, GET_PIN(A, 9), "uart1" }, /* Serial-TX */
+ { D3, GET_PIN(G, 9), "uart6" }, /* Serial-RX */
+ { D4, GET_PIN(G, 14), "uart6" }, /* Serial-TX */
+ { D5, GET_PIN(F, 1), "swi2c1" }, /* I2C-SCL (Wire) */
+ { D6, GET_PIN(F, 0), "swi2c1" }, /* I2C-SDA (Wire) */
+ { D7, GET_PIN(E, 9), "pwm1", 1 }, /* PWM */
+ { D8, GET_PIN(E, 11), "pwm1", 2 }, /* PWM */
+ { D9, GET_PIN(E, 13), "pwm1", 3 }, /* PWM */
+ { D10, GET_PIN(E, 14), "pwm1", 4 }, /* PWM */
+ { D11, GET_PIN(C, 6), "pwm8", 1 }, /* PWM */
+ { D12, GET_PIN(I, 6), "pwm8", 2 }, /* PWM */
+ { D13, GET_PIN(I, 7), "pwm8", 3 }, /* PWM */
+ { A0, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF }, /* ADC, On-Chip: internal temperature sensor */
+ { A1, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER }, /* ADC, On-Chip: internal reference voltage */
};
diff --git a/bsp/stm32/stm32f407-robomaster-c/applications/arduino_pinout/pins_arduino.h b/bsp/stm32/stm32f407-robomaster-c/applications/arduino_pinout/pins_arduino.h
index b88d64ce55..772bca72c0 100644
--- a/bsp/stm32/stm32f407-robomaster-c/applications/arduino_pinout/pins_arduino.h
+++ b/bsp/stm32/stm32f407-robomaster-c/applications/arduino_pinout/pins_arduino.h
@@ -35,7 +35,7 @@
#define LED_BUILTIN D0 /* Default Built-in LED */
-/* i2c1 : PF0-SDA PF1-SCL */
-#define RTDUINO_DEFAULT_IIC_BUS_NAME "i2c1"
+/* swi2c1 : PF0-SDA PF1-SCL */
+#define RTDUINO_DEFAULT_IIC_BUS_NAME "swi2c1"
#endif /* Pins_Arduino_h */
diff --git a/bsp/stm32/stm32f407-robomaster-c/board/Kconfig b/bsp/stm32/stm32f407-robomaster-c/board/Kconfig
index bd123367be..5a07ae8c6b 100644
--- a/bsp/stm32/stm32f407-robomaster-c/board/Kconfig
+++ b/bsp/stm32/stm32f407-robomaster-c/board/Kconfig
@@ -19,12 +19,26 @@ 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 BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C1
select RTDUINO_USING_WIRE
imply RTDUINO_USING_SERVO
default n
+
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 81 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 80 if RT_USING_SOFT_I2C1
+
endmenu
menu "On-chip Peripheral Drivers"
@@ -257,23 +271,25 @@ menu "On-chip Peripheral Drivers"
default n
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 81
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 80
+ endif
endif
-
-
source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig"
endmenu
@@ -282,4 +298,5 @@ menu "Board extended module Drivers"
endmenu
+
endmenu
diff --git a/bsp/stm32/stm32f407-rt-spark/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f407-rt-spark/.ci/attachconfig/ci.attachconfig.yml
index a823a64aeb..a2bddc743c 100644
--- a/bsp/stm32/stm32f407-rt-spark/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/stm32/stm32f407-rt-spark/.ci/attachconfig/ci.attachconfig.yml
@@ -246,3 +246,29 @@ component.cherryusb_cdc:
- CONFIG_RT_CHERRYUSB_DEVICE_DWC2_ST=y
- CONFIG_RT_CHERRYUSB_DEVICE_CDC_ACM=y
- CONFIG_RT_CHERRYUSB_DEVICE_TEMPLATE_CDC_ACM=y
+
+devices.soft_i2c:
+ <<: *scons
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=24
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=25
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=81
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=80
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
+ - CONFIG_RT_USING_SOFT_I2C3=y
+ - CONFIG_RT_SOFT_I2C3_SCL_PIN=64
+ - CONFIG_RT_SOFT_I2C3_SDA_PIN=65
+ - CONFIG_RT_SOFT_I2C3_BUS_NAME="swi2c3"
+ - CONFIG_RT_USING_SOFT_I2C4=y
+ - CONFIG_RT_SOFT_I2C4_SCL_PIN=103
+ - CONFIG_RT_SOFT_I2C4_SDA_PIN=55
+ - CONFIG_RT_SOFT_I2C4_BUS_NAME="swi2c4"
+ - CONFIG_RT_USING_SOFT_I2C5=y
+ - CONFIG_RT_SOFT_I2C5_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C5_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C5_BUS_NAME="swi2c5"
diff --git a/bsp/stm32/stm32f407-rt-spark/applications/arduino_pinout/pins_arduino.c b/bsp/stm32/stm32f407-rt-spark/applications/arduino_pinout/pins_arduino.c
index 3ca3a980b7..8746c939d0 100644
--- a/bsp/stm32/stm32f407-rt-spark/applications/arduino_pinout/pins_arduino.c
+++ b/bsp/stm32/stm32f407-rt-spark/applications/arduino_pinout/pins_arduino.c
@@ -19,51 +19,50 @@
* Analog pins MUST give the device name and channel(ADC, PWM or DAC).
* Arduino Pin must keep in sequence.
*/
-const pin_map_t pin_map_table[]=
-{
- {D0, GET_PIN(A, 10), "uart1"}, /* Serial-RX */
- {D1, GET_PIN(A, 9), "uart1"}, /* Serial-TX */
- {D2, GET_PIN(A, 8)},
- {D3, GET_PIN(B, 10), "pwm2", 3}, /* PWM */
- {D4, GET_PIN(A, 1)},
- {D5, GET_PIN(B, 14)},
- {D6, GET_PIN(B, 11), "pwm2", 4}, /* PWM */
- {D7, GET_PIN(B, 15)},
- {D8, GET_PIN(F, 15)},
- {D9, GET_PIN(E, 11), "pwm1", 2}, /* PWM */
- {D10, GET_PIN(E, 13), "pwm1", 3}, /* PWM */
- {D11, GET_PIN(D, 12), "pwm4", 1}, /* PWM */
- {D12, GET_PIN(D, 10)},
- {D13, GET_PIN(D, 8)},
- {D14, GET_PIN(E, 14)},
- {D15, GET_PIN(E, 12)},
- {D16, GET_PIN(E, 15)},
- {D17, GET_PIN(D, 9)},
- {D18, GET_PIN(G, 2)},
- {D19, GET_PIN(B, 2)},
- {D20, GET_PIN(G, 0)},
- {D21, GET_PIN(A, 0)},
- {D22, GET_PIN(G, 5), "sspi1"}, /* SOFT-SPI-SCK */
- {D23, GET_PIN(G, 3), "sspi1"}, /* SOFT-SPI-MISO */
- {D24, GET_PIN(G, 1), "sspi1"}, /* SOFT-SPI-MOSI */
- {D25, GET_PIN(G, 7), "i2c4"}, /* I2C-SCL (Wire) */
- {D26, GET_PIN(D, 7), "i2c4"}, /* I2C-SDA (Wire) */
- {D27, GET_PIN(B, 6), "i2c5"}, /* I2C-SCL (Wire) */
- {D28, GET_PIN(B, 7), "i2c5"}, /* I2C-SDA (Wire) */
- {D29, GET_PIN(G, 6)}, /* SPI-SS */
- {D30, GET_PIN(G, 4)},
- {D31, GET_PIN(A, 2), "uart2"}, /* Serial2-TX */
- {D32, GET_PIN(A, 3), "uart2"}, /* Serial2-RX */
- {D33, GET_PIN(F, 12)}, /* On-Board R_LED */
- {D34, GET_PIN(F, 11)}, /* On-Board B_LED */
- {D35, GET_PIN(B, 0)}, /* On_Board Buzzer */
- {D36, GET_PIN(C, 5)}, /* On-Board KEY_UP */
- {D37, GET_PIN(C, 1)}, /* On-Board KEY_DOWM */
- {D38, GET_PIN(C, 0)}, /* On-Board KEY_LEFT */
- {D39, GET_PIN(C, 4)}, /* On-Board KEY_RIGHT */
- {A0, GET_PIN(F, 6), "adc3", 4}, /* ADC */
- {A1, GET_PIN(F, 7), "adc3", 5}, /* ADC */
- {A2, GET_PIN(F, 4), "adc3", 14}, /* ADC */
- {A3, GET_PIN(F, 5), "adc3", 15}, /* ADC */
- {DAC0, GET_PIN(A, 4), "dac1", 1}, /* DAC */
+const pin_map_t pin_map_table[] = {
+ { D0, GET_PIN(A, 10), "uart1" }, /* Serial-RX */
+ { D1, GET_PIN(A, 9), "uart1" }, /* Serial-TX */
+ { D2, GET_PIN(A, 8) },
+ { D3, GET_PIN(B, 10), "pwm2", 3 }, /* PWM */
+ { D4, GET_PIN(A, 1) },
+ { D5, GET_PIN(B, 14) },
+ { D6, GET_PIN(B, 11), "pwm2", 4 }, /* PWM */
+ { D7, GET_PIN(B, 15) },
+ { D8, GET_PIN(F, 15) },
+ { D9, GET_PIN(E, 11), "pwm1", 2 }, /* PWM */
+ { D10, GET_PIN(E, 13), "pwm1", 3 }, /* PWM */
+ { D11, GET_PIN(D, 12), "pwm4", 1 }, /* PWM */
+ { D12, GET_PIN(D, 10) },
+ { D13, GET_PIN(D, 8) },
+ { D14, GET_PIN(E, 14) },
+ { D15, GET_PIN(E, 12) },
+ { D16, GET_PIN(E, 15) },
+ { D17, GET_PIN(D, 9) },
+ { D18, GET_PIN(G, 2) },
+ { D19, GET_PIN(B, 2) },
+ { D20, GET_PIN(G, 0) },
+ { D21, GET_PIN(A, 0) },
+ { D22, GET_PIN(G, 5), "sspi1" }, /* SOFT-SPI-SCK */
+ { D23, GET_PIN(G, 3), "sspi1" }, /* SOFT-SPI-MISO */
+ { D24, GET_PIN(G, 1), "sspi1" }, /* SOFT-SPI-MOSI */
+ { D25, GET_PIN(G, 7), "swi2c4" }, /* I2C-SCL (Wire) */
+ { D26, GET_PIN(D, 7), "swi2c4" }, /* I2C-SDA (Wire) */
+ { D27, GET_PIN(B, 6), "swi2c5" }, /* I2C-SCL (Wire) */
+ { D28, GET_PIN(B, 7), "swi2c5" }, /* I2C-SDA (Wire) */
+ { D29, GET_PIN(G, 6) }, /* SPI-SS */
+ { D30, GET_PIN(G, 4) },
+ { D31, GET_PIN(A, 2), "uart2" }, /* Serial2-TX */
+ { D32, GET_PIN(A, 3), "uart2" }, /* Serial2-RX */
+ { D33, GET_PIN(F, 12) }, /* On-Board R_LED */
+ { D34, GET_PIN(F, 11) }, /* On-Board B_LED */
+ { D35, GET_PIN(B, 0) }, /* On_Board Buzzer */
+ { D36, GET_PIN(C, 5) }, /* On-Board KEY_UP */
+ { D37, GET_PIN(C, 1) }, /* On-Board KEY_DOWM */
+ { D38, GET_PIN(C, 0) }, /* On-Board KEY_LEFT */
+ { D39, GET_PIN(C, 4) }, /* On-Board KEY_RIGHT */
+ { A0, GET_PIN(F, 6), "adc3", 4 }, /* ADC */
+ { A1, GET_PIN(F, 7), "adc3", 5 }, /* ADC */
+ { A2, GET_PIN(F, 4), "adc3", 14 }, /* ADC */
+ { A3, GET_PIN(F, 5), "adc3", 15 }, /* ADC */
+ { DAC0, GET_PIN(A, 4), "dac1", 1 }, /* DAC */
};
diff --git a/bsp/stm32/stm32f407-rt-spark/applications/arduino_pinout/pins_arduino.h b/bsp/stm32/stm32f407-rt-spark/applications/arduino_pinout/pins_arduino.h
index 12b7d60885..54ea7daea3 100644
--- a/bsp/stm32/stm32f407-rt-spark/applications/arduino_pinout/pins_arduino.h
+++ b/bsp/stm32/stm32f407-rt-spark/applications/arduino_pinout/pins_arduino.h
@@ -64,8 +64,8 @@
#define LED_BUILTIN D33 /* Default Built-in LED */
-/* i2c4 : PD.7-SDA PG.7-SCL */
-#define RTDUINO_DEFAULT_IIC_BUS_NAME "i2c4"
+/* swi2c4 : PD.7-SDA PG.7-SCL */
+#define RTDUINO_DEFAULT_IIC_BUS_NAME "swi2c4"
#define SS D32 /* Chip select pin of default spi */
/* sspi1 : PG.5-SCK PG.3-MISO PG.1-MOSI */
diff --git a/bsp/stm32/stm32f407-rt-spark/board/Kconfig b/bsp/stm32/stm32f407-rt-spark/board/Kconfig
index a003330564..1f686d255c 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 BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C4
+ select BSP_USING_SOFT_I2C5
select BSP_USING_SOFT_SPI
select BSP_USING_SOFT_SPI1
imply RTDUINO_USING_SERVO
@@ -123,8 +124,10 @@ menu "Onboard Peripheral Drivers"
default n
config BSP_USING_EEPROM
- bool "Enable I2C EEPROM (i2c1)"
- select BSP_USING_I2C1
+ bool "Enable I2C EEPROM (swi2c1)"
+ select RT_USING_I2C
+ select BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C1
default n
config BSP_USING_ENC28j60
@@ -213,25 +216,28 @@ menu "Onboard Peripheral Drivers"
endif
config BSP_USING_AHT21
- bool "Enable AHT21(i2c3)"
- select BSP_USING_I2C
- select BSP_USING_I2C3
+ bool "Enable AHT21(swi2c3)"
+ select RT_USING_I2C
+ select BSP_USING_SOFT_I2C
+ select BSP_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
+ bool "Enable AP3216C(swi2c2)"
+ select RT_USING_I2C
+ select BSP_USING_SOFT_I2C
+ select BSP_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
+ bool "Enable ICM20608(swi2c2)"
+ select RT_USING_I2C
+ select BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C2
select PKG_USING_SENSORS_DRIVERS
select PKG_USING_ICM20608
default n
@@ -256,8 +262,9 @@ menu "Onboard Peripheral Drivers"
menuconfig BSP_USING_AUDIO
bool "Enable Audio Device"
select RT_USING_AUDIO
- select BSP_USING_I2C
- select BSP_USING_I2C2
+ select RT_USING_I2C
+ select BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C2
default n
if BSP_USING_AUDIO
@@ -271,6 +278,67 @@ menu "Onboard Peripheral Drivers"
endif
+
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 24 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 25 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 81 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 80 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C3_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SCL_PIN_DEFAULT
+ int
+ default 64 if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SDA_PIN_DEFAULT
+ int
+ default 65 if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C4_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C4
+
+ config RT_SOFT_I2C4_SCL_PIN_DEFAULT
+ int
+ default 103 if RT_USING_SOFT_I2C4
+
+ config RT_SOFT_I2C4_SDA_PIN_DEFAULT
+ int
+ default 55 if RT_USING_SOFT_I2C4
+
+ config RT_SOFT_I2C5_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C5
+
+ config RT_SOFT_I2C5_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C5
+
+ config RT_SOFT_I2C5_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C5
+
endmenu
menu "On-chip Peripheral Drivers"
@@ -660,96 +728,77 @@ menu "On-chip Peripheral Drivers"
default n
endif
- menuconfig BSP_USING_I2C
- bool "Enable I2C"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
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
+ select RT_USING_I2C
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 24
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ 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_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 81
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ 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
- endif
- endif
+ menuconfig BSP_USING_SOFT_I2C3
+ bool "Enable software I2C3 Bus (swi2c3)"
+ default n
+ select RT_USING_SOFT_I2C3
+ if BSP_USING_SOFT_I2C3
+ config RT_SOFT_I2C3_SCL_PIN
+ int "swi2c3 SCL pin number"
+ default 64
+ config RT_SOFT_I2C3_SDA_PIN
+ int "swi2c3 SDA pin number"
+ default 65
+ endif
+ menuconfig BSP_USING_SOFT_I2C4
+ bool "Enable software I2C4 Bus (swi2c4)"
+ default n
+ select RT_USING_SOFT_I2C4
+ if BSP_USING_SOFT_I2C4
+ config RT_SOFT_I2C4_SCL_PIN
+ int "swi2c4 SCL pin number"
+ default 103
+ config RT_SOFT_I2C4_SDA_PIN
+ int "swi2c4 SDA pin number"
+ default 55
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C5
+ bool "Enable software I2C5 Bus (swi2c5)"
+ default n
+ select RT_USING_SOFT_I2C5
+ if BSP_USING_SOFT_I2C5
+ config RT_SOFT_I2C5_SCL_PIN
+ int "swi2c5 SCL pin number"
+ default 22
+ config RT_SOFT_I2C5_SDA_PIN
+ int "swi2c5 SDA pin number"
+ default 23
+ endif
+ endif
config BSP_USING_ONBOARD_PM
bool "Enable Power Management"
select RT_USING_PM
@@ -877,4 +926,5 @@ menu "Board extended module Drivers"
endmenu
+
endmenu
diff --git a/bsp/stm32/stm32f407-rt-spark/board/ports/audio/drv_mic.c b/bsp/stm32/stm32f407-rt-spark/board/ports/audio/drv_mic.c
index 04f485e246..ae642b0d47 100644
--- a/bsp/stm32/stm32f407-rt-spark/board/ports/audio/drv_mic.c
+++ b/bsp/stm32/stm32f407-rt-spark/board/ports/audio/drv_mic.c
@@ -263,7 +263,7 @@ static rt_err_t mic_init(struct rt_audio_device *audio)
RT_ASSERT(audio != RT_NULL);
mic_dev = (struct mic_device *)audio->parent.user_data;
- es8388_init("i2c2", RT_NULL);
+ es8388_init("swi2c2", RT_NULL);
I2S3_Init();
LOG_I("ES8388 init success.");
/* set default params */
@@ -280,7 +280,7 @@ static rt_err_t sound_init(struct rt_audio_device *audio)
snd_dev = (struct sound_device *)audio->parent.user_data;
I2S3_Init();
- es8388_init("i2c2", RT_NULL);
+ es8388_init("swi2c2", RT_NULL);
/* set default params */
// I2S_Frequency_Set(snd_dev->replay_config.samplerate);
// SAIA_Channels_Set(snd_dev->replay_config.channels);
diff --git a/bsp/stm32/stm32f407-rt-spark/board/ports/audio/drv_sound.c b/bsp/stm32/stm32f407-rt-spark/board/ports/audio/drv_sound.c
index fba50f9c5b..6505443ec1 100644
--- a/bsp/stm32/stm32f407-rt-spark/board/ports/audio/drv_sound.c
+++ b/bsp/stm32/stm32f407-rt-spark/board/ports/audio/drv_sound.c
@@ -411,7 +411,7 @@ static rt_err_t sound_init(struct rt_audio_device *audio)
RT_ASSERT(audio != RT_NULL);
snd_dev = (struct sound_device *)audio->parent.user_data;
- es8388_init("i2c2", RT_NULL);
+ es8388_init("swi2c2", RT_NULL);
I2S3_Init();
LOG_I("ES8388 init success.");
/* set default params */
diff --git a/bsp/stm32/stm32f407-st-discovery/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f407-st-discovery/.ci/attachconfig/ci.attachconfig.yml
index e4646070a9..12d7fdc2c9 100644
--- a/bsp/stm32/stm32f407-st-discovery/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/stm32/stm32f407-st-discovery/.ci/attachconfig/ci.attachconfig.yml
@@ -8,3 +8,12 @@ nano:
kconfig:
- CONFIG_RT_USING_NANO=y
+devices.soft_i2c:
+ <<: *scons
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=24
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=25
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/stm32/stm32f407-st-discovery/board/Kconfig b/bsp/stm32/stm32f407-st-discovery/board/Kconfig
index 21a2adf70a..590ed2c7bc 100644
--- a/bsp/stm32/stm32f407-st-discovery/board/Kconfig
+++ b/bsp/stm32/stm32f407-st-discovery/board/Kconfig
@@ -76,21 +76,24 @@ menu "On-chip Peripheral Drivers"
default n
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 24
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 25
+ endif
endif
source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig"
@@ -100,4 +103,16 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 24 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 25 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/stm32/stm32f410-st-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f410-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
index 2a7fcdfd27..a863524b07 100644
--- a/bsp/stm32/stm32f410-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/stm32/stm32f410-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
@@ -11,4 +11,14 @@ nano:
peripheral.arduino:
<<: *scons
kconfig:
- - CONFIG_BSP_USING_ARDUINO=y
+ - CONFIG_BSP_USING_ARDUINO=y
+
+devices.soft_i2c:
+ <<: *scons
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=24
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=25
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/stm32/stm32f410-st-nucleo/applications/arduino_pinout/pins_arduino.c b/bsp/stm32/stm32f410-st-nucleo/applications/arduino_pinout/pins_arduino.c
index 4ee6168858..8b80688bc5 100644
--- a/bsp/stm32/stm32f410-st-nucleo/applications/arduino_pinout/pins_arduino.c
+++ b/bsp/stm32/stm32f410-st-nucleo/applications/arduino_pinout/pins_arduino.c
@@ -19,31 +19,30 @@
* Analog pins MUST give the device name and channel(ADC, PWM or DAC).
* Arduino Pin must keep in sequence.
*/
-const pin_map_t pin_map_table[]=
-{
- {D0, GET_PIN(A,3), "uart2"}, /* Serial-RX */
- {D1, GET_PIN(A,2), "uart2"}, /* Serial-TX */
- {D2, GET_PIN(A,10), "pwm1", 3}, /* PWM */
- {D3, GET_PIN(B,3)},
- {D4, GET_PIN(B,5)},
- {D5, GET_PIN(B,4)},
- {D6, GET_PIN(B,10)},
- {D7, GET_PIN(A,8)},
- {D8, GET_PIN(A,9), "pwm1", 2}, /* PWM */
- {D9, GET_PIN(C,7)},
- {D10, GET_PIN(B,6)},
- {D11, GET_PIN(A,7), "pwm1", -1}, /* PWM */
- {D12, GET_PIN(A,6)},
- {D13, GET_PIN(A,5)}, /* LED_BUILTIN */
- {D14, GET_PIN(B,9), "i2c1"}, /* I2C-SDA (Wire) */
- {D15, GET_PIN(B,8), "i2c1"}, /* I2C-SCL (Wire) */
- {D16, GET_PIN(C,13)}, /* USER KEY */
- {A0, GET_PIN(A,0), "adc1", 0}, /* ADC */
- {A1, GET_PIN(A,1), "adc1", 1}, /* ADC */
- {A2, GET_PIN(A,4), "adc1", 4}, /* ADC */
- {A3, GET_PIN(B,0), "adc1", 8}, /* ADC */
- {A4, GET_PIN(C,1), "adc1", 11}, /* ADC */
- {A5, GET_PIN(C,0), "adc1", 10}, /* ADC */
- {A6, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF}, /* ADC, On-Chip: internal reference voltage */
- {A7, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER}, /* ADC, On-Chip: internal temperature sensor */
+const pin_map_t pin_map_table[] = {
+ { D0, GET_PIN(A, 3), "uart2" }, /* Serial-RX */
+ { D1, GET_PIN(A, 2), "uart2" }, /* Serial-TX */
+ { D2, GET_PIN(A, 10), "pwm1", 3 }, /* PWM */
+ { D3, GET_PIN(B, 3) },
+ { D4, GET_PIN(B, 5) },
+ { D5, GET_PIN(B, 4) },
+ { D6, GET_PIN(B, 10) },
+ { D7, GET_PIN(A, 8) },
+ { D8, GET_PIN(A, 9), "pwm1", 2 }, /* PWM */
+ { D9, GET_PIN(C, 7) },
+ { D10, GET_PIN(B, 6) },
+ { D11, GET_PIN(A, 7), "pwm1", -1 }, /* PWM */
+ { D12, GET_PIN(A, 6) },
+ { D13, GET_PIN(A, 5) }, /* LED_BUILTIN */
+ { D14, GET_PIN(B, 9), "swi2c1" }, /* I2C-SDA (Wire) */
+ { D15, GET_PIN(B, 8), "swi2c1" }, /* I2C-SCL (Wire) */
+ { D16, GET_PIN(C, 13) }, /* USER KEY */
+ { A0, GET_PIN(A, 0), "adc1", 0 }, /* ADC */
+ { A1, GET_PIN(A, 1), "adc1", 1 }, /* ADC */
+ { A2, GET_PIN(A, 4), "adc1", 4 }, /* ADC */
+ { A3, GET_PIN(B, 0), "adc1", 8 }, /* ADC */
+ { A4, GET_PIN(C, 1), "adc1", 11 }, /* ADC */
+ { A5, GET_PIN(C, 0), "adc1", 10 }, /* ADC */
+ { A6, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF }, /* ADC, On-Chip: internal reference voltage */
+ { A7, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER }, /* ADC, On-Chip: internal temperature sensor */
};
diff --git a/bsp/stm32/stm32f410-st-nucleo/applications/arduino_pinout/pins_arduino.h b/bsp/stm32/stm32f410-st-nucleo/applications/arduino_pinout/pins_arduino.h
index f9def34705..25b1685896 100644
--- a/bsp/stm32/stm32f410-st-nucleo/applications/arduino_pinout/pins_arduino.h
+++ b/bsp/stm32/stm32f410-st-nucleo/applications/arduino_pinout/pins_arduino.h
@@ -44,7 +44,7 @@
#define LED_BUILTIN D13 /* Default Built-in LED */
-/* i2c1 - PB9-SDA PB8-SCL */
-#define RTDUINO_DEFAULT_IIC_BUS_NAME "i2c1"
+/* swi2c1 - PB9-SDA PB8-SCL */
+#define RTDUINO_DEFAULT_IIC_BUS_NAME "swi2c1"
#endif /* Pins_Arduino_h */
diff --git a/bsp/stm32/stm32f410-st-nucleo/board/Kconfig b/bsp/stm32/stm32f410-st-nucleo/board/Kconfig
index 990d6df3f6..6843eb316e 100644
--- a/bsp/stm32/stm32f410-st-nucleo/board/Kconfig
+++ b/bsp/stm32/stm32f410-st-nucleo/board/Kconfig
@@ -19,11 +19,25 @@ 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 BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C1
select RTDUINO_USING_WIRE
imply RTDUINO_USING_SERVO
default n
+
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 24 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 25 if RT_USING_SOFT_I2C1
+
endmenu
menu "On-chip Peripheral Drivers"
@@ -142,24 +156,25 @@ menu "On-chip Peripheral Drivers"
endif
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 24
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 25
+ endif
endif
-
source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig"
endmenu
@@ -168,4 +183,5 @@ menu "Board extended module Drivers"
endmenu
+
endmenu
diff --git a/bsp/stm32/stm32f411-atk-nano/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f411-atk-nano/.ci/attachconfig/ci.attachconfig.yml
index e4646070a9..bafb8dec3c 100644
--- a/bsp/stm32/stm32f411-atk-nano/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/stm32/stm32f411-atk-nano/.ci/attachconfig/ci.attachconfig.yml
@@ -8,3 +8,12 @@ nano:
kconfig:
- CONFIG_RT_USING_NANO=y
+devices.soft_i2c:
+ <<: *scons
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/stm32/stm32f411-atk-nano/board/Kconfig b/bsp/stm32/stm32f411-atk-nano/board/Kconfig
index fbb264b09d..5b27345903 100644
--- a/bsp/stm32/stm32f411-atk-nano/board/Kconfig
+++ b/bsp/stm32/stm32f411-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 (swi2c1)"
+ select RT_USING_I2C
+ select BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C1
default n
config BSP_USING_SPI_FLASH
@@ -27,6 +29,18 @@ menu "Onboard Peripheral Drivers"
select BSP_USING_ADC1
default n
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
endmenu
menu "On-chip Peripheral Drivers"
@@ -151,22 +165,24 @@ menu "On-chip Peripheral Drivers"
select BSP_SPI2_TX_USING_DMA
default n
endif
-
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
endif
menuconfig BSP_USING_ADC
@@ -213,4 +229,5 @@ menu "Board extended module Drivers"
endmenu
+
endmenu
diff --git a/bsp/stm32/stm32f411-st-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f411-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
index 2a7fcdfd27..a863524b07 100644
--- a/bsp/stm32/stm32f411-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/stm32/stm32f411-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
@@ -11,4 +11,14 @@ nano:
peripheral.arduino:
<<: *scons
kconfig:
- - CONFIG_BSP_USING_ARDUINO=y
+ - CONFIG_BSP_USING_ARDUINO=y
+
+devices.soft_i2c:
+ <<: *scons
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=24
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=25
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/stm32/stm32f411-st-nucleo/applications/arduino_pinout/pins_arduino.c b/bsp/stm32/stm32f411-st-nucleo/applications/arduino_pinout/pins_arduino.c
index 716fd2318c..027677b3ed 100644
--- a/bsp/stm32/stm32f411-st-nucleo/applications/arduino_pinout/pins_arduino.c
+++ b/bsp/stm32/stm32f411-st-nucleo/applications/arduino_pinout/pins_arduino.c
@@ -23,33 +23,32 @@
* Analog pins MUST give the device name and channel(ADC, PWM or DAC).
* Arduino Pin must keep in sequence.
*/
-const pin_map_t pin_map_table[]=
-{
- {D0, GET_PIN(A,3), "uart2"}, /* Serial-RX */
- {D1, GET_PIN(A,2), "uart2"}, /* Serial-TX */
- {D2, GET_PIN(A,10)},
- {D3, GET_PIN(B,3), "pwm2", 2}, /* PWM */
- {D4, GET_PIN(B,5)},
- {D5, GET_PIN(B,4), "pwm3", 1}, /* PWM */
- {D6, GET_PIN(B,10), "pwm2", 3}, /* PWM */
- {D7, GET_PIN(A,8)},
- {D8, GET_PIN(A,9)},
- {D9, GET_PIN(C,7), "pwm3", 2}, /* PWM */
- {D10, GET_PIN(B,6), "pwm4", 1}, /* PWM */
- {D11, GET_PIN(A,7), "pwm1", -1}, /* PWM */
- {D12, GET_PIN(A,6)},
- {D13, GET_PIN(A,5)}, /* LED_BUILTIN */
- {D14, GET_PIN(B,9), "i2c1"}, /* I2C-SDA (Wire) */
- {D15, GET_PIN(B,8), "i2c1"}, /* I2C-SCL (Wire) */
- {D16, GET_PIN(C,13)},
- {A0, GET_PIN(A,0), "adc1", 0}, /* ADC */
- {A1, GET_PIN(A,1), "adc1", 1}, /* ADC */
- {A2, GET_PIN(A,4), "adc1", 4}, /* ADC */
- {A3, GET_PIN(B,0), "adc1", 8}, /* ADC */
- {A4, GET_PIN(C,1), "adc1", 11}, /* ADC */
- {A5, GET_PIN(C,0), "adc1", 10}, /* ADC */
- {A6, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF}, /* ADC, On-Chip: internal reference voltage */
- {A7, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER}, /* ADC, On-Chip: internal temperature sensor */
+const pin_map_t pin_map_table[] = {
+ { D0, GET_PIN(A, 3), "uart2" }, /* Serial-RX */
+ { D1, GET_PIN(A, 2), "uart2" }, /* Serial-TX */
+ { D2, GET_PIN(A, 10) },
+ { D3, GET_PIN(B, 3), "pwm2", 2 }, /* PWM */
+ { D4, GET_PIN(B, 5) },
+ { D5, GET_PIN(B, 4), "pwm3", 1 }, /* PWM */
+ { D6, GET_PIN(B, 10), "pwm2", 3 }, /* PWM */
+ { D7, GET_PIN(A, 8) },
+ { D8, GET_PIN(A, 9) },
+ { D9, GET_PIN(C, 7), "pwm3", 2 }, /* PWM */
+ { D10, GET_PIN(B, 6), "pwm4", 1 }, /* PWM */
+ { D11, GET_PIN(A, 7), "pwm1", -1 }, /* PWM */
+ { D12, GET_PIN(A, 6) },
+ { D13, GET_PIN(A, 5) }, /* LED_BUILTIN */
+ { D14, GET_PIN(B, 9), "swi2c1" }, /* I2C-SDA (Wire) */
+ { D15, GET_PIN(B, 8), "swi2c1" }, /* I2C-SCL (Wire) */
+ { D16, GET_PIN(C, 13) },
+ { A0, GET_PIN(A, 0), "adc1", 0 }, /* ADC */
+ { A1, GET_PIN(A, 1), "adc1", 1 }, /* ADC */
+ { A2, GET_PIN(A, 4), "adc1", 4 }, /* ADC */
+ { A3, GET_PIN(B, 0), "adc1", 8 }, /* ADC */
+ { A4, GET_PIN(C, 1), "adc1", 11 }, /* ADC */
+ { A5, GET_PIN(C, 0), "adc1", 10 }, /* ADC */
+ { A6, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF }, /* ADC, On-Chip: internal reference voltage */
+ { A7, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER }, /* ADC, On-Chip: internal temperature sensor */
};
#ifdef RTDUINO_USING_SPI
diff --git a/bsp/stm32/stm32f411-st-nucleo/applications/arduino_pinout/pins_arduino.h b/bsp/stm32/stm32f411-st-nucleo/applications/arduino_pinout/pins_arduino.h
index 504b746427..5cb67c3437 100644
--- a/bsp/stm32/stm32f411-st-nucleo/applications/arduino_pinout/pins_arduino.h
+++ b/bsp/stm32/stm32f411-st-nucleo/applications/arduino_pinout/pins_arduino.h
@@ -44,8 +44,8 @@
#define LED_BUILTIN D13 /* Default Built-in LED */
-/* i2c1 : PB9-SDA PB8-SCL */
-#define RTDUINO_DEFAULT_IIC_BUS_NAME "i2c1"
+/* swi2c1 : PB9-SDA PB8-SCL */
+#define RTDUINO_DEFAULT_IIC_BUS_NAME "swi2c1"
#define SS D10
#define RTDUINO_DEFAULT_SPI_BUS_NAME "spi1"
diff --git a/bsp/stm32/stm32f411-st-nucleo/board/Kconfig b/bsp/stm32/stm32f411-st-nucleo/board/Kconfig
index 9c4c0c3466..c7544d7fd4 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 BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C1
select BSP_USING_SPI
select BSP_USING_SPI1
select BSP_SPI1_TX_USING_DMA
@@ -38,6 +39,19 @@ menu "Onboard Peripheral Drivers"
imply RTDUINO_USING_SERVO
default n
+
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 24 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 25 if RT_USING_SOFT_I2C1
+
endmenu
menu "On-chip Peripheral Drivers"
@@ -134,24 +148,25 @@ menu "On-chip Peripheral Drivers"
default n
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 24
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 25
+ endif
endif
-
menuconfig BSP_USING_PWM
bool "Enable PWM"
default n
@@ -287,4 +302,5 @@ menu "Board extended module Drivers"
endmenu
+
endmenu
diff --git a/bsp/stm32/stm32f411-weact-blackpill/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f411-weact-blackpill/.ci/attachconfig/ci.attachconfig.yml
index 2a7fcdfd27..265ebbf974 100644
--- a/bsp/stm32/stm32f411-weact-blackpill/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/stm32/stm32f411-weact-blackpill/.ci/attachconfig/ci.attachconfig.yml
@@ -11,4 +11,14 @@ nano:
peripheral.arduino:
<<: *scons
kconfig:
- - CONFIG_BSP_USING_ARDUINO=y
+ - CONFIG_BSP_USING_ARDUINO=y
+
+devices.soft_i2c:
+ <<: *scons
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=26
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=18
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/stm32/stm32f411-weact-blackpill/applications/arduino_pinout/pins_arduino.c b/bsp/stm32/stm32f411-weact-blackpill/applications/arduino_pinout/pins_arduino.c
index b54e02e55e..0bd2b34f19 100644
--- a/bsp/stm32/stm32f411-weact-blackpill/applications/arduino_pinout/pins_arduino.c
+++ b/bsp/stm32/stm32f411-weact-blackpill/applications/arduino_pinout/pins_arduino.c
@@ -19,40 +19,39 @@
* Analog pins MUST give the device name and channel(ADC, PWM or DAC).
* Arduino Pin must keep in sequence.
*/
-const pin_map_t pin_map_table[]=
-{
- {D0, GET_PIN(C,13)}, /* LED_BUILTIN */
- {D1, GET_PIN(C,14)},
- {D2, GET_PIN(C,15)},
- {D3, GET_PIN(A,2), "uart2"}, /* Serial-TX */
- {D4, GET_PIN(A,3), "uart2"}, /* Serial-RX */
- {D5, GET_PIN(B,2), "i2c1"}, /* I2C-SDA (Wire) */
- {D6, GET_PIN(B,10), "i2c1"}, /* I2C-SCL (Wire) */
- {D7, GET_PIN(B,9), "pwm4", 4}, /* PWM */
- {D8, GET_PIN(B,8), "pwm4", 3}, /* PWM */
- {D9, GET_PIN(B,7), "pwm4", 2}, /* PWM */
- {D10, GET_PIN(B,6), "pwm4", 1}, /* PWM */
- {D11, GET_PIN(B,5), "spi1"}, /* SPI-MOSI */
- {D12, GET_PIN(B,4), "spi1"}, /* SPI-MISO */
- {D13, GET_PIN(B,3), "spi1"}, /* SPI-SCK */
- {D14, GET_PIN(A,15), "spi1"}, /* SPI-SS */
- {D15, GET_PIN(A,12), "usb"}, /* SerialUSB */
- {D16, GET_PIN(A,11), "usb"}, /* SerialUSB */
- {D17, GET_PIN(A,10), "uart1"}, /* Serial-RX */
- {D18, GET_PIN(A,9), "uart1"}, /* Serial-TX */
- {D19, GET_PIN(A,8)},
- {D20, GET_PIN(B,15), "pwm1", -3}, /* PWM */
- {D21, GET_PIN(B,14), "pwm1", -2}, /* PWM */
- {D22, GET_PIN(B,13), "pwm1", -1}, /* PWM */
- {D23, GET_PIN(B,12)},
- {A0, GET_PIN(A,0), "adc1", 0}, /* ADC */
- {A1, GET_PIN(A,1), "adc1", 1}, /* ADC */
- {A2, GET_PIN(A,4), "adc1", 4}, /* ADC */
- {A3, GET_PIN(A,5), "adc1", 5}, /* ADC */
- {A4, GET_PIN(A,6), "adc1", 6}, /* ADC */
- {A5, GET_PIN(A,7), "adc1", 7}, /* ADC */
- {A6, GET_PIN(B,0), "adc1", 8}, /* ADC */
- {A7, GET_PIN(B,1), "adc1", 9}, /* ADC */
- {A8, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF}, /* ADC, On-Chip: internal reference voltage */
- {A9, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER}, /* ADC, On-Chip: internal temperature sensor */
+const pin_map_t pin_map_table[] = {
+ { D0, GET_PIN(C, 13) }, /* LED_BUILTIN */
+ { D1, GET_PIN(C, 14) },
+ { D2, GET_PIN(C, 15) },
+ { D3, GET_PIN(A, 2), "uart2" }, /* Serial-TX */
+ { D4, GET_PIN(A, 3), "uart2" }, /* Serial-RX */
+ { D5, GET_PIN(B, 2), "swi2c1" }, /* I2C-SDA (Wire) */
+ { D6, GET_PIN(B, 10), "swi2c1" }, /* I2C-SCL (Wire) */
+ { D7, GET_PIN(B, 9), "pwm4", 4 }, /* PWM */
+ { D8, GET_PIN(B, 8), "pwm4", 3 }, /* PWM */
+ { D9, GET_PIN(B, 7), "pwm4", 2 }, /* PWM */
+ { D10, GET_PIN(B, 6), "pwm4", 1 }, /* PWM */
+ { D11, GET_PIN(B, 5), "spi1" }, /* SPI-MOSI */
+ { D12, GET_PIN(B, 4), "spi1" }, /* SPI-MISO */
+ { D13, GET_PIN(B, 3), "spi1" }, /* SPI-SCK */
+ { D14, GET_PIN(A, 15), "spi1" }, /* SPI-SS */
+ { D15, GET_PIN(A, 12), "usb" }, /* SerialUSB */
+ { D16, GET_PIN(A, 11), "usb" }, /* SerialUSB */
+ { D17, GET_PIN(A, 10), "uart1" }, /* Serial-RX */
+ { D18, GET_PIN(A, 9), "uart1" }, /* Serial-TX */
+ { D19, GET_PIN(A, 8) },
+ { D20, GET_PIN(B, 15), "pwm1", -3 }, /* PWM */
+ { D21, GET_PIN(B, 14), "pwm1", -2 }, /* PWM */
+ { D22, GET_PIN(B, 13), "pwm1", -1 }, /* PWM */
+ { D23, GET_PIN(B, 12) },
+ { A0, GET_PIN(A, 0), "adc1", 0 }, /* ADC */
+ { A1, GET_PIN(A, 1), "adc1", 1 }, /* ADC */
+ { A2, GET_PIN(A, 4), "adc1", 4 }, /* ADC */
+ { A3, GET_PIN(A, 5), "adc1", 5 }, /* ADC */
+ { A4, GET_PIN(A, 6), "adc1", 6 }, /* ADC */
+ { A5, GET_PIN(A, 7), "adc1", 7 }, /* ADC */
+ { A6, GET_PIN(B, 0), "adc1", 8 }, /* ADC */
+ { A7, GET_PIN(B, 1), "adc1", 9 }, /* ADC */
+ { A8, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF }, /* ADC, On-Chip: internal reference voltage */
+ { A9, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER }, /* ADC, On-Chip: internal temperature sensor */
};
diff --git a/bsp/stm32/stm32f411-weact-blackpill/applications/arduino_pinout/pins_arduino.h b/bsp/stm32/stm32f411-weact-blackpill/applications/arduino_pinout/pins_arduino.h
index 68689fbf43..d2f20af55d 100644
--- a/bsp/stm32/stm32f411-weact-blackpill/applications/arduino_pinout/pins_arduino.h
+++ b/bsp/stm32/stm32f411-weact-blackpill/applications/arduino_pinout/pins_arduino.h
@@ -57,8 +57,8 @@
#define SS D14 /* Chip select pin of default spi */
#define RTDUINO_DEFAULT_SPI_BUS_NAME "spi1"
-/* i2c1 : PB2-SDA PB10-SCL */
-#define RTDUINO_DEFAULT_IIC_BUS_NAME "i2c1"
+/* swi2c1 : PB2-SDA PB10-SCL */
+#define RTDUINO_DEFAULT_IIC_BUS_NAME "swi2c1"
/* Serial2 - PA2-TX PA3-RX */
#define RTDUINO_SERIAL2_DEVICE_NAME "uart2"
diff --git a/bsp/stm32/stm32f411-weact-blackpill/board/Kconfig b/bsp/stm32/stm32f411-weact-blackpill/board/Kconfig
index 13e390fec4..2ca4e8fca3 100644
--- a/bsp/stm32/stm32f411-weact-blackpill/board/Kconfig
+++ b/bsp/stm32/stm32f411-weact-blackpill/board/Kconfig
@@ -24,12 +24,26 @@ 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 BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C1
select RTDUINO_USING_SPI
select RTDUINO_USING_WIRE
imply RTDUINO_USING_SERVO
default n
+
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 26 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 18 if RT_USING_SOFT_I2C1
+
endmenu
menu "On-chip Peripheral Drivers"
@@ -126,68 +140,25 @@ menu "On-chip Peripheral Drivers"
default n
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
- endif
-
- menuconfig BSP_USING_PWM
- bool "Enable PWM"
- default n
- select RT_USING_PWM
- if BSP_USING_PWM
- menuconfig BSP_USING_PWM1
- bool "Enable timer1 output PWM"
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
default n
- if BSP_USING_PWM1
- config BSP_USING_PWM1_CH1
- bool "Enable PWM1 channel1"
- default n
-
- config BSP_USING_PWM1_CH2
- bool "Enable PWM1 channel2"
- default n
-
- config BSP_USING_PWM1_CH3
- bool "Enable PWM1 channel3"
- default n
- endif
-
- menuconfig BSP_USING_PWM4
- bool "Enable timer4 output PWM"
- default n
- if BSP_USING_PWM4
- config BSP_USING_PWM4_CH1
- bool "Enable PWM4 channel1"
- default n
-
- config BSP_USING_PWM4_CH2
- bool "Enable PWM4 channel2"
- default n
-
- config BSP_USING_PWM4_CH3
- bool "Enable PWM4 channel3"
- default n
-
- config BSP_USING_PWM4_CH4
- bool "Enable PWM4 channel4"
- default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 26
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 18
endif
endif
-
menuconfig BSP_USING_SPI
bool "Enable SPI BUS"
default n
@@ -240,4 +211,5 @@ menu "Board extended module Drivers"
endmenu
+
endmenu
diff --git a/bsp/stm32/stm32f412-st-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f412-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
index e4646070a9..12d7fdc2c9 100644
--- a/bsp/stm32/stm32f412-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/stm32/stm32f412-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
@@ -8,3 +8,12 @@ nano:
kconfig:
- CONFIG_RT_USING_NANO=y
+devices.soft_i2c:
+ <<: *scons
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=24
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=25
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/stm32/stm32f412-st-nucleo/applications/arduino_pinout/pins_arduino.c b/bsp/stm32/stm32f412-st-nucleo/applications/arduino_pinout/pins_arduino.c
index 8af913a392..94e548c972 100644
--- a/bsp/stm32/stm32f412-st-nucleo/applications/arduino_pinout/pins_arduino.c
+++ b/bsp/stm32/stm32f412-st-nucleo/applications/arduino_pinout/pins_arduino.c
@@ -23,36 +23,35 @@
* Analog pins MUST give the device name and channel(ADC, PWM or DAC).
* Arduino Pin must keep in sequence.
*/
-const pin_map_t pin_map_table[]=
-{
- {D0, GET_PIN(G,9), "uart3"}, /* Serial-xx */
- {D1, GET_PIN(G,14), "uart3"}, /* Serial-xx */
- {D2, GET_PIN(F,15)},
- {D3, GET_PIN(E,13), "pwm1", 3}, /* PWM */
- {D4, GET_PIN(F,14)},
- {D5, GET_PIN(E,11), "pwm1", 2}, /* PWM */
- {D6, GET_PIN(E,9), "pwm1", 1}, /* PWM */
- {D7, GET_PIN(F,13)},
- {D8, GET_PIN(F,12)},
- {D9, GET_PIN(D,15), "pwm4", 4}, /* PWM */
- {D10, GET_PIN(D,14), "pwm4", 3}, /* PWM */
- {D11, GET_PIN(A,7), "pwm14", 1}, /* PWM */
- {D12, GET_PIN(A,6)},
- {D13, GET_PIN(A,5)},
- {D14, GET_PIN(B,9), "i2c1"}, /* I2C-SDA (Wire) */
- {D15, GET_PIN(B,8), "i2c1"}, /* I2C-SCL (Wire) */
- {D16, GET_PIN(C,13)}, /* USER KEY */
- {D17, GET_PIN(B,0)}, /* LED_BUILTIN, USER LED1 */
- {D18, GET_PIN(B,7)}, /* USER LED2 */
- {D19, GET_PIN(B,14)}, /* USER LED3 */
- {A0, GET_PIN(A,3), "adc1", 3}, /* ADC */
- {A1, GET_PIN(C,0), "adc1", 10}, /* ADC */
- {A2, GET_PIN(C,3), "adc1", 13}, /* ADC */
- {A3, GET_PIN(C,1), "adc1", 11}, /* ADC */
- {A4, GET_PIN(C,4), "adc1", 14}, /* ADC */
- {A5, GET_PIN(C,5), "adc1", 15}, /* ADC */
- {A6, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF}, /* ADC, On-Chip: internal reference voltage */
- {A7, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER}, /* ADC, On-Chip: internal temperature sensor */
+const pin_map_t pin_map_table[] = {
+ { D0, GET_PIN(G, 9), "uart3" }, /* Serial-xx */
+ { D1, GET_PIN(G, 14), "uart3" }, /* Serial-xx */
+ { D2, GET_PIN(F, 15) },
+ { D3, GET_PIN(E, 13), "pwm1", 3 }, /* PWM */
+ { D4, GET_PIN(F, 14) },
+ { D5, GET_PIN(E, 11), "pwm1", 2 }, /* PWM */
+ { D6, GET_PIN(E, 9), "pwm1", 1 }, /* PWM */
+ { D7, GET_PIN(F, 13) },
+ { D8, GET_PIN(F, 12) },
+ { D9, GET_PIN(D, 15), "pwm4", 4 }, /* PWM */
+ { D10, GET_PIN(D, 14), "pwm4", 3 }, /* PWM */
+ { D11, GET_PIN(A, 7), "pwm14", 1 }, /* PWM */
+ { D12, GET_PIN(A, 6) },
+ { D13, GET_PIN(A, 5) },
+ { D14, GET_PIN(B, 9), "swi2c1" }, /* I2C-SDA (Wire) */
+ { D15, GET_PIN(B, 8), "swi2c1" }, /* I2C-SCL (Wire) */
+ { D16, GET_PIN(C, 13) }, /* USER KEY */
+ { D17, GET_PIN(B, 0) }, /* LED_BUILTIN, USER LED1 */
+ { D18, GET_PIN(B, 7) }, /* USER LED2 */
+ { D19, GET_PIN(B, 14) }, /* USER LED3 */
+ { A0, GET_PIN(A, 3), "adc1", 3 }, /* ADC */
+ { A1, GET_PIN(C, 0), "adc1", 10 }, /* ADC */
+ { A2, GET_PIN(C, 3), "adc1", 13 }, /* ADC */
+ { A3, GET_PIN(C, 1), "adc1", 11 }, /* ADC */
+ { A4, GET_PIN(C, 4), "adc1", 14 }, /* ADC */
+ { A5, GET_PIN(C, 5), "adc1", 15 }, /* ADC */
+ { A6, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF }, /* ADC, On-Chip: internal reference voltage */
+ { A7, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER }, /* ADC, On-Chip: internal temperature sensor */
};
#ifdef RTDUINO_USING_SPI
diff --git a/bsp/stm32/stm32f412-st-nucleo/applications/arduino_pinout/pins_arduino.h b/bsp/stm32/stm32f412-st-nucleo/applications/arduino_pinout/pins_arduino.h
index 9840fd7f99..e5d09e226e 100644
--- a/bsp/stm32/stm32f412-st-nucleo/applications/arduino_pinout/pins_arduino.h
+++ b/bsp/stm32/stm32f412-st-nucleo/applications/arduino_pinout/pins_arduino.h
@@ -47,8 +47,8 @@
#define LED_BUILTIN D17 /* Default Built-in LED */
-/* i2c1 : PB9-SDA PB8-SCL */
-#define RTDUINO_DEFAULT_IIC_BUS_NAME "i2c1"
+/* swi2c1 : PB9-SDA PB8-SCL */
+#define RTDUINO_DEFAULT_IIC_BUS_NAME "swi2c1"
#define SS D10
#define RTDUINO_DEFAULT_SPI_BUS_NAME "spi1"
diff --git a/bsp/stm32/stm32f412-st-nucleo/board/Kconfig b/bsp/stm32/stm32f412-st-nucleo/board/Kconfig
index 28d5f0e198..009de1c96d 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 BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C1
select BSP_USING_SPI
select BSP_USING_SPI1
select BSP_SPI1_TX_USING_DMA
@@ -38,6 +39,19 @@ menu "Onboard Peripheral Drivers"
imply RTDUINO_USING_SERVO
default n
+
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 24 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 25 if RT_USING_SOFT_I2C1
+
endmenu
menu "On-chip Peripheral Drivers"
@@ -190,30 +204,25 @@ menu "On-chip Peripheral Drivers"
default n
endif
- menuconfig BSP_USING_I2C
- bool "Enable I2C BUS"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
-
- if BSP_USING_I2C
- config BSP_USING_I2C1
- bool "Enable I2C1 Bus (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
- endif
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 24
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 25
+ endif
endif
-
menuconfig BSP_USING_SPI
bool "Enable SPI BUS"
default n
diff --git a/bsp/stm32/stm32f413-st-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f413-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
index 69dfd8a229..c18707048c 100644
--- a/bsp/stm32/stm32f413-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/stm32/stm32f413-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
@@ -7,4 +7,13 @@ nano:
<<: *scons
kconfig:
- CONFIG_RT_USING_NANO=y
-
+
+devices.soft_i2c:
+ <<: *scons
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=136
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=140
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/stm32/stm32f413-st-nucleo/board/Kconfig b/bsp/stm32/stm32f413-st-nucleo/board/Kconfig
index cd009d2fe2..784e4589f1 100644
--- a/bsp/stm32/stm32f413-st-nucleo/board/Kconfig
+++ b/bsp/stm32/stm32f413-st-nucleo/board/Kconfig
@@ -115,24 +115,25 @@ menu "On-chip Peripheral Drivers"
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 136
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 140
+ endif
endif
-
menuconfig BSP_USING_TIM
bool "Enable timer"
default n
@@ -216,4 +217,16 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 136 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 140 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/stm32/stm32f427-robomaster-a/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f427-robomaster-a/.ci/attachconfig/ci.attachconfig.yml
index 2a7fcdfd27..27ce57a8cf 100644
--- a/bsp/stm32/stm32f427-robomaster-a/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/stm32/stm32f427-robomaster-a/.ci/attachconfig/ci.attachconfig.yml
@@ -11,4 +11,14 @@ nano:
peripheral.arduino:
<<: *scons
kconfig:
- - CONFIG_BSP_USING_ARDUINO=y
+ - CONFIG_BSP_USING_ARDUINO=y
+
+devices.soft_i2c:
+ <<: *scons
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=68
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=69
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/stm32/stm32f427-robomaster-a/applications/arduino_pinout/pins_arduino.c b/bsp/stm32/stm32f427-robomaster-a/applications/arduino_pinout/pins_arduino.c
index 13b630f72e..240072a090 100644
--- a/bsp/stm32/stm32f427-robomaster-a/applications/arduino_pinout/pins_arduino.c
+++ b/bsp/stm32/stm32f427-robomaster-a/applications/arduino_pinout/pins_arduino.c
@@ -19,52 +19,51 @@
* Analog pins MUST give the device name and channel(ADC, PWM or DAC).
* Arduino Pin must keep in sequence.
*/
-const pin_map_t pin_map_table[]=
-{
- {D0, GET_PIN(F,14)}, /* LED_BUILTIN */
- {D1, GET_PIN(D,9), "uart3"}, /* Serial-RX */
- {D2, GET_PIN(D,8), "uart3"}, /* Serial-TX */
- {D3, GET_PIN(G,9), "uart6"}, /* Serial-RX */
- {D4, GET_PIN(G,14), "uart6"}, /* Serial-TX */
- {D5, GET_PIN(E,0), "uart8"}, /* Serial-RX */
- {D6, GET_PIN(E,1), "uart8"}, /* Serial-TX */
- {D7, GET_PIN(E,7), "uart7"}, /* Serial-RX */
- {D8, GET_PIN(E,8), "uart7"}, /* Serial-TX */
- {D9, GET_PIN(H,6), "pwm12", 1}, /* BSP: Buzzer, PWM */
- {D10, GET_PIN(D,12), "pwm4", 1}, /* PWM */
- {D11, GET_PIN(D,13), "pwm4", 2}, /* PWM */
- {D12, GET_PIN(D,14), "pwm4", 3}, /* PWM */
- {D13, GET_PIN(D,15), "pwm4", 4}, /* PWM */
- {D14, GET_PIN(H,10), "pwm5", 1}, /* PWM */
- {D15, GET_PIN(H,11), "pwm5", 2}, /* PWM */
- {D16, GET_PIN(H,12), "pwm5", 3}, /* PWM */
- {D17, GET_PIN(I,0), "pwm5", 4}, /* PWM */
- {D18, GET_PIN(A,0), "pwm2", 1}, /* PWM */
- {D19, GET_PIN(A,1), "pwm2", 2}, /* PWM */
- {D20, GET_PIN(A,2), "pwm2", 3}, /* PWM */
- {D21, GET_PIN(A,3), "pwm2", 4}, /* PWM */
- {D22, GET_PIN(I,5), "pwm8", 1}, /* PWM */
- {D23, GET_PIN(I,6), "pwm8", 2}, /* PWM */
- {D24, GET_PIN(I,7), "pwm8", 3}, /* PWM */
- {D25, GET_PIN(I,2), "pwm8", 4}, /* PWM */
- {D26, GET_PIN(F,1)},
- {D27, GET_PIN(F,0)},
- {D28, GET_PIN(E,4), "i2c1"}, /* I2C-SCL (Wire) */
- {D29, GET_PIN(E,5), "i2c1"}, /* I2C-SDA (Wire) */
- {D30, GET_PIN(E,6)},
- {D31, GET_PIN(E,12)},
- {D32, GET_PIN(C,2)},
- {D33, GET_PIN(B,0)},
- {D34, GET_PIN(C,3)},
- {D35, GET_PIN(B,1)},
- {D36, GET_PIN(C,4)},
- {D37, GET_PIN(C,0)},
- {D38, GET_PIN(C,5)},
- {D39, GET_PIN(C,1)},
- {D40, GET_PIN(A,5)},
- {D41, GET_PIN(A,4)},
- {D42, GET_PIN(F,10)},
- {D43, GET_PIN(I,9)},
- {A0, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF}, /* ADC, On-Chip: internal temperature sensor */
- {A1, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER}, /* ADC, On-Chip: internal reference voltage */
+const pin_map_t pin_map_table[] = {
+ { D0, GET_PIN(F, 14) }, /* LED_BUILTIN */
+ { D1, GET_PIN(D, 9), "uart3" }, /* Serial-RX */
+ { D2, GET_PIN(D, 8), "uart3" }, /* Serial-TX */
+ { D3, GET_PIN(G, 9), "uart6" }, /* Serial-RX */
+ { D4, GET_PIN(G, 14), "uart6" }, /* Serial-TX */
+ { D5, GET_PIN(E, 0), "uart8" }, /* Serial-RX */
+ { D6, GET_PIN(E, 1), "uart8" }, /* Serial-TX */
+ { D7, GET_PIN(E, 7), "uart7" }, /* Serial-RX */
+ { D8, GET_PIN(E, 8), "uart7" }, /* Serial-TX */
+ { D9, GET_PIN(H, 6), "pwm12", 1 }, /* BSP: Buzzer, PWM */
+ { D10, GET_PIN(D, 12), "pwm4", 1 }, /* PWM */
+ { D11, GET_PIN(D, 13), "pwm4", 2 }, /* PWM */
+ { D12, GET_PIN(D, 14), "pwm4", 3 }, /* PWM */
+ { D13, GET_PIN(D, 15), "pwm4", 4 }, /* PWM */
+ { D14, GET_PIN(H, 10), "pwm5", 1 }, /* PWM */
+ { D15, GET_PIN(H, 11), "pwm5", 2 }, /* PWM */
+ { D16, GET_PIN(H, 12), "pwm5", 3 }, /* PWM */
+ { D17, GET_PIN(I, 0), "pwm5", 4 }, /* PWM */
+ { D18, GET_PIN(A, 0), "pwm2", 1 }, /* PWM */
+ { D19, GET_PIN(A, 1), "pwm2", 2 }, /* PWM */
+ { D20, GET_PIN(A, 2), "pwm2", 3 }, /* PWM */
+ { D21, GET_PIN(A, 3), "pwm2", 4 }, /* PWM */
+ { D22, GET_PIN(I, 5), "pwm8", 1 }, /* PWM */
+ { D23, GET_PIN(I, 6), "pwm8", 2 }, /* PWM */
+ { D24, GET_PIN(I, 7), "pwm8", 3 }, /* PWM */
+ { D25, GET_PIN(I, 2), "pwm8", 4 }, /* PWM */
+ { D26, GET_PIN(F, 1) },
+ { D27, GET_PIN(F, 0) },
+ { D28, GET_PIN(E, 4), "swi2c1" }, /* I2C-SCL (Wire) */
+ { D29, GET_PIN(E, 5), "swi2c1" }, /* I2C-SDA (Wire) */
+ { D30, GET_PIN(E, 6) },
+ { D31, GET_PIN(E, 12) },
+ { D32, GET_PIN(C, 2) },
+ { D33, GET_PIN(B, 0) },
+ { D34, GET_PIN(C, 3) },
+ { D35, GET_PIN(B, 1) },
+ { D36, GET_PIN(C, 4) },
+ { D37, GET_PIN(C, 0) },
+ { D38, GET_PIN(C, 5) },
+ { D39, GET_PIN(C, 1) },
+ { D40, GET_PIN(A, 5) },
+ { D41, GET_PIN(A, 4) },
+ { D42, GET_PIN(F, 10) },
+ { D43, GET_PIN(I, 9) },
+ { A0, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF }, /* ADC, On-Chip: internal temperature sensor */
+ { A1, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER }, /* ADC, On-Chip: internal reference voltage */
};
diff --git a/bsp/stm32/stm32f427-robomaster-a/applications/arduino_pinout/pins_arduino.h b/bsp/stm32/stm32f427-robomaster-a/applications/arduino_pinout/pins_arduino.h
index 261c0d4678..082af4725d 100644
--- a/bsp/stm32/stm32f427-robomaster-a/applications/arduino_pinout/pins_arduino.h
+++ b/bsp/stm32/stm32f427-robomaster-a/applications/arduino_pinout/pins_arduino.h
@@ -65,7 +65,7 @@
#define LED_BUILTIN D0 /* Default Built-in LED */
-/* i2c1 : PE5-SDA PE4-SCL */
-#define RTDUINO_DEFAULT_IIC_BUS_NAME "i2c1"
+/* swi2c1 : PE5-SDA PE4-SCL */
+#define RTDUINO_DEFAULT_IIC_BUS_NAME "swi2c1"
#endif /* Pins_Arduino_h */
diff --git a/bsp/stm32/stm32f427-robomaster-a/board/Kconfig b/bsp/stm32/stm32f427-robomaster-a/board/Kconfig
index dbb3ea37b8..97e5b3f603 100644
--- a/bsp/stm32/stm32f427-robomaster-a/board/Kconfig
+++ b/bsp/stm32/stm32f427-robomaster-a/board/Kconfig
@@ -38,12 +38,26 @@ 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 BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C1
select RTDUINO_USING_WIRE
imply RTDUINO_USING_SERVO
default n
+
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 68 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 69 if RT_USING_SOFT_I2C1
+
endmenu
menu "On-chip Peripheral Drivers"
@@ -258,30 +272,25 @@ menu "On-chip Peripheral Drivers"
default n
endif
- menuconfig BSP_USING_I2C
- bool "Enable I2C BUS"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
-
- if BSP_USING_I2C
- config BSP_USING_I2C1
- bool "Enable I2C1 Bus (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
- endif
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 68
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 69
+ endif
endif
-
menuconfig BSP_USING_PWM
bool "Enable PWM"
default n
diff --git a/bsp/stm32/stm32f429-armfly-v6/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f429-armfly-v6/.ci/attachconfig/ci.attachconfig.yml
index 93697a0991..39288ba9ee 100644
--- a/bsp/stm32/stm32f429-armfly-v6/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/stm32/stm32f429-armfly-v6/.ci/attachconfig/ci.attachconfig.yml
@@ -6,4 +6,12 @@
nano:
kconfig:
- CONFIG_RT_USING_NANO=y
-
+
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=25
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/stm32/stm32f429-armfly-v6/board/Kconfig b/bsp/stm32/stm32f429-armfly-v6/board/Kconfig
index 99b09d498d..a463838721 100644
--- a/bsp/stm32/stm32f429-armfly-v6/board/Kconfig
+++ b/bsp/stm32/stm32f429-armfly-v6/board/Kconfig
@@ -62,12 +62,26 @@ menu "Onboard Peripheral Drivers"
default n
config BSP_USING_MPU6050
- bool "Enable MPU6050(i2c1)"
- select BSP_USING_I2C1
+ bool "Enable MPU6050(swi2c1)"
+ select RT_USING_I2C
+ select BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C1
select PKG_USING_MPU6XXX
select PKG_USING_MPU6XXX_SAMPLE
select PKG_USING_MPU6XXX_LATEST_VERSION
default n
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 25 if RT_USING_SOFT_I2C1
+
endmenu
menu "On-chip Peripheral Drivers"
@@ -146,23 +160,25 @@ menu "On-chip Peripheral Drivers"
default n
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 25
+ endif
endif
-
menuconfig BSP_USING_TIM
bool "Enable timer"
default n
@@ -249,4 +265,5 @@ menu "Board extended module Drivers"
endmenu
+
endmenu
diff --git a/bsp/stm32/stm32f429-atk-apollo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f429-atk-apollo/.ci/attachconfig/ci.attachconfig.yml
index 69dfd8a229..5842675f06 100644
--- a/bsp/stm32/stm32f429-atk-apollo/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/stm32/stm32f429-atk-apollo/.ci/attachconfig/ci.attachconfig.yml
@@ -7,4 +7,13 @@ nano:
<<: *scons
kconfig:
- CONFIG_RT_USING_NANO=y
-
+
+devices.soft_i2c:
+ <<: *scons
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=116
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=117
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/stm32/stm32f429-atk-apollo/board/Kconfig b/bsp/stm32/stm32f429-atk-apollo/board/Kconfig
index 151792707e..5b2ea2b395 100644
--- a/bsp/stm32/stm32f429-atk-apollo/board/Kconfig
+++ b/bsp/stm32/stm32f429-atk-apollo/board/Kconfig
@@ -34,8 +34,10 @@ menu "Onboard Peripheral Drivers"
default n
config BSP_USING_MPU9250
- bool "Enable MPU 9250 (i2c1)"
- select BSP_USING_I2C1
+ bool "Enable MPU 9250 (swi2c1)"
+ select RT_USING_I2C
+ select BSP_USING_SOFT_I2C
+ select BSP_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 BSP_USING_SOFT_I2C
+ select BSP_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 BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C1
select RT_USING_AUDIO
default n
@@ -74,6 +80,18 @@ menu "Onboard Peripheral Drivers"
default n
endif
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 116 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 117 if RT_USING_SOFT_I2C1
+
endmenu
menu "On-chip Peripheral Drivers"
@@ -257,24 +275,25 @@ menu "On-chip Peripheral Drivers"
default n
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 116
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 117
+ endif
endif
-
menuconfig BSP_USING_TIM
bool "Enable timer"
default n
@@ -372,4 +391,5 @@ menu "Board extended module Drivers"
endmenu
+
endmenu
diff --git a/bsp/stm32/stm32f429-atk-apollo/board/ports/audio/drv_mic.c b/bsp/stm32/stm32f429-atk-apollo/board/ports/audio/drv_mic.c
index 889c5b0dee..25fe1e9d66 100644
--- a/bsp/stm32/stm32f429-atk-apollo/board/ports/audio/drv_mic.c
+++ b/bsp/stm32/stm32f429-atk-apollo/board/ports/audio/drv_mic.c
@@ -17,7 +17,7 @@
#define DBG_LVL DBG_INFO
#include <rtdbg.h>
-#define CODEC_I2C_NAME ("i2c1")
+#define CODEC_I2C_NAME ("swi2c1")
#define RX_DMA_FIFO_SIZE (2048)
extern struct drv_sai _sai_a;
@@ -303,11 +303,11 @@ static rt_err_t stm32_mic_init(struct rt_audio_device *audio)
_stm32_audio_record.i2c_bus = (struct rt_i2c_bus_device *)rt_device_find(CODEC_I2C_NAME);
if (_stm32_audio_record.i2c_bus != RT_NULL)
{
- LOG_D("Find device i2c1 success");
+ LOG_D("Find device swi2c1 success");
}
else
{
- LOG_E("Find device i2c1 error");
+ LOG_E("Find device swi2c1 error");
return -RT_ERROR;
}
diff --git a/bsp/stm32/stm32f429-atk-apollo/board/ports/audio/drv_sound.c b/bsp/stm32/stm32f429-atk-apollo/board/ports/audio/drv_sound.c
index f564cc1b84..d8d962375a 100644
--- a/bsp/stm32/stm32f429-atk-apollo/board/ports/audio/drv_sound.c
+++ b/bsp/stm32/stm32f429-atk-apollo/board/ports/audio/drv_sound.c
@@ -16,7 +16,7 @@
#define DBG_LVL DBG_INFO
#include <rtdbg.h>
-#define CODEC_I2C_NAME ("i2c1")
+#define CODEC_I2C_NAME ("swi2c1")
#define TX_DMA_FIFO_SIZE (2048)
diff --git a/bsp/stm32/stm32f429-atk-apollo/board/ports/phy_reset.c b/bsp/stm32/stm32f429-atk-apollo/board/ports/phy_reset.c
index 826f8c7ded..61c48f3d98 100644
--- a/bsp/stm32/stm32f429-atk-apollo/board/ports/phy_reset.c
+++ b/bsp/stm32/stm32f429-atk-apollo/board/ports/phy_reset.c
@@ -16,7 +16,7 @@
#include <drv_log.h>
#define ETH_RESET_IO 7 //PHY RESET PIN
-#define I2C_BUS_NAME "i2c1"
+#define I2C_BUS_NAME "swi2c1"
#define PCF8574_ADDR 0x20
/* pcf8574 hardware init */
diff --git a/bsp/stm32/stm32f429-fire-challenger/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f429-fire-challenger/.ci/attachconfig/ci.attachconfig.yml
index 69dfd8a229..bafb8dec3c 100644
--- a/bsp/stm32/stm32f429-fire-challenger/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/stm32/stm32f429-fire-challenger/.ci/attachconfig/ci.attachconfig.yml
@@ -7,4 +7,13 @@ nano:
<<: *scons
kconfig:
- CONFIG_RT_USING_NANO=y
-
+
+devices.soft_i2c:
+ <<: *scons
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/stm32/stm32f429-fire-challenger/board/Kconfig b/bsp/stm32/stm32f429-fire-challenger/board/Kconfig
index c56a1b6a85..f0a4c4604b 100644
--- a/bsp/stm32/stm32f429-fire-challenger/board/Kconfig
+++ b/bsp/stm32/stm32f429-fire-challenger/board/Kconfig
@@ -34,8 +34,10 @@ menu "Onboard Peripheral Drivers"
default n
config BSP_USING_MPU6050
- bool "Enable MPU6050 (i2c1)"
- select BSP_USING_I2C1
+ bool "Enable MPU6050 (swi2c1)"
+ select RT_USING_I2C
+ select BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C1
select PKG_USING_MPU6XXX
default n
@@ -72,6 +74,18 @@ menu "Onboard Peripheral Drivers"
select RT_USING_PIN
default n
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
endmenu
menu "On-chip Peripheral Drivers"
@@ -234,24 +248,25 @@ menu "On-chip Peripheral Drivers"
default n
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
endif
-
menuconfig BSP_USING_ONCHIP_RTC
bool "Enable RTC"
select RT_USING_RTC
@@ -295,4 +310,5 @@ menu "Board extended module Drivers"
endmenu
+
endmenu
diff --git a/bsp/stm32/stm32f429-st-disco/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f429-st-disco/.ci/attachconfig/ci.attachconfig.yml
index 69dfd8a229..12d7fdc2c9 100644
--- a/bsp/stm32/stm32f429-st-disco/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/stm32/stm32f429-st-disco/.ci/attachconfig/ci.attachconfig.yml
@@ -7,4 +7,13 @@ nano:
<<: *scons
kconfig:
- CONFIG_RT_USING_NANO=y
-
+
+devices.soft_i2c:
+ <<: *scons
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=24
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=25
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/stm32/stm32f429-st-disco/board/Kconfig b/bsp/stm32/stm32f429-st-disco/board/Kconfig
index 16195e5a12..c3a705600e 100644
--- a/bsp/stm32/stm32f429-st-disco/board/Kconfig
+++ b/bsp/stm32/stm32f429-st-disco/board/Kconfig
@@ -94,23 +94,25 @@ menu "On-chip Peripheral Drivers"
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 24
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 25
+ endif
endif
-
menuconfig BSP_USING_SPI
bool "Enable SPI BUS"
select RT_USING_SPI
@@ -165,4 +167,16 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 24 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 25 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/stm32/stm32f469-st-disco/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f469-st-disco/.ci/attachconfig/ci.attachconfig.yml
index 69787e1e61..08677bbd3c 100644
--- a/bsp/stm32/stm32f469-st-disco/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/stm32/stm32f469-st-disco/.ci/attachconfig/ci.attachconfig.yml
@@ -32,3 +32,13 @@ lvgl.v8.4latest:
- CONFIG_BSP_USING_LVGL=y
- CONFIG_BSP_USING_LVGL_DEMO=y
- CONFIG_PKG_LVGL_USING_V8_4_LATEST=y
+
+devices.soft_i2c:
+ <<: *scons
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=24
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=25
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/stm32/stm32f469-st-disco/applications/arduino_pinout/pins_arduino.c b/bsp/stm32/stm32f469-st-disco/applications/arduino_pinout/pins_arduino.c
index 2488e18729..2703f8cc29 100644
--- a/bsp/stm32/stm32f469-st-disco/applications/arduino_pinout/pins_arduino.c
+++ b/bsp/stm32/stm32f469-st-disco/applications/arduino_pinout/pins_arduino.c
@@ -23,37 +23,36 @@
* Analog pins MUST give the device name and channel(ADC, PWM or DAC).
* Arduino Pin must keep in sequence.
*/
-const pin_map_t pin_map_table[]=
-{
- {D0, GET_PIN(G,9), "uart3"}, /* Serial-Rx */
- {D1, GET_PIN(G,14), "uart3"}, /* Serial-Tx */
- {D2, GET_PIN(G,13)},
- {D3, GET_PIN(A,1), "pwm2", 2}, /* PWM */
- {D4, GET_PIN(G,12)},
- {D5, GET_PIN(A,2), "pwm2", 3}, /* PWM */
- {D6, GET_PIN(A,6), "pwm3", 1}, /* PWM */
- {D7, GET_PIN(G,11)},
- {D8, GET_PIN(G,10)},
- {D9, GET_PIN(A,7), "pwm3", 2}, /* PWM */
- {D10, GET_PIN(H,6), "pwm12", 1}, /* PWM */
- {D11, GET_PIN(B,15), "pwm12", 2}, /* PWM */
- {D12, GET_PIN(B,14)},
- {D13, GET_PIN(D,3)}, /* LED_BUILTIN */
- {D14, GET_PIN(B,9), "i2c1"}, /* I2C-SDA (Wire) */
- {D15, GET_PIN(B,8), "i2c1"}, /* I2C-SCL (Wire) */
- {D16, GET_PIN(A,0)}, /* user button */
- {D17, GET_PIN(G,6)}, /* user LED */
- {D18, GET_PIN(D,4)}, /* user LED */
- {D19, GET_PIN(D,5)}, /* user LED */
- {D20, GET_PIN(K,3)}, /* user LED */
- {A0, GET_PIN(B,1), "adc1", 9}, /* ADC */
- {A1, GET_PIN(C,2), "adc1", 12}, /* ADC */
- {A2, GET_PIN(C,3), "adc1", 13}, /* ADC */
- {A3, GET_PIN(C,4), "adc1", 14}, /* ADC */
- {A4, GET_PIN(C,5), "adc1", 15}, /* ADC */
- {A5, GET_PIN(A,4), "adc1", 4}, /* ADC */
- {A6, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF}, /* ADC, On-Chip: internal reference voltage */
- {A7, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER}, /* ADC, On-Chip: internal temperature sensor */
+const pin_map_t pin_map_table[] = {
+ { D0, GET_PIN(G, 9), "uart3" }, /* Serial-Rx */
+ { D1, GET_PIN(G, 14), "uart3" }, /* Serial-Tx */
+ { D2, GET_PIN(G, 13) },
+ { D3, GET_PIN(A, 1), "pwm2", 2 }, /* PWM */
+ { D4, GET_PIN(G, 12) },
+ { D5, GET_PIN(A, 2), "pwm2", 3 }, /* PWM */
+ { D6, GET_PIN(A, 6), "pwm3", 1 }, /* PWM */
+ { D7, GET_PIN(G, 11) },
+ { D8, GET_PIN(G, 10) },
+ { D9, GET_PIN(A, 7), "pwm3", 2 }, /* PWM */
+ { D10, GET_PIN(H, 6), "pwm12", 1 }, /* PWM */
+ { D11, GET_PIN(B, 15), "pwm12", 2 }, /* PWM */
+ { D12, GET_PIN(B, 14) },
+ { D13, GET_PIN(D, 3) }, /* LED_BUILTIN */
+ { D14, GET_PIN(B, 9), "swi2c1" }, /* I2C-SDA (Wire) */
+ { D15, GET_PIN(B, 8), "swi2c1" }, /* I2C-SCL (Wire) */
+ { D16, GET_PIN(A, 0) }, /* user button */
+ { D17, GET_PIN(G, 6) }, /* user LED */
+ { D18, GET_PIN(D, 4) }, /* user LED */
+ { D19, GET_PIN(D, 5) }, /* user LED */
+ { D20, GET_PIN(K, 3) }, /* user LED */
+ { A0, GET_PIN(B, 1), "adc1", 9 }, /* ADC */
+ { A1, GET_PIN(C, 2), "adc1", 12 }, /* ADC */
+ { A2, GET_PIN(C, 3), "adc1", 13 }, /* ADC */
+ { A3, GET_PIN(C, 4), "adc1", 14 }, /* ADC */
+ { A4, GET_PIN(C, 5), "adc1", 15 }, /* ADC */
+ { A5, GET_PIN(A, 4), "adc1", 4 }, /* ADC */
+ { A6, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF }, /* ADC, On-Chip: internal reference voltage */
+ { A7, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER }, /* ADC, On-Chip: internal temperature sensor */
};
#ifdef RTDUINO_USING_SPI
diff --git a/bsp/stm32/stm32f469-st-disco/applications/arduino_pinout/pins_arduino.h b/bsp/stm32/stm32f469-st-disco/applications/arduino_pinout/pins_arduino.h
index 8dd4453fd4..4f63c0b5ca 100644
--- a/bsp/stm32/stm32f469-st-disco/applications/arduino_pinout/pins_arduino.h
+++ b/bsp/stm32/stm32f469-st-disco/applications/arduino_pinout/pins_arduino.h
@@ -48,8 +48,8 @@
#define LED_BUILTIN D13 /* Default Built-in LED */
-/* i2c1 : PB9-SDA PB8-SCL */
-#define RTDUINO_DEFAULT_IIC_BUS_NAME "i2c1"
+/* swi2c1 : PB9-SDA PB8-SCL */
+#define RTDUINO_DEFAULT_IIC_BUS_NAME "swi2c1"
#define SS D10
#define RTDUINO_DEFAULT_SPI_BUS_NAME "spi2"
diff --git a/bsp/stm32/stm32f469-st-disco/applications/lvgl/lv_port_indev.c b/bsp/stm32/stm32f469-st-disco/applications/lvgl/lv_port_indev.c
index 88c6db1b24..70300df7e5 100644
--- a/bsp/stm32/stm32f469-st-disco/applications/lvgl/lv_port_indev.c
+++ b/bsp/stm32/stm32f469-st-disco/applications/lvgl/lv_port_indev.c
@@ -24,7 +24,7 @@
#endif /* BSP_USING_TOUCH_FT6X36 */
/* Touch chip connection information */
-#define BSP_TOUCH_I2C_BUS_NAME "i2c1"
+#define BSP_TOUCH_I2C_BUS_NAME "swi2c1"
#define BSP_TOUCH_I2C_RESET_PIN 119 /* PH.7 */
/* RT-Thread touch device name */
#define TOUCH_DEV_NAME "touch"
diff --git a/bsp/stm32/stm32f469-st-disco/board/Kconfig b/bsp/stm32/stm32f469-st-disco/board/Kconfig
index 93b561d474..a486bb563e 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 BSP_USING_SOFT_I2C
+ select BSP_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 BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C1
choice
prompt "Touch IC type"
@@ -116,6 +119,19 @@ menu "Onboard Peripheral Drivers"
select BSP_USING_LTDC
select BSP_USING_LCD_MIPI
default n
+
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 24 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 25 if RT_USING_SOFT_I2C1
+
endmenu
menu "On-chip Peripheral Drivers"
@@ -234,24 +250,25 @@ menu "On-chip Peripheral Drivers"
endif
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
- select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
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
+ select RT_USING_I2C
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 24
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 25
+ endif
endif
-
menuconfig BSP_USING_SPI
bool "Enable SPI BUS"
select RT_USING_SPI
@@ -324,4 +341,5 @@ menu "Board extended module Drivers"
endmenu
+
endmenu
diff --git a/bsp/stm32/stm32f746-st-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f746-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..d626be14a5
--- /dev/null
+++ b/bsp/stm32/stm32f746-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/stm32/stm32f746-st-nucleo/board/Kconfig b/bsp/stm32/stm32f746-st-nucleo/board/Kconfig
index 224cd13c3c..2ef9217b56 100644
--- a/bsp/stm32/stm32f746-st-nucleo/board/Kconfig
+++ b/bsp/stm32/stm32f746-st-nucleo/board/Kconfig
@@ -163,23 +163,25 @@ menu "On-chip Peripheral Drivers"
default n
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
endif
-
menuconfig BSP_USING_TIM
bool "Enable timer"
default n
@@ -294,4 +296,16 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/stm32/stm32f767-atk-apollo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f767-atk-apollo/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..e4699eab7c
--- /dev/null
+++ b/bsp/stm32/stm32f767-atk-apollo/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,12 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=24
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=25
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=116
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=117
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
diff --git a/bsp/stm32/stm32f767-atk-apollo/board/Kconfig b/bsp/stm32/stm32f767-atk-apollo/board/Kconfig
index 0bb7894b0c..9f58c25496 100644
--- a/bsp/stm32/stm32f767-atk-apollo/board/Kconfig
+++ b/bsp/stm32/stm32f767-atk-apollo/board/Kconfig
@@ -26,8 +26,10 @@ menu "Onboard Peripheral Drivers"
default n
config BSP_USING_MPU9250
- bool "Enable MPU 9250 (i2c2)"
- select BSP_USING_I2C2
+ bool "Enable MPU 9250 (swi2c2)"
+ select RT_USING_I2C
+ select BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C2
select PKG_USING_MPU6XXX
default n
@@ -36,7 +38,9 @@ menu "Onboard Peripheral Drivers"
config BSP_USING_ETH
bool "Enable Ethernet"
- select BSP_USING_I2C2
+ select RT_USING_I2C
+ select BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C2
select PKG_USING_PCF8574
select RT_USING_LWIP
select PHY_USING_LAN8720A
@@ -60,6 +64,18 @@ menu "Onboard Peripheral Drivers"
select BSP_USING_SDRAM
default n
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 116 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 117 if RT_USING_SOFT_I2C2
+
endmenu
menu "On-chip Peripheral Drivers"
@@ -218,42 +234,38 @@ menu "On-chip Peripheral Drivers"
default n
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 24
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 25
+ endif
- menuconfig BSP_USING_I2C2
- bool "Enable I2C2 BUS (software simulation)"
- 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 176
- default 116
- config BSP_I2C2_SDA_PIN
- int "I2C2 sda pin number"
- range 1 176
- default 117
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 116
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 117
+ endif
endif
-
menuconfig BSP_USING_ONCHIP_RTC
bool "Enable RTC"
select RT_USING_RTC
@@ -309,4 +321,16 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 24 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 25 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/stm32/stm32f767-atk-apollo/board/ports/phy_reset.c b/bsp/stm32/stm32f767-atk-apollo/board/ports/phy_reset.c
index 18bed5f8e4..c0dcce3b51 100644
--- a/bsp/stm32/stm32f767-atk-apollo/board/ports/phy_reset.c
+++ b/bsp/stm32/stm32f767-atk-apollo/board/ports/phy_reset.c
@@ -16,7 +16,7 @@
#include <drv_log.h>
#define ETH_RESET_IO 7 //PHY RESET PIN
-#define I2C_BUS_NAME "i2c2"
+#define I2C_BUS_NAME "swi2c2"
#define PCF8574_ADDR 0x20
/* pcf8574 hardware init */
diff --git a/bsp/stm32/stm32f767-fire-challenger-v1/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f767-fire-challenger-v1/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..d626be14a5
--- /dev/null
+++ b/bsp/stm32/stm32f767-fire-challenger-v1/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/stm32/stm32f767-fire-challenger-v1/board/Kconfig b/bsp/stm32/stm32f767-fire-challenger-v1/board/Kconfig
index c55f45c72b..474892dcf8 100644
--- a/bsp/stm32/stm32f767-fire-challenger-v1/board/Kconfig
+++ b/bsp/stm32/stm32f767-fire-challenger-v1/board/Kconfig
@@ -33,8 +33,10 @@ menu "Onboard Peripheral Drivers"
default n
config BSP_USING_MPU6050
- bool "Enable MPU6050 (i2c4)"
- select BSP_USING_I2C4
+ bool "Enable MPU6050 (swi2c4)"
+ select RT_USING_I2C
+ select BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C4
select PKG_USING_MPU6XXX
default n
@@ -52,6 +54,18 @@ menu "Onboard Peripheral Drivers"
select RT_USING_PIN
default n
+ config RT_SOFT_I2C4_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C4
+
+ config RT_SOFT_I2C4_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C4
+
+ config RT_SOFT_I2C4_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C4
+
endmenu
menu "On-chip Peripheral Drivers"
@@ -191,24 +205,38 @@ menu "On-chip Peripheral Drivers"
default n
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
+ menuconfig BSP_USING_SOFT_I2C4
+ bool "Enable software I2C4 Bus (swi2c4)"
+ default n
+ select RT_USING_SOFT_I2C4
+ if BSP_USING_SOFT_I2C4
+ config RT_SOFT_I2C4_SCL_PIN
+ int "swi2c4 SCL pin number"
+ default 22
+ config RT_SOFT_I2C4_SDA_PIN
+ int "swi2c4 SDA pin number"
+ default 23
+ endif
+ endif
menuconfig BSP_USING_ONCHIP_RTC
bool "Enable RTC"
select RT_USING_RTC
@@ -253,4 +281,16 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/stm32/stm32g070-st-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32g070-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
index e4646070a9..bafb8dec3c 100644
--- a/bsp/stm32/stm32g070-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/stm32/stm32g070-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
@@ -8,3 +8,12 @@ nano:
kconfig:
- CONFIG_RT_USING_NANO=y
+devices.soft_i2c:
+ <<: *scons
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/stm32/stm32g070-st-nucleo/board/Kconfig b/bsp/stm32/stm32g070-st-nucleo/board/Kconfig
index bbf6869bc4..61698e0622 100644
--- a/bsp/stm32/stm32g070-st-nucleo/board/Kconfig
+++ b/bsp/stm32/stm32g070-st-nucleo/board/Kconfig
@@ -203,22 +203,24 @@ menu "On-chip Peripheral Drivers"
select BSP_SPI2_TX_USING_DMA
default n
endif
-
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
endif
menuconfig BSP_USING_ADC
@@ -264,4 +266,16 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/stm32/stm32g071-st-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32g071-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
index e4646070a9..bafb8dec3c 100644
--- a/bsp/stm32/stm32g071-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/stm32/stm32g071-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
@@ -8,3 +8,12 @@ nano:
kconfig:
- CONFIG_RT_USING_NANO=y
+devices.soft_i2c:
+ <<: *scons
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/stm32/stm32g071-st-nucleo/board/Kconfig b/bsp/stm32/stm32g071-st-nucleo/board/Kconfig
index 899c308fb4..b153f23bf1 100644
--- a/bsp/stm32/stm32g071-st-nucleo/board/Kconfig
+++ b/bsp/stm32/stm32g071-st-nucleo/board/Kconfig
@@ -196,23 +196,25 @@ menu "On-chip Peripheral Drivers"
default n
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
endif
-
menuconfig BSP_USING_ADC
bool "Enable ADC"
default n
@@ -239,4 +241,16 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/stm32/stm32g474-st-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32g474-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
index 2a7fcdfd27..a863524b07 100644
--- a/bsp/stm32/stm32g474-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/stm32/stm32g474-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
@@ -11,4 +11,14 @@ nano:
peripheral.arduino:
<<: *scons
kconfig:
- - CONFIG_BSP_USING_ARDUINO=y
+ - CONFIG_BSP_USING_ARDUINO=y
+
+devices.soft_i2c:
+ <<: *scons
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=24
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=25
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/stm32/stm32g474-st-nucleo/applications/arduino_pinout/pins_arduino.c b/bsp/stm32/stm32g474-st-nucleo/applications/arduino_pinout/pins_arduino.c
index 6239575e01..15d00c543d 100644
--- a/bsp/stm32/stm32g474-st-nucleo/applications/arduino_pinout/pins_arduino.c
+++ b/bsp/stm32/stm32g474-st-nucleo/applications/arduino_pinout/pins_arduino.c
@@ -23,33 +23,32 @@
* Analog pins MUST give the device name and channel(ADC, PWM or DAC).
* Arduino Pin must keep in sequence.
*/
-const pin_map_t pin_map_table[]=
-{
- {D0, GET_PIN(C,5)},
- {D1, GET_PIN(C,4)},
- {D2, GET_PIN(A,10), "uart1"}, /* Serial2-RX */
- {D3, GET_PIN(B,3), "pwm2", 2}, /* PWM */
- {D4, GET_PIN(B,5)},
- {D5, GET_PIN(B,4), "pwm3", 1}, /* PWM */
- {D6, GET_PIN(B,10), "pwm2", 3}, /* PWM */
- {D7, GET_PIN(A,8)},
- {D8, GET_PIN(A,9), "uart1"}, /* Serial2-TX */
- {D9, GET_PIN(C,7), "pwm8", 2}, /* PWM */
- {D10, GET_PIN(B,6), "pwm4", 1}, /* PWM */
- {D11, GET_PIN(A,7), "pwm3", 2}, /* PWM */
- {D12, GET_PIN(A,6)},
- {D13, GET_PIN(A,5)}, /* LED_BUILTIN */
- {D14, GET_PIN(B,9), "i2c1"}, /* I2C-SDA (Wire) */
- {D15, GET_PIN(B,8), "i2c1"}, /* I2C-SCL (Wire) */
- {D16, GET_PIN(C,13)},
- {A0, GET_PIN(A,0), "adc1", 1}, /* ADC */
- {A1, GET_PIN(A,1), "adc1", 2}, /* ADC */
- {A2, GET_PIN(A,4), "adc2", 17}, /* ADC */
- {A3, GET_PIN(B,0), "adc1", 15}, /* ADC */
- {A4, GET_PIN(C,1), "adc1", 7}, /* ADC */
- {A5, GET_PIN(C,0), "adc1", 6}, /* ADC */
- {A6, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF}, /* ADC, On-Chip: internal reference voltage */
- {A7, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER}, /* ADC, On-Chip: internal temperature sensor */
+const pin_map_t pin_map_table[] = {
+ { D0, GET_PIN(C, 5) },
+ { D1, GET_PIN(C, 4) },
+ { D2, GET_PIN(A, 10), "uart1" }, /* Serial2-RX */
+ { D3, GET_PIN(B, 3), "pwm2", 2 }, /* PWM */
+ { D4, GET_PIN(B, 5) },
+ { D5, GET_PIN(B, 4), "pwm3", 1 }, /* PWM */
+ { D6, GET_PIN(B, 10), "pwm2", 3 }, /* PWM */
+ { D7, GET_PIN(A, 8) },
+ { D8, GET_PIN(A, 9), "uart1" }, /* Serial2-TX */
+ { D9, GET_PIN(C, 7), "pwm8", 2 }, /* PWM */
+ { D10, GET_PIN(B, 6), "pwm4", 1 }, /* PWM */
+ { D11, GET_PIN(A, 7), "pwm3", 2 }, /* PWM */
+ { D12, GET_PIN(A, 6) },
+ { D13, GET_PIN(A, 5) }, /* LED_BUILTIN */
+ { D14, GET_PIN(B, 9), "swi2c1" }, /* I2C-SDA (Wire) */
+ { D15, GET_PIN(B, 8), "swi2c1" }, /* I2C-SCL (Wire) */
+ { D16, GET_PIN(C, 13) },
+ { A0, GET_PIN(A, 0), "adc1", 1 }, /* ADC */
+ { A1, GET_PIN(A, 1), "adc1", 2 }, /* ADC */
+ { A2, GET_PIN(A, 4), "adc2", 17 }, /* ADC */
+ { A3, GET_PIN(B, 0), "adc1", 15 }, /* ADC */
+ { A4, GET_PIN(C, 1), "adc1", 7 }, /* ADC */
+ { A5, GET_PIN(C, 0), "adc1", 6 }, /* ADC */
+ { A6, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF }, /* ADC, On-Chip: internal reference voltage */
+ { A7, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER }, /* ADC, On-Chip: internal temperature sensor */
};
#ifdef RTDUINO_USING_SPI
diff --git a/bsp/stm32/stm32g474-st-nucleo/applications/arduino_pinout/pins_arduino.h b/bsp/stm32/stm32g474-st-nucleo/applications/arduino_pinout/pins_arduino.h
index aea3e8cf52..dafcb516a5 100644
--- a/bsp/stm32/stm32g474-st-nucleo/applications/arduino_pinout/pins_arduino.h
+++ b/bsp/stm32/stm32g474-st-nucleo/applications/arduino_pinout/pins_arduino.h
@@ -44,8 +44,8 @@
#define LED_BUILTIN D13 /* Default Built-in LED */
-/* i2c1 : PB9-SDA PB8-SCL */
-#define RTDUINO_DEFAULT_IIC_BUS_NAME "i2c1"
+/* swi2c1 : PB9-SDA PB8-SCL */
+#define RTDUINO_DEFAULT_IIC_BUS_NAME "swi2c1"
#define SS D10
#define RTDUINO_DEFAULT_SPI_BUS_NAME "spi1"
diff --git a/bsp/stm32/stm32g474-st-nucleo/board/Kconfig b/bsp/stm32/stm32g474-st-nucleo/board/Kconfig
index c43ecd91a8..b21ec6057a 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 BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C1
select BSP_USING_SPI
select BSP_USING_SPI1
# select BSP_SPI1_TX_USING_DMA
@@ -38,6 +39,19 @@ menu "Onboard Peripheral Drivers"
select RTDUINO_USING_SPI
imply RTDUINO_USING_SERVO
default n
+
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 24 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 25 if RT_USING_SOFT_I2C1
+
endmenu
menu "On-chip Peripheral Drivers"
@@ -249,21 +263,25 @@ menu "On-chip Peripheral Drivers"
default n
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 24
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 25
+ endif
endif
-
source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig"
endmenu
@@ -272,4 +290,5 @@ menu "Board extended module Drivers"
endmenu
+
endmenu
diff --git a/bsp/stm32/stm32g491-st-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32g491-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
index e4646070a9..e523d299c9 100644
--- a/bsp/stm32/stm32g491-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/stm32/stm32g491-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
@@ -8,3 +8,20 @@ nano:
kconfig:
- CONFIG_RT_USING_NANO=y
+devices.soft_i2c:
+ <<: *scons
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=38
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=39
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C3=y
+ - CONFIG_RT_SOFT_I2C3_SCL_PIN=32
+ - CONFIG_RT_SOFT_I2C3_SDA_PIN=33
+ - CONFIG_RT_SOFT_I2C3_BUS_NAME="swi2c3"
+ - CONFIG_RT_USING_SOFT_I2C4=y
+ - CONFIG_RT_SOFT_I2C4_SCL_PIN=54
+ - CONFIG_RT_SOFT_I2C4_SDA_PIN=33
+ - CONFIG_RT_SOFT_I2C4_BUS_NAME="swi2c4"
diff --git a/bsp/stm32/stm32g491-st-nucleo/board/Kconfig b/bsp/stm32/stm32g491-st-nucleo/board/Kconfig
index 9f0dcc5373..af6c4eeab2 100644
--- a/bsp/stm32/stm32g491-st-nucleo/board/Kconfig
+++ b/bsp/stm32/stm32g491-st-nucleo/board/Kconfig
@@ -181,57 +181,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/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32h503-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..d626be14a5
--- /dev/null
+++ b/bsp/stm32/stm32h503-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/stm32/stm32h503-st-nucleo/applications/arduino_pinout/pins_arduino.c b/bsp/stm32/stm32h503-st-nucleo/applications/arduino_pinout/pins_arduino.c
index 1983a9545e..cc109ef761 100644
--- a/bsp/stm32/stm32h503-st-nucleo/applications/arduino_pinout/pins_arduino.c
+++ b/bsp/stm32/stm32h503-st-nucleo/applications/arduino_pinout/pins_arduino.c
@@ -18,28 +18,27 @@
* Analog pins MUST give the device name and channel(ADC, PWM or DAC).
* Arduino Pin must keep in sequence.
*/
-const pin_map_t pin_map_table[]=
-{
- {D0, GET_PIN(B, 15), "uart1"}, /* Serial-RX */
- {D1, GET_PIN(B, 14), "uart1"}, /* Serial-TX */
- {D2, GET_PIN(A, 10)},
- {D3, GET_PIN(B, 3)},
- {D4, GET_PIN(B, 5)},
- {D5, GET_PIN(B, 4), "pwm1", 2}, /* PWM */
- {D6, GET_PIN(B, 10), "pwm2", 3}, /* PWM */
- {D7, GET_PIN(A, 8)},
- {D8, GET_PIN(C, 7)},
- {D9, GET_PIN(C, 6), "pwm3", 1}, /* PWM */
- {D10, GET_PIN(C, 9), "pwm3", 4}, /* PWM */
- {D11, GET_PIN(A, 7), "pwm3", 2}, /* PWM */
- {D12, GET_PIN(A, 6)},
- {D13, GET_PIN(A, 5)},
- {D14, GET_PIN(B, 7), "i2c1"}, /* I2C-SDA (Wire) */
- {D15, GET_PIN(B, 6), "i2c1"}, /* I2C-SCL (Wire) */
- {A0, GET_PIN(A, 0), "adc1", 0}, /* ADC */
- {A1, GET_PIN(A, 1), "adc1", 1}, /* ADC */
- {A2, GET_PIN(A, 2), "adc1", 14}, /* ADC */
- {A3, GET_PIN(B, 0), "adc1", 9}, /* ADC */
- {A4, GET_PIN(C, 1), "adc1", 11}, /* ADC */
- {A5, GET_PIN(C, 0), "adc1", 10}, /* ADC */
+const pin_map_t pin_map_table[] = {
+ { D0, GET_PIN(B, 15), "uart1" }, /* Serial-RX */
+ { D1, GET_PIN(B, 14), "uart1" }, /* Serial-TX */
+ { D2, GET_PIN(A, 10) },
+ { D3, GET_PIN(B, 3) },
+ { D4, GET_PIN(B, 5) },
+ { D5, GET_PIN(B, 4), "pwm1", 2 }, /* PWM */
+ { D6, GET_PIN(B, 10), "pwm2", 3 }, /* PWM */
+ { D7, GET_PIN(A, 8) },
+ { D8, GET_PIN(C, 7) },
+ { D9, GET_PIN(C, 6), "pwm3", 1 }, /* PWM */
+ { D10, GET_PIN(C, 9), "pwm3", 4 }, /* PWM */
+ { D11, GET_PIN(A, 7), "pwm3", 2 }, /* PWM */
+ { D12, GET_PIN(A, 6) },
+ { D13, GET_PIN(A, 5) },
+ { D14, GET_PIN(B, 7), "swi2c1" }, /* I2C-SDA (Wire) */
+ { D15, GET_PIN(B, 6), "swi2c1" }, /* I2C-SCL (Wire) */
+ { A0, GET_PIN(A, 0), "adc1", 0 }, /* ADC */
+ { A1, GET_PIN(A, 1), "adc1", 1 }, /* ADC */
+ { A2, GET_PIN(A, 2), "adc1", 14 }, /* ADC */
+ { A3, GET_PIN(B, 0), "adc1", 9 }, /* ADC */
+ { A4, GET_PIN(C, 1), "adc1", 11 }, /* ADC */
+ { A5, GET_PIN(C, 0), "adc1", 10 }, /* ADC */
};
diff --git a/bsp/stm32/stm32h503-st-nucleo/applications/arduino_pinout/pins_arduino.h b/bsp/stm32/stm32h503-st-nucleo/applications/arduino_pinout/pins_arduino.h
index 54e749704c..65652b5908 100644
--- a/bsp/stm32/stm32h503-st-nucleo/applications/arduino_pinout/pins_arduino.h
+++ b/bsp/stm32/stm32h503-st-nucleo/applications/arduino_pinout/pins_arduino.h
@@ -41,8 +41,8 @@
#define LED_BUILTIN D13 /* Default Built-in LED */
-/* i2c1 : PB.7-SDA PB.6-SCL */
-#define RTDUINO_DEFAULT_IIC_BUS_NAME "i2c1"
+/* swi2c1 : PB.7-SDA PB.6-SCL */
+#define RTDUINO_DEFAULT_IIC_BUS_NAME "swi2c1"
/* Serial2(uart1) : PB.14-TX PB.15-RX */
#define RTDUINO_SERIAL2_DEVICE_NAME "uart1"
diff --git a/bsp/stm32/stm32h503-st-nucleo/board/Kconfig b/bsp/stm32/stm32h503-st-nucleo/board/Kconfig
index dca564fbdb..e5d9e4aed6 100644
--- a/bsp/stm32/stm32h503-st-nucleo/board/Kconfig
+++ b/bsp/stm32/stm32h503-st-nucleo/board/Kconfig
@@ -19,12 +19,26 @@ menu "Onboard Peripheral Drivers"
select BSP_USING_PWM3_CH1
select BSP_USING_PWM3_CH2
select BSP_USING_PWM3_CH4
- select BSP_USING_I2C
- select BSP_USING_I2C2
+ select RT_USING_I2C
+ select BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C1
select RTDUINO_USING_WIRE
imply RTDUINO_USING_SERVO
default n
+
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
endmenu
menu "On-chip Peripheral Drivers"
@@ -203,21 +217,25 @@ menu "On-chip Peripheral Drivers"
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
endif
-
source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig"
endmenu
@@ -226,4 +244,5 @@ menu "Board extended module Drivers"
endmenu
+
endmenu
diff --git a/bsp/stm32/stm32h563-st-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32h563-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..08f15d590b
--- /dev/null
+++ b/bsp/stm32/stm32h563-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=24
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=25
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/stm32/stm32h563-st-nucleo/applications/arduino_pinout/pins_arduino.c b/bsp/stm32/stm32h563-st-nucleo/applications/arduino_pinout/pins_arduino.c
index c392eb458c..51ceb931ba 100644
--- a/bsp/stm32/stm32h563-st-nucleo/applications/arduino_pinout/pins_arduino.c
+++ b/bsp/stm32/stm32h563-st-nucleo/applications/arduino_pinout/pins_arduino.c
@@ -18,28 +18,27 @@
* Analog pins MUST give the device name and channel(ADC, PWM or DAC).
* Arduino Pin must keep in sequence.
*/
-const pin_map_t pin_map_table[]=
-{
- {D0, GET_PIN(B, 7), "lpuart1"}, /* Serial-RX */
- {D1, GET_PIN(B, 6), "lpuart1"}, /* Serial-TX */
- {D2, GET_PIN(G, 14)},
- {D3, GET_PIN(E, 13), "pwm1", 3}, /* PWM */
- {D4, GET_PIN(E, 14)},
- {D5, GET_PIN(E, 11), "pwm1", 2}, /* PWM */
- {D6, GET_PIN(E, 9), "pwm1", 1}, /* PWM */
- {D7, GET_PIN(G, 12)},
- {D8, GET_PIN(F, 3)},
- {D9, GET_PIN(D, 15), "pwm4", 4}, /* PWM */
- {D10, GET_PIN(D, 14), "pwm4", 3}, /* PWM */
- {D11, GET_PIN(B, 5), "pwm3", 2}, /* PWM */
- {D12, GET_PIN(G, 9)},
- {D13, GET_PIN(A, 5)}, /* LED_BUILTIN */
- {D14, GET_PIN(B, 9), "i2c1"}, /* I2C-SDA (Wire) */
- {D15, GET_PIN(B, 8), "i2c1"}, /* I2C-SCL (Wire) */
- {A0, GET_PIN(A, 6), "adc2", 3}, /* ADC */
- {A1, GET_PIN(C, 0), "adc2", 10}, /* ADC */
- {A2, GET_PIN(C, 3), "adc2", 13}, /* ADC */
- {A3, GET_PIN(B, 1), "adc2", 5}, /* ADC */
- {A4, GET_PIN(C, 2), "adc2", 12}, /* ADC */
- {A5, GET_PIN(F, 11), "adc1", 2}, /* ADC */
+const pin_map_t pin_map_table[] = {
+ { D0, GET_PIN(B, 7), "lpuart1" }, /* Serial-RX */
+ { D1, GET_PIN(B, 6), "lpuart1" }, /* Serial-TX */
+ { D2, GET_PIN(G, 14) },
+ { D3, GET_PIN(E, 13), "pwm1", 3 }, /* PWM */
+ { D4, GET_PIN(E, 14) },
+ { D5, GET_PIN(E, 11), "pwm1", 2 }, /* PWM */
+ { D6, GET_PIN(E, 9), "pwm1", 1 }, /* PWM */
+ { D7, GET_PIN(G, 12) },
+ { D8, GET_PIN(F, 3) },
+ { D9, GET_PIN(D, 15), "pwm4", 4 }, /* PWM */
+ { D10, GET_PIN(D, 14), "pwm4", 3 }, /* PWM */
+ { D11, GET_PIN(B, 5), "pwm3", 2 }, /* PWM */
+ { D12, GET_PIN(G, 9) },
+ { D13, GET_PIN(A, 5) }, /* LED_BUILTIN */
+ { D14, GET_PIN(B, 9), "swi2c1" }, /* I2C-SDA (Wire) */
+ { D15, GET_PIN(B, 8), "swi2c1" }, /* I2C-SCL (Wire) */
+ { A0, GET_PIN(A, 6), "adc2", 3 }, /* ADC */
+ { A1, GET_PIN(C, 0), "adc2", 10 }, /* ADC */
+ { A2, GET_PIN(C, 3), "adc2", 13 }, /* ADC */
+ { A3, GET_PIN(B, 1), "adc2", 5 }, /* ADC */
+ { A4, GET_PIN(C, 2), "adc2", 12 }, /* ADC */
+ { A5, GET_PIN(F, 11), "adc1", 2 }, /* ADC */
};
diff --git a/bsp/stm32/stm32h563-st-nucleo/applications/arduino_pinout/pins_arduino.h b/bsp/stm32/stm32h563-st-nucleo/applications/arduino_pinout/pins_arduino.h
index 9fa57077f9..e79c0750c6 100644
--- a/bsp/stm32/stm32h563-st-nucleo/applications/arduino_pinout/pins_arduino.h
+++ b/bsp/stm32/stm32h563-st-nucleo/applications/arduino_pinout/pins_arduino.h
@@ -41,8 +41,8 @@
#define LED_BUILTIN D0 /* Default Built-in LED */
-/* i2c1 : PB.9-SDA PB.8-SCL */
-#define RTDUINO_DEFAULT_IIC_BUS_NAME "i2c1"
+/* swi2c1 : PB.9-SDA PB.8-SCL */
+#define RTDUINO_DEFAULT_IIC_BUS_NAME "swi2c1"
/* Serial2(lpuart1) : PB.6-TX PB.7-RX */
#define RTDUINO_SERIAL2_DEVICE_NAME "lpuart1"
diff --git a/bsp/stm32/stm32h563-st-nucleo/board/Kconfig b/bsp/stm32/stm32h563-st-nucleo/board/Kconfig
index e718390a9f..fb793b9e39 100644
--- a/bsp/stm32/stm32h563-st-nucleo/board/Kconfig
+++ b/bsp/stm32/stm32h563-st-nucleo/board/Kconfig
@@ -21,12 +21,26 @@ 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 BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C1
select RTDUINO_USING_WIRE
imply RTDUINO_USING_SERVO
default n
+
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 24 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 25 if RT_USING_SOFT_I2C1
+
endmenu
menu "On-chip Peripheral Drivers"
@@ -211,21 +225,25 @@ menu "On-chip Peripheral Drivers"
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 24
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 25
+ endif
endif
-
source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig"
endmenu
@@ -234,4 +252,5 @@ menu "Board extended module Drivers"
endmenu
+
endmenu
diff --git a/bsp/stm32/stm32h743-atk-apollo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32h743-atk-apollo/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..d389a541c5
--- /dev/null
+++ b/bsp/stm32/stm32h743-atk-apollo/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,12 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=116
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=117
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=127
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=125
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
diff --git a/bsp/stm32/stm32h743-atk-apollo/board/Kconfig b/bsp/stm32/stm32h743-atk-apollo/board/Kconfig
index 05d4e3c37e..f40d47c694 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 BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C1
select PKG_USING_PCF8574
default n
@@ -37,10 +39,35 @@ 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 BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C2
default n
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 116 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 117 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 127 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 125 if RT_USING_SOFT_I2C2
+
endmenu
menu "On-chip Peripheral Drivers"
@@ -141,44 +168,38 @@ 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)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
+ default n
+ select RT_USING_I2C
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
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
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
default 116
- config BSP_I2C1_SDA_PIN
- int "I2C1 sda pin number"
- range 1 176
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
default 117
endif
- menuconfig BSP_USING_I2C2
- bool "Enable I2C2 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
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
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
default 127
- config BSP_I2C2_SDA_PIN
- int "I2C2 sda pin number"
- range 1 176
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
default 125
endif
- endif
-
+ endif
config BSP_USING_ON_CHIP_FLASH
bool "Enable on-chip FLASH"
default n
@@ -238,4 +259,5 @@ menu "Board extended module Drivers"
endmenu
+
endmenu
diff --git a/bsp/stm32/stm32h743-atk-apollo/board/ports/drv_ov2640.c b/bsp/stm32/stm32h743-atk-apollo/board/ports/drv_ov2640.c
index 80c554bbfa..37539fe8e5 100644
--- a/bsp/stm32/stm32h743-atk-apollo/board/ports/drv_ov2640.c
+++ b/bsp/stm32/stm32h743-atk-apollo/board/ports/drv_ov2640.c
@@ -27,7 +27,7 @@
#include <drv_log.h>
#define DEV_ADDRESS 0x30 /* OV2640 address */
-#define I2C_NAME "i2c2"
+#define I2C_NAME "swi2c2"
#define RESET_PIN GET_PIN(A, 15) /* camera reset pin */
@@ -593,7 +593,7 @@ int rt_ov2640_init(void)
rt_device_t dcmi_dev = RT_NULL;
sw_ov2640_mode();
- pcf_dev = pcf8574_init("i2c1", RT_NULL);
+ pcf_dev = pcf8574_init("swi2c1", RT_NULL);
if (pcf_dev == RT_NULL)
{
LOG_E("can't find pcf8574, please check it");
diff --git a/bsp/stm32/stm32h743-openmv-h7plus/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32h743-openmv-h7plus/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..41fd8a8a94
--- /dev/null
+++ b/bsp/stm32/stm32h743-openmv-h7plus/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,12 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=24
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=25
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=26
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=27
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
diff --git a/bsp/stm32/stm32h743-openmv-h7plus/board/Kconfig b/bsp/stm32/stm32h743-openmv-h7plus/board/Kconfig
index 8b97b55601..770daf99f9 100644
--- a/bsp/stm32/stm32h743-openmv-h7plus/board/Kconfig
+++ b/bsp/stm32/stm32h743-openmv-h7plus/board/Kconfig
@@ -107,6 +107,38 @@ menu "Hardware Drivers Config"
source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
+ default n
+ select RT_USING_I2C
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 24
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 25
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 26
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 27
+ endif
+ endif
endmenu
menu "Onboard Peripheral Drivers"
@@ -137,8 +169,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 BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C1
select BSP_USING_PWM
select BSP_USING_PWM1
select BSP_USING_PWM1_CH1
@@ -148,44 +181,6 @@ 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
- 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)"
- 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
- endif
- endif
-
menuconfig BSP_USING_PWM
bool "Enable PWM"
default n
@@ -201,6 +196,30 @@ menu "Hardware Drivers Config"
endif
endif
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 24 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 25 if RT_USING_SOFT_I2C1
+
endmenu
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 26 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 27 if RT_USING_SOFT_I2C2
+
endmenu
diff --git a/bsp/stm32/stm32h743-openmv-h7plus/board/ports/drv_ov5640.c b/bsp/stm32/stm32h743-openmv-h7plus/board/ports/drv_ov5640.c
index f420f658fa..08ecde47b1 100644
--- a/bsp/stm32/stm32h743-openmv-h7plus/board/ports/drv_ov5640.c
+++ b/bsp/stm32/stm32h743-openmv-h7plus/board/ports/drv_ov5640.c
@@ -26,7 +26,7 @@
#include <drv_log.h>
#define CHIP_ADDRESS 0x3C /* OV5640 address */
-#define I2C_NAME "i2c1"
+#define I2C_NAME "swi2c1"
#define RST_PIN GET_PIN(A, 10)
#define PWDN_PIN GET_PIN(D, 7)
diff --git a/bsp/stm32/stm32h750-armfly-h7-tool/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32h750-armfly-h7-tool/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..f8eb7b46bc
--- /dev/null
+++ b/bsp/stm32/stm32h750-armfly-h7-tool/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=135
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=95
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/stm32/stm32h750-armfly-h7-tool/board/Kconfig b/bsp/stm32/stm32h750-armfly-h7-tool/board/Kconfig
index 8a223ef349..fa6136387c 100644
--- a/bsp/stm32/stm32h750-armfly-h7-tool/board/Kconfig
+++ b/bsp/stm32/stm32h750-armfly-h7-tool/board/Kconfig
@@ -128,23 +128,25 @@ menu "On-chip Peripheral Drivers"
bool "Enable QSPI DMA support"
default n
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 135
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 95
+ endif
endif
-
menuconfig BSP_USING_PWM
bool "Enable PWM"
default n
@@ -200,4 +202,16 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 135 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 95 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/stm32/stm32h750-artpi/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32h750-artpi/.ci/attachconfig/ci.attachconfig.yml
index 6df31cf648..5e2d390d27 100644
--- a/bsp/stm32/stm32h750-artpi/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/stm32/stm32h750-artpi/.ci/attachconfig/ci.attachconfig.yml
@@ -25,4 +25,22 @@ package.iot.btstack:
- CONFIG_BSP_USING_SPI_FLASH=y
- CONFIG_PKG_USING_BTSTACK=y
- CONFIG_PKG_BTSTACK_SAMPLE_LE_COUNTER=y
- - CONFIG_PKG_USING_BTSTACK_LATEST_VERSION=y \ No newline at end of file
+ - CONFIG_PKG_USING_BTSTACK_LATEST_VERSION=y
+
+devices.soft_i2c:
+ <<: *scons
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=127
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=125
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
+ - CONFIG_RT_USING_SOFT_I2C3=y
+ - CONFIG_RT_SOFT_I2C3_SCL_PIN=123
+ - CONFIG_RT_SOFT_I2C3_SDA_PIN=124
+ - CONFIG_RT_SOFT_I2C3_BUS_NAME="swi2c3"
diff --git a/bsp/stm32/stm32h750-artpi/applications/lvgl/lv_port_indev.c b/bsp/stm32/stm32h750-artpi/applications/lvgl/lv_port_indev.c
index 26d0bc2988..03f2465171 100644
--- a/bsp/stm32/stm32h750-artpi/applications/lvgl/lv_port_indev.c
+++ b/bsp/stm32/stm32h750-artpi/applications/lvgl/lv_port_indev.c
@@ -16,7 +16,7 @@
#include "ft6236.h"
#define TOUCH_DEVICE_NAME "touch_ft" /* Touch device name */
-#define TOUCH_DEVICE_I2C_BUS "i2c2" /* SCL -> PH15(127), SDA -> PH13(125) */
+#define TOUCH_DEVICE_I2C_BUS "swi2c2" /* SCL -> PH15(127), SDA -> PH13(125) */
#define REST_PIN GET_PIN(A, 3) /* reset pin */
#define USER_BUTTON_PIN GET_PIN(H, 4) /* Reserve for LV_INDEV_TYPE_BUTTON */
diff --git a/bsp/stm32/stm32h750-artpi/board/Kconfig b/bsp/stm32/stm32h750-artpi/board/Kconfig
index 68b2ed588d..8323c6bf5a 100644
--- a/bsp/stm32/stm32h750-artpi/board/Kconfig
+++ b/bsp/stm32/stm32h750-artpi/board/Kconfig
@@ -34,9 +34,9 @@ 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 BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C2
+ select BSP_USING_SOFT_I2C3
select PKG_USING_FT6236
bool "Enable Touch"
default y
@@ -44,9 +44,6 @@ 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
bool "Enable Audio"
default y
if MEDIA_IO_USING_AUDIO
@@ -123,6 +120,30 @@ menu "Onboard Peripheral Drivers"
select RT_USING_SAL
default n
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 127 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 125 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C3_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SCL_PIN_DEFAULT
+ int
+ default 123 if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SDA_PIN_DEFAULT
+ int
+ default 124 if RT_USING_SOFT_I2C3
+
endmenu
menu "On-chip Peripheral Drivers"
@@ -285,60 +306,51 @@ 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
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
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
+ select RT_USING_I2C
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 127
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 125
+ endif
+ menuconfig BSP_USING_SOFT_I2C3
+ bool "Enable software I2C3 Bus (swi2c3)"
+ default n
+ select RT_USING_SOFT_I2C3
+ if BSP_USING_SOFT_I2C3
+ config RT_SOFT_I2C3_SCL_PIN
+ int "swi2c3 SCL pin number"
+ default 123
+ config RT_SOFT_I2C3_SDA_PIN
+ int "swi2c3 SDA pin number"
+ default 124
+ endif
+ endif
config BSP_USING_SDRAM
bool "Enable SDRAM"
select RT_USING_MEMHEAP
@@ -430,4 +442,16 @@ menu "External Libraries"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/stm32/stm32h750-fk750m1-vbt6/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32h750-fk750m1-vbt6/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..41fd8a8a94
--- /dev/null
+++ b/bsp/stm32/stm32h750-fk750m1-vbt6/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,12 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=24
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=25
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=26
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=27
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
diff --git a/bsp/stm32/stm32h750-fk750m1-vbt6/board/Kconfig b/bsp/stm32/stm32h750-fk750m1-vbt6/board/Kconfig
index bc0b917610..cc6a72169c 100644
--- a/bsp/stm32/stm32h750-fk750m1-vbt6/board/Kconfig
+++ b/bsp/stm32/stm32h750-fk750m1-vbt6/board/Kconfig
@@ -13,10 +13,23 @@ 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 BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C1
default n
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 24 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 25 if RT_USING_SOFT_I2C1
+
endmenu
menu "On-chip Peripheral Drivers"
@@ -95,44 +108,38 @@ 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
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
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
+ select RT_USING_I2C
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 24
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 25
+ endif
- menuconfig BSP_USING_I2C2
- bool "Enable I2C2 BUS (software simulation)"
- 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
- endif
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 26
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 27
+ endif
endif
-
menuconfig BSP_USING_ONCHIP_RTC
bool "Enable RTC"
select RT_USING_RTC
@@ -150,4 +157,16 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 26 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 27 if RT_USING_SOFT_I2C2
+
endmenu
diff --git a/bsp/stm32/stm32h750-fk750m1-vbt6/board/port/camera/drv_ov2640.c b/bsp/stm32/stm32h750-fk750m1-vbt6/board/port/camera/drv_ov2640.c
index e6ff82e8c8..f2373796d6 100644
--- a/bsp/stm32/stm32h750-fk750m1-vbt6/board/port/camera/drv_ov2640.c
+++ b/bsp/stm32/stm32h750-fk750m1-vbt6/board/port/camera/drv_ov2640.c
@@ -28,7 +28,7 @@
#define CHIP_ADDRESS 0x30 /* OV2640 address */
// #define CHIP_ADDRESS 0x3C /* OV5640 address */
-#define I2C_NAME "i2c1"
+#define I2C_NAME "swi2c1"
#define PWDN_PIN GET_PIN(D, 14)
struct rt_i2c_bus_device *i2c_bus = RT_NULL;
diff --git a/bsp/stm32/stm32h750-weact-ministm32h7xx/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32h750-weact-ministm32h7xx/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..f8eb7b46bc
--- /dev/null
+++ b/bsp/stm32/stm32h750-weact-ministm32h7xx/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=135
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=95
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/stm32/stm32h750-weact-ministm32h7xx/board/Kconfig b/bsp/stm32/stm32h750-weact-ministm32h7xx/board/Kconfig
index cc302ec097..2eb5f44a48 100644
--- a/bsp/stm32/stm32h750-weact-ministm32h7xx/board/Kconfig
+++ b/bsp/stm32/stm32h750-weact-ministm32h7xx/board/Kconfig
@@ -118,23 +118,25 @@ menu "On-chip Peripheral Drivers"
default n
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 135
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 95
+ endif
endif
-
menuconfig BSP_USING_PWM
bool "Enable pwm"
default n
@@ -206,4 +208,16 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 135 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 95 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/stm32/stm32h7r7-artpi2/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32h7r7-artpi2/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..6f3d6478a1
--- /dev/null
+++ b/bsp/stm32/stm32h7r7-artpi2/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,16 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=127
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=125
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
+ - CONFIG_RT_USING_SOFT_I2C3=y
+ - CONFIG_RT_SOFT_I2C3_SCL_PIN=123
+ - CONFIG_RT_SOFT_I2C3_SDA_PIN=124
+ - CONFIG_RT_SOFT_I2C3_BUS_NAME="swi2c3"
diff --git a/bsp/stm32/stm32h7r7-artpi2/board/Kconfig b/bsp/stm32/stm32h7r7-artpi2/board/Kconfig
index 7152f927ec..0afbe3a650 100644
--- a/bsp/stm32/stm32h7r7-artpi2/board/Kconfig
+++ b/bsp/stm32/stm32h7r7-artpi2/board/Kconfig
@@ -192,60 +192,51 @@ 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
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
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
+ select RT_USING_I2C
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 127
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 125
+ endif
+ menuconfig BSP_USING_SOFT_I2C3
+ bool "Enable software I2C3 Bus (swi2c3)"
+ default n
+ select RT_USING_SOFT_I2C3
+ if BSP_USING_SOFT_I2C3
+ config RT_SOFT_I2C3_SCL_PIN
+ int "swi2c3 SCL pin number"
+ default 123
+ config RT_SOFT_I2C3_SDA_PIN
+ int "swi2c3 SDA pin number"
+ default 124
+ endif
+ endif
config BSP_USING_USBD
bool "Enable USB Device"
select RT_USING_USB_DEVICE
@@ -275,4 +266,40 @@ menu "On-chip Peripheral Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 127 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 125 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C3_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SCL_PIN_DEFAULT
+ int
+ default 123 if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SDA_PIN_DEFAULT
+ int
+ default 124 if RT_USING_SOFT_I2C3
+
endmenu
diff --git a/bsp/stm32/stm32h7s7-st-disco/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32h7s7-st-disco/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..6f3d6478a1
--- /dev/null
+++ b/bsp/stm32/stm32h7s7-st-disco/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,16 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=127
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=125
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
+ - CONFIG_RT_USING_SOFT_I2C3=y
+ - CONFIG_RT_SOFT_I2C3_SCL_PIN=123
+ - CONFIG_RT_SOFT_I2C3_SDA_PIN=124
+ - CONFIG_RT_SOFT_I2C3_BUS_NAME="swi2c3"
diff --git a/bsp/stm32/stm32h7s7-st-disco/board/Kconfig b/bsp/stm32/stm32h7s7-st-disco/board/Kconfig
index 43ee16e956..90e4c0b040 100644
--- a/bsp/stm32/stm32h7s7-st-disco/board/Kconfig
+++ b/bsp/stm32/stm32h7s7-st-disco/board/Kconfig
@@ -179,60 +179,51 @@ 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
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
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
+ select RT_USING_I2C
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 127
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 125
+ endif
+ menuconfig BSP_USING_SOFT_I2C3
+ bool "Enable software I2C3 Bus (swi2c3)"
+ default n
+ select RT_USING_SOFT_I2C3
+ if BSP_USING_SOFT_I2C3
+ config RT_SOFT_I2C3_SCL_PIN
+ int "swi2c3 SCL pin number"
+ default 123
+ config RT_SOFT_I2C3_SDA_PIN
+ int "swi2c3 SDA pin number"
+ default 124
+ endif
+ endif
config BSP_USING_USBD
bool "Enable USB Device"
select RT_USING_USB_DEVICE
@@ -262,4 +253,40 @@ menu "On-chip Peripheral Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 127 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 125 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C3_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SCL_PIN_DEFAULT
+ int
+ default 123 if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SDA_PIN_DEFAULT
+ int
+ default 124 if RT_USING_SOFT_I2C3
+
endmenu
diff --git a/bsp/stm32/stm32l431-BearPi/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32l431-BearPi/.ci/attachconfig/ci.attachconfig.yml
index 2a7fcdfd27..4fec7a3cf3 100644
--- a/bsp/stm32/stm32l431-BearPi/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/stm32/stm32l431-BearPi/.ci/attachconfig/ci.attachconfig.yml
@@ -11,4 +11,14 @@ nano:
peripheral.arduino:
<<: *scons
kconfig:
- - CONFIG_BSP_USING_ARDUINO=y
+ - CONFIG_BSP_USING_ARDUINO=y
+
+devices.soft_i2c:
+ <<: *scons
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/stm32/stm32l431-BearPi/applications/arduino_pinout/pins_arduino.c b/bsp/stm32/stm32l431-BearPi/applications/arduino_pinout/pins_arduino.c
index b304774269..107d2ccbf4 100644
--- a/bsp/stm32/stm32l431-BearPi/applications/arduino_pinout/pins_arduino.c
+++ b/bsp/stm32/stm32l431-BearPi/applications/arduino_pinout/pins_arduino.c
@@ -19,23 +19,22 @@
* Analog pins MUST give the device name and channel(ADC, PWM or DAC).
* Arduino Pin must keep in sequence.
*/
-const pin_map_t pin_map_table[]=
-{
- {D0, GET_PIN(A,1), "spi1"}, /* SPI-SCK */
- {D1, GET_PIN(A,4)}, /* SPI-SS */
- {D2, GET_PIN(A,0)},
- {D3, GET_PIN(B,9)},
- {D4, GET_PIN(B,8), "pwm16", 1}, /* PWM */
- {D5, GET_PIN(B,6), "i2c1"}, /* I2C-SCL (Wire) */
- {D6, GET_PIN(B,7), "i2c1"}, /* I2C-SDA (Wire) */
- {D7, GET_PIN(A,6), "spi1"}, /* SPI-MISO */
- {D8, GET_PIN(A,12), "spi1"}, /* SPI-MOSI */
- {D9, GET_PIN(C,9)},
- {D10, GET_PIN(C,4), "uart3"}, /* Serial2-Tx */
- {D11, GET_PIN(C,5), "uart3"}, /* Serial2-Rx */
- {D12, GET_PIN(A,8), "pwm1", 1}, /* PWM */
- {A0, GET_PIN(C,2), "adc1", 3}, /* ADC */
- {A1, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF}, /* ADC, On-Chip: internal reference voltage */
- {A2, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER}, /* ADC, On-Chip: internal temperature sensor */
- {DAC0, GET_PIN(A,5), "dac1", 2}, /* DAC */
+const pin_map_t pin_map_table[] = {
+ { D0, GET_PIN(A, 1), "spi1" }, /* SPI-SCK */
+ { D1, GET_PIN(A, 4) }, /* SPI-SS */
+ { D2, GET_PIN(A, 0) },
+ { D3, GET_PIN(B, 9) },
+ { D4, GET_PIN(B, 8), "pwm16", 1 }, /* PWM */
+ { D5, GET_PIN(B, 6), "swi2c1" }, /* I2C-SCL (Wire) */
+ { D6, GET_PIN(B, 7), "swi2c1" }, /* I2C-SDA (Wire) */
+ { D7, GET_PIN(A, 6), "spi1" }, /* SPI-MISO */
+ { D8, GET_PIN(A, 12), "spi1" }, /* SPI-MOSI */
+ { D9, GET_PIN(C, 9) },
+ { D10, GET_PIN(C, 4), "uart3" }, /* Serial2-Tx */
+ { D11, GET_PIN(C, 5), "uart3" }, /* Serial2-Rx */
+ { D12, GET_PIN(A, 8), "pwm1", 1 }, /* PWM */
+ { A0, GET_PIN(C, 2), "adc1", 3 }, /* ADC */
+ { A1, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF }, /* ADC, On-Chip: internal reference voltage */
+ { A2, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER }, /* ADC, On-Chip: internal temperature sensor */
+ { DAC0, GET_PIN(A, 5), "dac1", 2 }, /* DAC */
};
diff --git a/bsp/stm32/stm32l431-BearPi/applications/arduino_pinout/pins_arduino.h b/bsp/stm32/stm32l431-BearPi/applications/arduino_pinout/pins_arduino.h
index 384373f737..0f15067c85 100644
--- a/bsp/stm32/stm32l431-BearPi/applications/arduino_pinout/pins_arduino.h
+++ b/bsp/stm32/stm32l431-BearPi/applications/arduino_pinout/pins_arduino.h
@@ -34,8 +34,8 @@
#define F_CPU 80000000L /* CPU:80MHz */
-/* i2c1 : PB7-SDA PB6-SCL */
-#define RTDUINO_DEFAULT_IIC_BUS_NAME "i2c1"
+/* swi2c1 : PB7-SDA PB6-SCL */
+#define RTDUINO_DEFAULT_IIC_BUS_NAME "swi2c1"
/* spi1 : PA1-SCK PA6-MISO PA12-MOSI */
#define SS D1 /* Chip select pin of default spi */
diff --git a/bsp/stm32/stm32l431-BearPi/board/Kconfig b/bsp/stm32/stm32l431-BearPi/board/Kconfig
index e1589dc2aa..3f27720824 100644
--- a/bsp/stm32/stm32l431-BearPi/board/Kconfig
+++ b/bsp/stm32/stm32l431-BearPi/board/Kconfig
@@ -108,23 +108,25 @@ menu "On-chip Peripheral Drivers"
default n
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
endif
-
menuconfig BSP_USING_PWM
bool "Enable PWM"
default n
@@ -210,8 +212,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 BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C1
select BSP_USING_SPI
select BSP_USING_SPI1
select BSP_SPI1_TX_USING_DMA
@@ -221,10 +224,23 @@ menu "Onboard Peripheral Drivers"
imply RTDUINO_USING_SERVO
default n
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
config BSP_USING_MPU6050
bool "Enable MPU6050 to read accel data"
- select BSP_USING_I2C
- select BSP_USING_I2C1
+ select RT_USING_I2C
+ select BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C1
select PKG_USING_MPU6XXX
default n
if BSP_USING_MPU6050
@@ -284,4 +300,5 @@ menu "Onboard Peripheral Drivers"
endif
endmenu
+
endmenu
diff --git a/bsp/stm32/stm32l431-BearPi/board/ports/mpu6050_meas.c b/bsp/stm32/stm32l431-BearPi/board/ports/mpu6050_meas.c
index 7d5a4d65a8..9271bab72f 100644
--- a/bsp/stm32/stm32l431-BearPi/board/ports/mpu6050_meas.c
+++ b/bsp/stm32/stm32l431-BearPi/board/ports/mpu6050_meas.c
@@ -15,7 +15,7 @@
#define DBG_LVL DBG_LOG
#include <rtdbg.h>
-#define MPU6050_DEVICE_NAME "i2c1"
+#define MPU6050_DEVICE_NAME "swi2c1"
#ifdef BSP_USING_MQTT_HW_CLOUD
#include "mqttclient.h"
diff --git a/bsp/stm32/stm32l431-tencentos-tiny-EVB_MX+/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32l431-tencentos-tiny-EVB_MX+/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..6304b7700b
--- /dev/null
+++ b/bsp/stm32/stm32l431-tencentos-tiny-EVB_MX+/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=25
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/stm32/stm32l431-tencentos-tiny-EVB_MX+/board/Kconfig b/bsp/stm32/stm32l431-tencentos-tiny-EVB_MX+/board/Kconfig
index c5ef1f0383..1860c00749 100644
--- a/bsp/stm32/stm32l431-tencentos-tiny-EVB_MX+/board/Kconfig
+++ b/bsp/stm32/stm32l431-tencentos-tiny-EVB_MX+/board/Kconfig
@@ -192,23 +192,25 @@ menu "On-chip Peripheral Drivers"
select BSP_USING_SDIO
default n
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 25
+ endif
endif
-
source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig"
endmenu
@@ -217,4 +219,16 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 25 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/stm32/stm32l433-ali-startkit/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32l433-ali-startkit/.ci/attachconfig/ci.attachconfig.yml
index e4646070a9..07fb2b45b5 100644
--- a/bsp/stm32/stm32l433-ali-startkit/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/stm32/stm32l433-ali-startkit/.ci/attachconfig/ci.attachconfig.yml
@@ -8,3 +8,20 @@ nano:
kconfig:
- CONFIG_RT_USING_NANO=y
+devices.soft_i2c:
+ <<: *scons
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=29
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=30
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
+ - CONFIG_RT_USING_SOFT_I2C3=y
+ - CONFIG_RT_SOFT_I2C3_SCL_PIN=32
+ - CONFIG_RT_SOFT_I2C3_SDA_PIN=33
+ - CONFIG_RT_SOFT_I2C3_BUS_NAME="swi2c3"
+ - CONFIG_RT_USING_SOFT_I2C4=y
+ - CONFIG_RT_SOFT_I2C4_SCL_PIN=60
+ - CONFIG_RT_SOFT_I2C4_SDA_PIN=61
+ - CONFIG_RT_SOFT_I2C4_BUS_NAME="swi2c4"
diff --git a/bsp/stm32/stm32l433-ali-startkit/board/Kconfig b/bsp/stm32/stm32l433-ali-startkit/board/Kconfig
index d42f7465c5..b57bba2cf0 100644
--- a/bsp/stm32/stm32l433-ali-startkit/board/Kconfig
+++ b/bsp/stm32/stm32l433-ali-startkit/board/Kconfig
@@ -145,56 +145,51 @@ menu "On-chip Peripheral Drivers"
default n
endif
- menuconfig BSP_USING_I2C
- bool "Enable I2C BUS"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- 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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 29
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ 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_SOFT_I2C3
+ bool "Enable software I2C3 Bus (swi2c3)"
+ default n
+ select RT_USING_SOFT_I2C3
+ if BSP_USING_SOFT_I2C3
+ config RT_SOFT_I2C3_SCL_PIN
+ int "swi2c3 SCL pin number"
+ default 32
+ config RT_SOFT_I2C3_SDA_PIN
+ int "swi2c3 SDA pin number"
+ 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
+ menuconfig BSP_USING_SOFT_I2C4
+ bool "Enable software I2C4 Bus (swi2c4)"
+ default n
+ select RT_USING_SOFT_I2C4
+ if BSP_USING_SOFT_I2C4
+ config RT_SOFT_I2C4_SCL_PIN
+ int "swi2c4 SCL pin number"
+ default 60
+ config RT_SOFT_I2C4_SDA_PIN
+ int "swi2c4 SDA pin number"
+ default 61
+ endif
endif
-
config BSP_USING_SDIO
bool "Enable sdio"
select RT_USING_SDIO
@@ -276,4 +271,40 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 29 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 30 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C3_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SCL_PIN_DEFAULT
+ int
+ default 32 if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SDA_PIN_DEFAULT
+ int
+ default 33 if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C4_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C4
+
+ config RT_SOFT_I2C4_SCL_PIN_DEFAULT
+ int
+ default 60 if RT_USING_SOFT_I2C4
+
+ config RT_SOFT_I2C4_SDA_PIN_DEFAULT
+ int
+ default 61 if RT_USING_SOFT_I2C4
+
endmenu
diff --git a/bsp/stm32/stm32l452-st-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32l452-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
index e4646070a9..38f5930b0f 100644
--- a/bsp/stm32/stm32l452-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/stm32/stm32l452-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
@@ -8,3 +8,12 @@ nano:
kconfig:
- CONFIG_RT_USING_NANO=y
+devices.soft_i2c:
+ <<: *scons
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=15
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=16
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/stm32/stm32l452-st-nucleo/board/Kconfig b/bsp/stm32/stm32l452-st-nucleo/board/Kconfig
index f320a25f50..650bc67760 100644
--- a/bsp/stm32/stm32l452-st-nucleo/board/Kconfig
+++ b/bsp/stm32/stm32l452-st-nucleo/board/Kconfig
@@ -111,21 +111,24 @@ 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)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 15
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 16
+ endif
endif
source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig"
@@ -135,4 +138,16 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 15 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 16 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/stm32/stm32l475-atk-pandora/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32l475-atk-pandora/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..f1ffa2baad
--- /dev/null
+++ b/bsp/stm32/stm32l475-atk-pandora/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,16 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=38
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=39
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C3=y
+ - CONFIG_RT_SOFT_I2C3_SCL_PIN=32
+ - CONFIG_RT_SOFT_I2C3_SDA_PIN=33
+ - CONFIG_RT_SOFT_I2C3_BUS_NAME="swi2c3"
+ - CONFIG_RT_USING_SOFT_I2C4=y
+ - CONFIG_RT_SOFT_I2C4_SCL_PIN=54
+ - CONFIG_RT_SOFT_I2C4_SDA_PIN=33
+ - CONFIG_RT_SOFT_I2C4_BUS_NAME="swi2c4"
diff --git a/bsp/stm32/stm32l475-atk-pandora/applications/arduino_pinout/pins_arduino.c b/bsp/stm32/stm32l475-atk-pandora/applications/arduino_pinout/pins_arduino.c
index d9b648b1c9..9d7dfe332a 100644
--- a/bsp/stm32/stm32l475-atk-pandora/applications/arduino_pinout/pins_arduino.c
+++ b/bsp/stm32/stm32l475-atk-pandora/applications/arduino_pinout/pins_arduino.c
@@ -20,51 +20,50 @@
* Analog pins MUST give the device name and channel(ADC, PWM or DAC).
* Arduino Pin must keep in sequence.
*/
-const pin_map_t pin_map_table[]=
-{
- {D0, GET_PIN(A,10), "uart1"}, /* Serial-Rx */
- {D1, GET_PIN(A,9), "uart1"}, /* Serial-Tx */
- {D2, GET_PIN(B,9)},
- {D3, GET_PIN(D,15), "pwm4", 4}, /* PWM */
- {D4, GET_PIN(A,8)},
- {D5, GET_PIN(D,14)},
- {D6, GET_PIN(B,11), "pwm2", 4}, /* PWM */
- {D7, GET_PIN(B,14)},
- {D8, GET_PIN(B,12)},
- {D9, GET_PIN(D,12), "pwm4", 1}, /* PWM */
- {D10, GET_PIN(B,10), "pwm2", 3}, /* PWM */
- {D11, GET_PIN(B,8), "pwm4", 3}, /* PWM */
- {D12, GET_PIN(B,15)},
- {D13, GET_PIN(B,13)},
- {D14, GET_PIN(A,1)}, /* BSP: MOTOR-A */
- {D15, GET_PIN(A,0)}, /* BSP: MOTOR-B */
- {D16, GET_PIN(B,2)}, /* BSP: BEEP */
- {D17, GET_PIN(D,10)}, /* BSP: KEY0 */
- {D18, GET_PIN(D,9)}, /* BSP: KEY1 */
- {D19, GET_PIN(D,8)}, /* BSP: KEY2 */
- {D20, GET_PIN(C,13)}, /* BSP: KEY-WKUP */
- {D21, GET_PIN(E,7)}, /* BSP: RED-LED */
- {D22, GET_PIN(E,8)}, /* LED_BUILTIN, BSP: GREEN-LED */
- {D23, GET_PIN(E,9), "pwm1", 1}, /* PWM, BSP: BLUE-LED */
- {D24, GET_PIN(B,0)}, /* BSP: INFRARED EMISSION */
- {D25, GET_PIN(B,1)}, /* BSP: INFRARED RECEPTION */
- {D26, GET_PIN(D,4)}, /* BSP: WIRELESS CE */
- {D27, GET_PIN(D,3)}, /* BSP: WIRELESS IRQ */
- {D28, GET_PIN(D,5)}, /* SPI-SS, BSP: WIRELESS CS */
- {D29, GET_PIN(B,13), "spi2"}, /* SPI-SCK */
- {D30, GET_PIN(B,14), "spi2"}, /* SPI-MISO */
- {D31, GET_PIN(B,15), "spi2"}, /* SPI-MOSI */
- {D32, GET_PIN(C,7), "i2c1"}, /* I2C-SDA (Wire) */
- {D33, GET_PIN(C,6), "i2c1"}, /* I2C-SCL (Wire) */
- {D34, GET_PIN(A,2), "uart2"}, /* Serial2-Tx */
- {D35, GET_PIN(A,3), "uart2"}, /* Serial2-Rx */
- {D36, GET_PIN(D,7)}, /* BSP: LCD CS */
- {D37, GET_PIN(B,6)}, /* BSP: LCD RESET */
- {D38, GET_PIN(B,4)}, /* BSP: LCD RW/DC (data or command) */
- {D39, GET_PIN(B,7), "pwm4", 2}, /* BSP: LCD POWER */
- {A0, GET_PIN(C,2), "adc1", 3}, /* ADC */
- {A1, GET_PIN(C,4), "adc1", 13}, /* ADC */
- {A2, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF}, /* ADC, On-Chip: internal reference voltage */
- {A3, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER}, /* ADC, On-Chip: internal temperature sensor */
- {DAC0, GET_PIN(A,4), "dac1", 1}, /* DAC */
+const pin_map_t pin_map_table[] = {
+ { D0, GET_PIN(A, 10), "uart1" }, /* Serial-Rx */
+ { D1, GET_PIN(A, 9), "uart1" }, /* Serial-Tx */
+ { D2, GET_PIN(B, 9) },
+ { D3, GET_PIN(D, 15), "pwm4", 4 }, /* PWM */
+ { D4, GET_PIN(A, 8) },
+ { D5, GET_PIN(D, 14) },
+ { D6, GET_PIN(B, 11), "pwm2", 4 }, /* PWM */
+ { D7, GET_PIN(B, 14) },
+ { D8, GET_PIN(B, 12) },
+ { D9, GET_PIN(D, 12), "pwm4", 1 }, /* PWM */
+ { D10, GET_PIN(B, 10), "pwm2", 3 }, /* PWM */
+ { D11, GET_PIN(B, 8), "pwm4", 3 }, /* PWM */
+ { D12, GET_PIN(B, 15) },
+ { D13, GET_PIN(B, 13) },
+ { D14, GET_PIN(A, 1) }, /* BSP: MOTOR-A */
+ { D15, GET_PIN(A, 0) }, /* BSP: MOTOR-B */
+ { D16, GET_PIN(B, 2) }, /* BSP: BEEP */
+ { D17, GET_PIN(D, 10) }, /* BSP: KEY0 */
+ { D18, GET_PIN(D, 9) }, /* BSP: KEY1 */
+ { D19, GET_PIN(D, 8) }, /* BSP: KEY2 */
+ { D20, GET_PIN(C, 13) }, /* BSP: KEY-WKUP */
+ { D21, GET_PIN(E, 7) }, /* BSP: RED-LED */
+ { D22, GET_PIN(E, 8) }, /* LED_BUILTIN, BSP: GREEN-LED */
+ { D23, GET_PIN(E, 9), "pwm1", 1 }, /* PWM, BSP: BLUE-LED */
+ { D24, GET_PIN(B, 0) }, /* BSP: INFRARED EMISSION */
+ { D25, GET_PIN(B, 1) }, /* BSP: INFRARED RECEPTION */
+ { D26, GET_PIN(D, 4) }, /* BSP: WIRELESS CE */
+ { D27, GET_PIN(D, 3) }, /* BSP: WIRELESS IRQ */
+ { D28, GET_PIN(D, 5) }, /* SPI-SS, BSP: WIRELESS CS */
+ { D29, GET_PIN(B, 13), "spi2" }, /* SPI-SCK */
+ { D30, GET_PIN(B, 14), "spi2" }, /* SPI-MISO */
+ { D31, GET_PIN(B, 15), "spi2" }, /* SPI-MOSI */
+ { D32, GET_PIN(C, 7), "swi2c1" }, /* I2C-SDA (Wire) */
+ { D33, GET_PIN(C, 6), "swi2c1" }, /* I2C-SCL (Wire) */
+ { D34, GET_PIN(A, 2), "uart2" }, /* Serial2-Tx */
+ { D35, GET_PIN(A, 3), "uart2" }, /* Serial2-Rx */
+ { D36, GET_PIN(D, 7) }, /* BSP: LCD CS */
+ { D37, GET_PIN(B, 6) }, /* BSP: LCD RESET */
+ { D38, GET_PIN(B, 4) }, /* BSP: LCD RW/DC (data or command) */
+ { D39, GET_PIN(B, 7), "pwm4", 2 }, /* BSP: LCD POWER */
+ { A0, GET_PIN(C, 2), "adc1", 3 }, /* ADC */
+ { A1, GET_PIN(C, 4), "adc1", 13 }, /* ADC */
+ { A2, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF }, /* ADC, On-Chip: internal reference voltage */
+ { A3, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER }, /* ADC, On-Chip: internal temperature sensor */
+ { DAC0, GET_PIN(A, 4), "dac1", 1 }, /* DAC */
};
diff --git a/bsp/stm32/stm32l475-atk-pandora/applications/arduino_pinout/pins_arduino.h b/bsp/stm32/stm32l475-atk-pandora/applications/arduino_pinout/pins_arduino.h
index 79fe8c6ce4..3bd96a3932 100644
--- a/bsp/stm32/stm32l475-atk-pandora/applications/arduino_pinout/pins_arduino.h
+++ b/bsp/stm32/stm32l475-atk-pandora/applications/arduino_pinout/pins_arduino.h
@@ -74,11 +74,11 @@
/* I2C */
#if defined(BSP_USING_ARDUINO_AHT10)
-#define RTDUINO_DEFAULT_IIC_BUS_NAME "i2c4" /* i2c4 - AHT10 (On Board) */
+#define RTDUINO_DEFAULT_IIC_BUS_NAME "swi2c4" /* swi2c4 - AHT10 (On Board) */
#elif defined(BSP_USING_ARDUINO_AP3216) || defined(BSP_USING_ARDUINO_ICM20608)
-#define RTDUINO_DEFAULT_IIC_BUS_NAME "i2c3" /* i2c3 - ICM20608, AP3216C (On Board) */
+#define RTDUINO_DEFAULT_IIC_BUS_NAME "swi2c3" /* swi2c3 - ICM20608, AP3216C (On Board) */
#else
-#define RTDUINO_DEFAULT_IIC_BUS_NAME "i2c1" /* i2c1 - PC7-SDA PC6-SCL (User I2C) */
+#define RTDUINO_DEFAULT_IIC_BUS_NAME "swi2c1" /* swi2c1 - PC7-SDA PC6-SCL (User I2C) */
#endif /* BSP_USING_ARDUINO_AHT10 */
/* SPI */
diff --git a/bsp/stm32/stm32l475-atk-pandora/board/Kconfig b/bsp/stm32/stm32l475-atk-pandora/board/Kconfig
index de2fc8ce25..d68b675cab 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 BSP_USING_SOFT_I2C
+ select RT_USING_SOFT_I2C1 # PC7-SDA PC6-SCL (User I2C)
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 BSP_USING_SOFT_I2C
+ select BSP_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 BSP_USING_SOFT_I2C
+ select BSP_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 BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C3
depends on !BSP_USING_ICM20608
default n
endif
@@ -175,25 +182,28 @@ menu "Onboard Peripheral Drivers"
config BSP_USING_ICM20608
- bool "Enable ICM20608 (i2c3)"
- select BSP_USING_I2C
- select BSP_USING_I2C3
+ bool "Enable ICM20608 (swi2c3)"
+ select RT_USING_I2C
+ select BSP_USING_SOFT_I2C
+ select BSP_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
+ bool "Enable AHT10 (swi2c4)"
+ select RT_USING_I2C
+ select BSP_USING_SOFT_I2C
+ select BSP_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
+ bool "Enable AP3216C (swi2c3)"
+ select RT_USING_I2C
+ select BSP_USING_SOFT_I2C
+ select BSP_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 BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C3
default n
if BSP_USING_AUDIO
@@ -273,6 +284,43 @@ menu "Onboard Peripheral Drivers"
default y
endif
+
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 38 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 39 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C3_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SCL_PIN_DEFAULT
+ int
+ default 32 if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SDA_PIN_DEFAULT
+ int
+ default 33 if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C4_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C4
+
+ config RT_SOFT_I2C4_SCL_PIN_DEFAULT
+ int
+ default 54 if RT_USING_SOFT_I2C4
+
+ config RT_SOFT_I2C4_SDA_PIN_DEFAULT
+ int
+ default 33 if RT_USING_SOFT_I2C4
+
endmenu
menu "On-chip Peripheral Drivers"
@@ -424,57 +472,51 @@ menu "On-chip Peripheral Drivers"
bool "Enable QSPI DMA support"
default n
- menuconfig BSP_USING_I2C
- bool "Enable I2C Bus"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- config BSP_USING_I2C1
- bool "Enable I2C1 Bus (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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 38
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 39
+ endif
- config BSP_USING_I2C4
- bool "Enable I2C4 Bus (AHT10)"
- default n
+ menuconfig BSP_USING_SOFT_I2C3
+ bool "Enable software I2C3 Bus (swi2c3)"
+ default n
+ select RT_USING_SOFT_I2C3
+ if BSP_USING_SOFT_I2C3
+ config RT_SOFT_I2C3_SCL_PIN
+ int "swi2c3 SCL pin number"
+ default 32
+ config RT_SOFT_I2C3_SDA_PIN
+ int "swi2c3 SDA pin number"
+ default 33
+ endif
- 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
+ menuconfig BSP_USING_SOFT_I2C4
+ bool "Enable software I2C4 Bus (swi2c4)"
+ default n
+ select RT_USING_SOFT_I2C4
+ if BSP_USING_SOFT_I2C4
+ config RT_SOFT_I2C4_SCL_PIN
+ int "swi2c4 SCL pin number"
+ default 54
+ config RT_SOFT_I2C4_SDA_PIN
+ int "swi2c4 SDA pin number"
+ default 33
+ endif
endif
-
menuconfig BSP_USING_TIM
bool "Enable timer"
default n
diff --git a/bsp/stm32/stm32l475-atk-pandora/board/ports/audio/drv_sound.c b/bsp/stm32/stm32l475-atk-pandora/board/ports/audio/drv_sound.c
index b19d584d3d..e4b0e2af72 100644
--- a/bsp/stm32/stm32l475-atk-pandora/board/ports/audio/drv_sound.c
+++ b/bsp/stm32/stm32l475-atk-pandora/board/ports/audio/drv_sound.c
@@ -355,7 +355,7 @@ static rt_err_t sound_init(struct rt_audio_device *audio)
RT_ASSERT(audio != RT_NULL);
snd_dev = (struct sound_device *)audio->parent.user_data;
- es8388_init("i2c3", GET_PIN(A, 5));
+ es8388_init("swi2c3", GET_PIN(A, 5));
SAIA_Init();
/* set default params */
diff --git a/bsp/stm32/stm32l475-atk-pandora/board/ports/drv_sensors.c b/bsp/stm32/stm32l475-atk-pandora/board/ports/drv_sensors.c
index 2b3c3f584f..95455653fa 100644
--- a/bsp/stm32/stm32l475-atk-pandora/board/ports/drv_sensors.c
+++ b/bsp/stm32/stm32l475-atk-pandora/board/ports/drv_sensors.c
@@ -17,7 +17,7 @@ static int rt_hw_icm20608_port(void)
{
struct rt_sensor_config cfg;
- cfg.intf.dev_name = "i2c3";
+ cfg.intf.dev_name = "swi2c3";
cfg.intf.type = RT_SENSOR_INTF_I2C;
cfg.intf.arg = (void *)MPU6XXX_ADDR_DEFAULT;
cfg.irq_pin.pin = PIN_IRQ_PIN_NONE;
@@ -36,7 +36,7 @@ static int rt_hw_ap3216c_port(void)
{
struct rt_sensor_config cfg;
- cfg.intf.dev_name = "i2c3";
+ cfg.intf.dev_name = "swi2c3";
cfg.intf.type = RT_SENSOR_INTF_I2C;
cfg.intf.arg = RT_NULL;
cfg.irq_pin.pin = PIN_IRQ_PIN_NONE;
@@ -55,7 +55,7 @@ static int rt_hw_aht10_port(void)
{
struct rt_sensor_config cfg;
- cfg.intf.dev_name = "i2c4";
+ cfg.intf.dev_name = "swi2c4";
cfg.intf.type = RT_SENSOR_INTF_I2C;
cfg.intf.arg = (void *)AHT10_I2C_ADDR;
cfg.irq_pin.pin = PIN_IRQ_PIN_NONE;
diff --git a/bsp/stm32/stm32l476-st-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32l476-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
index 2a7fcdfd27..3bceff8863 100644
--- a/bsp/stm32/stm32l476-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/stm32/stm32l476-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
@@ -11,4 +11,22 @@ nano:
peripheral.arduino:
<<: *scons
kconfig:
- - CONFIG_BSP_USING_ARDUINO=y
+ - CONFIG_BSP_USING_ARDUINO=y
+
+devices.soft_i2c:
+ <<: *scons
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=24
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=25
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=26
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=27
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
+ - CONFIG_RT_USING_SOFT_I2C3=y
+ - CONFIG_RT_SOFT_I2C3_SCL_PIN=32
+ - CONFIG_RT_SOFT_I2C3_SDA_PIN=33
+ - CONFIG_RT_SOFT_I2C3_BUS_NAME="swi2c3"
diff --git a/bsp/stm32/stm32l476-st-nucleo/applications/arduino_pinout/pins_arduino.c b/bsp/stm32/stm32l476-st-nucleo/applications/arduino_pinout/pins_arduino.c
index a61610fcd6..da76040563 100644
--- a/bsp/stm32/stm32l476-st-nucleo/applications/arduino_pinout/pins_arduino.c
+++ b/bsp/stm32/stm32l476-st-nucleo/applications/arduino_pinout/pins_arduino.c
@@ -23,33 +23,32 @@
* Analog pins MUST give the device name and channel(ADC, PWM or DAC).
* Arduino Pin must keep in sequence.
*/
-const pin_map_t pin_map_table[]=
-{
- {D0, GET_PIN(A,3), "uart2"}, /* Serial-RX */
- {D1, GET_PIN(A,2), "uart2"}, /* Serial-TX */
- {D2, GET_PIN(A,10)},
- {D3, GET_PIN(B,3), "pwm2", 2}, /* PWM */
- {D4, GET_PIN(B,5)},
- {D5, GET_PIN(B,4), "pwm3", 1}, /* PWM */
- {D6, GET_PIN(B,10), "pwm2", 3}, /* PWM */
- {D7, GET_PIN(A,8)},
- {D8, GET_PIN(A,9)},
- {D9, GET_PIN(C,7), "pwm3", 2}, /* PWM */
- {D10, GET_PIN(B,6), "pwm4", 1}, /* PWM */
- {D11, GET_PIN(A,7), "pwm17", 1}, /* PWM */
- {D12, GET_PIN(A,6)},
- {D13, GET_PIN(A,5)},
- {D14, GET_PIN(B,9), "i2c1"}, /* I2C-SDA (Wire) */
- {D15, GET_PIN(B,8), "i2c1"}, /* I2C-SCL (Wire) */
- {D16, GET_PIN(A,5)},
- {A0, GET_PIN(A,0), "adc1", 5}, /* ADC */
- {A1, GET_PIN(A,1), "adc1", 6}, /* ADC */
- {A2, GET_PIN(A,4), "adc1", 9}, /* ADC */
- {A3, GET_PIN(B,0), "adc1", 15}, /* ADC */
- {A4, GET_PIN(C,1), "adc1", 2}, /* ADC */
- {A5, GET_PIN(C,0), "adc1", 1}, /* ADC */
- {A6, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF}, /* ADC, On-Chip: internal reference voltage */
- {A7, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER}, /* ADC, On-Chip: internal temperature sensor */
+const pin_map_t pin_map_table[] = {
+ { D0, GET_PIN(A, 3), "uart2" }, /* Serial-RX */
+ { D1, GET_PIN(A, 2), "uart2" }, /* Serial-TX */
+ { D2, GET_PIN(A, 10) },
+ { D3, GET_PIN(B, 3), "pwm2", 2 }, /* PWM */
+ { D4, GET_PIN(B, 5) },
+ { D5, GET_PIN(B, 4), "pwm3", 1 }, /* PWM */
+ { D6, GET_PIN(B, 10), "pwm2", 3 }, /* PWM */
+ { D7, GET_PIN(A, 8) },
+ { D8, GET_PIN(A, 9) },
+ { D9, GET_PIN(C, 7), "pwm3", 2 }, /* PWM */
+ { D10, GET_PIN(B, 6), "pwm4", 1 }, /* PWM */
+ { D11, GET_PIN(A, 7), "pwm17", 1 }, /* PWM */
+ { D12, GET_PIN(A, 6) },
+ { D13, GET_PIN(A, 5) },
+ { D14, GET_PIN(B, 9), "swi2c1" }, /* I2C-SDA (Wire) */
+ { D15, GET_PIN(B, 8), "swi2c1" }, /* I2C-SCL (Wire) */
+ { D16, GET_PIN(A, 5) },
+ { A0, GET_PIN(A, 0), "adc1", 5 }, /* ADC */
+ { A1, GET_PIN(A, 1), "adc1", 6 }, /* ADC */
+ { A2, GET_PIN(A, 4), "adc1", 9 }, /* ADC */
+ { A3, GET_PIN(B, 0), "adc1", 15 }, /* ADC */
+ { A4, GET_PIN(C, 1), "adc1", 2 }, /* ADC */
+ { A5, GET_PIN(C, 0), "adc1", 1 }, /* ADC */
+ { A6, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF }, /* ADC, On-Chip: internal reference voltage */
+ { A7, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER }, /* ADC, On-Chip: internal temperature sensor */
};
#ifdef RTDUINO_USING_SPI
diff --git a/bsp/stm32/stm32l476-st-nucleo/applications/arduino_pinout/pins_arduino.h b/bsp/stm32/stm32l476-st-nucleo/applications/arduino_pinout/pins_arduino.h
index 4c00425203..ac688fe814 100644
--- a/bsp/stm32/stm32l476-st-nucleo/applications/arduino_pinout/pins_arduino.h
+++ b/bsp/stm32/stm32l476-st-nucleo/applications/arduino_pinout/pins_arduino.h
@@ -44,8 +44,8 @@
#define LED_BUILTIN D13 /* Default Built-in LED */
-/* i2c1 : PB9-SDA PB8-SCL */
-#define RTDUINO_DEFAULT_IIC_BUS_NAME "i2c1"
+/* swi2c1 : PB9-SDA PB8-SCL */
+#define RTDUINO_DEFAULT_IIC_BUS_NAME "swi2c1"
#define SS D10
#define RTDUINO_DEFAULT_SPI_BUS_NAME "spi1"
diff --git a/bsp/stm32/stm32l476-st-nucleo/board/Kconfig b/bsp/stm32/stm32l476-st-nucleo/board/Kconfig
index a8e9ee55f3..47f4e1b6fd 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 BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C1
select BSP_USING_SPI
select BSP_USING_SPI1
select BSP_SPI1_TX_USING_DMA
@@ -39,6 +40,19 @@ menu "Onboard Peripheral Drivers"
imply RTDUINO_USING_SERVO
default n
+
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 24 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 25 if RT_USING_SOFT_I2C1
+
endmenu
menu "On-chip Peripheral Drivers"
@@ -92,63 +106,51 @@ menu "On-chip Peripheral Drivers"
endif
endif
- menuconfig BSP_USING_I2C
- bool "Enable I2C (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
-
- if BSP_USING_I2C
- config BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
- default n
-
- if BSP_USING_I2C1
- config BSP_I2C1_SCL_PIN
- int "i2c1 scl pin number (PB8)"
- range 1 176
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
default 24
-
- config BSP_I2C1_SDA_PIN
- int "i2c1 sda pin number (PB9)"
- range 1 176
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
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
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
default 26
-
- config BSP_I2C2_SDA_PIN
- int "I2C2 sda pin number"
- range 1 176
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
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
+ menuconfig BSP_USING_SOFT_I2C3
+ bool "Enable software I2C3 Bus (swi2c3)"
+ default n
+ select RT_USING_SOFT_I2C3
+ if BSP_USING_SOFT_I2C3
+ config RT_SOFT_I2C3_SCL_PIN
+ int "swi2c3 SCL pin number"
default 32
-
- config BSP_I2C3_SDA_PIN
- int "I2C3 sda pin number"
- range 1 176
+ config RT_SOFT_I2C3_SDA_PIN
+ int "swi2c3 SDA pin number"
default 33
endif
endif
-
menuconfig BSP_USING_SPI
bool "Enable SPI BUS"
default n
@@ -299,4 +301,28 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 26 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 27 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C3_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SCL_PIN_DEFAULT
+ int
+ default 32 if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SDA_PIN_DEFAULT
+ int
+ default 33 if RT_USING_SOFT_I2C3
+
endmenu
diff --git a/bsp/stm32/stm32l496-ali-developer/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32l496-ali-developer/.ci/attachconfig/ci.attachconfig.yml
index e4646070a9..07fb2b45b5 100644
--- a/bsp/stm32/stm32l496-ali-developer/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/stm32/stm32l496-ali-developer/.ci/attachconfig/ci.attachconfig.yml
@@ -8,3 +8,20 @@ nano:
kconfig:
- CONFIG_RT_USING_NANO=y
+devices.soft_i2c:
+ <<: *scons
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=29
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=30
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
+ - CONFIG_RT_USING_SOFT_I2C3=y
+ - CONFIG_RT_SOFT_I2C3_SCL_PIN=32
+ - CONFIG_RT_SOFT_I2C3_SDA_PIN=33
+ - CONFIG_RT_SOFT_I2C3_BUS_NAME="swi2c3"
+ - CONFIG_RT_USING_SOFT_I2C4=y
+ - CONFIG_RT_SOFT_I2C4_SCL_PIN=60
+ - CONFIG_RT_SOFT_I2C4_SDA_PIN=61
+ - CONFIG_RT_SOFT_I2C4_BUS_NAME="swi2c4"
diff --git a/bsp/stm32/stm32l496-ali-developer/board/Kconfig b/bsp/stm32/stm32l496-ali-developer/board/Kconfig
index 56643f8cdd..ae8cbeadc1 100644
--- a/bsp/stm32/stm32l496-ali-developer/board/Kconfig
+++ b/bsp/stm32/stm32l496-ali-developer/board/Kconfig
@@ -153,56 +153,51 @@ menu "On-chip Peripheral Drivers"
default n
endif
- menuconfig BSP_USING_I2C
- bool "Enable I2C BUS"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- 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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 29
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ 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_SOFT_I2C3
+ bool "Enable software I2C3 Bus (swi2c3)"
+ default n
+ select RT_USING_SOFT_I2C3
+ if BSP_USING_SOFT_I2C3
+ config RT_SOFT_I2C3_SCL_PIN
+ int "swi2c3 SCL pin number"
+ default 32
+ config RT_SOFT_I2C3_SDA_PIN
+ int "swi2c3 SDA pin number"
+ 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
+ menuconfig BSP_USING_SOFT_I2C4
+ bool "Enable software I2C4 Bus (swi2c4)"
+ default n
+ select RT_USING_SOFT_I2C4
+ if BSP_USING_SOFT_I2C4
+ config RT_SOFT_I2C4_SCL_PIN
+ int "swi2c4 SCL pin number"
+ default 60
+ config RT_SOFT_I2C4_SDA_PIN
+ int "swi2c4 SDA pin number"
+ default 61
+ endif
endif
-
config BSP_USING_SDIO
bool "Enable sdio"
select RT_USING_SDIO
@@ -284,4 +279,40 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 29 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 30 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C3_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SCL_PIN_DEFAULT
+ int
+ default 32 if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SDA_PIN_DEFAULT
+ int
+ default 33 if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C4_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C4
+
+ config RT_SOFT_I2C4_SCL_PIN_DEFAULT
+ int
+ default 60 if RT_USING_SOFT_I2C4
+
+ config RT_SOFT_I2C4_SDA_PIN_DEFAULT
+ int
+ default 61 if RT_USING_SOFT_I2C4
+
endmenu
diff --git a/bsp/stm32/stm32l496-st-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32l496-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
index 21dbe5769b..1b4eaf569b 100644
--- a/bsp/stm32/stm32l496-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/stm32/stm32l496-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
@@ -110,3 +110,16 @@ component.cherryusb_cdc:
- CONFIG_RT_CHERRYUSB_DEVICE_DWC2_ST=y
- CONFIG_RT_CHERRYUSB_DEVICE_CDC_ACM=y
- CONFIG_RT_CHERRYUSB_DEVICE_TEMPLATE_CDC_ACM=y
+
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C3=y
+ - CONFIG_RT_SOFT_I2C3_SCL_PIN=32
+ - CONFIG_RT_SOFT_I2C3_SDA_PIN=33
+ - CONFIG_RT_SOFT_I2C3_BUS_NAME="swi2c3"
+ - CONFIG_RT_USING_SOFT_I2C4=y
+ - CONFIG_RT_SOFT_I2C4_SCL_PIN=54
+ - CONFIG_RT_SOFT_I2C4_SDA_PIN=33
+ - CONFIG_RT_SOFT_I2C4_BUS_NAME="swi2c4"
diff --git a/bsp/stm32/stm32l496-st-nucleo/board/Kconfig b/bsp/stm32/stm32l496-st-nucleo/board/Kconfig
index f0c35b330a..f0e4aee4bf 100644
--- a/bsp/stm32/stm32l496-st-nucleo/board/Kconfig
+++ b/bsp/stm32/stm32l496-st-nucleo/board/Kconfig
@@ -103,44 +103,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/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32l4r5-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
index e4646070a9..8e718423d0 100644
--- a/bsp/stm32/stm32l4r5-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/stm32/stm32l4r5-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
@@ -8,3 +8,16 @@ nano:
kconfig:
- CONFIG_RT_USING_NANO=y
+devices.soft_i2c:
+ <<: *scons
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=100
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=101
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=10
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=11
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
diff --git a/bsp/stm32/stm32l4r5-st-nucleo/board/Kconfig b/bsp/stm32/stm32l4r5-st-nucleo/board/Kconfig
index 24bbfa4351..04c3073ae1 100644
--- a/bsp/stm32/stm32l4r5-st-nucleo/board/Kconfig
+++ b/bsp/stm32/stm32l4r5-st-nucleo/board/Kconfig
@@ -285,41 +285,38 @@ menu "Hardware Drivers Config"
default n
endif
- menuconfig BSP_USING_I2C
- bool "Enable using I2C BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
+ default n
+ select RT_USING_I2C
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
default n
- select RT_USING_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
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 100
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 101
endif
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 10
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 11
+ endif
+ endif
menuconfig BSP_USING_TIM
bool "Enable timer"
default n
@@ -365,4 +362,28 @@ menu "Hardware Drivers Config"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 100 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 101 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 10 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 11 if RT_USING_SOFT_I2C2
+
endmenu
diff --git a/bsp/stm32/stm32l4r9-st-eval/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32l4r9-st-eval/.ci/attachconfig/ci.attachconfig.yml
index e4646070a9..5842675f06 100644
--- a/bsp/stm32/stm32l4r9-st-eval/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/stm32/stm32l4r9-st-eval/.ci/attachconfig/ci.attachconfig.yml
@@ -8,3 +8,12 @@ nano:
kconfig:
- CONFIG_RT_USING_NANO=y
+devices.soft_i2c:
+ <<: *scons
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=116
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=117
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/stm32/stm32l4r9-st-eval/board/Kconfig b/bsp/stm32/stm32l4r9-st-eval/board/Kconfig
index 6a34d32811..e29ec26b81 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 BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C1
default n
if BSP_USING_TOUCH
config BSP_TOUCH_INT_PIN
@@ -35,6 +37,18 @@ menu "Onboard Peripheral Drivers"
default n
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 116 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 117 if RT_USING_SOFT_I2C1
+
endmenu
menu "On-chip Peripheral Drivers"
@@ -93,23 +107,25 @@ menu "On-chip Peripheral Drivers"
select BSP_USING_FMC
default n
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 116
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 117
+ endif
endif
-
config BSP_USING_GFXMMU
bool
default n
@@ -125,4 +141,5 @@ menu "Board extended module Drivers"
endmenu
+
endmenu
diff --git a/bsp/stm32/stm32mp157a-st-discovery/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32mp157a-st-discovery/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..3b17a1f483
--- /dev/null
+++ b/bsp/stm32/stm32mp157a-st-discovery/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,20 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=55
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=111
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=116
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=117
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
+ - CONFIG_RT_USING_SOFT_I2C3=y
+ - CONFIG_RT_SOFT_I2C3_SCL_PIN=180
+ - CONFIG_RT_SOFT_I2C3_SDA_PIN=181
+ - CONFIG_RT_SOFT_I2C3_BUS_NAME="swi2c3"
+ - CONFIG_RT_USING_SOFT_I2C4=y
+ - CONFIG_RT_SOFT_I2C4_SCL_PIN=60
+ - CONFIG_RT_SOFT_I2C4_SDA_PIN=95
+ - CONFIG_RT_SOFT_I2C4_BUS_NAME="swi2c4"
diff --git a/bsp/stm32/stm32mp157a-st-discovery/board/Kconfig b/bsp/stm32/stm32mp157a-st-discovery/board/Kconfig
index 05c61bf8b9..a5218ed670 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 BSP_USING_SOFT_I2C
+ select BSP_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 BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C4
default n
if BSP_USING_AUDIO
@@ -89,6 +91,30 @@ menu "Onboard Peripheral Drivers"
default n
endif
+ config RT_SOFT_I2C3_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SCL_PIN_DEFAULT
+ int
+ default 180 if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SDA_PIN_DEFAULT
+ int
+ default 181 if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C4_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C4
+
+ config RT_SOFT_I2C4_SCL_PIN_DEFAULT
+ int
+ default 60 if RT_USING_SOFT_I2C4
+
+ config RT_SOFT_I2C4_SDA_PIN_DEFAULT
+ int
+ default 95 if RT_USING_SOFT_I2C4
+
endmenu
menu "On-chip Peripheral Drivers"
@@ -244,72 +270,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
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
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)"
- 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
+ select RT_USING_I2C
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 55
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 111
+ endif
- endif
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 116
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 117
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C3
+ bool "Enable software I2C3 Bus (swi2c3)"
+ default n
+ select RT_USING_SOFT_I2C3
+ if BSP_USING_SOFT_I2C3
+ config RT_SOFT_I2C3_SCL_PIN
+ int "swi2c3 SCL pin number"
+ default 180
+ config RT_SOFT_I2C3_SDA_PIN
+ int "swi2c3 SDA pin number"
+ default 181
+ endif
+ menuconfig BSP_USING_SOFT_I2C4
+ bool "Enable software I2C4 Bus (swi2c4)"
+ default n
+ select RT_USING_SOFT_I2C4
+ if BSP_USING_SOFT_I2C4
+ config RT_SOFT_I2C4_SCL_PIN
+ int "swi2c4 SCL pin number"
+ default 60
+ config RT_SOFT_I2C4_SDA_PIN
+ int "swi2c4 SDA pin number"
+ default 95
+ endif
+ endif
menuconfig BSP_USING_SPI
bool "Enable SPI BUS"
select RT_USING_SPI
@@ -339,4 +357,28 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 55 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 111 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 116 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 117 if RT_USING_SOFT_I2C2
+
endmenu
diff --git a/bsp/stm32/stm32mp157a-st-discovery/board/ports/audio/drv_mic.c b/bsp/stm32/stm32mp157a-st-discovery/board/ports/audio/drv_mic.c
index 9444fe872b..d27d8e5e55 100644
--- a/bsp/stm32/stm32mp157a-st-discovery/board/ports/audio/drv_mic.c
+++ b/bsp/stm32/stm32mp157a-st-discovery/board/ports/audio/drv_mic.c
@@ -20,7 +20,7 @@
#define DBG_LVL DBG_INFO
#include <rtdbg.h>
-#define MIC_BUS_NAME "i2c4"
+#define MIC_BUS_NAME "swi2c4"
/* SYSRAM */
#define RX_FIFO_SIZE (4096)
diff --git a/bsp/stm32/stm32mp157a-st-discovery/board/ports/audio/drv_sound.c b/bsp/stm32/stm32mp157a-st-discovery/board/ports/audio/drv_sound.c
index 349651e9b9..e2266cc990 100644
--- a/bsp/stm32/stm32mp157a-st-discovery/board/ports/audio/drv_sound.c
+++ b/bsp/stm32/stm32mp157a-st-discovery/board/ports/audio/drv_sound.c
@@ -18,7 +18,7 @@
#define LOG_TAG "drv.audio"
#include <drv_log.h>
-#define SOUND_BUS_NAME "i2c4"
+#define SOUND_BUS_NAME "swi2c4"
/* SYSRAM */
#define TX_FIFO_SIZE (4096)
diff --git a/bsp/stm32/stm32mp157a-st-discovery/board/ports/drv_pmic.c b/bsp/stm32/stm32mp157a-st-discovery/board/ports/drv_pmic.c
index 2bf50623bc..32db752c5a 100644
--- a/bsp/stm32/stm32mp157a-st-discovery/board/ports/drv_pmic.c
+++ b/bsp/stm32/stm32mp157a-st-discovery/board/ports/drv_pmic.c
@@ -19,7 +19,7 @@
#define LOG_TAG "drv.pmic"
#include <drv_log.h>
-#define I2C_NAME "i2c3"
+#define I2C_NAME "swi2c3"
static struct rt_i2c_bus_device *pmic_dev = RT_NULL;
diff --git a/bsp/stm32/stm32mp157a-st-ev1/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32mp157a-st-ev1/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..183e197301
--- /dev/null
+++ b/bsp/stm32/stm32mp157a-st-ev1/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,16 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=55
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=111
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=116
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=117
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
+ - CONFIG_RT_USING_SOFT_I2C3=y
+ - CONFIG_RT_SOFT_I2C3_SCL_PIN=180
+ - CONFIG_RT_SOFT_I2C3_SDA_PIN=181
+ - CONFIG_RT_SOFT_I2C3_BUS_NAME="swi2c3"
diff --git a/bsp/stm32/stm32mp157a-st-ev1/board/Kconfig b/bsp/stm32/stm32mp157a-st-ev1/board/Kconfig
index fb4c2cea1e..bf8f0fc719 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 BSP_USING_SOFT_I2C
+ select BSP_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 BSP_USING_SOFT_I2C
+ select BSP_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 BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C2
default n
config BSP_USING_MFX
@@ -115,6 +118,30 @@ menu "Onboard Peripheral Drivers"
endif
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 116 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 117 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C3_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SCL_PIN_DEFAULT
+ int
+ default 180 if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SDA_PIN_DEFAULT
+ int
+ default 181 if RT_USING_SOFT_I2C3
+
endmenu
menu "On-chip Peripheral Drivers"
@@ -293,57 +320,51 @@ 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
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
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)"
- 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
- endif
+ select RT_USING_I2C
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 55
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 111
+ endif
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 116
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 117
+ endif
+
+ menuconfig BSP_USING_SOFT_I2C3
+ bool "Enable software I2C3 Bus (swi2c3)"
+ default n
+ select RT_USING_SOFT_I2C3
+ if BSP_USING_SOFT_I2C3
+ config RT_SOFT_I2C3_SCL_PIN
+ int "swi2c3 SCL pin number"
+ default 180
+ config RT_SOFT_I2C3_SDA_PIN
+ int "swi2c3 SDA pin number"
+ default 181
+ endif
+ endif
menuconfig BSP_USING_SPI
bool "Enable SPI BUS"
select RT_USING_SPI
@@ -372,4 +393,16 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 55 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 111 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_mfx.c b/bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_mfx.c
index 924035e5e2..2f9ea6ad0e 100644
--- a/bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_mfx.c
+++ b/bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_mfx.c
@@ -16,7 +16,7 @@
#include <drv_log.h>
#define CHIP_ADDRESS 0x42 /* mfx address */
-#define I2C_NAME "i2c2"
+#define I2C_NAME "swi2c2"
struct st_mfx
{
diff --git a/bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_ov5640.c b/bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_ov5640.c
index 97a7721c60..1127b23fa7 100644
--- a/bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_ov5640.c
+++ b/bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_ov5640.c
@@ -26,7 +26,7 @@
#include <drv_log.h>
#define CHIP_ADDRESS 0x3C /* OV5640 address */
-#define I2C_NAME "i2c2"
+#define I2C_NAME "swi2c2"
#define JPEG_BUF_SIZE 8 * 1024
#define JPEG_LINE_SIZE 1 * 1024
diff --git a/bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_pmic.c b/bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_pmic.c
index 78346365aa..6b5f41e2d1 100644
--- a/bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_pmic.c
+++ b/bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_pmic.c
@@ -19,7 +19,7 @@
#define LOG_TAG "drv.pmic"
#include <drv_log.h>
-#define I2C_NAME "i2c3"
+#define I2C_NAME "swi2c3"
static struct rt_i2c_bus_device *pmic_dev = RT_NULL;
diff --git a/bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_sound.c b/bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_sound.c
index 75c1110f15..424bfbdac3 100644
--- a/bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_sound.c
+++ b/bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_sound.c
@@ -23,7 +23,7 @@
#define LOG_TAG "drv.sound"
#include <drv_log.h>
-#define SOUND_BUS_NAME "i2c2"
+#define SOUND_BUS_NAME "swi2c2"
#define TX_FIFO_SIZE (4096)
#if defined(__ARMCC_VERSION)
diff --git a/bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_wm8994.c b/bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_wm8994.c
index aea09b93fb..1627e2885b 100644
--- a/bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_wm8994.c
+++ b/bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_wm8994.c
@@ -18,7 +18,7 @@
#include <drv_log.h>
#define CHIP_ADDRESS 0x1B /* wm8994 address */
-#define I2C_NAME "i2c2"
+#define I2C_NAME "swi2c2"
struct wm8994_dev
{
diff --git a/bsp/stm32/stm32u575-st-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32u575-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..08f15d590b
--- /dev/null
+++ b/bsp/stm32/stm32u575-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=24
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=25
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/stm32/stm32u575-st-nucleo/applications/arduino_pinout/pins_arduino.c b/bsp/stm32/stm32u575-st-nucleo/applications/arduino_pinout/pins_arduino.c
index df8791a72e..07dfdd4b13 100644
--- a/bsp/stm32/stm32u575-st-nucleo/applications/arduino_pinout/pins_arduino.c
+++ b/bsp/stm32/stm32u575-st-nucleo/applications/arduino_pinout/pins_arduino.c
@@ -19,28 +19,27 @@
* Analog pins MUST give the device name and channel(ADC, PWM or DAC).
* Arduino Pin must keep in sequence.
*/
-const pin_map_t pin_map_table[]=
-{
- {D0, GET_PIN(G,8), "uart1"}, /* Serial-RX */
- {D1, GET_PIN(G,7), "uart1"}, /* Serial-TX */
- {D2, GET_PIN(F,15)},
- {D3, GET_PIN(E,13), "pwm1", 3}, /* PWM */
- {D4, GET_PIN(F,14)},
- {D5, GET_PIN(E,11), "pwm1", 2}, /* PWM */
- {D6, GET_PIN(E,9), "pwm1", 1}, /* PWM */
- {D7, GET_PIN(F,13)},
- {D8, GET_PIN(F,12)},
- {D9, GET_PIN(D,15), "pwm4", 4}, /* PWM */
- {D10, GET_PIN(D,14)},
- {D11, GET_PIN(A,7), "spi1"}, /* SPI-MOSI */
- {D12, GET_PIN(A,6), "spi1"}, /* SPI-MISO */
- {D13, GET_PIN(A,5), "spi1"}, /* SPI-SCK */
- {D14, GET_PIN(B,9), "i2c1"}, /* I2C-SDA (Wire) */
- {D15, GET_PIN(B,8), "i2c1"}, /* I2C-SCL (Wire) */
- {A0, GET_PIN(A,3), "adc1", 8}, /* ADC, On-Chip: internal reference voltage, ADC_CHANNEL_VREFINT */
- {A1, GET_PIN(A,2), "adc1", 7}, /* ADC, On-Chip: internal reference voltage, ADC_CHANNEL_VREFINT */
- {A2, GET_PIN(C,3), "adc1", 4}, /* ADC, On-Chip: internal reference voltage, ADC_CHANNEL_VREFINT */
- {A3, GET_PIN(B,0), "adc1", 15}, /* ADC, On-Chip: internal reference voltage, ADC_CHANNEL_VREFINT */
- {A4, GET_PIN(C,1), "adc1", 2}, /* ADC, On-Chip: internal reference voltage, ADC_CHANNEL_VREFINT */
- {A5, GET_PIN(C,0), "adc1", 1}, /* ADC, On-Chip: internal reference voltage, ADC_CHANNEL_VREFINT */
+const pin_map_t pin_map_table[] = {
+ { D0, GET_PIN(G, 8), "uart1" }, /* Serial-RX */
+ { D1, GET_PIN(G, 7), "uart1" }, /* Serial-TX */
+ { D2, GET_PIN(F, 15) },
+ { D3, GET_PIN(E, 13), "pwm1", 3 }, /* PWM */
+ { D4, GET_PIN(F, 14) },
+ { D5, GET_PIN(E, 11), "pwm1", 2 }, /* PWM */
+ { D6, GET_PIN(E, 9), "pwm1", 1 }, /* PWM */
+ { D7, GET_PIN(F, 13) },
+ { D8, GET_PIN(F, 12) },
+ { D9, GET_PIN(D, 15), "pwm4", 4 }, /* PWM */
+ { D10, GET_PIN(D, 14) },
+ { D11, GET_PIN(A, 7), "spi1" }, /* SPI-MOSI */
+ { D12, GET_PIN(A, 6), "spi1" }, /* SPI-MISO */
+ { D13, GET_PIN(A, 5), "spi1" }, /* SPI-SCK */
+ { D14, GET_PIN(B, 9), "swi2c1" }, /* I2C-SDA (Wire) */
+ { D15, GET_PIN(B, 8), "swi2c1" }, /* I2C-SCL (Wire) */
+ { A0, GET_PIN(A, 3), "adc1", 8 }, /* ADC, On-Chip: internal reference voltage, ADC_CHANNEL_VREFINT */
+ { A1, GET_PIN(A, 2), "adc1", 7 }, /* ADC, On-Chip: internal reference voltage, ADC_CHANNEL_VREFINT */
+ { A2, GET_PIN(C, 3), "adc1", 4 }, /* ADC, On-Chip: internal reference voltage, ADC_CHANNEL_VREFINT */
+ { A3, GET_PIN(B, 0), "adc1", 15 }, /* ADC, On-Chip: internal reference voltage, ADC_CHANNEL_VREFINT */
+ { A4, GET_PIN(C, 1), "adc1", 2 }, /* ADC, On-Chip: internal reference voltage, ADC_CHANNEL_VREFINT */
+ { A5, GET_PIN(C, 0), "adc1", 1 }, /* ADC, On-Chip: internal reference voltage, ADC_CHANNEL_VREFINT */
};
diff --git a/bsp/stm32/stm32u575-st-nucleo/applications/arduino_pinout/pins_arduino.h b/bsp/stm32/stm32u575-st-nucleo/applications/arduino_pinout/pins_arduino.h
index 0d460404f8..1b5986afca 100644
--- a/bsp/stm32/stm32u575-st-nucleo/applications/arduino_pinout/pins_arduino.h
+++ b/bsp/stm32/stm32u575-st-nucleo/applications/arduino_pinout/pins_arduino.h
@@ -39,8 +39,8 @@
#define F_CPU 160000000L /* CPU:160MHz */
-/* i2c1 : PB9-SDA PB8-SCL */
-#define RTDUINO_DEFAULT_IIC_BUS_NAME "i2c1"
+/* swi2c1 : PB9-SDA PB8-SCL */
+#define RTDUINO_DEFAULT_IIC_BUS_NAME "swi2c1"
/* spi1 : PA5-SCK PA6-MISO PA7-MOSI */
#define RTDUINO_DEFAULT_SPI_BUS_NAME "spi1"
diff --git a/bsp/stm32/stm32u575-st-nucleo/board/Kconfig b/bsp/stm32/stm32u575-st-nucleo/board/Kconfig
index 659dcfa073..28f3529e72 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 BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C1
select BSP_USING_SPI
select BSP_USING_SPI1
select BSP_SPI1_TX_USING_DMA
@@ -34,9 +35,10 @@ menu "Onboard Peripheral Drivers"
default n
config BSP_USING_MPU6XXX
- bool "Enable mpu6xxx (i2c2)"
- select BSP_USING_I2C
- select BSP_USING_I2C2
+ bool "Enable mpu6xxx (swi2c2)"
+ select RT_USING_I2C
+ select BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C2
select PKG_USING_SENSORS_DRIVERS
select PKG_USING_MPU6XXX
select PKG_USING_MPU6XXX_LATEST_VERSION
@@ -48,6 +50,31 @@ menu "Onboard Peripheral Drivers"
select RT_USING_SFUD
default n
+
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 24 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 25 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 24 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 25 if RT_USING_SOFT_I2C2
+
endmenu
menu "On-chip Peripheral Drivers"
@@ -222,29 +249,38 @@ menu "On-chip Peripheral Drivers"
default n
endif
- menuconfig BSP_USING_I2C
- bool "Enable I2C BUS"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- 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
- endif
- endif
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 24
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 25
+ endif
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 24
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 25
+ endif
+ endif
source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig"
endmenu
@@ -253,4 +289,5 @@ menu "Board extended module Drivers"
endmenu
+
endmenu
diff --git a/bsp/stm32/stm32wb55-st-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32wb55-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..7dc954e324
--- /dev/null
+++ b/bsp/stm32/stm32wb55-st-nucleo/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,12 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=24
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=25
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C3=y
+ - CONFIG_RT_SOFT_I2C3_SCL_PIN=29
+ - CONFIG_RT_SOFT_I2C3_SDA_PIN=30
+ - CONFIG_RT_SOFT_I2C3_BUS_NAME="swi2c3"
diff --git a/bsp/stm32/stm32wb55-st-nucleo/board/Kconfig b/bsp/stm32/stm32wb55-st-nucleo/board/Kconfig
index 1351db7061..b57b92d646 100644
--- a/bsp/stm32/stm32wb55-st-nucleo/board/Kconfig
+++ b/bsp/stm32/stm32wb55-st-nucleo/board/Kconfig
@@ -75,44 +75,38 @@ menu "On-chip Peripheral Drivers"
- menuconfig BSP_USING_I2C
- bool "Enable I2C BUS"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- 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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 24
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ 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
+ menuconfig BSP_USING_SOFT_I2C3
+ bool "Enable software I2C3 Bus (swi2c3)"
+ default n
+ select RT_USING_SOFT_I2C3
+ if BSP_USING_SOFT_I2C3
+ config RT_SOFT_I2C3_SCL_PIN
+ int "swi2c3 SCL pin number"
+ default 29
+ config RT_SOFT_I2C3_SDA_PIN
+ int "swi2c3 SDA pin number"
+ default 30
+ endif
endif
-
menuconfig BSP_USING_TIM
bool "Enable timer"
default n
@@ -163,4 +157,28 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 24 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 25 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C3_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SCL_PIN_DEFAULT
+ int
+ default 29 if RT_USING_SOFT_I2C3
+
+ config RT_SOFT_I2C3_SDA_PIN_DEFAULT
+ int
+ default 30 if RT_USING_SOFT_I2C3
+
endmenu
diff --git a/bsp/synwit/libraries/SWM320_drivers/SConscript b/bsp/synwit/libraries/SWM320_drivers/SConscript
index c4beaaac5b..3cca80755d 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_CLOCK_TIME']):
src += ['drv_timer.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 ed9ceb7142..0000000000
--- 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 <drv_log.h>
-
-#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 2dd3822124..0000000000
--- 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 26bef4ca2b..bb7bb6d927 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_CLOCK_TIME']):
src += ['drv_timer.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 f74715d03d..0000000000
--- 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 <drv_log.h>
-
-#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 60151d0e50..0000000000
--- 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/.ci/attachconfig/ci.attachconfig.yml b/bsp/synwit/swm320-mini/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..090bc5b70e
--- /dev/null
+++ b/bsp/synwit/swm320-mini/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,12 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C0=y
+ - CONFIG_RT_SOFT_I2C0_SCL_PIN=28
+ - CONFIG_RT_SOFT_I2C0_SDA_PIN=29
+ - CONFIG_RT_SOFT_I2C0_BUS_NAME="swi2c0"
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=32
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=33
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/synwit/swm320-mini/board/Kconfig b/bsp/synwit/swm320-mini/board/Kconfig
index 8a2c6875e1..f024b60f62 100644
--- a/bsp/synwit/swm320-mini/board/Kconfig
+++ b/bsp/synwit/swm320-mini/board/Kconfig
@@ -124,43 +124,38 @@ menu "On-chip Peripheral Drivers"
default n
endif
- menuconfig BSP_USING_I2C
- bool "Enable I2C BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- config BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C0
+ bool "Enable software I2C0 Bus (swi2c0)"
+ default n
+ select RT_USING_SOFT_I2C0
+ if BSP_USING_SOFT_I2C0
+ config RT_SOFT_I2C0_SCL_PIN
+ int "swi2c0 SCL pin number"
+ default 28
+ config RT_SOFT_I2C0_SDA_PIN
+ int "swi2c0 SDA pin number"
+ default 29
+ endif
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 32
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 33
+ endif
+ endif
menuconfig BSP_USING_PWM
bool "Enable PWM"
default n
@@ -303,4 +298,28 @@ menu "Offboard Peripheral Drivers"
endmenu
+ config RT_SOFT_I2C0_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C0
+
+ config RT_SOFT_I2C0_SCL_PIN_DEFAULT
+ int
+ default 28 if RT_USING_SOFT_I2C0
+
+ config RT_SOFT_I2C0_SDA_PIN_DEFAULT
+ int
+ default 29 if RT_USING_SOFT_I2C0
+
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 32 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 33 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/synwit/swm341-mini/.ci/attachconfig/ci.attachconfig.yml b/bsp/synwit/swm341-mini/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..e3a04a5ec1
--- /dev/null
+++ b/bsp/synwit/swm341-mini/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,12 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C0=y
+ - CONFIG_RT_SOFT_I2C0_SCL_PIN=1
+ - CONFIG_RT_SOFT_I2C0_SDA_PIN=0
+ - CONFIG_RT_SOFT_I2C0_BUS_NAME="swi2c0"
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=37
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=36
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/synwit/swm341-mini/applications/main.c b/bsp/synwit/swm341-mini/applications/main.c
index 4d32b758e2..2cde418752 100644
--- a/bsp/synwit/swm341-mini/applications/main.c
+++ b/bsp/synwit/swm341-mini/applications/main.c
@@ -761,7 +761,7 @@ int rt_hw_gt9147_port(void)
rt_uint8_t rst;
rst = GT9147_RST_PIN;
- config.dev_name = "i2c0";
+ config.dev_name = "swi2c0";
config.irq_pin.pin = GT9147_IRQ_PIN;
config.irq_pin.mode = PIN_MODE_INPUT_PULLDOWN;
config.user_data = &rst;
diff --git a/bsp/synwit/swm341-mini/board/Kconfig b/bsp/synwit/swm341-mini/board/Kconfig
index 6e6564850d..17bbcdfd84 100644
--- a/bsp/synwit/swm341-mini/board/Kconfig
+++ b/bsp/synwit/swm341-mini/board/Kconfig
@@ -184,41 +184,38 @@ menu "On-chip Peripheral Drivers"
default n
endif
- menuconfig BSP_USING_I2C
- bool "Enable I2C BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_I2C
- config BSP_USING_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"
- 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
- endif
- endif
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C0
+ bool "Enable software I2C0 Bus (swi2c0)"
+ default n
+ select RT_USING_SOFT_I2C0
+ if BSP_USING_SOFT_I2C0
+ config RT_SOFT_I2C0_SCL_PIN
+ int "swi2c0 SCL pin number"
+ default 1
+ config RT_SOFT_I2C0_SDA_PIN
+ int "swi2c0 SDA pin number"
+ default 0
+ endif
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 37
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 36
+ endif
+ endif
menuconfig BSP_USING_PWM
bool "Enable PWM"
default n
@@ -366,11 +363,12 @@ menu "On-chip Peripheral Drivers"
endif
menuconfig BSP_USING_GT9147
- bool "Enable gt9147(use i2c0)"
+ bool "Enable gt9147(use swi2c0)"
select RT_USING_TOUCH
select RT_TOUCH_PIN_IRQ
- select BSP_USING_I2C
- select BSP_USING_I2C0
+ select RT_USING_I2C
+ select BSP_USING_SOFT_I2C
+ select BSP_USING_SOFT_I2C0
select PKG_USING_GT9147
select PKG_USING_GT9147_LATEST_VERSION
default n
@@ -395,6 +393,18 @@ menu "On-chip Peripheral Drivers"
default n
endif
+ config RT_SOFT_I2C0_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C0
+
+ config RT_SOFT_I2C0_SCL_PIN_DEFAULT
+ int
+ default 1 if RT_USING_SOFT_I2C0
+
+ config RT_SOFT_I2C0_SDA_PIN_DEFAULT
+ int
+ default 0 if RT_USING_SOFT_I2C0
+
endmenu
menu "Onboard Peripheral Drivers"
@@ -405,4 +415,16 @@ menu "Offboard Peripheral Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 37 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 36 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/tae32f5300/.ci/attachconfig/ci.attachconfig.yml b/bsp/tae32f5300/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..bf1a5ff758
--- /dev/null
+++ b/bsp/tae32f5300/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=51
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=90
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/tae32f5300/drivers/Kconfig b/bsp/tae32f5300/drivers/Kconfig
index 29451af6c7..2ed0574837 100644
--- a/bsp/tae32f5300/drivers/Kconfig
+++ b/bsp/tae32f5300/drivers/Kconfig
@@ -51,23 +51,25 @@ menu "On-chip Peripheral Drivers"
default n
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
- default y
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
+ default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 51
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 90
+ endif
endif
-
menuconfig BSP_USING_SPI
bool "Enable SPI BUS"
default n
@@ -280,5 +282,17 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 51 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 90 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/tkm32F499/.ci/attachconfig/ci.attachconfig.yml b/bsp/tkm32F499/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..d626be14a5
--- /dev/null
+++ b/bsp/tkm32F499/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,8 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=22
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=23
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
diff --git a/bsp/tkm32F499/drivers/Kconfig b/bsp/tkm32F499/drivers/Kconfig
index d856bc73ff..eff599ffc4 100644
--- a/bsp/tkm32F499/drivers/Kconfig
+++ b/bsp/tkm32F499/drivers/Kconfig
@@ -67,23 +67,25 @@ menu "On-chip Peripheral Drivers"
default n
endif
- menuconfig BSP_USING_I2C1
- bool "Enable I2C1 BUS (software simulation)"
+ menuconfig BSP_USING_SOFT_I2C
+ bool "Enable software I2C (swi2c)"
default n
select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
- if BSP_USING_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
+ select RT_USING_SOFT_I2C
+ if BSP_USING_SOFT_I2C
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 22
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 23
+ endif
endif
-
menuconfig BSP_USING_TIM
bool "Enable timer"
default n
@@ -151,4 +153,16 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 22 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
endmenu
diff --git a/bsp/w60x/drivers/Kconfig b/bsp/w60x/drivers/Kconfig
index 5c2b5c6d82..73350248a2 100644
--- a/bsp/w60x/drivers/Kconfig
+++ b/bsp/w60x/drivers/Kconfig
@@ -186,23 +186,37 @@ menu "On-chip Peripheral Drivers"
endif
menuconfig BSP_USING_SOFT_I2C
- bool "Enable SOFT I2C"
- select RT_USING_I2C
- select RT_USING_I2C_BITOPS
+ bool "Enable software I2C (swi2c)"
default n
-
+ select RT_USING_I2C
+ select RT_USING_SOFT_I2C
if BSP_USING_SOFT_I2C
- config BSP_USING_SOFT_I2C1
- bool "Enabel SOFT I2C1"
- default n
- endif
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 23
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 24
+ endif
- if BSP_USING_SOFT_I2C
- config BSP_USING_SOFT_I2C2
- bool "Enabel SOFT I2C2"
- default n
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 25
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 24
+ endif
endif
-
menuconfig BSP_USING_SPI
bool "Enable SPI"
select RT_USING_SPI
@@ -265,4 +279,28 @@ menu "External Libraries"
bool "Using Oneshot Demo"
default y
endif
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 23 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 24 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 25 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 24 if RT_USING_SOFT_I2C2
+
endmenu
diff --git a/bsp/w60x/drivers/SConscript b/bsp/w60x/drivers/SConscript
index 44dd0267b3..5d985d937f 100644
--- a/bsp/w60x/drivers/SConscript
+++ b/bsp/w60x/drivers/SConscript
@@ -23,9 +23,6 @@ if GetDepend('BSP_USING_PIN'):
if GetDepend('BSP_USING_CLOCK_TIMER'):
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 6cda890ec2..0000000000
--- 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 <board.h>
-#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 <rtdbg.h>
-
-#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 bd0cdc0431..0000000000
--- 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 <rtthread.h>
-#include <rthw.h>
-#include <rtdevice.h>
-
-/* 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 537dd03f72..c14c16e408 100644
--- a/bsp/wch/risc-v/Libraries/ch32_drivers/SConscript
+++ b/bsp/wch/risc-v/Libraries/ch32_drivers/SConscript
@@ -24,9 +24,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 149d2efb62..0000000000
--- 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 <board.h>
-#include "drv_soft_i2c.h"
-
-#ifdef BSP_USING_SOFT_I2C
-
-//#define DRV_DEBUG
-#define LOG_TAG "drv.i2c"
-#include <drv_log.h>
-
-#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 b0d9912fa4..0000000000
--- 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 <rtthread.h>
-#include <rthw.h>
-#include <rtdevice.h>
-
-/* 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/.ci/attachconfig/ci.attachconfig.yml b/bsp/wch/risc-v/ch32v208w-r0/.ci/attachconfig/ci.attachconfig.yml
new file mode 100644
index 0000000000..258515f455
--- /dev/null
+++ b/bsp/wch/risc-v/ch32v208w-r0/.ci/attachconfig/ci.attachconfig.yml
@@ -0,0 +1,12 @@
+devices.soft_i2c:
+ kconfig:
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=38
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=39
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=32
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=33
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
diff --git a/bsp/wch/risc-v/ch32v208w-r0/board/Kconfig b/bsp/wch/risc-v/ch32v208w-r0/board/Kconfig
index 1ef09bd521..5e41bb454d 100644
--- a/bsp/wch/risc-v/ch32v208w-r0/board/Kconfig
+++ b/bsp/wch/risc-v/ch32v208w-r0/board/Kconfig
@@ -31,8 +31,6 @@ 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 RTDUINO_USING_WIRE
imply RTDUINO_USING_SERVO
default n
@@ -122,47 +120,37 @@ menu "On-chip Peripheral Drivers"
endif
menuconfig BSP_USING_SOFT_I2C
- bool "Enable I2C Bus"
- select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
+ bool "Enable software I2C (swi2c)"
default n
-
+ select RT_USING_I2C
+ select RT_USING_SOFT_I2C
if BSP_USING_SOFT_I2C
- config BSP_USING_I2C1
- bool "Enable I2C1 Bus (software simulation)"
- 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
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 38
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 39
+ endif
- 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
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 32
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 33
+ endif
endif
-
menuconfig BSP_USING_SPI
bool "Enable SPI"
select RT_USING_SOFT_SPI
@@ -604,4 +592,28 @@ menu "Board extended module Drivers"
endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 38 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 39 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 32 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 33 if RT_USING_SOFT_I2C2
+
endmenu
diff --git a/bsp/wch/risc-v/ch32v307v-r1/.ci/attachconfig/ci.attachconfig.yml b/bsp/wch/risc-v/ch32v307v-r1/.ci/attachconfig/ci.attachconfig.yml
index 8f92bf9046..9ca1fd6a37 100644
--- a/bsp/wch/risc-v/ch32v307v-r1/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/wch/risc-v/ch32v307v-r1/.ci/attachconfig/ci.attachconfig.yml
@@ -13,9 +13,16 @@ devices.dac:
- CONFIG_BSP_USING_DAC_CHANNEL2=n
devices.i2c:
kconfig:
- - CONFIG_BSP_USING_SOFT_I2C=y
- - CONFIG_BSP_USING_I2C1=y
- - CONFIG_BSP_USING_I2C2=y
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=26
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=27
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=32
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=33
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
devices.spi:
kconfig:
- CONFIG_BSP_USING_SPI=y
diff --git a/bsp/wch/risc-v/ch32v307v-r1/board/Kconfig b/bsp/wch/risc-v/ch32v307v-r1/board/Kconfig
index ececb91344..9210ef342c 100644
--- a/bsp/wch/risc-v/ch32v307v-r1/board/Kconfig
+++ b/bsp/wch/risc-v/ch32v307v-r1/board/Kconfig
@@ -31,8 +31,6 @@ menu "Onboard Peripheral Drivers"
select BSP_USING_TIM4_PWM_CH4
select BSP_USING_TIM6
select BSP_USING_TIM6_CLOCK_TIMER
- select BSP_USING_SOFT_I2C
- select BSP_USING_I2C1
select RTDUINO_USING_WIRE
imply RTDUINO_USING_SERVO
default n
@@ -384,47 +382,37 @@ menu "On-chip Peripheral Drivers"
endif
menuconfig BSP_USING_SOFT_I2C
- bool "Enable I2C Bus"
- select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
+ bool "Enable software I2C (swi2c)"
default n
-
+ select RT_USING_I2C
+ select RT_USING_SOFT_I2C
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
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 26
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 27
+ endif
- 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
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 32
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 33
+ endif
endif
-
menuconfig BSP_USING_SPI
bool "Enable SPI"
select RT_USING_SPI
@@ -856,5 +844,28 @@ menu "Board extended module Drivers"
endmenu
-endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 26 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 27 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 32 if RT_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 33 if RT_USING_SOFT_I2C2
+
+endmenu
diff --git a/bsp/wch/risc-v/yd-ch32v307vct6/.ci/attachconfig/ci.attachconfig.yml b/bsp/wch/risc-v/yd-ch32v307vct6/.ci/attachconfig/ci.attachconfig.yml
index 8f92bf9046..9ca1fd6a37 100644
--- a/bsp/wch/risc-v/yd-ch32v307vct6/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/wch/risc-v/yd-ch32v307vct6/.ci/attachconfig/ci.attachconfig.yml
@@ -13,9 +13,16 @@ devices.dac:
- CONFIG_BSP_USING_DAC_CHANNEL2=n
devices.i2c:
kconfig:
- - CONFIG_BSP_USING_SOFT_I2C=y
- - CONFIG_BSP_USING_I2C1=y
- - CONFIG_BSP_USING_I2C2=y
+ - CONFIG_RT_USING_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C=y
+ - CONFIG_RT_USING_SOFT_I2C1=y
+ - CONFIG_RT_SOFT_I2C1_SCL_PIN=26
+ - CONFIG_RT_SOFT_I2C1_SDA_PIN=27
+ - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1"
+ - CONFIG_RT_USING_SOFT_I2C2=y
+ - CONFIG_RT_SOFT_I2C2_SCL_PIN=32
+ - CONFIG_RT_SOFT_I2C2_SDA_PIN=33
+ - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2"
devices.spi:
kconfig:
- CONFIG_BSP_USING_SPI=y
diff --git a/bsp/wch/risc-v/yd-ch32v307vct6/board/Kconfig b/bsp/wch/risc-v/yd-ch32v307vct6/board/Kconfig
index dccae0c2bb..e449917990 100644
--- a/bsp/wch/risc-v/yd-ch32v307vct6/board/Kconfig
+++ b/bsp/wch/risc-v/yd-ch32v307vct6/board/Kconfig
@@ -93,47 +93,37 @@ menu "On-chip Peripheral Drivers"
endif
menuconfig BSP_USING_SOFT_I2C
- bool "Enable I2C Bus"
- select RT_USING_I2C
- select RT_USING_I2C_BITOPS
- select RT_USING_PIN
+ bool "Enable software I2C (swi2c)"
default n
-
+ select RT_USING_I2C
+ select RT_USING_SOFT_I2C
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
+ menuconfig BSP_USING_SOFT_I2C1
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
+ select RT_USING_SOFT_I2C1
+ if BSP_USING_SOFT_I2C1
+ config RT_SOFT_I2C1_SCL_PIN
+ int "swi2c1 SCL pin number"
+ default 26
+ config RT_SOFT_I2C1_SDA_PIN
+ int "swi2c1 SDA pin number"
+ default 27
+ endif
- 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
+ menuconfig BSP_USING_SOFT_I2C2
+ bool "Enable software I2C2 Bus (swi2c2)"
+ default n
+ select RT_USING_SOFT_I2C2
+ if BSP_USING_SOFT_I2C2
+ config RT_SOFT_I2C2_SCL_PIN
+ int "swi2c2 SCL pin number"
+ default 32
+ config RT_SOFT_I2C2_SDA_PIN
+ int "swi2c2 SDA pin number"
+ default 33
+ endif
endif
-
menuconfig BSP_USING_SPI
bool "Enable SPI"
select RT_USING_SPI
@@ -574,5 +564,28 @@ menu "Board extended module Drivers"
endmenu
-endmenu
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+ default 26 if RT_USING_SOFT_I2C1
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+ default 27 if RT_USING_SOFT_I2C1
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+ default y if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+ default 32 if RT_USING_SOFT_I2C2
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+ default 33 if RT_USING_SOFT_I2C2
+
+endmenu
diff --git a/components/drivers/i2c/Kconfig b/components/drivers/i2c/Kconfig
index 79cc802428..be3598a29c 100644
--- a/components/drivers/i2c/Kconfig
+++ b/components/drivers/i2c/Kconfig
@@ -18,22 +18,33 @@ if RT_USING_I2C
endif
menuconfig RT_USING_SOFT_I2C
- bool "Use GPIO to soft simulate I2C"
+ bool "Use GPIO to simulate I2C (swi2c)"
default n
select RT_USING_PIN
select RT_USING_I2C_BITOPS
if RT_USING_SOFT_I2C
+ config RT_SOFT_I2C0_HAS_PIN_DEFAULT
+ bool
+
+ config RT_SOFT_I2C0_SCL_PIN_DEFAULT
+ int
+
+ config RT_SOFT_I2C0_SDA_PIN_DEFAULT
+ int
+
menuconfig RT_USING_SOFT_I2C0
- bool "Enable I2C0 Bus (software simulation)"
- default y
+ bool "Enable software I2C0 Bus (swi2c0)"
+ default n
if RT_USING_SOFT_I2C0
config RT_SOFT_I2C0_SCL_PIN
int "SCL pin number"
range 0 32767
+ default RT_SOFT_I2C0_SCL_PIN_DEFAULT if RT_SOFT_I2C0_HAS_PIN_DEFAULT
default 1
config RT_SOFT_I2C0_SDA_PIN
int "SDA pin number"
range 0 32767
+ default RT_SOFT_I2C0_SDA_PIN_DEFAULT if RT_SOFT_I2C0_HAS_PIN_DEFAULT
default 2
config RT_SOFT_I2C0_BUS_NAME
string "Bus name"
@@ -47,17 +58,28 @@ if RT_USING_I2C
range 0 32767
default 10
endif
+ config RT_SOFT_I2C1_HAS_PIN_DEFAULT
+ bool
+
+ config RT_SOFT_I2C1_SCL_PIN_DEFAULT
+ int
+
+ config RT_SOFT_I2C1_SDA_PIN_DEFAULT
+ int
+
menuconfig RT_USING_SOFT_I2C1
- bool "Enable I2C1 Bus (software simulation)"
- default y
+ bool "Enable software I2C1 Bus (swi2c1)"
+ default n
if RT_USING_SOFT_I2C1
config RT_SOFT_I2C1_SCL_PIN
int "SCL pin number"
range 0 32767
+ default RT_SOFT_I2C1_SCL_PIN_DEFAULT if RT_SOFT_I2C1_HAS_PIN_DEFAULT
default 3
config RT_SOFT_I2C1_SDA_PIN
int "SDA pin number"
range 0 32767
+ default RT_SOFT_I2C1_SDA_PIN_DEFAULT if RT_SOFT_I2C1_HAS_PIN_DEFAULT
default 4
config RT_SOFT_I2C1_BUS_NAME
string "Bus name"
@@ -71,17 +93,28 @@ if RT_USING_I2C
range 0 32767
default 10
endif
+ config RT_SOFT_I2C2_HAS_PIN_DEFAULT
+ bool
+
+ config RT_SOFT_I2C2_SCL_PIN_DEFAULT
+ int
+
+ config RT_SOFT_I2C2_SDA_PIN_DEFAULT
+ int
+
menuconfig RT_USING_SOFT_I2C2
- bool "Enable I2C2 Bus (software simulation)"
+ bool "Enable software I2C2 Bus (swi2c2)"
default n
if RT_USING_SOFT_I2C2
config RT_SOFT_I2C2_SCL_PIN
int "SCL pin number"
range 0 32767
+ default RT_SOFT_I2C2_SCL_PIN_DEFAULT if RT_SOFT_I2C2_HAS_PIN_DEFAULT
default 5
config RT_SOFT_I2C2_SDA_PIN
int "SDA pin number"
range 0 32767
+ default RT_SOFT_I2C2_SDA_PIN_DEFAULT if RT_SOFT_I2C2_HAS_PIN_DEFAULT
default 6
config RT_SOFT_I2C2_BUS_NAME
string "Bus name"
@@ -95,17 +128,28 @@ if RT_USING_I2C
range 0 32767
default 10
endif
+ config RT_SOFT_I2C3_HAS_PIN_DEFAULT
+ bool
+
+ config RT_SOFT_I2C3_SCL_PIN_DEFAULT
+ int
+
+ config RT_SOFT_I2C3_SDA_PIN_DEFAULT
+ int
+
menuconfig RT_USING_SOFT_I2C3
- bool "Enable I2C3 Bus (software simulation)"
+ bool "Enable software I2C3 Bus (swi2c3)"
default n
if RT_USING_SOFT_I2C3
config RT_SOFT_I2C3_SCL_PIN
int "SCL pin number"
range 0 32767
+ default RT_SOFT_I2C3_SCL_PIN_DEFAULT if RT_SOFT_I2C3_HAS_PIN_DEFAULT
default 7
config RT_SOFT_I2C3_SDA_PIN
int "SDA pin number"
range 0 32767
+ default RT_SOFT_I2C3_SDA_PIN_DEFAULT if RT_SOFT_I2C3_HAS_PIN_DEFAULT
default 8
config RT_SOFT_I2C3_BUS_NAME
string "Bus name"
@@ -119,17 +163,28 @@ if RT_USING_I2C
range 0 32767
default 10
endif
+ config RT_SOFT_I2C4_HAS_PIN_DEFAULT
+ bool
+
+ config RT_SOFT_I2C4_SCL_PIN_DEFAULT
+ int
+
+ config RT_SOFT_I2C4_SDA_PIN_DEFAULT
+ int
+
menuconfig RT_USING_SOFT_I2C4
- bool "Enable I2C4 Bus (software simulation)"
+ bool "Enable software I2C4 Bus (swi2c4)"
default n
if RT_USING_SOFT_I2C4
config RT_SOFT_I2C4_SCL_PIN
int "SCL pin number"
range 0 32767
+ default RT_SOFT_I2C4_SCL_PIN_DEFAULT if RT_SOFT_I2C4_HAS_PIN_DEFAULT
default 9
config RT_SOFT_I2C4_SDA_PIN
int "SDA pin number"
range 0 32767
+ default RT_SOFT_I2C4_SDA_PIN_DEFAULT if RT_SOFT_I2C4_HAS_PIN_DEFAULT
default 10
config RT_SOFT_I2C4_BUS_NAME
string "Bus name"
@@ -143,17 +198,28 @@ if RT_USING_I2C
range 0 32767
default 10
endif
+ config RT_SOFT_I2C5_HAS_PIN_DEFAULT
+ bool
+
+ config RT_SOFT_I2C5_SCL_PIN_DEFAULT
+ int
+
+ config RT_SOFT_I2C5_SDA_PIN_DEFAULT
+ int
+
menuconfig RT_USING_SOFT_I2C5
- bool "Enable I2C5 Bus (software simulation)"
+ bool "Enable software I2C5 Bus (swi2c5)"
default n
if RT_USING_SOFT_I2C5
config RT_SOFT_I2C5_SCL_PIN
int "SCL pin number"
range 0 32767
+ default RT_SOFT_I2C5_SCL_PIN_DEFAULT if RT_SOFT_I2C5_HAS_PIN_DEFAULT
default 11
config RT_SOFT_I2C5_SDA_PIN
int "SDA pin number"
range 0 32767
+ default RT_SOFT_I2C5_SDA_PIN_DEFAULT if RT_SOFT_I2C5_HAS_PIN_DEFAULT
default 12
config RT_SOFT_I2C5_BUS_NAME
string "Bus name"
@@ -167,17 +233,28 @@ if RT_USING_I2C
range 0 32767
default 10
endif
+ config RT_SOFT_I2C6_HAS_PIN_DEFAULT
+ bool
+
+ config RT_SOFT_I2C6_SCL_PIN_DEFAULT
+ int
+
+ config RT_SOFT_I2C6_SDA_PIN_DEFAULT
+ int
+
menuconfig RT_USING_SOFT_I2C6
- bool "Enable I2C6 Bus (software simulation)"
+ bool "Enable software I2C6 Bus (swi2c6)"
default n
if RT_USING_SOFT_I2C6
config RT_SOFT_I2C6_SCL_PIN
int "SCL pin number"
range 0 32767
+ default RT_SOFT_I2C6_SCL_PIN_DEFAULT if RT_SOFT_I2C6_HAS_PIN_DEFAULT
default 13
config RT_SOFT_I2C6_SDA_PIN
int "SDA pin number"
range 0 32767
+ default RT_SOFT_I2C6_SDA_PIN_DEFAULT if RT_SOFT_I2C6_HAS_PIN_DEFAULT
default 14
config RT_SOFT_I2C6_BUS_NAME
string "Bus name"
@@ -191,17 +268,28 @@ if RT_USING_I2C
range 0 32767
default 10
endif
+ config RT_SOFT_I2C7_HAS_PIN_DEFAULT
+ bool
+
+ config RT_SOFT_I2C7_SCL_PIN_DEFAULT
+ int
+
+ config RT_SOFT_I2C7_SDA_PIN_DEFAULT
+ int
+
menuconfig RT_USING_SOFT_I2C7
- bool "Enable I2C7 Bus (software simulation)"
+ bool "Enable software I2C7 Bus (swi2c7)"
default n
if RT_USING_SOFT_I2C7
config RT_SOFT_I2C7_SCL_PIN
int "SCL pin number"
range 0 32767
+ default RT_SOFT_I2C7_SCL_PIN_DEFAULT if RT_SOFT_I2C7_HAS_PIN_DEFAULT
default 15
config RT_SOFT_I2C7_SDA_PIN
int "SDA pin number"
range 0 32767
+ default RT_SOFT_I2C7_SDA_PIN_DEFAULT if RT_SOFT_I2C7_HAS_PIN_DEFAULT
default 16
config RT_SOFT_I2C7_BUS_NAME
string "Bus name"
@@ -215,17 +303,28 @@ if RT_USING_I2C
range 0 32767
default 10
endif
+ config RT_SOFT_I2C8_HAS_PIN_DEFAULT
+ bool
+
+ config RT_SOFT_I2C8_SCL_PIN_DEFAULT
+ int
+
+ config RT_SOFT_I2C8_SDA_PIN_DEFAULT
+ int
+
menuconfig RT_USING_SOFT_I2C8
- bool "Enable I2C8 Bus (software simulation)"
+ bool "Enable software I2C8 Bus (swi2c8)"
default n
if RT_USING_SOFT_I2C8
config RT_SOFT_I2C8_SCL_PIN
int "SCL pin number"
range 0 32767
+ default RT_SOFT_I2C8_SCL_PIN_DEFAULT if RT_SOFT_I2C8_HAS_PIN_DEFAULT
default 17
config RT_SOFT_I2C8_SDA_PIN
int "SDA pin number"
range 0 32767
+ default RT_SOFT_I2C8_SDA_PIN_DEFAULT if RT_SOFT_I2C8_HAS_PIN_DEFAULT
default 18
config RT_SOFT_I2C8_BUS_NAME
string "Bus name"