diff --git a/bsp/ESP/ESP32_C3/.ci/attachconfig/ci.attachconfig.yml b/bsp/ESP/ESP32_C3/.ci/attachconfig/ci.attachconfig.yml index a2a990be1c5..ca2eddb6ad6 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 b7cb8f1275d..f56972c7214 100644 --- a/bsp/ESP/libraries/drivers/Kconfig +++ b/bsp/ESP/libraries/drivers/Kconfig @@ -76,24 +76,6 @@ menu "On-chip Peripheral Drivers" bool "Enable HardWare I2C" default n - menuconfig BSP_USING_SW_I2C - bool "Enable SoftWare I2C" - default n - if BSP_USING_SW_I2C - config BSP_USING_SW_I2C0 - bool "Enable SoftWare I2C0" - default n - if BSP_USING_SW_I2C0 - config BSP_SW_I2C0_SDA_PIN - int "SWI2C0 sda pin number" - range 0 21 - default 18 - config BSP_SW_I2C0_SCL_PIN - int "SWI2C0 scl pin number" - range 0 21 - default 19 - endif - endif endif menuconfig BSP_USING_SPI @@ -171,4 +153,4 @@ config BSP_ENABLE_GDBSTUB bool "Enable ESP_GDBSTUB compontent" default n -endmenu \ No newline at end of file +endmenu diff --git a/bsp/ESP/libraries/drivers/SConscript b/bsp/ESP/libraries/drivers/SConscript index 74d91cca657..c8d534e1646 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 fbfed4d71db..00000000000 --- 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 -#include -#define LOG_TAG "drv.i2c" -#ifdef RT_USING_I2C -#ifdef BSP_USING_SW_I2C -#include "rthw.h" -#include "rttypes.h" -#include -#include "driver/gpio.h" -#include "drv_sw_i2c.h" - -#if defined(BSP_USING_SW_I2C0) -#define SW_I2C0_BUS_CONFIG \ - { \ - .scl = BSP_SW_I2C0_SCL_PIN, \ - .sda = BSP_SW_I2C0_SDA_PIN, \ - .bus_name = "i2c0", \ - } -#endif - -static const struct esp32c3_soft_i2c_config soft_i2c_config[] = -{ -#if defined(BSP_USING_SW_I2C0) - SW_I2C0_BUS_CONFIG, -#endif -}; - -static struct esp32c3_i2c i2c_obj[sizeof(soft_i2c_config) / sizeof(soft_i2c_config[0])]; - -/** - * @brief This function initializes the i2c pin. - * @param i2c - * @retval None - */ -static void esp32c3_i2c_gpio_init(struct esp32c3_i2c *i2c) -{ - struct esp32c3_soft_i2c_config* cfg = (struct esp32c3_soft_i2c_config*)i2c->ops.data; - rt_pin_mode(cfg->scl, PIN_MODE_OUTPUT_OD); - rt_pin_mode(cfg->sda, PIN_MODE_OUTPUT_OD); - - gpio_set_pull_mode(cfg->sda, GPIO_FLOATING); - gpio_set_pull_mode(cfg->scl, GPIO_FLOATING); - - gpio_set_level(cfg->scl, PIN_HIGH); - gpio_set_level(cfg->sda, PIN_HIGH); -} - -/** - * @brief This function sets the sda pin. - * @param data, state - * @retval None - */ -static void esp32c3_set_sda(void *data, rt_int32_t state) -{ - struct esp32c3_soft_i2c_config* cfg = (struct esp32c3_soft_i2c_config*)data; - /*rt_pin_mode(cfg->sda, PIN_MODE_OUTPUT_OD);*/ - if (state) - { - gpio_set_level(cfg->sda, PIN_HIGH); - } - else - { - gpio_set_level(cfg->sda, PIN_LOW); - } -} - -/** - * @brief This function sets the scl pin. - * @param data, state - * @retval None - */ -static void esp32c3_set_scl(void *data, rt_int32_t state) -{ - struct esp32c3_soft_i2c_config* cfg = (struct esp32c3_soft_i2c_config*)data; - if (state) - { - gpio_set_level(cfg->scl, PIN_HIGH); - } - else - { - gpio_set_level(cfg->scl, PIN_LOW); - } -} - -/** - * @brief This function gets the sda pin state. - * @param data - * @retval None - */ -static rt_int32_t esp32c3_get_sda(void *data) -{ - struct esp32c3_soft_i2c_config* cfg = (struct esp32c3_soft_i2c_config*)data; - return gpio_get_level(cfg->sda); -} - -/** - * @brief This function gets the scl pin state. - * @param data - * @retval None - */ -static rt_int32_t esp32c3_get_scl(void *data) -{ - struct esp32c3_soft_i2c_config* cfg = (struct esp32c3_soft_i2c_config*)data; - return gpio_get_level(cfg->scl); -} - -/** - * @brief The time delay function. - * @param us - * @retval None - */ -static void esp32c3_udelay(rt_uint32_t us) -{ - rt_hw_us_delay(us); -} - -/* - * if i2c is locked, this function will unlock it - * - * @param esp32 config class - * - * @return RT_EOK indicates successful unlock. - */ -/* */ -static rt_err_t esp32c3_i2c_bus_unlock(const struct esp32c3_soft_i2c_config *cfg) -{ - rt_int32_t i = 0; - - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - /* 输出9个时钟 解锁IIC死锁 */ - while (i++ < 9) - { - gpio_set_level(cfg->scl, PIN_HIGH); - esp32c3_udelay(100); - gpio_set_level(cfg->scl, PIN_LOW); - esp32c3_udelay(100); - } - } - if (PIN_LOW == gpio_get_level(cfg->sda)) - { - return -RT_ERROR; - } - return RT_EOK; -} - -static const struct rt_i2c_bit_ops esp32c3_bit_ops_default = -{ - .data = RT_NULL, - .set_sda = esp32c3_set_sda, - .set_scl = esp32c3_set_scl, - .get_sda = esp32c3_get_sda, - .get_scl = esp32c3_get_scl, - .udelay = esp32c3_udelay, - .delay_us = 1, - .timeout = 100 -}; - -int rt_sw_i2c_init(void) -{ - /* I2C设备数量 */ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct esp32c3_i2c); - rt_err_t result; - /* 循环初始化 */ - for (int i = 0; i < obj_num; i++) - { - /* 注册方法 */ - i2c_obj[i].ops = esp32c3_bit_ops_default; - /* 设备硬件数据 */ - i2c_obj[i].ops.data = (void*)&soft_i2c_config[i]; - /* 保存设备方法 */ - i2c_obj[i].i2c_bus.priv = &i2c_obj[i].ops; - - esp32c3_i2c_gpio_init(&i2c_obj[i]); - result = rt_i2c_bit_add_bus(&i2c_obj[i].i2c_bus, soft_i2c_config[i].bus_name); - RT_ASSERT(result == RT_EOK); - - esp32c3_i2c_bus_unlock(&soft_i2c_config[i]); - LOG_D("software simulation %s init done, pin scl: %d, pin sda %d", - soft_i2c_config[i].bus_name, - soft_i2c_config[i].scl, - soft_i2c_config[i].sda); - } - - return RT_EOK; -} -INIT_APP_EXPORT(rt_sw_i2c_init); - -#endif /* BSP_USING_SW_I2C */ -#endif /* RT_USING_I2C */ \ No newline at end of file diff --git a/bsp/ESP/libraries/drivers/drv_sw_i2c.h b/bsp/ESP/libraries/drivers/drv_sw_i2c.h deleted file mode 100644 index ab353e473fa..00000000000 --- 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 -#include -#include "sdkconfig.h" - -/* esp32c3 config class */ -struct esp32c3_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; - -/* esp32c3 i2c dirver class */ -struct esp32c3_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device i2c_bus; -}; - -int rt_hw_i2c_init(void); - -#endif /* __DRV_HW_I2C_H__ */ \ No newline at end of file diff --git a/bsp/Infineon/libraries/HAL_Drivers/SConscript b/bsp/Infineon/libraries/HAL_Drivers/SConscript index 017b3cb4d77..280ee05b70f 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 9c20a54ca1b..00000000000 --- a/bsp/Infineon/libraries/HAL_Drivers/drv_soft_i2c.c +++ /dev/null @@ -1,192 +0,0 @@ -/* - * Copyright (c) 2006-2024 RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2022-07-20 Rbb666 first version - */ - -#include -#include "drv_soft_i2c.h" - -#ifdef RT_USING_I2C - -/*#define DRV_DEBUG*/ -#define LOG_TAG "drv.i2c" -#include - -#if !defined(BSP_USING_I2C1) - #error "Please define at least one BSP_USING_I2Cx" - /* this driver can be disabled at menuconfig -> RT-Thread Components -> Device Drivers */ -#endif - -static const struct ifx_soft_i2c_config soft_i2c_config[] = -{ - #ifdef BSP_USING_I2C1 - I2C1_BUS_CONFIG, - #endif -}; - -static struct ifx_i2c i2c_obj[sizeof(soft_i2c_config) / sizeof(soft_i2c_config[0])]; - -/** - * This function initializes the i2c pin. - * - * @param ifx i2c dirver class. - */ -static void ifx_i2c_gpio_init(struct ifx_i2c *i2c) -{ - struct ifx_soft_i2c_config *cfg = (struct ifx_soft_i2c_config *)i2c->ops.data; - - rt_pin_mode(cfg->scl, PIN_MODE_OUTPUT_OD); - rt_pin_mode(cfg->sda, PIN_MODE_OUTPUT_OD); - - rt_pin_write(cfg->scl, PIN_HIGH); - rt_pin_write(cfg->sda, PIN_HIGH); -} - -static void ifx_i2c_pin_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct ifx_i2c); - - for(rt_size_t i = 0; i < obj_num; i++) - { - ifx_i2c_gpio_init(&i2c_obj[i]); - } -} - -/** - * This function sets the sda pin. - * - * @param ifx config class. - * @param The sda pin state. - */ -static void ifx_set_sda(void *data, rt_int32_t state) -{ - struct ifx_soft_i2c_config *cfg = (struct ifx_soft_i2c_config *)data; - - if (state) - { - rt_pin_write(cfg->sda, PIN_HIGH); - } - else - { - rt_pin_write(cfg->sda, PIN_LOW); - } -} - -/** - * This function sets the scl pin. - * - * @param ifx config class. - * @param The scl pin state. - */ -static void ifx_set_scl(void *data, rt_int32_t state) -{ - struct ifx_soft_i2c_config *cfg = (struct ifx_soft_i2c_config *)data; - - if (state) - { - rt_pin_write(cfg->scl, PIN_HIGH); - } - else - { - rt_pin_write(cfg->scl, PIN_LOW); - } -} - -/** - * This function gets the sda pin state. - * - * @param The sda pin state. - */ -static rt_int32_t ifx_get_sda(void *data) -{ - struct ifx_soft_i2c_config *cfg = (struct ifx_soft_i2c_config *)data; - return rt_pin_read(cfg->sda); -} - -/** - * This function gets the scl pin state. - * - * @param The scl pin state. - */ -static rt_int32_t ifx_get_scl(void *data) -{ - struct ifx_soft_i2c_config *cfg = (struct ifx_soft_i2c_config *)data; - return rt_pin_read(cfg->scl); -} - -static const struct rt_i2c_bit_ops ifx_bit_ops_default = -{ - .data = RT_NULL, - .pin_init = ifx_i2c_pin_init, - .set_sda = ifx_set_sda, - .set_scl = ifx_set_scl, - .get_sda = ifx_get_sda, - .get_scl = ifx_get_scl, - .udelay = rt_hw_us_delay, - .delay_us = 1, - .timeout = 100, - .i2c_pin_init_flag = RT_FALSE -}; - -/** - * if i2c is locked, this function will unlock it - * - * @param ifx config class - * - * @return RT_EOK indicates successful unlock. - */ -static rt_err_t ifx_i2c_bus_unlock(const struct ifx_soft_i2c_config *cfg) -{ - rt_int32_t i = 0; - - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - while (i++ < 9) - { - rt_pin_write(cfg->scl, PIN_HIGH); - rt_hw_us_delay(100); - rt_pin_write(cfg->scl, PIN_LOW); - rt_hw_us_delay(100); - } - } - - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - return -RT_ERROR; - } - - return RT_EOK; -} - -/* I2C initialization function */ -int rt_hw_i2c_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct ifx_i2c); - rt_err_t result; - - for (int i = 0; i < obj_num; i++) - { - i2c_obj[i].ops = ifx_bit_ops_default; - i2c_obj[i].ops.data = (void *)&soft_i2c_config[i]; - i2c_obj[i].i2c_bus.priv = &i2c_obj[i].ops; - - result = rt_i2c_bit_add_bus(&i2c_obj[i].i2c_bus, soft_i2c_config[i].bus_name); - RT_ASSERT(result == RT_EOK); - ifx_i2c_bus_unlock(&soft_i2c_config[i]); - - LOG_D("software simulation %s init done, pin scl: %d, pin sda %d", - soft_i2c_config[i].bus_name, - soft_i2c_config[i].scl, - soft_i2c_config[i].sda); - } - - return RT_EOK; -} -INIT_BOARD_EXPORT(rt_hw_i2c_init); - -#endif /* RT_USING_I2C */ diff --git a/bsp/Infineon/libraries/HAL_Drivers/drv_soft_i2c.h b/bsp/Infineon/libraries/HAL_Drivers/drv_soft_i2c.h deleted file mode 100644 index 2e49a62c2f8..00000000000 --- a/bsp/Infineon/libraries/HAL_Drivers/drv_soft_i2c.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) 2006-2024 RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2022-07-20 Rbb666 first version - */ - -#ifndef __DRV_I2C__ -#define __DRV_I2C__ - -#include -#include -#include - -/* ifx config class */ -struct ifx_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; -/* ifx i2c dirver class */ -struct ifx_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device i2c_bus; -}; - -#ifdef BSP_USING_I2C1 -#define I2C1_BUS_CONFIG \ - { \ - .scl = BSP_I2C1_SCL_PIN, \ - .sda = BSP_I2C1_SDA_PIN, \ - .bus_name = "i2c1", \ - } -#endif - -int rt_hw_i2c_init(void); - -#endif diff --git a/bsp/Infineon/libraries/templates/PSOC62/.ci/attachconfig/ci.attachconfig.yml b/bsp/Infineon/libraries/templates/PSOC62/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..6cbc2bc3c36 --- /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 07a230d7969..c827db3436b 100644 --- a/bsp/Infineon/libraries/templates/PSOC62/board/Kconfig +++ b/bsp/Infineon/libraries/templates/PSOC62/board/Kconfig @@ -174,29 +174,6 @@ menu "On-chip Peripheral Drivers" endif endif - menuconfig BSP_USING_I2C - bool "Enable Software I2C Bus" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 Bus (User I2C)" - default n - if BSP_USING_I2C1 - comment "Notice: P13_1 --> 105; P13_2 --> 106" - config BSP_I2C1_SCL_PIN - int "i2c1 SCL pin number" - range 1 113 - default 105 - config BSP_I2C1_SDA_PIN - int "i2c1 SDA pin number" - range 1 113 - default 106 - endif - endif - menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC diff --git a/bsp/Infineon/psoc6-cy8ckit-062-BLE/.ci/attachconfig/ci.attachconfig.yml b/bsp/Infineon/psoc6-cy8ckit-062-BLE/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..6cbc2bc3c36 --- /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 77a4380e4a9..6ff47950f00 100644 --- a/bsp/Infineon/psoc6-cy8ckit-062-BLE/board/Kconfig +++ b/bsp/Infineon/psoc6-cy8ckit-062-BLE/board/Kconfig @@ -174,29 +174,6 @@ menu "On-chip Peripheral Drivers" endif endif - menuconfig BSP_USING_I2C - bool "Enable Software I2C Bus" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 Bus (User I2C)" - default n - if BSP_USING_I2C1 - comment "Notice: P13_1 --> 105; P13_2 --> 106" - config BSP_I2C1_SCL_PIN - int "i2c1 SCL pin number" - range 1 113 - default 105 - config BSP_I2C1_SDA_PIN - int "i2c1 SDA pin number" - range 1 113 - default 106 - endif - endif - menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC diff --git a/bsp/Infineon/psoc6-cy8ckit-062-WIFI-BT/.ci/attachconfig/ci.attachconfig.yml b/bsp/Infineon/psoc6-cy8ckit-062-WIFI-BT/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..6cbc2bc3c36 --- /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 6b199514566..3b35bc48d75 100644 --- a/bsp/Infineon/psoc6-cy8ckit-062-WIFI-BT/board/Kconfig +++ b/bsp/Infineon/psoc6-cy8ckit-062-WIFI-BT/board/Kconfig @@ -182,29 +182,6 @@ menu "On-chip Peripheral Drivers" endif endif - menuconfig BSP_USING_I2C - bool "Enable Software I2C Bus" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 Bus (User I2C)" - default n - if BSP_USING_I2C1 - comment "Notice: P13_1 --> 105; P13_2 --> 106" - config BSP_I2C1_SCL_PIN - int "i2c1 SCL pin number" - range 1 113 - default 105 - config BSP_I2C1_SDA_PIN - int "i2c1 SDA pin number" - range 1 113 - default 106 - endif - endif - menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC diff --git a/bsp/Infineon/psoc6-cy8ckit-062S2-43012/.ci/attachconfig/ci.attachconfig.yml b/bsp/Infineon/psoc6-cy8ckit-062S2-43012/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..6cbc2bc3c36 --- /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 0a5cec3667d..1acfffa48e6 100644 --- a/bsp/Infineon/psoc6-cy8ckit-062S2-43012/board/Kconfig +++ b/bsp/Infineon/psoc6-cy8ckit-062S2-43012/board/Kconfig @@ -181,29 +181,6 @@ menu "On-chip Peripheral Drivers" endif endif - menuconfig BSP_USING_I2C - bool "Enable Software I2C Bus" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 Bus (User I2C)" - default n - if BSP_USING_I2C1 - comment "Notice: P13_1 --> 105; P13_2 --> 106" - config BSP_I2C1_SCL_PIN - int "i2c1 SCL pin number" - range 1 113 - default 105 - config BSP_I2C1_SDA_PIN - int "i2c1 SDA pin number" - range 1 113 - default 106 - endif - endif - config BSP_USING_USBD bool "Enable USB Device" select RT_USING_USB_DEVICE diff --git a/bsp/Infineon/psoc6-cy8ckit-062s4/.ci/attachconfig/ci.attachconfig.yml b/bsp/Infineon/psoc6-cy8ckit-062s4/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..6cbc2bc3c36 --- /dev/null +++ b/bsp/Infineon/psoc6-cy8ckit-062s4/.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-062s4/board/Kconfig b/bsp/Infineon/psoc6-cy8ckit-062s4/board/Kconfig index bfe1fd8b864..bf197415114 100644 --- a/bsp/Infineon/psoc6-cy8ckit-062s4/board/Kconfig +++ b/bsp/Infineon/psoc6-cy8ckit-062s4/board/Kconfig @@ -174,29 +174,6 @@ menu "On-chip Peripheral Drivers" endif endif - menuconfig BSP_USING_I2C - bool "Enable Software I2C Bus" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 Bus (User I2C)" - default n - if BSP_USING_I2C1 - comment "Notice: P13_1 --> 105; P13_2 --> 106" - config BSP_I2C1_SCL_PIN - int "i2c1 SCL pin number" - range 1 113 - default 105 - config BSP_I2C1_SDA_PIN - int "i2c1 SDA pin number" - range 1 113 - default 106 - endif - endif - menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC diff --git a/bsp/Infineon/psoc6-cy8cproto-062S3-4343W/.ci/attachconfig/ci.attachconfig.yml b/bsp/Infineon/psoc6-cy8cproto-062S3-4343W/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..6cbc2bc3c36 --- /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 6006e7e97d5..61dc2edb3ac 100644 --- a/bsp/Infineon/psoc6-cy8cproto-062S3-4343W/board/Kconfig +++ b/bsp/Infineon/psoc6-cy8cproto-062S3-4343W/board/Kconfig @@ -181,29 +181,6 @@ menu "On-chip Peripheral Drivers" endif endif - menuconfig BSP_USING_I2C - bool "Enable Software I2C Bus" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 Bus (User I2C)" - default n - if BSP_USING_I2C1 - comment "Notice: P13_1 --> 105; P13_2 --> 106" - config BSP_I2C1_SCL_PIN - int "i2c1 SCL pin number" - range 1 113 - default 105 - config BSP_I2C1_SDA_PIN - int "i2c1 SDA pin number" - range 1 113 - default 106 - endif - endif - config BSP_USING_USBD bool "Enable USB Device" select RT_USING_USB_DEVICE diff --git a/bsp/Infineon/psoc6-evaluationkit-062S2/.ci/attachconfig/ci.attachconfig.yml b/bsp/Infineon/psoc6-evaluationkit-062S2/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..6cbc2bc3c36 --- /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 ef00b67eba1..8fab4651d8f 100644 --- a/bsp/Infineon/psoc6-evaluationkit-062S2/board/Kconfig +++ b/bsp/Infineon/psoc6-evaluationkit-062S2/board/Kconfig @@ -230,29 +230,6 @@ menu "On-chip Peripheral Drivers" endif endif - menuconfig BSP_USING_I2C - bool "Enable Software I2C Bus" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 Bus (User I2C)" - default n - if BSP_USING_I2C1 - comment "Notice: P13_1 --> 105; P13_2 --> 106" - config BSP_I2C1_SCL_PIN - int "i2c1 SCL pin number" - range 1 113 - default 105 - config BSP_I2C1_SDA_PIN - int "i2c1 SDA pin number" - range 1 113 - default 106 - endif - endif - menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC @@ -487,4 +464,4 @@ menu "Board extended module Drivers" default n endmenu -endmenu \ No newline at end of file +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 00000000000..872296ed471 --- /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 e112183e2b4..219733af247 100644 --- a/bsp/acm32/acm32f0x0-nucleo/drivers/Kconfig +++ b/bsp/acm32/acm32f0x0-nucleo/drivers/Kconfig @@ -106,28 +106,6 @@ menu "On-chip Peripheral Drivers" select RT_USING_I2C endmenu - menuconfig BSP_USING_SOFT_I2C - bool "Enable Soft I2C" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - default n - if BSP_USING_SOFT_I2C - menuconfig BSP_USING_I2C0 - bool "Enable I2C1 BUS (software simulation)" - default n - if BSP_USING_I2C0 - config BSP_I2C0_SCL_PIN - int "i2c0 scl pin number (PD, 6)" - range 0 63 - default 54 - config BSP_I2C0_SDA_PIN - int "I2C0 sda pin number (PD, 7)" - range 0 63 - default 55 - endif - endif - menu "Hardware CAN" config BSP_USING_CAN1 bool "Enable CAN1" @@ -257,4 +235,3 @@ menu "Board extended module Drivers" endmenu 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 47b8e9fb067..00000000000 --- a/bsp/acm32/acm32f0x0-nucleo/drivers/drv_soft_i2c.c +++ /dev/null @@ -1,163 +0,0 @@ -/* - * Copyright (c) 2006-2024, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2021-09-13 AisinoChip first implementation. - * 2024-04-23 LZero Modify the I2C framework. - */ - -#ifdef BSP_USING_SOFT_I2C - -#include "drv_soft_i2c.h" - -#define DBG_TAG "drv.i2c" -#ifdef DRV_DEBUG - #define DBG_LVL DBG_LOG -#else - #define DBG_LVL DBG_INFO -#endif /* DRV_DEBUG */ - -static struct acm32_soft_i2c_config soft_i2c_config[] = -{ -#ifdef BSP_USING_I2C0 - I2C0_BUS_CONFIG, -#endif -}; - -static struct acm32_i2c i2c_obj[sizeof(soft_i2c_config) / sizeof(soft_i2c_config[0])]; - -static void drv_i2c_gpio_init(struct acm32_i2c* i2c) -{ - struct acm32_soft_i2c_config* cfg = (struct acm32_soft_i2c_config*)i2c->ops.data; - - rt_pin_mode(cfg->scl, PIN_MODE_OUTPUT_OD); - rt_pin_mode(cfg->sda, PIN_MODE_OUTPUT_OD); - - rt_pin_write(cfg->scl, PIN_HIGH); - rt_pin_write(cfg->sda, PIN_HIGH); -} - -static void acm32_i2c_pin_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct acm32_i2c); - - for(rt_size_t i = 0; i < obj_num; i++) - { - drv_i2c_gpio_init(&i2c_obj[i]); - } -} - -static void _set_sda(void *data, rt_int32_t state) -{ - struct acm32_soft_i2c_config* cfg = (struct acm32_soft_i2c_config*)data; - - if (state) - { - rt_pin_write(cfg->sda, PIN_HIGH); - } - else - { - rt_pin_write(cfg->sda, PIN_LOW); - } -} - -static void _set_scl(void *data, rt_int32_t state) -{ - struct acm32_soft_i2c_config* cfg = (struct acm32_soft_i2c_config*)data; - - if (state) - { - rt_pin_write(cfg->scl, PIN_HIGH); - } - else - { - rt_pin_write(cfg->scl, PIN_LOW); - } -} - -static rt_int32_t _get_sda(void *data) -{ - struct acm32_soft_i2c_config* cfg = (struct acm32_soft_i2c_config*)data; - - return rt_pin_read(cfg->sda); -} - -static rt_int32_t _get_scl(void *data) -{ - struct acm32_soft_i2c_config* cfg = (struct acm32_soft_i2c_config*)data; - - return rt_pin_read(cfg->scl); -} - -static void acm32_udelay(rt_uint32_t us) -{ - rt_uint32_t ticks; - rt_uint32_t told, tnow, tcnt = 0; - rt_uint32_t reload = SysTick->LOAD; - - ticks = us * reload / (1000000 / RT_TICK_PER_SECOND); - told = SysTick->VAL; - while (1) - { - tnow = SysTick->VAL; - if (tnow != told) - { - if (tnow < told) - { - tcnt += told - tnow; - } - else - { - tcnt += reload - tnow + told; - } - told = tnow; - if (tcnt >= ticks) - { - break; - } - } - } -} - -static const struct rt_i2c_bit_ops acm32_bit_ops_default = -{ - .data = RT_NULL, - .pin_init = acm32_i2c_pin_init, - .set_sda = _set_sda, - .set_scl = _set_scl, - .get_sda = _get_sda, - .get_scl = _get_scl, - .udelay = acm32_udelay, - .delay_us = 1, - .timeout = 100, - .i2c_pin_init_flag = RT_FALSE -}; - -int rt_soft_i2c_init(void) -{ - rt_err_t result; - - for (rt_size_t i = 0; i < sizeof(i2c_obj) / sizeof(struct acm32_i2c); i++) - { - i2c_obj[i].ops = acm32_bit_ops_default; - i2c_obj[i].ops.data = (void*)&soft_i2c_config[i]; - i2c_obj[i].i2c_bus.priv = &i2c_obj[i].ops; - - result = rt_i2c_bit_add_bus(&i2c_obj[i].i2c_bus, soft_i2c_config[i].bus_name); - RT_ASSERT(result == RT_EOK); - - LOG_D("software simulation %s init done, pin scl: %d, pin sda: %d", - soft_i2c_config[i].bus_name, - soft_i2c_config[i].scl, - soft_i2c_config[i].sda); - } - - return RT_EOK; -} -INIT_DEVICE_EXPORT(rt_soft_i2c_init); - -#endif /* RT_USING_I2C_BITOPS */ - diff --git a/bsp/acm32/acm32f0x0-nucleo/drivers/drv_soft_i2c.h b/bsp/acm32/acm32f0x0-nucleo/drivers/drv_soft_i2c.h deleted file mode 100644 index e66083b0d9e..00000000000 --- a/bsp/acm32/acm32f0x0-nucleo/drivers/drv_soft_i2c.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2006-2024, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2024-04-23 LZero Modify the I2C framework. - */ - -#ifndef __DRV_I2C__ -#define __DRV_I2C__ - -#include -#include -#include -#include -#include - -/* acm32 config class */ -struct acm32_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; -/* acm32 i2c dirver class */ - -struct acm32_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device i2c_bus; -}; - -#ifdef BSP_USING_I2C0 -#define I2C0_BUS_CONFIG \ - { \ - .scl = BSP_I2C0_SCL_PIN, \ - .sda = BSP_I2C0_SDA_PIN, \ - .bus_name = "i2c0", \ - } -#endif - -#endif //__DRV_I2C__ diff --git a/bsp/airm2m/air32f103/.ci/attachconfig/ci.attachconfig.yml b/bsp/airm2m/air32f103/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..08f15d590b4 --- /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 65f1c9b152c..2fe02c86910 100644 --- a/bsp/airm2m/air32f103/board/Kconfig +++ b/bsp/airm2m/air32f103/board/Kconfig @@ -49,28 +49,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_SOFTI2C - bool "Enable SOFT I2C" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - default n - if BSP_USING_SOFTI2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 25 - endif - endif - menuconfig BSP_USING_SPI bool "Enable SPI BUS" default n diff --git a/bsp/airm2m/air32f103/libraries/SConscript b/bsp/airm2m/air32f103/libraries/SConscript index 8848f19239a..575a0af08b3 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 5ca9a4e55bb..00000000000 --- 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 -#include "drv_soft_i2c.h" - -#ifdef RT_USING_I2C - -//#define DRV_DEBUG -#define LOG_TAG "drv.i2c" -#include - -#if !defined(BSP_USING_I2C1) && !defined(BSP_USING_I2C2) && !defined(BSP_USING_I2C3) && !defined(BSP_USING_I2C4) -#error "Please define at least one BSP_USING_I2Cx" -/* this driver can be disabled at menuconfig -> RT-Thread Components -> Device Drivers */ -#endif - -static const struct 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 2d7c723dc69..00000000000 --- 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 -#include -#include - -/* 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 00000000000..7cd4362ffce --- /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 c8c59dee476..c4706b7a348 100644 --- a/bsp/apm32/apm32e103ze-evalboard/board/Kconfig +++ b/bsp/apm32/apm32e103ze-evalboard/board/Kconfig @@ -25,8 +25,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_EEPROM bool "Enable I2C EEPROM (i2c1)" - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 default n config BSP_USING_SDCARD @@ -41,6 +42,14 @@ menu "Onboard Peripheral Drivers" select BSP_USING_DMC default n + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if BSP_USING_EEPROM + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if BSP_USING_EEPROM + endmenu menu "On-chip Peripheral Drivers" @@ -106,54 +115,6 @@ menu "On-chip Peripheral Drivers" endchoice endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - comment "Notice: PB6 --> 22; PB7 --> 23" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - comment "Notice: PA0 --> 0; PA1 --> 1" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 22 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - comment "Notice: PB0 --> 16; PB1 --> 17" - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 63 - default 8 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 63 - default 41 - endif - endif - menuconfig BSP_USING_SPI bool "Enable SPI" default n diff --git a/bsp/apm32/apm32e103ze-tinyboard/.ci/attachconfig/ci.attachconfig.yml b/bsp/apm32/apm32e103ze-tinyboard/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..7cd4362ffce --- /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 4ff30f548e6..779f1eb6b12 100644 --- a/bsp/apm32/apm32e103ze-tinyboard/board/Kconfig +++ b/bsp/apm32/apm32e103ze-tinyboard/board/Kconfig @@ -87,54 +87,6 @@ menu "On-chip Peripheral Drivers" endchoice endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - comment "Notice: PB6 --> 22; PB7 --> 23" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - comment "Notice: PA0 --> 0; PA1 --> 1" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 22 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - comment "Notice: PB0 --> 16; PB1 --> 17" - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 63 - default 8 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 63 - default 41 - endif - endif - menuconfig BSP_USING_SPI bool "Enable SPI" default n diff --git a/bsp/apm32/apm32f030r8-miniboard/.ci/attachconfig/ci.attachconfig.yml b/bsp/apm32/apm32f030r8-miniboard/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..d88fbcccd5a --- /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 c583254b835..a604c678991 100644 --- a/bsp/apm32/apm32f030r8-miniboard/board/Kconfig +++ b/bsp/apm32/apm32f030r8-miniboard/board/Kconfig @@ -68,41 +68,6 @@ menu "On-chip Peripheral Drivers" endchoice endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - comment "Notice: PB10 --> 26; PB11 --> 27" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 26 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 27 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - comment "Notice: PA0 --> 0; PA1 --> 1" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 22 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 23 - endif - endif - menuconfig BSP_USING_SPI bool "Enable SPI" default n diff --git a/bsp/apm32/apm32f051r8-evalboard/.ci/attachconfig/ci.attachconfig.yml b/bsp/apm32/apm32f051r8-evalboard/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..d88fbcccd5a --- /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 aef90aa40b3..e27970597bb 100644 --- a/bsp/apm32/apm32f051r8-evalboard/board/Kconfig +++ b/bsp/apm32/apm32f051r8-evalboard/board/Kconfig @@ -17,10 +17,19 @@ menu "Onboard Peripheral Drivers" config BSP_USING_EEPROM bool "Enable I2C EEPROM (i2c1 software simulation)" - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 default n + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 26 if BSP_USING_EEPROM + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 27 if BSP_USING_EEPROM + endmenu menu "On-chip Peripheral Drivers" @@ -80,41 +89,6 @@ menu "On-chip Peripheral Drivers" endchoice endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - comment "Notice: PB10 --> 26; PB11 --> 27" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 26 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 27 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - comment "Notice: PA0 --> 0; PA1 --> 1" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 22 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 23 - endif - endif - menuconfig BSP_USING_SPI bool "Enable SPI" default n diff --git a/bsp/apm32/apm32f072vb-miniboard/.ci/attachconfig/ci.attachconfig.yml b/bsp/apm32/apm32f072vb-miniboard/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..f08ad08d180 --- /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 cae05eae10e..62bff968faa 100644 --- a/bsp/apm32/apm32f072vb-miniboard/board/Kconfig +++ b/bsp/apm32/apm32f072vb-miniboard/board/Kconfig @@ -68,54 +68,6 @@ menu "On-chip Peripheral Drivers" endchoice endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - comment "Notice: PB10 --> 26; PB11 --> 27" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 26 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 27 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - comment "Notice: PA0 --> 0; PA1 --> 1" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 22 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - comment "Notice: PB0 --> 16; PB1 --> 17" - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 63 - default 8 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 63 - default 41 - endif - endif - menuconfig BSP_USING_SPI bool "Enable SPI" default n diff --git a/bsp/apm32/apm32f091vc-miniboard/.ci/attachconfig/ci.attachconfig.yml b/bsp/apm32/apm32f091vc-miniboard/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..f08ad08d180 --- /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 757ecc8b85e..5efbbdc7624 100644 --- a/bsp/apm32/apm32f091vc-miniboard/board/Kconfig +++ b/bsp/apm32/apm32f091vc-miniboard/board/Kconfig @@ -68,54 +68,6 @@ menu "On-chip Peripheral Drivers" endchoice endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - comment "Notice: PB10 --> 26; PB11 --> 27" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 26 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 27 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - comment "Notice: PA0 --> 0; PA1 --> 1" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 22 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - comment "Notice: PB0 --> 16; PB1 --> 17" - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 63 - default 8 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 63 - default 41 - endif - endif - menuconfig BSP_USING_SPI bool "Enable SPI" default n diff --git a/bsp/apm32/apm32f103vb-miniboard/.ci/attachconfig/ci.attachconfig.yml b/bsp/apm32/apm32f103vb-miniboard/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..840e3e8093c --- /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 6abbc344154..ffd05dd6347 100644 --- a/bsp/apm32/apm32f103vb-miniboard/board/Kconfig +++ b/bsp/apm32/apm32f103vb-miniboard/board/Kconfig @@ -70,41 +70,6 @@ menu "On-chip Peripheral Drivers" endchoice endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - comment "Notice: PB6 --> 22; PB7 --> 23" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - comment "Notice: PA0 --> 0; PA1 --> 1" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 0 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 1 - endif - endif - menuconfig BSP_USING_SPI bool "Enable SPI" default n diff --git a/bsp/apm32/apm32f103xe-minibroard/.ci/attachconfig/ci.attachconfig.yml b/bsp/apm32/apm32f103xe-minibroard/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..d626be14a57 --- /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 12182a2c48c..8db2c1aeb43 100644 --- a/bsp/apm32/apm32f103xe-minibroard/board/Kconfig +++ b/bsp/apm32/apm32f103xe-minibroard/board/Kconfig @@ -81,23 +81,6 @@ menu "On-chip Peripheral Drivers" endchoice endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - menuconfig BSP_USING_SPI bool "Enable SPI" default n diff --git a/bsp/apm32/apm32f107vc-evalboard/.ci/attachconfig/ci.attachconfig.yml b/bsp/apm32/apm32f107vc-evalboard/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..840e3e8093c --- /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 31d7d7113a8..18bfbff1749 100644 --- a/bsp/apm32/apm32f107vc-evalboard/board/Kconfig +++ b/bsp/apm32/apm32f107vc-evalboard/board/Kconfig @@ -25,8 +25,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_EEPROM bool "Enable I2C EEPROM (i2c1 software simulation)" - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 default n config BSP_USING_ETH @@ -41,6 +42,14 @@ menu "Onboard Peripheral Drivers" depends on BSP_USING_ETH default y + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if BSP_USING_EEPROM + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if BSP_USING_EEPROM + endmenu menu "On-chip Peripheral Drivers" @@ -100,41 +109,6 @@ menu "On-chip Peripheral Drivers" endchoice endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - comment "Notice: PB6 --> 22; PB7 --> 23" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - comment "Notice: PA0 --> 0; PA1 --> 1" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 0 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 1 - endif - endif - menuconfig BSP_USING_SPI bool "Enable SPI" default n diff --git a/bsp/apm32/apm32f407ig-minibroard/.ci/attachconfig/ci.attachconfig.yml b/bsp/apm32/apm32f407ig-minibroard/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..d626be14a57 --- /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 d14dafe814c..e456f5fbf65 100644 --- a/bsp/apm32/apm32f407ig-minibroard/board/Kconfig +++ b/bsp/apm32/apm32f407ig-minibroard/board/Kconfig @@ -70,23 +70,6 @@ menu "On-chip Peripheral Drivers" endchoice endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - menuconfig BSP_USING_SPI bool "Enable SPI" default n diff --git a/bsp/apm32/apm32f407zg-evalboard/.ci/attachconfig/ci.attachconfig.yml b/bsp/apm32/apm32f407zg-evalboard/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..840e3e8093c --- /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 3d933499a04..52c127e7d65 100644 --- a/bsp/apm32/apm32f407zg-evalboard/board/Kconfig +++ b/bsp/apm32/apm32f407zg-evalboard/board/Kconfig @@ -112,41 +112,6 @@ menu "On-chip Peripheral Drivers" endchoice endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - comment "Notice: PB6 --> 22; PB7 --> 23" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - comment "Notice: PA0 --> 0; PA1 --> 1" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 0 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 1 - endif - endif - menuconfig BSP_USING_SPI bool "Enable SPI" default n diff --git a/bsp/apm32/apm32s103vb-miniboard/.ci/attachconfig/ci.attachconfig.yml b/bsp/apm32/apm32s103vb-miniboard/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..7cd4362ffce --- /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 af6d754f8dd..5f0ad0a72e8 100644 --- a/bsp/apm32/apm32s103vb-miniboard/board/Kconfig +++ b/bsp/apm32/apm32s103vb-miniboard/board/Kconfig @@ -75,54 +75,6 @@ menu "On-chip Peripheral Drivers" endchoice endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - comment "Notice: PB6 --> 22; PB7 --> 23" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - comment "Notice: PA0 --> 0; PA1 --> 1" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 22 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - comment "Notice: PB0 --> 16; PB1 --> 17" - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 63 - default 8 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 63 - default 41 - endif - endif - menuconfig BSP_USING_SPI bool "Enable SPI" default n diff --git a/bsp/apm32/libraries/Drivers/SConscript b/bsp/apm32/libraries/Drivers/SConscript index a5d05ad8151..03b78577da1 100644 --- a/bsp/apm32/libraries/Drivers/SConscript +++ b/bsp/apm32/libraries/Drivers/SConscript @@ -26,10 +26,6 @@ if GetDepend(['RT_USING_DAC']): if GetDepend('BSP_USING_ONCHIP_RTC'): src += ['drv_rtc.c'] -if GetDepend(['RT_USING_I2C']): - if GetDepend('BSP_USING_I2C1') or GetDepend('BSP_USING_I2C2') or GetDepend('BSP_USING_I2C3') or GetDepend('BSP_USING_I2C4'): - src += ['drv_soft_i2c.c'] - if GetDepend(['RT_USING_SPI']): src += ['drv_spi.c'] diff --git a/bsp/apm32/libraries/Drivers/drv_soft_i2c.c b/bsp/apm32/libraries/Drivers/drv_soft_i2c.c deleted file mode 100644 index bb488c75b48..00000000000 --- a/bsp/apm32/libraries/Drivers/drv_soft_i2c.c +++ /dev/null @@ -1,255 +0,0 @@ -/* - * Copyright (c) 2006-2023, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2022-03-04 stevetong459 first version - */ - -#include "board.h" -#include - -#ifdef RT_USING_I2C - -#define DBG_TAG "drv.i2c" -#define DBG_LVL DBG_INFO -#include - -#if !defined(BSP_USING_I2C1) && !defined(BSP_USING_I2C2) && !defined(BSP_USING_I2C3) && !defined(BSP_USING_I2C4) - #error "Please define at least one BSP_USING_I2Cx" -#endif - -/* apm32 i2c config class */ -struct apm32_soft_i2c_config -{ - rt_uint8_t scl_pin; - rt_uint8_t sda_pin; - const char *bus_name; -}; - -/* apm32 i2c dirver class */ -struct apm32_soft_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device i2c_bus; -}; - -static const struct apm32_soft_i2c_config soft_i2c_config[] = -{ -#ifdef BSP_USING_I2C1 - { - BSP_I2C1_SCL_PIN, - BSP_I2C1_SDA_PIN, - "i2c1" - }, -#endif -#ifdef BSP_USING_I2C2 - { - BSP_I2C2_SCL_PIN, - BSP_I2C2_SDA_PIN, - "i2c2" - }, -#endif -#ifdef BSP_USING_I2C3 - { - BSP_I2C3_SCL_PIN, - BSP_I2C3_SDA_PIN, - "i2c3" - }, -#endif -#ifdef BSP_USING_I2C4 - { - BSP_I2C4_SCL_PIN, - BSP_I2C4_SDA_PIN, - "i2c4" - }, -#endif -}; - -static struct apm32_soft_i2c i2c_obj[sizeof(soft_i2c_config) / sizeof(soft_i2c_config[0])]; - -/** - * @brief This function will config gpio of soft i2c. - * - * @param i2c is a pointer to the object of soft i2c. - */ -static void apm32_soft_i2c_gpio_init(struct apm32_soft_i2c *i2c) -{ - struct apm32_soft_i2c_config *cfg = (struct apm32_soft_i2c_config *)i2c->ops.data; - - rt_pin_mode(cfg->scl_pin, PIN_MODE_OUTPUT_OD); - rt_pin_mode(cfg->sda_pin, PIN_MODE_OUTPUT_OD); - - rt_pin_write(cfg->scl_pin, PIN_HIGH); - rt_pin_write(cfg->sda_pin, PIN_HIGH); -} - -static void apm32_i2c_pin_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct apm32_soft_i2c); - - for(rt_size_t i = 0; i < obj_num; i++) - { - apm32_soft_i2c_gpio_init(&i2c_obj[i]); - } -} - -/** - * @brief This function sets the sda pin. - * - * @param data is a pointer to the i2c config class. - * - * @param state is the level of sda pin. - */ -static void apm32_soft_i2c_set_sda(void *data, rt_int32_t state) -{ - struct apm32_soft_i2c_config *cfg = (struct apm32_soft_i2c_config *)data; - - rt_pin_write(cfg->sda_pin, state ? PIN_HIGH : PIN_LOW); -} - -/** - * @brief This function sets the scl pin. - * - * @param data is a pointer to the i2c config class. - * - * @param state is the level of scl pin. - */ -static void apm32_soft_i2c_set_scl(void *data, rt_int32_t state) -{ - struct apm32_soft_i2c_config *cfg = (struct apm32_soft_i2c_config *)data; - - rt_pin_write(cfg->scl_pin, state ? PIN_HIGH : PIN_LOW); -} - -/** - * @brief This function gets the sda pin state. - * - * @param data is a pointer to the i2c config class. - */ -static rt_int32_t apm32_soft_i2c_get_sda(void *data) -{ - struct apm32_soft_i2c_config *cfg = (struct apm32_soft_i2c_config *)data; - return rt_pin_read(cfg->sda_pin); -} - -/** - * @brief This function gets the scl pin state. - * - * @param data is a pointer to the i2c config class. - */ -static rt_int32_t apm32_soft_i2c_get_scl(void *data) -{ - struct apm32_soft_i2c_config *cfg = (struct apm32_soft_i2c_config *)data; - return rt_pin_read(cfg->scl_pin); -} - -/** - * @brief The time delay function in microseconds. - * - * @param us is the microseconds to delay. - */ -static void apm32_soft_i2c_udelay(rt_uint32_t us) -{ - rt_uint32_t count_old = SysTick->VAL; - rt_uint32_t count_now; - rt_uint32_t count = 0; - rt_uint32_t reload = SysTick->LOAD; - rt_uint32_t count_pre_us = (reload * RT_TICK_PER_SECOND) / 1000000; - - while (count_pre_us * us > count) - { - count_now = SysTick->VAL; - if (count_now != count_old) - { - if (count_now < count_old) - { - count += count_old - count_now; - } - else - { - count += reload - count_now + count_old; - } - count_old = count_now; - } - } -} - -/** - * @brief This function will unlock i2c, if it is locked. - * - * @param cfg is a pointer to i2c config class. - * - * @return RT_EOK indicates successful unlock, other value indicates failed. - */ -static rt_err_t apm32_i2c_bus_unlock(const struct apm32_soft_i2c_config *cfg) -{ - rt_int32_t i = 0; - - if (PIN_LOW == rt_pin_read(cfg->sda_pin)) - { - while (i++ < 9) - { - rt_pin_write(cfg->scl_pin, PIN_HIGH); - apm32_soft_i2c_udelay(100); - rt_pin_write(cfg->scl_pin, PIN_LOW); - apm32_soft_i2c_udelay(100); - } - } - if (PIN_LOW == rt_pin_read(cfg->sda_pin)) - { - return -RT_ERROR; - } - - return RT_EOK; -} - -static const struct rt_i2c_bit_ops apm32_bit_ops_default = -{ - .data = RT_NULL, - .pin_init = apm32_i2c_pin_init, - .set_sda = apm32_soft_i2c_set_sda, - .set_scl = apm32_soft_i2c_set_scl, - .get_sda = apm32_soft_i2c_get_sda, - .get_scl = apm32_soft_i2c_get_scl, - .udelay = apm32_soft_i2c_udelay, - .delay_us = 1, - .timeout = 100, - .i2c_pin_init_flag = RT_FALSE -}; - -/** - * @brief I2C initialization function. - * - * @return RT_EOK indicates successful initialization, other value indicates failed; - */ -int rt_hw_i2c_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct apm32_soft_i2c); - rt_err_t result; - - for (rt_size_t i = 0; i < obj_num; i++) - { - i2c_obj[i].ops = apm32_bit_ops_default; - i2c_obj[i].ops.data = (void *)&soft_i2c_config[i]; - i2c_obj[i].i2c_bus.priv = &i2c_obj[i].ops; - - result = rt_i2c_bit_add_bus(&i2c_obj[i].i2c_bus, soft_i2c_config[i].bus_name); - - RT_ASSERT(result == RT_EOK); - - apm32_i2c_bus_unlock(&soft_i2c_config[i]); - - LOG_D("software simulation %s init done, pin scl: %d, pin sda: %d", - soft_i2c_config[i].bus_name, - soft_i2c_config[i].scl_pin, - soft_i2c_config[i].sda_pin); - } - - return RT_EOK; -} -INIT_BOARD_EXPORT(rt_hw_i2c_init); - -#endif /* RT_USING_I2C */ diff --git a/bsp/at32/at32a403a-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32a403a-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..f726ac26135 --- /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 b7d8486d273..1d8a9f8fb6d 100644 --- a/bsp/at32/at32a403a-start/board/Kconfig +++ b/bsp/at32/at32a403a-start/board/Kconfig @@ -238,51 +238,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 63 - default 8 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 63 - default 41 - endif - endif - menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" default n diff --git a/bsp/at32/at32a423-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32a423-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..8b33403ed07 --- /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 6da7a57f63e..346aceac2da 100644 --- a/bsp/at32/at32a423-start/board/Kconfig +++ b/bsp/at32/at32a423-start/board/Kconfig @@ -262,39 +262,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - endif - menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" default n 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 00000000000..f726ac26135 --- /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 58d9aa1a640..4f1ef1db88b 100644 --- a/bsp/at32/at32f402-start/board/Kconfig +++ b/bsp/at32/at32f402-start/board/Kconfig @@ -261,51 +261,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 63 - default 8 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 63 - default 41 - endif - endif - menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" default n diff --git a/bsp/at32/at32f403a-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f403a-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..f726ac26135 --- /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 a12ff97a970..56148713cce 100644 --- a/bsp/at32/at32f403a-start/board/Kconfig +++ b/bsp/at32/at32f403a-start/board/Kconfig @@ -238,51 +238,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 63 - default 8 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 63 - default 41 - endif - endif - menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" default n diff --git a/bsp/at32/at32f405-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f405-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..f726ac26135 --- /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 50f523cd4cf..23f8a457573 100644 --- a/bsp/at32/at32f405-start/board/Kconfig +++ b/bsp/at32/at32f405-start/board/Kconfig @@ -280,51 +280,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 63 - default 8 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 63 - default 41 - endif - endif - menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" default n diff --git a/bsp/at32/at32f407-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f407-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..f726ac26135 --- /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 c4c7e650488..a5d6e133455 100644 --- a/bsp/at32/at32f407-start/board/Kconfig +++ b/bsp/at32/at32f407-start/board/Kconfig @@ -261,51 +261,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 63 - default 8 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 63 - default 41 - endif - endif - menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" default n diff --git a/bsp/at32/at32f413-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f413-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..8b33403ed07 --- /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 b809dd5702e..07a999027eb 100644 --- a/bsp/at32/at32f413-start/board/Kconfig +++ b/bsp/at32/at32f413-start/board/Kconfig @@ -238,39 +238,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - endif - menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" default n diff --git a/bsp/at32/at32f415-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f415-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..8b33403ed07 --- /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 fd29cc332e7..08ad343d4dd 100644 --- a/bsp/at32/at32f415-start/board/Kconfig +++ b/bsp/at32/at32f415-start/board/Kconfig @@ -253,39 +253,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - endif - menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" default n diff --git a/bsp/at32/at32f421-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f421-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..8b33403ed07 --- /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 a3e4f931c21..f7824beb6bd 100644 --- a/bsp/at32/at32f421-start/board/Kconfig +++ b/bsp/at32/at32f421-start/board/Kconfig @@ -115,6 +115,7 @@ menu "On-chip Peripheral Drivers" depends on RT_USING_SERIAL_V2 && BSP_UART2_RX_USING_DMA default 64 endif + endif menuconfig BSP_USING_PWM bool "Enable PWM" @@ -181,39 +182,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - endif - menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" default n diff --git a/bsp/at32/at32f423-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f423-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..8b33403ed07 --- /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 51da2462ab5..61b4c555c24 100644 --- a/bsp/at32/at32f423-start/board/Kconfig +++ b/bsp/at32/at32f423-start/board/Kconfig @@ -262,39 +262,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - endif - menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" default n 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 00000000000..8b33403ed07 --- /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 cc47c543293..9fcc1dcab82 100644 --- a/bsp/at32/at32f425-start/board/Kconfig +++ b/bsp/at32/at32f425-start/board/Kconfig @@ -262,39 +262,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - endif - menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" default n 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 00000000000..f726ac26135 --- /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 f00c2718f45..5b1d4808bce 100644 --- a/bsp/at32/at32f435-start/board/Kconfig +++ b/bsp/at32/at32f435-start/board/Kconfig @@ -287,51 +287,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 63 - default 8 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 63 - default 41 - endif - endif - menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" default n diff --git a/bsp/at32/at32f437-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f437-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..f726ac26135 --- /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 da90f3c231e..28e7610fc99 100644 --- a/bsp/at32/at32f437-start/board/Kconfig +++ b/bsp/at32/at32f437-start/board/Kconfig @@ -310,51 +310,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 63 - default 8 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 63 - default 41 - endif - endif - menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" default n diff --git a/bsp/at32/at32f455-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f455-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..f726ac26135 --- /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 c8f39b0b807..9349a0ecc15 100644 --- a/bsp/at32/at32f455-start/board/Kconfig +++ b/bsp/at32/at32f455-start/board/Kconfig @@ -273,51 +273,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 63 - default 8 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 63 - default 41 - endif - endif - menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" default n diff --git a/bsp/at32/at32f456-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f456-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..f726ac26135 --- /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 b474dba7710..1ebb3b260b3 100644 --- a/bsp/at32/at32f456-start/board/Kconfig +++ b/bsp/at32/at32f456-start/board/Kconfig @@ -273,51 +273,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 63 - default 8 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 63 - default 41 - endif - endif - menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" default n diff --git a/bsp/at32/at32f457-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f457-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..f726ac26135 --- /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 2fce389a827..d554be797f7 100644 --- a/bsp/at32/at32f457-start/board/Kconfig +++ b/bsp/at32/at32f457-start/board/Kconfig @@ -273,51 +273,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 63 - default 8 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 63 - default 41 - endif - endif - menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" default n diff --git a/bsp/at32/at32m412-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32m412-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..8b33403ed07 --- /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 dd541b01458..fa7772bd473 100644 --- a/bsp/at32/at32m412-start/board/Kconfig +++ b/bsp/at32/at32m412-start/board/Kconfig @@ -115,6 +115,7 @@ menu "On-chip Peripheral Drivers" depends on RT_USING_SERIAL_V2 && BSP_UART2_RX_USING_DMA default 64 endif + endif menuconfig BSP_USING_PWM bool "Enable PWM" @@ -181,39 +182,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - endif - menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" default n diff --git a/bsp/at32/at32m416-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32m416-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..8b33403ed07 --- /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 8414740adf6..34fc0302d0c 100644 --- a/bsp/at32/at32m416-start/board/Kconfig +++ b/bsp/at32/at32m416-start/board/Kconfig @@ -115,6 +115,7 @@ menu "On-chip Peripheral Drivers" depends on RT_USING_SERIAL_V2 && BSP_UART2_RX_USING_DMA default 64 endif + endif menuconfig BSP_USING_PWM bool "Enable PWM" @@ -181,39 +182,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - endif - menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" default n diff --git a/bsp/at32/libraries/rt_drivers/SConscript b/bsp/at32/libraries/rt_drivers/SConscript index 090fde5febe..fa6fa3dec58 100644 --- a/bsp/at32/libraries/rt_drivers/SConscript +++ b/bsp/at32/libraries/rt_drivers/SConscript @@ -40,10 +40,6 @@ if GetDepend('BSP_USING_SDRAM'): if GetDepend(['BSP_USING_EMAC', 'RT_USING_LWIP']): src += ['drv_emac.c'] -if GetDepend(['RT_USING_I2C', 'RT_USING_I2C_BITOPS']): - if GetDepend('BSP_USING_I2C1') or GetDepend('BSP_USING_I2C2') or GetDepend('BSP_USING_I2C3') or GetDepend('BSP_USING_I2C4'): - src += ['drv_soft_i2c.c'] - if GetDepend(['BSP_USING_HARD_I2C']): src += Glob('drv_hard_i2c.c') diff --git a/bsp/at32/libraries/rt_drivers/drv_soft_i2c.c b/bsp/at32/libraries/rt_drivers/drv_soft_i2c.c deleted file mode 100644 index 711d1e66f52..00000000000 --- a/bsp/at32/libraries/rt_drivers/drv_soft_i2c.c +++ /dev/null @@ -1,231 +0,0 @@ -/* - * Copyright (c) 2006-2021, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2022-05-16 shelton first version - */ - -#include "drv_common.h" -#include "drv_soft_i2c.h" - -#ifdef RT_USING_I2C - -#define LOG_TAG "drv.i2c" -#include - -#if !defined(BSP_USING_I2C1) && !defined(BSP_USING_I2C2) && \ - !defined(BSP_USING_I2C3) -#error "Please define at least one BSP_USING_I2Cx" -/* this driver can be disabled at menuconfig RT-Thread Components Device Drivers */ -#endif - -static const struct at32_soft_i2c_config soft_i2c_config[] = -{ -#ifdef BSP_USING_I2C1 - I2C1_BUS_CONFIG, -#endif -#ifdef BSP_USING_I2C2 - I2C2_BUS_CONFIG, -#endif -#ifdef BSP_USING_I2C3 - I2C3_BUS_CONFIG, -#endif -}; - -static struct at32_i2c i2c_obj[sizeof(soft_i2c_config) / sizeof(soft_i2c_config[0])]; - -/** - * this function initializes the i2c pin. - * - * @param at32 i2c dirver class. - */ -static void at32_i2c_gpio_init(struct at32_i2c *i2c) -{ - struct at32_soft_i2c_config* cfg = (struct at32_soft_i2c_config*)i2c->ops.data; - - rt_pin_mode(cfg->scl, PIN_MODE_OUTPUT_OD); - rt_pin_mode(cfg->sda, PIN_MODE_OUTPUT_OD); - - rt_pin_write(cfg->scl, PIN_HIGH); - rt_pin_write(cfg->sda, PIN_HIGH); -} - -static void at32_i2c_pin_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct at32_i2c); - - for(rt_size_t i = 0; i < obj_num; i++) - { - at32_i2c_gpio_init(&i2c_obj[i]); - } -} - -/** - * this function sets the sda pin. - * - * @param at32 config class. - * @param the sda pin state. - */ -static void at32_set_sda(void *data, rt_int32_t state) -{ - struct at32_soft_i2c_config* cfg = (struct at32_soft_i2c_config*)data; - if (state) - { - rt_pin_write(cfg->sda, PIN_HIGH); - } - else - { - rt_pin_write(cfg->sda, PIN_LOW); - } -} - -/** - * this function sets the scl pin. - * - * @param at32 config class. - * @param the scl pin state. - */ -static void at32_set_scl(void *data, rt_int32_t state) -{ - struct at32_soft_i2c_config* cfg = (struct at32_soft_i2c_config*)data; - if (state) - { - rt_pin_write(cfg->scl, PIN_HIGH); - } - else - { - rt_pin_write(cfg->scl, PIN_LOW); - } -} - -/** - * this function gets the sda pin state. - * - * @param the sda pin state. - */ -static rt_int32_t at32_get_sda(void *data) -{ - struct at32_soft_i2c_config* cfg = (struct at32_soft_i2c_config*)data; - return rt_pin_read(cfg->sda); -} - -/** - * this function gets the scl pin state. - * - * @param the scl pin state. - */ -static rt_int32_t at32_get_scl(void *data) -{ - struct at32_soft_i2c_config* cfg = (struct at32_soft_i2c_config*)data; - return rt_pin_read(cfg->scl); -} - -/** - * the time delay function. - * - * @param microseconds. - */ -static void at32_udelay(rt_uint32_t us) -{ - rt_uint32_t ticks; - rt_uint32_t told, tnow, tcnt = 0; - rt_uint32_t reload = SysTick->LOAD; - - ticks = us * reload / (1000000 / RT_TICK_PER_SECOND); - told = SysTick->VAL; - while (1) - { - tnow = SysTick->VAL; - if (tnow != told) - { - if (tnow < told) - { - tcnt += told - tnow; - } - else - { - tcnt += reload - tnow + told; - } - told = tnow; - if (tcnt >= ticks) - { - break; - } - } - } -} - -static const struct rt_i2c_bit_ops at32_bit_ops_default = -{ - .data = RT_NULL, - .pin_init = at32_i2c_pin_init, - .set_sda = at32_set_sda, - .set_scl = at32_set_scl, - .get_sda = at32_get_sda, - .get_scl = at32_get_scl, - .udelay = at32_udelay, - .delay_us = 1, - .timeout = 100, - .i2c_pin_init_flag = RT_FALSE -}; - -/** - * if i2c is locked, this function will unlock it - * - * @param at32 config class - * - * @return RT_EOK indicates successful unlock. - */ -static rt_err_t at32_i2c_bus_unlock(const struct at32_soft_i2c_config *cfg) -{ - rt_int32_t i = 0; - - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - while (i++ < 9) - { - rt_pin_write(cfg->scl, PIN_HIGH); - at32_udelay(100); - rt_pin_write(cfg->scl, PIN_LOW); - at32_udelay(100); - } - } - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - return -RT_ERROR; - } - - return RT_EOK; -} - -/* i2c initialization function */ -int rt_hw_i2c_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct at32_i2c); - rt_err_t result; - - for (rt_size_t i = 0; i < obj_num; i++) - { - i2c_obj[i].ops = at32_bit_ops_default; - i2c_obj[i].ops.data = (void*)&soft_i2c_config[i]; - i2c_obj[i].i2c_bus.priv = &i2c_obj[i].ops; - - result = rt_i2c_bit_add_bus(&i2c_obj[i].i2c_bus, soft_i2c_config[i].bus_name); - RT_ASSERT(result == RT_EOK); - at32_i2c_bus_unlock(&soft_i2c_config[i]); - - LOG_D("software simulation %s init done, pin scl: %d, pin sda %d", - soft_i2c_config[i].bus_name, - soft_i2c_config[i].scl, - soft_i2c_config[i].sda); - } - - return RT_EOK; -} - -INIT_BOARD_EXPORT(rt_hw_i2c_init); - -#endif /* RT_USING_I2C */ diff --git a/bsp/at32/libraries/rt_drivers/drv_soft_i2c.h b/bsp/at32/libraries/rt_drivers/drv_soft_i2c.h deleted file mode 100644 index fecab31b4df..00000000000 --- a/bsp/at32/libraries/rt_drivers/drv_soft_i2c.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2006-2021, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2020-01-09 shelton first version - */ - -#ifndef __DRV_I2C__ -#define __DRV_I2C__ - -#include -#include -#include - -/* at32 config class */ -struct at32_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; -/* at32 i2c dirver class */ -struct at32_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device i2c_bus; -}; - -#ifdef BSP_USING_I2C1 -#define I2C1_BUS_CONFIG \ - { \ - .scl = BSP_I2C1_SCL_PIN, \ - .sda = BSP_I2C1_SDA_PIN, \ - .bus_name = "i2c1", \ - } -#endif - -#ifdef BSP_USING_I2C2 -#define I2C2_BUS_CONFIG \ - { \ - .scl = BSP_I2C2_SCL_PIN, \ - .sda = BSP_I2C2_SDA_PIN, \ - .bus_name = "i2c2", \ - } -#endif - -#ifdef BSP_USING_I2C3 -#define I2C3_BUS_CONFIG \ - { \ - .scl = BSP_I2C3_SCL_PIN, \ - .sda = BSP_I2C3_SDA_PIN, \ - .bus_name = "i2c3", \ - } -#endif - -int rt_hw_i2c_init(void); - -#endif diff --git a/bsp/at91/at91sam9260/drivers/SConscript b/bsp/at91/at91sam9260/drivers/SConscript index 13402ecb14b..c6e83b1deed 100644 --- a/bsp/at91/at91sam9260/drivers/SConscript +++ b/bsp/at91/at91sam9260/drivers/SConscript @@ -20,9 +20,6 @@ if GetDepend('RT_USING_SDIO'): if GetDepend('RT_USING_LWIP'): src += ['macb.c'] -if GetDepend('RT_USING_I2C') and GetDepend('RT_USING_I2C_BITOPS'): - src += ['at91_i2c_gpio.c'] - if GetDepend('RT_USING_MTD_NAND'): src += ['at91_nand.c'] diff --git a/bsp/at91/at91sam9260/drivers/at91_i2c_gpio.c b/bsp/at91/at91sam9260/drivers/at91_i2c_gpio.c deleted file mode 100644 index 09500e50079..00000000000 --- a/bsp/at91/at91sam9260/drivers/at91_i2c_gpio.c +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright (c) 2006-2021, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2012-04-25 weety first version - */ - -#include -#include -#include - - -static void at91_i2c_gpio_init(void) -{ - at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9260_ID_PIOA); //enable PIOA clock - at91_sys_write(AT91_PIOA + PIO_PUER, (1 << 23)); - at91_sys_write(AT91_PIOA + PIO_PER, (1 << 23)); - at91_sys_write(AT91_PIOA + PIO_MDER, (1 << 23)); - at91_sys_write(AT91_PIOA + PIO_PUER, (1 << 24)); - at91_sys_write(AT91_PIOA + PIO_PER, (1 << 24)); - at91_sys_write(AT91_PIOA + PIO_MDER, (1 << 24)); - - at91_sys_write(AT91_PIOA + PIO_OER, (1 << 23)); - at91_sys_write(AT91_PIOA + PIO_OER, (1 << 24)); - - at91_sys_write(AT91_PIOA + PIO_SODR, (1 << 23)); - at91_sys_write(AT91_PIOA + PIO_SODR, (1 << 24)); -} - -static void at91_set_sda(void *data, rt_int32_t state) -{ - if (state) - { - at91_sys_write(AT91_PIOA + PIO_SODR, (1 << 23)); - } - else - { - at91_sys_write(AT91_PIOA + PIO_CODR, (1 << 23)); - } -} - -static void at91_set_scl(void *data, rt_int32_t state) -{ - if (state) - { - at91_sys_write(AT91_PIOA + PIO_SODR, (1 << 24)); - } - else - { - at91_sys_write(AT91_PIOA + PIO_CODR, (1 << 24)); - } -} - -static rt_int32_t at91_get_sda(void *data) -{ - return at91_sys_read(AT91_PIOA + PIO_PDSR) & (1 << 23); -} - -static rt_int32_t at91_get_scl(void *data) -{ - return at91_sys_read(AT91_PIOA + PIO_PDSR) & (1 << 24); -} - -static void at91_udelay (rt_uint32_t us) -{ - rt_int32_t i; - for (; us > 0; us--) - { - i = 50000; - while(i > 0) - { - i--; - } - } -} - -static const struct rt_i2c_bit_ops bit_ops = { - RT_NULL, - at91_set_sda, - at91_set_scl, - at91_get_sda, - at91_get_scl, - at91_udelay, - 5, - 100, - at91_i2c_gpio_init, - RT_FALSE -}; - -int at91_i2c_init(void) -{ - struct rt_i2c_bus_device *bus; - - bus = rt_malloc(sizeof(struct rt_i2c_bus_device)); - if (bus == RT_NULL) - { - rt_kprintf("rt_malloc failed\n"); - return -RT_ENOMEM; - } - - rt_memset((void *)bus, 0, sizeof(struct rt_i2c_bus_device)); - - bus->priv = (void *)&bit_ops; - - rt_i2c_bit_add_bus(bus, "i2c0"); - - return 0; -} - -INIT_DEVICE_EXPORT(at91_i2c_init); - diff --git a/bsp/at91/at91sam9g45/drivers/SConscript b/bsp/at91/at91sam9g45/drivers/SConscript index 6425c453f55..ad649d8785c 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 a25dc11bb2e..00000000000 --- a/bsp/at91/at91sam9g45/drivers/at91_i2c_gpio.c +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright (c) 2006-2021, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2012-04-25 weety first version - */ - -#include -#include -#include - - -static void at91_i2c_gpio_init(void) -{ - AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_PIOA; //enable PIOA clock - AT91C_BASE_PIOA->PIO_PUER = (1 << 23); - AT91C_BASE_PIOA->PIO_PER = (1 << 23); - AT91C_BASE_PIOA->PIO_MDER = (1 << 23); - AT91C_BASE_PIOA->PIO_PUER = (1 << 24); - AT91C_BASE_PIOA->PIO_PER = (1 << 24); - AT91C_BASE_PIOA->PIO_MDER = (1 << 24); - - AT91C_BASE_PIOA->PIO_OER = (1 << 23); - AT91C_BASE_PIOA->PIO_OER = (1 << 24); - - AT91C_BASE_PIOA->PIO_SODR = (1 << 23); - AT91C_BASE_PIOA->PIO_SODR = (1 << 24); -} - -static void at91_set_sda(void *data, rt_int32_t state) -{ - if (state) - { - AT91C_BASE_PIOA->PIO_SODR = (1 << 23); - } - else - { - AT91C_BASE_PIOA->PIO_CODR = (1 << 23); - } -} - -static void at91_set_scl(void *data, rt_int32_t state) -{ - if (state) - { - AT91C_BASE_PIOA->PIO_SODR = (1 << 24); - } - else - { - AT91C_BASE_PIOA->PIO_CODR = (1 << 24); - } -} - -static rt_int32_t at91_get_sda(void *data) -{ - return AT91C_BASE_PIOA->PIO_PDSR & (1 << 23); -} - -static rt_int32_t at91_get_scl(void *data) -{ - return AT91C_BASE_PIOA->PIO_PDSR & (1 << 24); -} - -static void at91_udelay (rt_uint32_t us) -{ - rt_int32_t i; - for (; us > 0; us--) - { - i = 50000; - while(i > 0) - { - i--; - } - } -} - -static const struct rt_i2c_bit_ops bit_ops = { - RT_NULL, - at91_set_sda, - at91_set_scl, - at91_get_sda, - at91_get_scl, - at91_udelay, - 5, - 100, - at91_i2c_gpio_init, - RT_FALSE -}; - -int at91_i2c_init(void) -{ - struct rt_i2c_bus_device *bus; - - bus = rt_malloc(sizeof(struct rt_i2c_bus_device)); - if (bus == RT_NULL) - { - rt_kprintf("rt_malloc failed\n"); - return -RT_ENOMEM; - } - - rt_memset((void *)bus, 0, sizeof(struct rt_i2c_bus_device)); - - bus->priv = (void *)&bit_ops; - - rt_i2c_bit_add_bus(bus, "i2c0"); - - return 0; -} - -INIT_DEVICE_EXPORT(at91_i2c_init); - diff --git a/bsp/avr32/at32uc3a0256/.ci/attachconfig/ci.attachconfig.yml b/bsp/avr32/at32uc3a0256/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..331b736fa25 --- /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 cb4d873dc41..d031587afdc 100644 --- a/bsp/avr32/at32uc3a0256/Kconfig +++ b/bsp/avr32/at32uc3a0256/Kconfig @@ -121,24 +121,5 @@ menu "On-chip Peripheral Drivers" endif endif - menuconfig BSP_USING_SOFT_I2C - bool "Enable I2C BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_SOFT_I2C - config BSP_USING_SOFT_I2C1 - bool "Enable I2C1 Bus (software simulation)" - default n - if BSP_USING_SOFT_I2C1 - config BSP_SOFT_I2C1_SCL_PIN - int "I2C1 SCL pin number (GP)" - default 30 - config BSP_SOFT_I2C1_SDA_PIN - int "I2C1 SDA pin number (GP)" - default 29 - endif - endif endmenu endmenu diff --git a/bsp/avr32/at32uc3a0256/board.c b/bsp/avr32/at32uc3a0256/board.c index 64281a3ec6e..9955c39becf 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 @@ -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 2ecd23b5d6c..46ba2b75429 100644 --- a/bsp/avr32/drivers/SConscript +++ b/bsp/avr32/drivers/SConscript @@ -13,9 +13,6 @@ if GetDepend(['BSP_USING_PIN']): if GetDepend(['BSP_USING_UART']): src += ['drv_uart.c'] -if GetDepend(['BSP_USING_SOFT_I2C']): - src += ['drv_soft_i2c.c'] - path = [cwd] group = DefineGroup('Drivers', src, depend = [''], CPPPATH = path) diff --git a/bsp/avr32/drivers/drv_soft_i2c.c b/bsp/avr32/drivers/drv_soft_i2c.c deleted file mode 100644 index 2f7b15969d8..00000000000 --- a/bsp/avr32/drivers/drv_soft_i2c.c +++ /dev/null @@ -1,180 +0,0 @@ -/* - * Copyright (c) 2006-2023, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2023/12/01 Raman Gopalan First version - */ -#include "drv_soft_i2c.h" - -#ifdef BSP_USING_SOFT_I2C -#define DBG_LEVEL DBG_LOG -#include -#define LOG_TAG "DRV.I2C" - -static const struct avr32_soft_i2c_config soft_i2c_config[] = -{ -#ifdef BSP_USING_SOFT_I2C1 - I2C1_BUS_CONFIG, -#endif -}; - -static struct avr32_i2c i2c_obj[sizeof(soft_i2c_config) / sizeof(soft_i2c_config[0])]; - -/** - * This function initializes the I2C pin. - * - * @param AVR32 I2C driver class. - */ -static void avr32_i2c_gpio_init(struct avr32_i2c *i2c) -{ - struct avr32_soft_i2c_config* cfg = (struct avr32_soft_i2c_config*)i2c->ops.data; - - rt_pin_mode(cfg->scl, PIN_MODE_OUTPUT_OD); - gpio_set_gpio_open_drain_pin(cfg->scl); - - rt_pin_mode(cfg->sda, PIN_MODE_OUTPUT_OD); - gpio_set_gpio_open_drain_pin(cfg->sda); -} - -static void avr32_i2c_pin_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct avr32_i2c); - - for(rt_size_t i = 0; i < obj_num; i++) - { - avr32_i2c_gpio_init(&i2c_obj[i]); - } -} - -/** - * This function sets the SDA pin. - * - * @param AVR32 config class. - * @param The SDA pin state. - */ -static void avr32_set_sda(void *data, rt_int32_t state) -{ - struct avr32_soft_i2c_config* cfg = (struct avr32_soft_i2c_config*)data; - if (state) - { - gpio_set_gpio_open_drain_pin(cfg->sda); - } - else - { - gpio_clr_gpio_open_drain_pin(cfg->sda); - } -} - -/** - * This function sets the SCL pin. - * - * @param AVR32 config class. - * @param The SCL pin state. - */ -static void avr32_set_scl(void *data, rt_int32_t state) -{ - struct avr32_soft_i2c_config* cfg = (struct avr32_soft_i2c_config*)data; - if (state) - { - gpio_set_gpio_open_drain_pin(cfg->scl); - } - else - { - gpio_clr_gpio_open_drain_pin(cfg->scl); - } -} - -/** - * This function gets the SDA pin state. - * - * @param The SDA pin state. - */ -static rt_int32_t avr32_get_sda(void *data) -{ - struct avr32_soft_i2c_config* cfg = (struct avr32_soft_i2c_config*)data; - return gpio_get_gpio_open_drain_pin_output_value(cfg->sda); -} - -/** - * This function gets the SCL pin state. - * - * @param The SCL pin state. - */ -static rt_int32_t avr32_get_scl(void *data) -{ - struct avr32_soft_i2c_config* cfg = (struct avr32_soft_i2c_config*)data; - return gpio_get_gpio_open_drain_pin_output_value(cfg->scl); -} - -static const struct rt_i2c_bit_ops avr32_bit_ops_default = -{ - .data = RT_NULL, - .pin_init = avr32_i2c_pin_init, - .set_sda = avr32_set_sda, - .set_scl = avr32_set_scl, - .get_sda = avr32_get_sda, - .get_scl = avr32_get_scl, - .udelay = rt_hw_us_delay, - .delay_us = 1, - .timeout = 100, - .i2c_pin_init_flag = RT_FALSE -}; - -/** - * If I2C is locked, this function will unlock it. - * - * @param AVR32 config class - * - * @return RT_EOK indicates successful unlock. - */ -static rt_err_t avr32_i2c_bus_unlock(const struct avr32_soft_i2c_config *cfg) -{ - rt_int32_t i = 0; - - if (PIN_LOW == gpio_get_gpio_open_drain_pin_output_value(cfg->sda)) - { - while (i++ < 9) - { - gpio_set_gpio_open_drain_pin(cfg->scl); - rt_hw_us_delay(100); - gpio_clr_gpio_open_drain_pin(cfg->scl); - rt_hw_us_delay(100); - } - } - if (PIN_LOW == gpio_get_gpio_open_drain_pin_output_value(cfg->sda)) - { - return -RT_ERROR; - } - - return RT_EOK; -} - -/* I2C initialization function */ -int rt_sw_i2c_init(void) -{ - rt_err_t result; - rt_size_t i; - - for (i = 0; i < sizeof(i2c_obj) / sizeof(struct avr32_i2c); i++) - { - i2c_obj[i].ops = avr32_bit_ops_default; - i2c_obj[i].ops.data = (void*)&soft_i2c_config[i]; - i2c_obj[i].i2c_bus.priv = &i2c_obj[i].ops; - - result = rt_i2c_bit_add_bus(&i2c_obj[i].i2c_bus, soft_i2c_config[i].bus_name); - RT_ASSERT(result == RT_EOK); - avr32_i2c_bus_unlock(&soft_i2c_config[i]); - - LOG_D("Software simulation %s init done, pin SCL: %d, pin SDA %d", - soft_i2c_config[i].bus_name, - soft_i2c_config[i].scl, - soft_i2c_config[i].sda); - } - - return RT_EOK; -} - -#endif /* BSP_USING_SOFT_I2C */ diff --git a/bsp/avr32/drivers/drv_soft_i2c.h b/bsp/avr32/drivers/drv_soft_i2c.h deleted file mode 100644 index 01d81d72891..00000000000 --- a/bsp/avr32/drivers/drv_soft_i2c.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2006-2023, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2023/12/01 Raman Gopalan First version - */ - -#ifndef __DRV_SOFT_I2C__ -#define __DRV_SOFT_I2C__ - -#include -#include "drv_gpio.h" -#include "gpio.h" - -#ifdef BSP_USING_SOFT_I2C -/* AVR32 software I2C driver class */ -struct avr32_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device i2c_bus; -}; - -/* AVR32 config class */ -struct avr32_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; - -#ifdef BSP_USING_SOFT_I2C1 -#define I2C1_BUS_CONFIG \ - { \ - .scl = BSP_SOFT_I2C1_SCL_PIN, \ - .sda = BSP_SOFT_I2C1_SDA_PIN, \ - .bus_name = "i2c1", \ - } -#endif - -int rt_sw_i2c_init(void); - -#endif /* BSP_USING_SOFT_I2C */ -#endif /* #ifndef __DRV_SOFT_I2C__ */ diff --git a/bsp/bluetrum/ab32vg1-ab-prougen/.ci/attachconfig/ci.attachconfig.yml b/bsp/bluetrum/ab32vg1-ab-prougen/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..0b0d86ca46b --- /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 670a59980cc..7742a4d31cd 100644 --- a/bsp/bluetrum/ab32vg1-ab-prougen/board/Kconfig +++ b/bsp/bluetrum/ab32vg1-ab-prougen/board/Kconfig @@ -86,24 +86,6 @@ menu "On-chip Peripheral Drivers" select RT_USING_DFS_ELMFAT default n - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - comment "Notice: PE3 --> 16; PE2 --> 15" - config BSP_I2C1_SCL_PIN - int "I2C1 scl pin number" - range 1 27 - default 16 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 27 - default 15 - endif - menuconfig BSP_USING_PWM bool "Enable PWM" default n diff --git a/bsp/bluetrum/libraries/hal_drivers/SConscript b/bsp/bluetrum/libraries/hal_drivers/SConscript index 0a6dd7e0cd2..258dc71d590 100644 --- a/bsp/bluetrum/libraries/hal_drivers/SConscript +++ b/bsp/bluetrum/libraries/hal_drivers/SConscript @@ -17,9 +17,6 @@ if GetDepend('RT_USING_SERIAL'): if GetDepend('RT_USING_SDIO'): src += ['drv_sdio.c'] -if GetDepend('RT_USING_I2C'): - src += ['drv_soft_i2c.c'] - if GetDepend('RT_USING_WDT'): src += ['drv_wdt.c'] diff --git a/bsp/bluetrum/libraries/hal_drivers/drv_soft_i2c.c b/bsp/bluetrum/libraries/hal_drivers/drv_soft_i2c.c deleted file mode 100644 index 9d0c383b5d6..00000000000 --- a/bsp/bluetrum/libraries/hal_drivers/drv_soft_i2c.c +++ /dev/null @@ -1,224 +0,0 @@ -/* - * Copyright (c) 2020-2021, Bluetrum Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2021-01-07 greedyhao first version - */ - -#include -#include "drv_soft_i2c.h" - -#ifdef RT_USING_I2C - -// #define DRV_DEBUG -#define LOG_TAG "drv.i2c" -#include - -#if !defined(BSP_USING_I2C1) && !defined(BSP_USING_I2C2) && !defined(BSP_USING_I2C3) && !defined(BSP_USING_I2C4) -#error "Please define at least one BSP_USING_I2Cx" -/* this driver can be disabled at menuconfig -> RT-Thread Components -> Device Drivers */ -#endif - -static const struct ab32_soft_i2c_config soft_i2c_config[] = -{ -#ifdef BSP_USING_I2C1 - I2C1_BUS_CONFIG, -#endif -#ifdef BSP_USING_I2C2 - I2C2_BUS_CONFIG, -#endif -#ifdef BSP_USING_I2C3 - I2C3_BUS_CONFIG, -#endif -#ifdef BSP_USING_I2C4 - I2C4_BUS_CONFIG, -#endif -}; - -static struct ab32_i2c i2c_obj[sizeof(soft_i2c_config) / sizeof(soft_i2c_config[0])] = {0}; - -/** - * This function initializes the i2c pin. - * - * @param ab32 i2c dirver class. - */ -static void ab32_i2c_gpio_init(struct ab32_i2c *i2c) -{ - struct ab32_soft_i2c_config* cfg = (struct ab32_soft_i2c_config*)i2c->ops.data; - - cfg->scl_mode = PIN_MODE_OUTPUT_OD; - cfg->sda_mode = PIN_MODE_OUTPUT_OD; - rt_pin_mode(cfg->scl, cfg->scl_mode); - rt_pin_mode(cfg->sda, cfg->sda_mode); - - rt_pin_write(cfg->scl, PIN_HIGH); - rt_pin_write(cfg->sda, PIN_HIGH); -} - -static void ab32_i2c_pin_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct ab32_i2c); - - for(rt_size_t i = 0; i < obj_num; i++) - { - ab32_i2c_gpio_init(&i2c_obj[i]); - } -} - -/** - * This function sets the sda pin. - * - * @param data ab32 config class. - * @param state The sda pin state. - */ -static void ab32_set_sda(void *data, rt_int32_t state) -{ - struct ab32_soft_i2c_config* cfg = (struct ab32_soft_i2c_config*)data; - - if (cfg->sda_mode == PIN_MODE_INPUT_PULLUP) { - cfg->sda_mode = PIN_MODE_OUTPUT_OD; - rt_pin_mode(cfg->sda, cfg->sda_mode); - } - - if (state) - { - rt_pin_write(cfg->sda, PIN_HIGH); - } - else - { - rt_pin_write(cfg->sda, PIN_LOW); - } -} - -/** - * This function sets the scl pin. - * - * @param data ab32 config class. - * @param state The scl pin state. - */ -static void ab32_set_scl(void *data, rt_int32_t state) -{ - struct ab32_soft_i2c_config* cfg = (struct ab32_soft_i2c_config*)data; - - if (cfg->scl_mode == PIN_MODE_INPUT_PULLUP) { - cfg->scl_mode = PIN_MODE_OUTPUT_OD; - rt_pin_mode(cfg->scl, cfg->scl_mode); - } - - if (state) - { - rt_pin_write(cfg->scl, PIN_HIGH); - } - else - { - rt_pin_write(cfg->scl, PIN_LOW); - } -} - -/** - * This function gets the sda pin state. - * - * @param data The sda pin state. - */ -static rt_int32_t ab32_get_sda(void *data) -{ - struct ab32_soft_i2c_config* cfg = (struct ab32_soft_i2c_config*)data; - - if (cfg->sda_mode != PIN_MODE_INPUT_PULLUP) { - cfg->sda_mode = PIN_MODE_INPUT_PULLUP; - rt_pin_mode(cfg->sda, cfg->sda_mode); - } - - return rt_pin_read(cfg->sda); -} - -/** - * This function gets the scl pin state. - * - * @param data The scl pin state. - */ -static rt_int32_t ab32_get_scl(void *data) -{ - struct ab32_soft_i2c_config* cfg = (struct ab32_soft_i2c_config*)data; - - if (cfg->scl_mode == PIN_MODE_INPUT_PULLUP) { - cfg->scl_mode = PIN_MODE_INPUT_PULLUP; - rt_pin_mode(cfg->scl, cfg->scl_mode); - } - - return rt_pin_read(cfg->scl); -} - -static const struct rt_i2c_bit_ops ab32_bit_ops_default = -{ - .data = RT_NULL, - .pin_init = ab32_i2c_pin_init, - .set_sda = ab32_set_sda, - .set_scl = ab32_set_scl, - .get_sda = ab32_get_sda, - .get_scl = ab32_get_scl, - .udelay = rt_hw_us_delay, - .delay_us = 1, - .timeout = 100, - .i2c_pin_init_flag = RT_FALSE -}; - -/** - * if i2c is locked, this function will unlock it - * - * @param cfg ab32 config class - * - * @return RT_EOK indicates successful unlock. - */ -static rt_err_t ab32_i2c_bus_unlock(const struct ab32_soft_i2c_config *cfg) -{ - rt_int32_t i = 0; - - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - while (i++ < 9) - { - rt_pin_write(cfg->scl, PIN_HIGH); - rt_hw_us_delay(100); - rt_pin_write(cfg->scl, PIN_LOW); - rt_hw_us_delay(100); - } - } - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - return -RT_ERROR; - } - - return RT_EOK; -} - -/* I2C initialization function */ -int rt_hw_i2c_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct ab32_i2c); - rt_err_t result; - - for (rt_size_t i = 0; i < obj_num; i++) - { - i2c_obj[i].ops = ab32_bit_ops_default; - i2c_obj[i].ops.data = (void*)&soft_i2c_config[i]; - i2c_obj[i].i2c_bus.priv = &i2c_obj[i].ops; - - result = rt_i2c_bit_add_bus(&i2c_obj[i].i2c_bus, soft_i2c_config[i].bus_name); - RT_ASSERT(result == RT_EOK); - ab32_i2c_bus_unlock(&soft_i2c_config[i]); - - LOG_D("software simulation %s init done, pin scl: %d, pin sda %d", - soft_i2c_config[i].bus_name, - soft_i2c_config[i].scl, - soft_i2c_config[i].sda); - } - - return RT_EOK; -} -INIT_BOARD_EXPORT(rt_hw_i2c_init); - -#endif diff --git a/bsp/bluetrum/libraries/hal_drivers/drv_soft_i2c.h b/bsp/bluetrum/libraries/hal_drivers/drv_soft_i2c.h deleted file mode 100644 index 216c3c4c67f..00000000000 --- a/bsp/bluetrum/libraries/hal_drivers/drv_soft_i2c.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (c) 2020-2021, Bluetrum Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2021-01-07 greedyhao first version - */ - -#ifndef __DRV_I2C__ -#define __DRV_I2C__ - -#include -#include -#include - -/* ab32 config class */ -struct ab32_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - rt_uint8_t sda_mode; - rt_uint8_t scl_mode; - const char *bus_name; -}; - -/* ab32 i2c dirver class */ -struct ab32_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device i2c_bus; -}; - -#ifdef BSP_USING_I2C1 -#define I2C1_BUS_CONFIG \ - { \ - .scl = BSP_I2C1_SCL_PIN, \ - .sda = BSP_I2C1_SDA_PIN, \ - .bus_name = "i2c1", \ - } -#endif - -#ifdef BSP_USING_I2C2 -#define I2C2_BUS_CONFIG \ - { \ - .scl = BSP_I2C2_SCL_PIN, \ - .sda = BSP_I2C2_SDA_PIN, \ - .bus_name = "i2c2", \ - } -#endif - -#ifdef BSP_USING_I2C3 -#define I2C3_BUS_CONFIG \ - { \ - .scl = BSP_I2C3_SCL_PIN, \ - .sda = BSP_I2C3_SDA_PIN, \ - .bus_name = "i2c3", \ - } -#endif - -#ifdef BSP_USING_I2C4 -#define I2C4_BUS_CONFIG \ - { \ - .scl = BSP_I2C4_SCL_PIN, \ - .sda = BSP_I2C4_SDA_PIN, \ - .bus_name = "i2c4", \ - } -#endif -int rt_hw_i2c_init(void); - -#endif diff --git a/bsp/bouffalo_lab/bl60x/.ci/attachconfig/ci.attachconfig.yml b/bsp/bouffalo_lab/bl60x/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..6d57d803d9d --- /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 00000000000..6d57d803d9d --- /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 00000000000..6d57d803d9d --- /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 c12477ca803..f1dd396c6d8 100755 --- a/bsp/bouffalo_lab/libraries/Kconfig +++ b/bsp/bouffalo_lab/libraries/Kconfig @@ -1076,129 +1076,6 @@ 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 endif menuconfig BSP_USING_SPI diff --git a/bsp/bouffalo_lab/libraries/rt_drivers/SConscript b/bsp/bouffalo_lab/libraries/rt_drivers/SConscript index 39396ad7a71..0e533f1eaeb 100755 --- a/bsp/bouffalo_lab/libraries/rt_drivers/SConscript +++ b/bsp/bouffalo_lab/libraries/rt_drivers/SConscript @@ -12,9 +12,6 @@ if GetDepend('BSP_USING_GPIO'): if GetDepend('BSP_USING_HW_I2C'): src += ['drv_i2c.c'] -if GetDepend('BSP_USING_SOFT_I2C1'): - src += ['drv_soft_i2c.c'] - if GetDepend('BSP_USING_ADC'): src += ['drv_adc.c'] diff --git a/bsp/bouffalo_lab/libraries/rt_drivers/drv_soft_i2c.c b/bsp/bouffalo_lab/libraries/rt_drivers/drv_soft_i2c.c deleted file mode 100644 index 5a4ad8bb50d..00000000000 --- a/bsp/bouffalo_lab/libraries/rt_drivers/drv_soft_i2c.c +++ /dev/null @@ -1,291 +0,0 @@ -/* - * Copyright (c) 2006-2023, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2023/04/15 chushicheng first version - */ - -#include "drv_soft_i2c.h" -#include "bflb_gpio.h" -#include "bflb_common.h" - -#ifdef BSP_USING_SOFT_I2C1 - -#define DBG_LEVEL DBG_LOG -#include -#define LOG_TAG "DRV.I2C" - -// i2c1 -#ifdef SOFT_I2C1_SCL_USING_GPIO0 -#define BSP_I2C1_SCL_PIN GPIO_PIN_0 -#elif defined(SOFT_I2C1_SCL_USING_GPIO2) -#define BSP_I2C1_SCL_PIN GPIO_PIN_2 -#elif defined(SOFT_I2C1_SCL_USING_GPIO4) -#define BSP_I2C1_SCL_PIN GPIO_PIN_4 -#elif defined(SOFT_I2C1_SCL_USING_GPIO6) -#define BSP_I2C1_SCL_PIN GPIO_PIN_6 -#elif defined(SOFT_I2C1_SCL_USING_GPIO8) -#define BSP_I2C1_SCL_PIN GPIO_PIN_8 -#elif defined(SOFT_I2C1_SCL_USING_GPIO10) -#define BSP_I2C1_SCL_PIN GPIO_PIN_10 -#elif defined(SOFT_I2C1_SCL_USING_GPIO12) -#define BSP_I2C1_SCL_PIN GPIO_PIN_12 -#elif defined(SOFT_I2C1_SCL_USING_GPIO14) -#define BSP_I2C1_SCL_PIN GPIO_PIN_14 -#elif defined(SOFT_I2C1_SCL_USING_GPIO16) -#define BSP_I2C1_SCL_PIN GPIO_PIN_16 -#elif defined(SOFT_I2C1_SCL_USING_GPIO18) -#define BSP_I2C1_SCL_PIN GPIO_PIN_18 -#elif defined(SOFT_I2C1_SCL_USING_GPIO20) -#define BSP_I2C1_SCL_PIN GPIO_PIN_20 -#elif defined(SOFT_I2C1_SCL_USING_GPIO22) -#define BSP_I2C1_SCL_PIN GPIO_PIN_22 -#elif defined(SOFT_I2C1_SCL_USING_GPIO24) -#define BSP_I2C1_SCL_PIN GPIO_PIN_24 -#elif defined(SOFT_I2C1_SCL_USING_GPIO26) -#define BSP_I2C1_SCL_PIN GPIO_PIN_26 -#elif defined(SOFT_I2C1_SCL_USING_GPIO28) -#define BSP_I2C1_SCL_PIN GPIO_PIN_28 -#elif defined(SOFT_I2C1_SCL_USING_GPIO30) -#define BSP_I2C1_SCL_PIN GPIO_PIN_30 -#elif defined(SOFT_I2C1_SCL_USING_GPIO32) -#define BSP_I2C1_SCL_PIN GPIO_PIN_32 -#elif defined(SOFT_I2C1_SCL_USING_GPIO34) -#define BSP_I2C1_SCL_PIN GPIO_PIN_34 -#elif defined(SOFT_I2C1_SCL_USING_GPIO36) -#define BSP_I2C1_SCL_PIN GPIO_PIN_36 -#elif defined(SOFT_I2C1_SCL_USING_GPIO38) -#define BSP_I2C1_SCL_PIN GPIO_PIN_38 -#elif defined(SOFT_I2C1_SCL_USING_GPIO40) -#define BSP_I2C1_SCL_PIN GPIO_PIN_40 -#elif defined(SOFT_I2C1_SCL_USING_GPIO42) -#define BSP_I2C1_SCL_PIN GPIO_PIN_42 -#elif defined(SOFT_I2C1_SCL_USING_GPIO44) -#define BSP_I2C1_SCL_PIN GPIO_PIN_44 -#endif - -#ifdef SOFT_I2C1_SDA_USING_GPIO1 -#define BSP_I2C1_SDA_PIN GPIO_PIN_1 -#elif defined(SOFT_I2C1_SDA_USING_GPIO3) -#define BSP_I2C1_SDA_PIN GPIO_PIN_3 -#elif defined(SOFT_I2C1_SDA_USING_GPIO5) -#define BSP_I2C1_SDA_PIN GPIO_PIN_5 -#elif defined(SOFT_I2C1_SDA_USING_GPIO7) -#define BSP_I2C1_SDA_PIN GPIO_PIN_7 -#elif defined(SOFT_I2C1_SDA_USING_GPIO9) -#define BSP_I2C1_SDA_PIN GPIO_PIN_9 -#elif defined(SOFT_I2C1_SDA_USING_GPIO11) -#define BSP_I2C1_SDA_PIN GPIO_PIN_11 -#elif defined(SOFT_I2C1_SDA_USING_GPIO13) -#define BSP_I2C1_SDA_PIN GPIO_PIN_13 -#elif defined(SOFT_I2C1_SDA_USING_GPIO15) -#define BSP_I2C1_SDA_PIN GPIO_PIN_15 -#elif defined(SOFT_I2C1_SDA_USING_GPIO17) -#define BSP_I2C1_SDA_PIN GPIO_PIN_17 -#elif defined(SOFT_I2C1_SDA_USING_GPIO19) -#define BSP_I2C1_SDA_PIN GPIO_PIN_19 -#elif defined(SOFT_I2C1_SDA_USING_GPIO21) -#define BSP_I2C1_SDA_PIN GPIO_PIN_21 -#elif defined(SOFT_I2C1_SDA_USING_GPIO23) -#define BSP_I2C1_SDA_PIN GPIO_PIN_23 -#elif defined(SOFT_I2C1_SDA_USING_GPIO25) -#define BSP_I2C1_SDA_PIN GPIO_PIN_25 -#elif defined(SOFT_I2C1_SDA_USING_GPIO27) -#define BSP_I2C1_SDA_PIN GPIO_PIN_27 -#elif defined(SOFT_I2C1_SDA_USING_GPIO29) -#define BSP_I2C1_SDA_PIN GPIO_PIN_29 -#elif defined(SOFT_I2C1_SDA_USING_GPIO31) -#define BSP_I2C1_SDA_PIN GPIO_PIN_31 -#elif defined(SOFT_I2C1_SDA_USING_GPIO33) -#define BSP_I2C1_SDA_PIN GPIO_PIN_33 -#elif defined(SOFT_I2C1_SDA_USING_GPIO35) -#define BSP_I2C1_SDA_PIN GPIO_PIN_35 -#elif defined(SOFT_I2C1_SDA_USING_GPIO37) -#define BSP_I2C1_SDA_PIN GPIO_PIN_37 -#elif defined(SOFT_I2C1_SDA_USING_GPIO39) -#define BSP_I2C1_SDA_PIN GPIO_PIN_39 -#elif defined(SOFT_I2C1_SDA_USING_GPIO41) -#define BSP_I2C1_SDA_PIN GPIO_PIN_41 -#elif defined(SOFT_I2C1_SDA_USING_GPIO43) -#define BSP_I2C1_SDA_PIN GPIO_PIN_43 -#elif defined(SOFT_I2C1_SDA_USING_GPIO45) -#define BSP_I2C1_SDA_PIN GPIO_PIN_45 -#endif - -static const struct bl_soft_i2c_config soft_i2c_config[] = -{ -#ifdef BSP_USING_SOFT_I2C1 - I2C1_BUS_CONFIG, -#endif -}; - -static struct bl_i2c i2c_obj[sizeof(soft_i2c_config) / sizeof(soft_i2c_config[0])]; - -/** - * This function initializes the i2c pin. - * - * @param bl i2c dirver class. - */ -static void bl_i2c_gpio_init(struct bl_i2c *i2c) -{ - struct bl_soft_i2c_config* cfg = (struct bl_soft_i2c_config*)i2c->ops.data; - - rt_pin_mode(cfg->scl, PIN_MODE_OUTPUT_OD); - rt_pin_mode(cfg->sda, PIN_MODE_OUTPUT_OD); - - rt_pin_write(cfg->scl, PIN_HIGH); - rt_pin_write(cfg->sda, PIN_HIGH); -} - -static void bl_i2c_pin_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct bl_i2c); - - for(rt_size_t i = 0; i < obj_num; i++) - { - bl_i2c_gpio_init(&i2c_obj[i]); - } -} - -/** - * This function sets the sda pin. - * - * @param bl config class. - * @param The sda pin state. - */ -static void bl_set_sda(void *data, rt_int32_t state) -{ - struct bl_soft_i2c_config* cfg = (struct bl_soft_i2c_config*)data; - if (state) - { - rt_pin_write(cfg->sda, PIN_HIGH); - } - else - { - rt_pin_write(cfg->sda, PIN_LOW); - } -} - -/** - * This function sets the scl pin. - * - * @param bl config class. - * @param The scl pin state. - */ -static void bl_set_scl(void *data, rt_int32_t state) -{ - struct bl_soft_i2c_config* cfg = (struct bl_soft_i2c_config*)data; - if (state) - { - rt_pin_write(cfg->scl, PIN_HIGH); - } - else - { - rt_pin_write(cfg->scl, PIN_LOW); - } -} - -/** - * This function gets the sda pin state. - * - * @param The sda pin state. - */ -static rt_int32_t bl_get_sda(void *data) -{ - struct bl_soft_i2c_config* cfg = (struct bl_soft_i2c_config*)data; - return rt_pin_read(cfg->sda); -} - -/** - * This function gets the scl pin state. - * - * @param The scl pin state. - */ -static rt_int32_t bl_get_scl(void *data) -{ - struct bl_soft_i2c_config* cfg = (struct bl_soft_i2c_config*)data; - return rt_pin_read(cfg->scl); -} - -/** - * The time delay function. - * - * @param microseconds. - */ -static void bl_udelay(rt_uint32_t us) -{ - bflb_mtimer_delay_us(us); -} - -static const struct rt_i2c_bit_ops bl_bit_ops_default = -{ - .data = RT_NULL, - .pin_init = bl_i2c_pin_init, - .set_sda = bl_set_sda, - .set_scl = bl_set_scl, - .get_sda = bl_get_sda, - .get_scl = bl_get_scl, - .udelay = bl_udelay, - .delay_us = 1, - .timeout = 100, - .i2c_pin_init_flag = RT_FALSE -}; - -/** - * if i2c is locked, this function will unlock it - * - * @param bl config class - * - * @return RT_EOK indicates successful unlock. - */ -static rt_err_t bl_i2c_bus_unlock(const struct bl_soft_i2c_config *cfg) -{ - rt_int32_t i = 0; - - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - while (i++ < 9) - { - rt_pin_write(cfg->scl, PIN_HIGH); - bl_udelay(100); - rt_pin_write(cfg->scl, PIN_LOW); - bl_udelay(100); - } - } - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - return -RT_ERROR; - } - - return RT_EOK; -} - -/* I2C initialization function */ -int rt_hw_i2c_init(void) -{ - rt_err_t result; - - for (rt_size_t i = 0; i < sizeof(i2c_obj) / sizeof(struct bl_i2c); i++) - { - i2c_obj[i].ops = bl_bit_ops_default; - i2c_obj[i].ops.data = (void*)&soft_i2c_config[i]; - i2c_obj[i].i2c_bus.priv = &i2c_obj[i].ops; - - result = rt_i2c_bit_add_bus(&i2c_obj[i].i2c_bus, soft_i2c_config[i].bus_name); - RT_ASSERT(result == RT_EOK); - bl_i2c_bus_unlock(&soft_i2c_config[i]); - - LOG_D("software simulation %s init done, pin scl: %d, pin sda %d", - soft_i2c_config[i].bus_name, - soft_i2c_config[i].scl, - soft_i2c_config[i].sda); - } - - return RT_EOK; -} -INIT_BOARD_EXPORT(rt_hw_i2c_init); - -#endif /* BSP_USING_SOFT_I2C1 */ diff --git a/bsp/bouffalo_lab/libraries/rt_drivers/drv_soft_i2c.h b/bsp/bouffalo_lab/libraries/rt_drivers/drv_soft_i2c.h deleted file mode 100644 index 3275c2c4c67..00000000000 --- a/bsp/bouffalo_lab/libraries/rt_drivers/drv_soft_i2c.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2006-2023, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2023/04/15 chushicheng first version - */ - -#ifndef __DRV_I2C__ -#define __DRV_I2C__ - -#include -#include -#include - -/* bl i2c dirver class */ -struct bl_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device i2c_bus; -}; - -/* bl config class */ -struct bl_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; - -#ifdef BSP_USING_SOFT_I2C1 -#define I2C1_BUS_CONFIG \ - { \ - .scl = BSP_I2C1_SCL_PIN, \ - .sda = BSP_I2C1_SDA_PIN, \ - .bus_name = "i2c1", \ - } -#endif - -int rt_hw_i2c_init(void); - -#endif diff --git a/bsp/cvitek/c906_little/board/Kconfig b/bsp/cvitek/c906_little/board/Kconfig index 104648aa698..6d24570dc6f 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 d0cb78020e9..9cef1897996 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 704e728356a..985ba83a56e 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 00000000000..08f15d590b4 --- /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 abd9f94bc6f..6fb9ad4758c 100644 --- a/bsp/gd32/risc-v/gd32vf103r-start/board/Kconfig +++ b/bsp/gd32/risc-v/gd32vf103r-start/board/Kconfig @@ -99,23 +99,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 25 - endif - menuconfig BSP_USING_ADC bool "Enable ADC" default n diff --git a/bsp/gd32/risc-v/gd32vf103v-eval/.ci/attachconfig/ci.attachconfig.yml b/bsp/gd32/risc-v/gd32vf103v-eval/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..08f15d590b4 --- /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 421d2da24fa..f852fe3f26b 100644 --- a/bsp/gd32/risc-v/gd32vf103v-eval/board/Kconfig +++ b/bsp/gd32/risc-v/gd32vf103v-eval/board/Kconfig @@ -99,23 +99,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 25 - endif - menuconfig BSP_USING_ADC bool "Enable ADC" default n diff --git a/bsp/gd32/risc-v/libraries/gd32_drivers/SConscript b/bsp/gd32/risc-v/libraries/gd32_drivers/SConscript index 05e694d9e2a..4de168c8350 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 b149131c5c7..00000000000 --- a/bsp/gd32/risc-v/libraries/gd32_drivers/drv_soft_i2c.c +++ /dev/null @@ -1,212 +0,0 @@ -/* - * Copyright (c) 2006-2022, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2022-06-04 BruceOu the first version - */ -#include "drv_soft_i2c.h" - -#ifdef RT_USING_I2C - -#define LOG_TAG "drv.i2c" -#include - -#if !defined(BSP_USING_I2C0) && !defined(BSP_USING_I2C1) && !defined(BSP_USING_I2C2) && !defined(BSP_USING_I2C3) -#error "Please define at least one BSP_USING_I2Cx" -/* this driver can be disabled at menuconfig → RT-Thread Components → Device Drivers */ -#endif - -static const struct gd32_soft_i2c_config soft_i2c_config[] = -{ -#ifdef BSP_USING_I2C0 - I2C0_BUS_CONFIG, -#endif -#ifdef BSP_USING_I2C1 - I2C1_BUS_CONFIG, -#endif -#ifdef BSP_USING_I2C2 - I2C2_BUS_CONFIG, -#endif -#ifdef BSP_USING_I2C3 - I2C3_BUS_CONFIG, -#endif -}; - -static struct gd32_i2c i2c_obj[sizeof(soft_i2c_config) / sizeof(soft_i2c_config[0])]; - -/** - * @brief This function initializes the i2c pin. - * @param i2c - * @retval None - */ -static void gd32_i2c_gpio_init(struct gd32_i2c *i2c) -{ - struct gd32_soft_i2c_config* cfg = (struct gd32_soft_i2c_config*)i2c->ops.data; - - rt_pin_mode(cfg->scl, PIN_MODE_OUTPUT_OD); - rt_pin_mode(cfg->sda, PIN_MODE_OUTPUT_OD); - - rt_pin_write(cfg->scl, PIN_HIGH); - rt_pin_write(cfg->sda, PIN_HIGH); -} - -static void gd32_i2c_pin_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct gd32_i2c); - - for(rt_size_t i = 0; i < obj_num; i++) - { - gd32_i2c_gpio_init(&i2c_obj[i]); - } -} - -/** - * @brief This function sets the sda pin. - * @param data, state - * @retval None - */ -static void gd32_set_sda(void *data, rt_int32_t state) -{ - struct gd32_soft_i2c_config* cfg = (struct gd32_soft_i2c_config*)data; - if (state) - { - rt_pin_write(cfg->sda, PIN_HIGH); - } - else - { - rt_pin_write(cfg->sda, PIN_LOW); - } -} - -/** - * @brief This function sets the scl pin. - * @param data, state - * @retval None - */ -static void gd32_set_scl(void *data, rt_int32_t state) -{ - struct gd32_soft_i2c_config* cfg = (struct gd32_soft_i2c_config*)data; - if (state) - { - rt_pin_write(cfg->scl, PIN_HIGH); - } - else - { - rt_pin_write(cfg->scl, PIN_LOW); - } -} - -/** - * @brief This function gets the sda pin state. - * @param data - * @retval None - */ -static rt_int32_t gd32_get_sda(void *data) -{ - struct gd32_soft_i2c_config* cfg = (struct gd32_soft_i2c_config*)data; - return rt_pin_read(cfg->sda); -} - - -/** - * @brief This function gets the scl pin state. - * @param data - * @retval None - */ -static rt_int32_t gd32_get_scl(void *data) -{ - struct gd32_soft_i2c_config* cfg = (struct gd32_soft_i2c_config*)data; - return rt_pin_read(cfg->scl); -} - -/** - * @brief The time delay function. - * @param us - * @retval None - */ -static void gd32_udelay(rt_uint32_t us) -{ - int i = ( rcu_clock_freq_get(CK_SYS) / 4000000 * us); - while(i) - { - i--; - } -} - -static const struct rt_i2c_bit_ops gd32_bit_ops_default = -{ - .data = RT_NULL, - .pin_init = gd32_i2c_pin_init, - .set_sda = gd32_set_sda, - .set_scl = gd32_set_scl, - .get_sda = gd32_get_sda, - .get_scl = gd32_get_scl, - .udelay = gd32_udelay, - .delay_us = 1, - .timeout = 100, - .i2c_pin_init_flag = RT_FALSE -}; - -/** - * @brief if i2c is locked, this function will unlock it - * @param cfg - * @retval RT_EOK indicates successful unlock. - */ -static rt_err_t gd32_i2c_bus_unlock(const struct gd32_soft_i2c_config *cfg) -{ - rt_int32_t i = 0; - - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - while (i++ < 9) - { - rt_pin_write(cfg->scl, PIN_HIGH); - gd32_udelay(100); - rt_pin_write(cfg->scl, PIN_LOW); - gd32_udelay(100); - } - } - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - return -RT_ERROR; - } - - return RT_EOK; -} - -/** - * @brief I2C initialization function - * @param None - * @retval RT_EOK indicates successful initialization. - */ -int rt_hw_i2c_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct gd32_i2c); - rt_err_t result; - - for (rt_size_t = 0; i < obj_num; i++) - { - i2c_obj[i].ops = gd32_bit_ops_default; - i2c_obj[i].ops.data = (void*)&soft_i2c_config[i]; - i2c_obj[i].i2c_bus.priv = &i2c_obj[i].ops; - - result = rt_i2c_bit_add_bus(&i2c_obj[i].i2c_bus, soft_i2c_config[i].bus_name); - - RT_ASSERT(result == RT_EOK); - - gd32_i2c_bus_unlock(&soft_i2c_config[i]); - - LOG_D("software simulation %s init done, pin scl: %d, pin sda %d", - soft_i2c_config[i].bus_name, - soft_i2c_config[i].scl, - soft_i2c_config[i].sda); - } - - return RT_EOK; -} -INIT_BOARD_EXPORT(rt_hw_i2c_init); - -#endif /* RT_USING_I2C */ diff --git a/bsp/gd32/risc-v/libraries/gd32_drivers/drv_soft_i2c.h b/bsp/gd32/risc-v/libraries/gd32_drivers/drv_soft_i2c.h deleted file mode 100644 index af91af4c97b..00000000000 --- a/bsp/gd32/risc-v/libraries/gd32_drivers/drv_soft_i2c.h +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright (c) 2006-2022, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2022-06-04 BruceOu the first version - */ - -#ifndef __DRV_I2C__ -#define __DRV_I2C__ - -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* gd32 config class */ -struct gd32_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; - -/* gd32 i2c dirver class */ -struct gd32_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device i2c_bus; -}; - -#ifdef BSP_USING_I2C0 -#define I2C4_BUS_CONFIG \ - { \ - .scl = BSP_I2C0_SCL_PIN, \ - .sda = BSP_I2C0_SDA_PIN, \ - .bus_name = "i2c0", \ - } -#endif - -#ifdef BSP_USING_I2C1 -#define I2C1_BUS_CONFIG \ - { \ - .scl = BSP_I2C1_SCL_PIN, \ - .sda = BSP_I2C1_SDA_PIN, \ - .bus_name = "i2c1", \ - } -#endif - -#ifdef BSP_USING_I2C2 -#define I2C2_BUS_CONFIG \ - { \ - .scl = BSP_I2C2_SCL_PIN, \ - .sda = BSP_I2C2_SDA_PIN, \ - .bus_name = "i2c2", \ - } -#endif - -#ifdef BSP_USING_I2C3 -#define I2C3_BUS_CONFIG \ - { \ - .scl = BSP_I2C3_SCL_PIN, \ - .sda = BSP_I2C3_SDA_PIN, \ - .bus_name = "i2c3", \ - } -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* __DRV_I2C__ */ diff --git a/bsp/hc32/ev_hc32f334_lqfp64/.ci/attachconfig/ci.attachconfig.yml b/bsp/hc32/ev_hc32f334_lqfp64/.ci/attachconfig/ci.attachconfig.yml index 84e83f68114..6bb37f466ef 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 a0367487403..6d225065f43 100644 --- a/bsp/hc32/ev_hc32f334_lqfp64/board/Kconfig +++ b/bsp/hc32/ev_hc32f334_lqfp64/board/Kconfig @@ -183,24 +183,6 @@ 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 - endif - if BSP_USING_I2C config BSP_I2C_USING_DMA bool 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 7eb2f098c02..8f43fa9185e 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 76940804952..fd21828c282 100644 --- a/bsp/hc32/ev_hc32f448_lqfp80/board/Kconfig +++ b/bsp/hc32/ev_hc32f448_lqfp80/board/Kconfig @@ -232,24 +232,6 @@ 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 - endif - if BSP_USING_I2C config BSP_I2C_USING_DMA bool 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 047a4483ef7..29e49fdacf8 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 b2fab38d89e..b75691f84a4 100644 --- a/bsp/hc32/ev_hc32f460_lqfp100_v2/board/Kconfig +++ b/bsp/hc32/ev_hc32f460_lqfp100_v2/board/Kconfig @@ -176,24 +176,6 @@ 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 - endif - 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 7ec37e6f4a7..a148ec86ed4 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 0c31a20cd01..726a170c219 100644 --- a/bsp/hc32/ev_hc32f472_lqfp100/board/Kconfig +++ b/bsp/hc32/ev_hc32f472_lqfp100/board/Kconfig @@ -232,24 +232,6 @@ 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 - endif - if BSP_USING_I2C config BSP_I2C_USING_DMA bool 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 d4a7b92a9dc..2e97d3d210d 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 79cb785cbc0..a2c5543abbb 100644 --- a/bsp/hc32/ev_hc32f4a0_lqfp176/board/Kconfig +++ b/bsp/hc32/ev_hc32f4a0_lqfp176/board/Kconfig @@ -357,24 +357,6 @@ 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 - endif - 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 e5798b47293..1310d2c1538 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 9d0e00a67cf..eea4988919a 100644 --- a/bsp/hc32/ev_hc32f4a8_lqfp176/board/Kconfig +++ b/bsp/hc32/ev_hc32f4a8_lqfp176/board/Kconfig @@ -346,24 +346,6 @@ 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 - endif - if BSP_USING_I2C config BSP_I2C_USING_DMA bool 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 00000000000..bf1a5ff7584 --- /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 6c91f7e6603..3760dca54c2 100644 --- a/bsp/hc32/lckfb-hc32f4a0-lqfp100/board/Kconfig +++ b/bsp/hc32/lckfb-hc32f4a0-lqfp100/board/Kconfig @@ -353,24 +353,6 @@ 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 - endif - if BSP_USING_I2C config BSP_I2C_USING_DMA bool diff --git a/bsp/hc32/libraries/hc32_drivers/SConscript b/bsp/hc32/libraries/hc32_drivers/SConscript index 3edb6bc1c80..9e0ed1a5029 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 cbf6c76b9bb..00000000000 --- a/bsp/hc32/libraries/hc32_drivers/drv_soft_i2c.c +++ /dev/null @@ -1,264 +0,0 @@ -/* - * Copyright (C) 2022-2024, Xiaohua Semiconductor Co., Ltd. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2022-04-28 CDT first version - */ - -/******************************************************************************* - * Include files - ******************************************************************************/ -#include "drv_soft_i2c.h" -#include "board_config.h" - -#if defined(RT_USING_I2C) - -#if defined(BSP_USING_I2C1_SW) || defined(BSP_USING_I2C2_SW) || defined(BSP_USING_I2C3_SW) || \ - defined(BSP_USING_I2C4_SW) || defined(BSP_USING_I2C5_SW) || defined(BSP_USING_I2C6_SW) - -/******************************************************************************* - * Local type definitions ('typedef') - ******************************************************************************/ - -/******************************************************************************* - * Local pre-processor symbols/macros ('#define') - ******************************************************************************/ -//#define DRV_DEBUG -#define LOG_TAG "drv.i2c" -#include - -/******************************************************************************* - * Global variable definitions (declared in header file with 'extern') - ******************************************************************************/ - -/******************************************************************************* - * Local function prototypes ('static') - ******************************************************************************/ - -/******************************************************************************* - * Local variable definitions ('static') - ******************************************************************************/ - -static const struct hc32_soft_i2c_config soft_i2c_config[] = -{ -#ifdef BSP_USING_I2C1_SW - I2C1_BUS_CONFIG, -#endif -#ifdef BSP_USING_I2C2_SW - I2C2_BUS_CONFIG, -#endif -#ifdef BSP_USING_I2C3_SW - I2C3_BUS_CONFIG, -#endif -#ifdef BSP_USING_I2C4_SW - I2C4_BUS_CONFIG, -#endif -#ifdef BSP_USING_I2C5_SW - I2C5_BUS_CONFIG, -#endif -#ifdef BSP_USING_I2C6_SW - I2C6_BUS_CONFIG, -#endif -}; - -static struct hc32_soft_i2c i2c_obj[sizeof(soft_i2c_config) / sizeof(soft_i2c_config[0])]; - -/******************************************************************************* - * Function implementation - global ('extern') and local ('static') - ******************************************************************************/ -/** - * This function initializes the i2c pin. - * - * @param Hc32 i2c driver class. - */ -static void hc32_i2c_gpio_init(struct hc32_soft_i2c *i2c) -{ - struct hc32_soft_i2c_config *cfg = (struct hc32_soft_i2c_config *)i2c->ops.data; - - rt_pin_mode(cfg->scl_pin, PIN_MODE_OUTPUT_OD); - rt_pin_mode(cfg->sda_pin, PIN_MODE_OUTPUT_OD); - rt_pin_write(cfg->scl_pin, PIN_HIGH); - rt_pin_write(cfg->sda_pin, PIN_HIGH); -} - -static void hc32_i2c_pin_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct hc32_soft_i2c); - - for (rt_size_t i = 0; i < obj_num; i++) - { - hc32_i2c_gpio_init(&i2c_obj[i]); - } -} - -/** - * This function sets the sda pin. - * - * @param Hc32 config class. - * @param The sda pin state. - */ -static void hc32_set_sda(void *data, rt_int32_t state) -{ - struct hc32_soft_i2c_config *cfg = (struct hc32_soft_i2c_config *)data; - - if (state) - { - rt_pin_write(cfg->sda_pin, PIN_HIGH); - } - else - { - rt_pin_write(cfg->sda_pin, PIN_LOW); - } -} - -/** - * This function sets the scl pin. - * - * @param Hc32 config class. - * @param The scl pin state. - */ -static void hc32_set_scl(void *data, rt_int32_t state) -{ - struct hc32_soft_i2c_config *cfg = (struct hc32_soft_i2c_config *)data; - - if (state) - { - rt_pin_write(cfg->scl_pin, PIN_HIGH); - } - else - { - rt_pin_write(cfg->scl_pin, PIN_LOW); - } -} - -/** - * This function gets the sda pin state. - * - * @param The sda pin state. - */ -static rt_int32_t hc32_get_sda(void *data) -{ - struct hc32_soft_i2c_config *cfg = (struct hc32_soft_i2c_config *)data; - return rt_pin_read(cfg->sda_pin); -} - -/** - * This function gets the scl pin state. - * - * @param The scl pin state. - */ -static rt_int32_t hc32_get_scl(void *data) -{ - struct hc32_soft_i2c_config *cfg = (struct hc32_soft_i2c_config *)data; - return rt_pin_read(cfg->scl_pin); -} - -/** - * The time delay function. - * - * @param microseconds. - */ -static void hc32_udelay(rt_uint32_t us) -{ - rt_uint32_t ticks; - rt_uint32_t told, tnow, tcnt = 0; - rt_uint32_t reload = SysTick->LOAD; - - ticks = us * reload / (1000000 / RT_TICK_PER_SECOND); - told = SysTick->VAL; - while (1) - { - tnow = SysTick->VAL; - if (tnow != told) - { - if (tnow < told) - { - tcnt += told - tnow; - } - else - { - tcnt += reload - tnow + told; - } - told = tnow; - if (tcnt >= ticks) - { - break; - } - } - } -} - -static const struct rt_i2c_bit_ops hc32_bit_ops_default = -{ - .data = RT_NULL, - .pin_init = 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 a16b9d0d37f..00000000000 --- a/bsp/hc32/libraries/hc32_drivers/drv_soft_i2c.h +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright (C) 2022-2024, Xiaohua Semiconductor Co., Ltd. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2022-04-28 CDT first version - */ - -#ifndef __DRV_I2C_SOFT_H__ -#define __DRV_I2C_SOFT_H__ - -/******************************************************************************* - * Include files - ******************************************************************************/ -#include - -/* C binding of definitions if building with C++ compiler */ -#ifdef __cplusplus -extern "C" -{ -#endif - -/******************************************************************************* - * Global type definitions ('typedef') - ******************************************************************************/ -struct hc32_soft_i2c_config -{ - rt_uint16_t scl_pin; - rt_uint16_t sda_pin; - const char *bus_name; -}; - -struct hc32_soft_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device i2c_bus; -}; - -#ifdef BSP_USING_I2C1_SW -#define I2C1_BUS_CONFIG \ - { \ - .scl_pin = BSP_I2C1_SCL_PIN, \ - .sda_pin = BSP_I2C1_SDA_PIN, \ - .bus_name = "i2c1_sw", \ - } -#endif - -#ifdef BSP_USING_I2C2_SW -#define I2C2_BUS_CONFIG \ - { \ - .scl_pin = BSP_I2C2_SCL_PIN, \ - .sda_pin = BSP_I2C2_SDA_PIN, \ - .bus_name = "i2c2_sw", \ - } -#endif - -#ifdef BSP_USING_I2C3_SW -#define I2C3_BUS_CONFIG \ - { \ - .scl_pin = BSP_I2C3_SCL_PIN, \ - .sda_pin = BSP_I2C3_SDA_PIN, \ - .bus_name = "i2c3_sw", \ - } -#endif - -#ifdef BSP_USING_I2C4_SW -#define I2C4_BUS_CONFIG \ - { \ - .scl_pin = BSP_I2C4_SCL_PIN, \ - .sda_pin = BSP_I2C4_SDA_PIN, \ - .bus_name = "i2c4_sw", \ - } -#endif - -#ifdef BSP_USING_I2C5_SW -#define I2C5_BUS_CONFIG \ - { \ - .scl_pin = BSP_I2C5_SCL_PIN, \ - .sda_pin = BSP_I2C5_SDA_PIN, \ - .bus_name = "i2c5_sw", \ - } -#endif - -#ifdef BSP_USING_I2C6_SW -#define I2C6_BUS_CONFIG \ - { \ - .scl_pin = BSP_I2C6_SCL_PIN, \ - .sda_pin = BSP_I2C6_SDA_PIN, \ - .bus_name = "i2c6_sw", \ - } -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* __DRV_SOFT_I2C_H__ */ - -/******************************************************************************* - * EOF (not truncated) - ******************************************************************************/ diff --git a/bsp/hc32/tests/SConscript b/bsp/hc32/tests/SConscript index 3733761301b..de2f334fd74 100644 --- a/bsp/hc32/tests/SConscript +++ b/bsp/hc32/tests/SConscript @@ -22,7 +22,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 4cce95dabde..72591571493 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) @@ -304,7 +304,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 00000000000..bf1a5ff7584 --- /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 641c61c83aa..ba69df8086d 100644 --- a/bsp/hc32l136/board/Kconfig +++ b/bsp/hc32l136/board/Kconfig @@ -31,23 +31,6 @@ menu "On-chip Peripheral Drivers" default y endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default y - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 176 - default 51 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 176 - default 90 - endif - endmenu menu "Board extended module Drivers" diff --git a/bsp/hc32l136/drivers/SConscript b/bsp/hc32l136/drivers/SConscript index 951195c3d74..0258ca131b8 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 00000000000..41fd8a8a94e --- /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 e3e8e27c2fa..9080a92d2f1 100644 --- a/bsp/hk32/hk32f030c8-mini/board/Kconfig +++ b/bsp/hk32/hk32f030c8-mini/board/Kconfig @@ -102,42 +102,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 25 - endif - - config BSP_USING_I2C2 - bool "Enable I2C2 BUS (software simulation)" - default n - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - endif - menuconfig BSP_USING_ADC bool "Enable ADC" default n diff --git a/bsp/hk32/libraries/rt_drivers/SConscript b/bsp/hk32/libraries/rt_drivers/SConscript index c816e2c8fbd..6947366c4ed 100644 --- a/bsp/hk32/libraries/rt_drivers/SConscript +++ b/bsp/hk32/libraries/rt_drivers/SConscript @@ -27,10 +27,6 @@ if GetDepend(['BSP_USING_SPI']): if GetDepend(['BSP_USING_ETH', 'RT_USING_LWIP']): src += ['drv_eth.c'] -if GetDepend(['RT_USING_I2C', 'RT_USING_I2C_BITOPS']): - if GetDepend('BSP_USING_I2C1') or GetDepend('BSP_USING_I2C2') or GetDepend('BSP_USING_I2C3') or GetDepend('BSP_USING_I2C4'): - src += ['drv_soft_i2c.c'] - if GetDepend(['BSP_USING_ADC']): src += Glob('drv_adc.c') diff --git a/bsp/hk32/libraries/rt_drivers/drv_soft_i2c.c b/bsp/hk32/libraries/rt_drivers/drv_soft_i2c.c deleted file mode 100644 index 6daf5b30a38..00000000000 --- a/bsp/hk32/libraries/rt_drivers/drv_soft_i2c.c +++ /dev/null @@ -1,232 +0,0 @@ -/* - * Copyright (c) 2006-2021, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2021-08-15 Jonas first version - */ - -#include -#include "drv_soft_i2c.h" - -#ifdef RT_USING_I2C - -#define LOG_TAG "drv.i2c" -#include - -#if !defined(BSP_USING_I2C1) && !defined(BSP_USING_I2C2) && !defined(BSP_USING_I2C3) && !defined(BSP_USING_I2C4) - #error "Please define at least one BSP_USING_I2Cx" - /* this driver can be disabled at menuconfig -> RT-Thread Components -> Device Drivers */ -#endif - -static const struct hk32_soft_i2c_config soft_i2c_config[] = -{ -#ifdef BSP_USING_I2C1 - I2C1_BUS_CONFIG, -#endif -#ifdef BSP_USING_I2C2 - I2C2_BUS_CONFIG, -#endif -#ifdef BSP_USING_I2C3 - I2C3_BUS_CONFIG, -#endif -#ifdef BSP_USING_I2C4 - I2C4_BUS_CONFIG, -#endif -}; - -static struct hk32_i2c i2c_obj[sizeof(soft_i2c_config) / sizeof(soft_i2c_config[0])]; - -/** - * This function initializes the i2c pin. - * - * @param hk32 i2c dirver class. - */ -static void hk32_i2c_gpio_init(struct hk32_i2c *i2c) -{ - struct hk32_soft_i2c_config *cfg = (struct hk32_soft_i2c_config *)i2c->ops.data; - - rt_pin_mode(cfg->scl, PIN_MODE_OUTPUT_OD); - rt_pin_mode(cfg->sda, PIN_MODE_OUTPUT_OD); - - rt_pin_write(cfg->scl, PIN_HIGH); - rt_pin_write(cfg->sda, PIN_HIGH); -} - -static void hk32_i2c_pin_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct hk32_i2c); - - for(rt_size_t i = 0; i < obj_num; i++) - { - hk32_i2c_gpio_init(&i2c_obj[i]); - } -} - -/** - * This function sets the sda pin. - * - * @param hk32 config class. - * @param The sda pin state. - */ -static void hk32_set_sda(void *data, rt_int32_t state) -{ - struct hk32_soft_i2c_config *cfg = (struct hk32_soft_i2c_config *)data; - if (state) - { - rt_pin_write(cfg->sda, PIN_HIGH); - } - else - { - rt_pin_write(cfg->sda, PIN_LOW); - } -} - -/** - * This function sets the scl pin. - * - * @param hk32 config class. - * @param The scl pin state. - */ -static void hk32_set_scl(void *data, rt_int32_t state) -{ - struct hk32_soft_i2c_config *cfg = (struct hk32_soft_i2c_config *)data; - if (state) - { - rt_pin_write(cfg->scl, PIN_HIGH); - } - else - { - rt_pin_write(cfg->scl, PIN_LOW); - } -} - -/** - * This function gets the sda pin state. - * - * @param The sda pin state. - */ -static rt_int32_t hk32_get_sda(void *data) -{ - struct hk32_soft_i2c_config *cfg = (struct hk32_soft_i2c_config *)data; - return rt_pin_read(cfg->sda); -} - -/** - * This function gets the scl pin state. - * - * @param The scl pin state. - */ -static rt_int32_t hk32_get_scl(void *data) -{ - struct hk32_soft_i2c_config *cfg = (struct hk32_soft_i2c_config *)data; - return rt_pin_read(cfg->scl); -} -/** - * The time delay function. - * - * @param microseconds. - */ -static void hk32_udelay(rt_uint32_t us) -{ - rt_uint32_t ticks; - rt_uint32_t told, tnow, tcnt = 0; - rt_uint32_t reload = SysTick->LOAD; - - ticks = us * reload / (1000000 / RT_TICK_PER_SECOND); - told = SysTick->VAL; - while (1) - { - tnow = SysTick->VAL; - if (tnow != told) - { - if (tnow < told) - { - tcnt += told - tnow; - } - else - { - tcnt += reload - tnow + told; - } - told = tnow; - if (tcnt >= ticks) - { - break; - } - } - } -} - -static const struct rt_i2c_bit_ops hk32_bit_ops_default = -{ - .data = RT_NULL, - .pin_init = hk32_i2c_pin_init, - .set_sda = hk32_set_sda, - .set_scl = hk32_set_scl, - .get_sda = hk32_get_sda, - .get_scl = hk32_get_scl, - .udelay = hk32_udelay, - .delay_us = 1, - .timeout = 100, - .i2c_pin_init_flag = RT_FALSE -}; - -/** - * if i2c is locked, this function will unlock it - * - * @param hk32 config class - * - * @return RT_EOK indicates successful unlock. - */ -static rt_err_t hk32_i2c_bus_unlock(const struct hk32_soft_i2c_config *cfg) -{ - rt_int32_t i = 0; - - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - while (i++ < 9) - { - rt_pin_write(cfg->scl, PIN_HIGH); - hk32_udelay(100); - rt_pin_write(cfg->scl, PIN_LOW); - hk32_udelay(100); - } - } - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - return -RT_ERROR; - } - - return RT_EOK; -} - -/* I2C initialization function */ -int rt_hw_i2c_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct hk32_i2c); - rt_err_t result; - - for (int i = 0; i < obj_num; i++) - { - i2c_obj[i].ops = hk32_bit_ops_default; - i2c_obj[i].ops.data = (void *)&soft_i2c_config[i]; - i2c_obj[i].i2c_bus.priv = &i2c_obj[i].ops; - - result = rt_i2c_bit_add_bus(&i2c_obj[i].i2c_bus, soft_i2c_config[i].bus_name); - RT_ASSERT(result == RT_EOK); - hk32_i2c_bus_unlock(&soft_i2c_config[i]); - - LOG_D("software simulation %s init done, pin scl: %d, pin sda %d", - soft_i2c_config[i].bus_name, - soft_i2c_config[i].scl, - soft_i2c_config[i].sda); - } - - return RT_EOK; -} - -INIT_BOARD_EXPORT(rt_hw_i2c_init); - -#endif /* RT_USING_I2C */ diff --git a/bsp/hk32/libraries/rt_drivers/drv_soft_i2c.h b/bsp/hk32/libraries/rt_drivers/drv_soft_i2c.h deleted file mode 100644 index 59864f14475..00000000000 --- a/bsp/hk32/libraries/rt_drivers/drv_soft_i2c.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (c) 2006-2021, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2021-08-15 Jonas first version - */ - -#ifndef __DRV_I2C__ -#define __DRV_I2C__ - -#include -#include -#include - -/* hk32 config class */ -struct hk32_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; -/* hk32 i2c dirver class */ -struct hk32_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device i2c_bus; -}; - -#ifdef BSP_USING_I2C1 -#define I2C1_BUS_CONFIG \ - { \ - .scl = BSP_I2C1_SCL_PIN, \ - .sda = BSP_I2C1_SDA_PIN, \ - .bus_name = "i2c1", \ - } -#endif - -#ifdef BSP_USING_I2C2 -#define I2C2_BUS_CONFIG \ - { \ - .scl = BSP_I2C2_SCL_PIN, \ - .sda = BSP_I2C2_SDA_PIN, \ - .bus_name = "i2c2", \ - } -#endif - -#ifdef BSP_USING_I2C3 -#define I2C3_BUS_CONFIG \ - { \ - .scl = BSP_I2C3_SCL_PIN, \ - .sda = BSP_I2C3_SDA_PIN, \ - .bus_name = "i2c3", \ - } -#endif - -#ifdef BSP_USING_I2C4 -#define I2C4_BUS_CONFIG \ - { \ - .scl = BSP_I2C4_SCL_PIN, \ - .sda = BSP_I2C4_SDA_PIN, \ - .bus_name = "i2c4", \ - } -#endif -int rt_hw_i2c_init(void); - -#endif diff --git a/bsp/ht32/ht32f12366/.ci/attachconfig/ci.attachconfig.yml b/bsp/ht32/ht32f12366/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..b05aa7d5b6c --- /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 78fde329271..1722a0c8d97 100644 --- a/bsp/ht32/ht32f12366/board/Kconfig +++ b/bsp/ht32/ht32f12366/board/Kconfig @@ -209,70 +209,6 @@ 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 - - config BSP_I2C1_SDA_PIN - int "i2c1 sda pin number" - range 0 51 - default 25 - endif - - config BSP_USING_I2C2_SW - bool "Enable Software I2C2 Bus" - default n - config BSP_USING_I2C2_SW_NAME - depends on BSP_USING_I2C2_SW - string "software i2c2 name" - default "sw_i2c2" - if BSP_USING_I2C2_SW - config BSP_I2C2_SLC_PIN - int "i2c2 slc pin number" - range 0 51 - default 26 - - config BSP_I2C2_SDA_PIN - int "i2c2 sda pin number" - range 0 51 - default 27 - endif - endif endif menuconfig BSP_USING_ADC diff --git a/bsp/ht32/ht32f52352/.ci/attachconfig/ci.attachconfig.yml b/bsp/ht32/ht32f52352/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..b05aa7d5b6c --- /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 8ba20cd72d2..0c79cb8c22e 100644 --- a/bsp/ht32/ht32f52352/board/Kconfig +++ b/bsp/ht32/ht32f52352/board/Kconfig @@ -209,70 +209,6 @@ 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 - - config BSP_I2C1_SDA_PIN - int "i2c1 sda pin number" - range 0 51 - default 25 - endif - - config BSP_USING_I2C2_SW - bool "Enable Software I2C2 Bus" - default n - config BSP_USING_I2C2_SW_NAME - depends on BSP_USING_I2C2_SW - string "software i2c2 name" - default "sw_i2c2" - if BSP_USING_I2C2_SW - config BSP_I2C2_SLC_PIN - int "i2c2 slc pin number" - range 0 51 - default 26 - - config BSP_I2C2_SDA_PIN - int "i2c2 sda pin number" - range 0 51 - default 27 - endif - endif endif menuconfig BSP_USING_ADC diff --git a/bsp/ht32/ht32f53252/.ci/attachconfig/ci.attachconfig.yml b/bsp/ht32/ht32f53252/.ci/attachconfig/ci.attachconfig.yml index 817cf4e3d02..cd9ba3032b9 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 8ba20cd72d2..0c79cb8c22e 100644 --- a/bsp/ht32/ht32f53252/board/Kconfig +++ b/bsp/ht32/ht32f53252/board/Kconfig @@ -209,70 +209,6 @@ 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 - - config BSP_I2C1_SDA_PIN - int "i2c1 sda pin number" - range 0 51 - default 25 - endif - - config BSP_USING_I2C2_SW - bool "Enable Software I2C2 Bus" - default n - config BSP_USING_I2C2_SW_NAME - depends on BSP_USING_I2C2_SW - string "software i2c2 name" - default "sw_i2c2" - if BSP_USING_I2C2_SW - config BSP_I2C2_SLC_PIN - int "i2c2 slc pin number" - range 0 51 - default 26 - - config BSP_I2C2_SDA_PIN - int "i2c2 sda pin number" - range 0 51 - default 27 - endif - endif endif menuconfig BSP_USING_ADC diff --git a/bsp/ht32/libraries/ht32_drivers/SConscript b/bsp/ht32/libraries/ht32_drivers/SConscript index 86ba719ad98..1bb5a2d96c6 100644 --- a/bsp/ht32/libraries/ht32_drivers/SConscript +++ b/bsp/ht32/libraries/ht32_drivers/SConscript @@ -26,9 +26,6 @@ if GetDepend(['BSP_USING_SPI']): if GetDepend(['BSP_USING_I2C_HW']): src += ['drv_i2c.c'] -if GetDepend(['BSP_USING_I2C_SW']): - src += ['drv_soft_i2c.c'] - if GetDepend(['BSP_USING_ADC']): src += ['drv_adc.c'] diff --git a/bsp/ht32/libraries/ht32_drivers/drv_soft_i2c.c b/bsp/ht32/libraries/ht32_drivers/drv_soft_i2c.c deleted file mode 100644 index 269eaf5eee0..00000000000 --- a/bsp/ht32/libraries/ht32_drivers/drv_soft_i2c.c +++ /dev/null @@ -1,228 +0,0 @@ -/* - * Copyright (c) 2006-2024, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2024-05-29 QT-one first version - */ -#include -#include "drv_soft_i2c.h" - -#ifdef RT_USING_I2C -#if !defined(BSP_USING_I2C0_SW) && !defined(BSP_USING_I2C1_SW) && !defined(BSP_USING_I2C2_SW) - #error "Please define at least one BSP_USING_I2Cx_SW" - /* this driver can be disabled at menuconfig RT-Thread Components Device Drivers */ -#endif - -/* ht32 software i2c config class */ -struct ht32_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; -/* ht32 software i2c dirver class */ -struct ht32_soft_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device i2c_bus; -}; - -static rt_uint8_t scl_rw_flag = 0; -static rt_uint8_t sda_rw_flag = 0; - -static const struct ht32_soft_i2c_config soft_i2c_config[] = -{ -#ifdef BSP_USING_I2C0_SW - { - .scl = BSP_I2C0_SLC_PIN, - .sda = BSP_I2C0_SDA_PIN, - .bus_name = BSP_USING_I2C0_SW_NAME, - }, -#endif -#ifdef BSP_USING_I2C1_SW - { - .scl = BSP_I2C1_SLC_PIN, - .sda = BSP_I2C1_SDA_PIN, - .bus_name = BSP_USING_I2C1_SW_NAME, - }, -#endif -#ifdef BSP_USING_I2C2_SW - { - .scl = BSP_I2C2_SLC_PIN, - .sda = BSP_I2C2_SDA_PIN, - .bus_name = BSP_USING_I2C2_SW_NAME, - }, -#endif -}; - -static struct ht32_soft_i2c i2c_obj[sizeof(soft_i2c_config) / sizeof(soft_i2c_config[0])]; - -/* this function initializes the software i2c pin */ -static void ht32_soft_i2c_gpio_init(struct ht32_soft_i2c *i2c) -{ - struct ht32_soft_i2c_config* cfg = (struct ht32_soft_i2c_config*)i2c->ops.data; - - rt_pin_mode(cfg->scl, PIN_MODE_OUTPUT_OD); - rt_pin_mode(cfg->sda, PIN_MODE_OUTPUT_OD); - - rt_pin_write(cfg->scl, PIN_HIGH); - rt_pin_write(cfg->sda, PIN_HIGH); -} -/* this function sets the sda pin */ -void ht32_set_sda(void *data, rt_int32_t state) -{ - struct ht32_soft_i2c_config* cfg = (struct ht32_soft_i2c_config*)data; - if(sda_rw_flag != 0) - { - sda_rw_flag = 0; - rt_pin_mode(cfg->sda, PIN_MODE_OUTPUT_OD); - } - if (state) - { - rt_pin_write(cfg->sda, PIN_HIGH); - } - else - { - rt_pin_write(cfg->sda, PIN_LOW); - } -} -/* this function sets the scl pin */ -void ht32_set_scl(void *data, rt_int32_t state) -{ - struct ht32_soft_i2c_config* cfg = (struct ht32_soft_i2c_config*)data; - if(scl_rw_flag != 0) - { - scl_rw_flag = 0; - rt_pin_mode(cfg->scl, PIN_MODE_OUTPUT_OD); - } - if (state) - { - rt_pin_write(cfg->scl, PIN_HIGH); - } - else - { - rt_pin_write(cfg->scl, PIN_LOW); - } -} -/* this function gets the sda pin state */ -rt_int32_t ht32_get_sda(void *data) -{ - struct ht32_soft_i2c_config* cfg = (struct ht32_soft_i2c_config*)data; - - if(sda_rw_flag == 0) - { - sda_rw_flag = 1; - rt_pin_mode(cfg->sda, PIN_MODE_INPUT); - } - return rt_pin_read(cfg->sda); -} -/* this function gets the scl pin state */ -rt_int32_t ht32_get_scl(void *data) -{ - struct ht32_soft_i2c_config* cfg = (struct ht32_soft_i2c_config*)data; - if(scl_rw_flag == 0) - { - scl_rw_flag = 1; - rt_pin_mode(cfg->scl, PIN_MODE_INPUT); - } - return rt_pin_read(cfg->scl); -} - -void ht32_udelay(rt_uint32_t us) -{ - rt_uint32_t ticks; - rt_uint32_t told, tnow, tcnt = 0; - rt_uint32_t reload = SysTick->LOAD; - - ticks = us * reload / (1000000 / RT_TICK_PER_SECOND); - told = SysTick->VAL; - while (1) - { - tnow = SysTick->VAL; - if (tnow != told) - { - if (tnow < told) - { - tcnt += told - tnow; - } - else - { - tcnt += reload - tnow + told; - } - told = tnow; - if (tcnt >= ticks) - { - break; - } - } - } -} - -static const struct rt_i2c_bit_ops ht32_bit_ops_default = -{ - .data = RT_NULL, - .set_sda = ht32_set_sda, - .set_scl = ht32_set_scl, - .get_sda = ht32_get_sda, - .get_scl = ht32_get_scl, - .udelay = ht32_udelay, - .delay_us = 1, - .timeout = 100 -}; - -/* if i2c is locked, this function will unlock it */ -static rt_err_t ht32_soft_i2c_bus_unlock(const struct ht32_soft_i2c_config *cfg) -{ - rt_int32_t i = 0; - rt_pin_mode(cfg->sda, PIN_MODE_INPUT_PULLUP); - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - while (i++ < 9) - { - rt_pin_write(cfg->scl, PIN_HIGH); - ht32_udelay(100); - rt_pin_write(cfg->scl, PIN_LOW); - ht32_udelay(100); - } - } - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - return -RT_ERROR; - } - rt_pin_mode(cfg->sda, PIN_MODE_OUTPUT_OD); - return RT_EOK; -} - -/* i2c initialization function */ -int rt_sw_i2c_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct ht32_soft_i2c); - rt_err_t result; - - for (int i = 0; i < obj_num; i++) - { - i2c_obj[i].ops = ht32_bit_ops_default; - i2c_obj[i].ops.data = (void*)&soft_i2c_config[i]; - i2c_obj[i].i2c_bus.priv = &i2c_obj[i].ops; - ht32_soft_i2c_gpio_init(&i2c_obj[i]); - - result = rt_i2c_bit_add_bus(&i2c_obj[i].i2c_bus, soft_i2c_config[i].bus_name); - - RT_ASSERT(result == RT_EOK); - ht32_soft_i2c_bus_unlock(&soft_i2c_config[i]); - - LOG_D("software simulation %s init done, pin scl: %d, pin sda %d", - soft_i2c_config[i].bus_name, - soft_i2c_config[i].scl, - soft_i2c_config[i].sda); - } - return result; -} - -INIT_BOARD_EXPORT(rt_sw_i2c_init); - - -#endif /* RT_USING_I2C */ diff --git a/bsp/ht32/libraries/ht32_drivers/drv_soft_i2c.h b/bsp/ht32/libraries/ht32_drivers/drv_soft_i2c.h deleted file mode 100644 index 3ce48ee6ef9..00000000000 --- a/bsp/ht32/libraries/ht32_drivers/drv_soft_i2c.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (c) 2006-2024, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2024-05-29 QT-one first version - */ - -#ifndef __DRV_I2C_H__ -#define __DRV_I2C_H__ - -#include -#include -#ifdef RT_USING_DEVICE - #include -#endif -#include "drv_common.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* __DRV_I2C_H__ */ - diff --git a/bsp/k210/drivers/drv_i2c.c b/bsp/k210/drivers/drv_i2c.c index eb707b757cb..74da3c3dc9f 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 6904155eb5e..00000000000 --- 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 -#include -#include -#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 cbacdbb0f53..00000000000 --- 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 c25aeacdc8d..3fa0923c9ef 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 6f22c63a934..d4dec283af4 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 - -#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 93b2f196583..549cfc75e73 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 00000000000..d626be14a57 --- /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 2325be729d2..d081fa8e60d 100644 --- a/bsp/n32/n32gxx_lxx/n32g43xcl-stb/board/Kconfig +++ b/bsp/n32/n32gxx_lxx/n32g43xcl-stb/board/Kconfig @@ -64,24 +64,6 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 64 - default 22 - - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 64 - default 23 - endif - menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC diff --git a/bsp/n32/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 00000000000..d626be14a57 --- /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 870dfd62402..5a17d4a3c6d 100644 --- a/bsp/n32/n32gxx_lxx/n32g457qel-stb/board/Kconfig +++ b/bsp/n32/n32gxx_lxx/n32g457qel-stb/board/Kconfig @@ -75,23 +75,6 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 111 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 111 - default 23 - endif - menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC diff --git a/bsp/n32/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 00000000000..d626be14a57 --- /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 86024542c08..780a079e753 100644 --- a/bsp/n32/n32gxx_lxx/n32g45xcl-stb/board/Kconfig +++ b/bsp/n32/n32gxx_lxx/n32g45xcl-stb/board/Kconfig @@ -72,23 +72,6 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 111 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 111 - default 23 - endif - menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC diff --git a/bsp/n32/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 00000000000..d626be14a57 --- /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 f336f3042f9..275fb1346dc 100644 --- a/bsp/n32/n32gxx_lxx/n32g45xml-stb/board/Kconfig +++ b/bsp/n32/n32gxx_lxx/n32g45xml-stb/board/Kconfig @@ -75,23 +75,6 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 111 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 111 - default 23 - endif - menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC diff --git a/bsp/n32/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 00000000000..d626be14a57 --- /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 afc8ec9e5c0..5a86f64c9b7 100644 --- a/bsp/n32/n32gxx_lxx/n32g45xrl-stb/board/Kconfig +++ b/bsp/n32/n32gxx_lxx/n32g45xrl-stb/board/Kconfig @@ -75,23 +75,6 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 111 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 111 - default 23 - endif - menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC diff --git a/bsp/n32/n32gxx_lxx/n32g45xvl-stb/.ci/attachconfig/ci.attachconfig.yml b/bsp/n32/n32gxx_lxx/n32g45xvl-stb/.ci/attachconfig/ci.attachconfig.yml index d63beb299e2..f0c2884397b 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 f71c05030ae..cee72f500b4 100644 --- a/bsp/n32/n32gxx_lxx/n32g45xvl-stb/board/Kconfig +++ b/bsp/n32/n32gxx_lxx/n32g45xvl-stb/board/Kconfig @@ -405,23 +405,6 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 111 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 111 - default 23 - endif - menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC diff --git a/bsp/n32/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 00000000000..d626be14a57 --- /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 961f796db7d..21488d8700c 100644 --- a/bsp/n32/n32gxx_lxx/n32g4frml-stb/board/Kconfig +++ b/bsp/n32/n32gxx_lxx/n32g4frml-stb/board/Kconfig @@ -75,23 +75,6 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 111 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 111 - default 23 - endif - menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC diff --git a/bsp/n32/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 00000000000..d626be14a57 --- /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 9c7600c3e14..9ad7fbaa874 100644 --- a/bsp/n32/n32gxx_lxx/n32l40xcl-stb/board/Kconfig +++ b/bsp/n32/n32gxx_lxx/n32l40xcl-stb/board/Kconfig @@ -64,24 +64,6 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 64 - default 22 - - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 64 - default 23 - endif - menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC diff --git a/bsp/n32/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 00000000000..d626be14a57 --- /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 6f85182039c..1996ee27f83 100644 --- a/bsp/n32/n32gxx_lxx/n32l436-evb/board/Kconfig +++ b/bsp/n32/n32gxx_lxx/n32l436-evb/board/Kconfig @@ -64,24 +64,6 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 64 - default 22 - - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 64 - default 23 - endif - menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC diff --git a/bsp/n32/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 00000000000..d626be14a57 --- /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 d9a04c25090..b70d72e8370 100644 --- a/bsp/n32/n32gxx_lxx/n32l43xml-stb/board/Kconfig +++ b/bsp/n32/n32gxx_lxx/n32l43xml-stb/board/Kconfig @@ -64,24 +64,6 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 64 - default 22 - - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 64 - default 23 - endif - menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC diff --git a/bsp/n32/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 00000000000..d626be14a57 --- /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 b0e0d5efb48..74ee57652d7 100644 --- a/bsp/n32/n32gxx_lxx/n32l43xrl-stb/board/Kconfig +++ b/bsp/n32/n32gxx_lxx/n32l43xrl-stb/board/Kconfig @@ -64,24 +64,6 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 64 - default 22 - - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 64 - default 23 - endif - menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC diff --git a/bsp/n32/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 00000000000..08f15d590b4 --- /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 0de27deaa4d..d38024e9ed0 100644 --- a/bsp/n32/n32gxx_lxx/n32wb45xl-evb/board/Kconfig +++ b/bsp/n32/n32gxx_lxx/n32wb45xl-evb/board/Kconfig @@ -75,23 +75,6 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 79 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 79 - default 25 - endif - menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC diff --git a/bsp/n32/n32hxxx/libraries/N32_Drivers/drivers/SConscript b/bsp/n32/n32hxxx/libraries/N32_Drivers/drivers/SConscript index 3dda86ed0cf..bb9d95e4e32 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 5a0a7b911fe..00000000000 --- 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 - -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 2695e5896e1..00000000000 --- 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 -#include -#include - -/* n32 config class */ -struct n32_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; -/* n32 i2c dirver class */ -struct n32_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device i2c_bus; -}; - -#ifdef BSP_USING_I2C1 -#define I2C1_BUS_CONFIG \ - { \ - .scl = BSP_I2C1_SCL_PIN, \ - .sda = BSP_I2C1_SDA_PIN, \ - .bus_name = "i2c1", \ - } -#endif - -#ifdef BSP_USING_I2C2 -#define I2C2_BUS_CONFIG \ - { \ - .scl = BSP_I2C2_SCL_PIN, \ - .sda = BSP_I2C2_SDA_PIN, \ - .bus_name = "i2c2", \ - } -#endif - -#ifdef BSP_USING_I2C3 -#define I2C3_BUS_CONFIG \ - { \ - .scl = BSP_I2C3_SCL_PIN, \ - .sda = BSP_I2C3_SDA_PIN, \ - .bus_name = "i2c3", \ - } -#endif - -#ifdef BSP_USING_I2C4 -#define I2C4_BUS_CONFIG \ - { \ - .scl = BSP_I2C4_SCL_PIN, \ - .sda = BSP_I2C4_SDA_PIN, \ - .bus_name = "i2c4", \ - } -#endif - -#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 e4646070a99..bafb8dec3cd 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 0ac364d0bf1..9f8bede7996 100644 --- a/bsp/n32/n32hxxx/n32h760zil7-stb/board/Kconfig +++ b/bsp/n32/n32hxxx/n32h760zil7-stb/board/Kconfig @@ -81,24 +81,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 64 - default 22 - - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 64 - default 23 - endif - menuconfig BSP_USING_HARD_I2C bool "Enable Hard I2C BUS" default n diff --git a/bsp/n32g452xx/Libraries/rt_drivers/SConscript b/bsp/n32g452xx/Libraries/rt_drivers/SConscript index cf9e595798d..80515ad981a 100755 --- a/bsp/n32g452xx/Libraries/rt_drivers/SConscript +++ b/bsp/n32g452xx/Libraries/rt_drivers/SConscript @@ -33,10 +33,6 @@ if GetDepend(['BSP_USING_SPI']): if GetDepend(['BSP_USING_ETH', 'BSP_USING_LWIP']): src += ['drv_eth.c'] -if GetDepend(['RT_USING_I2C', 'RT_USING_I2C_BITOPS']): - if GetDepend('BSP_USING_I2C1') or GetDepend('BSP_USING_I2C2') or GetDepend('BSP_USING_I2C3') or GetDepend('BSP_USING_I2C4'): - src += ['drv_soft_i2c.c'] - if GetDepend(['BSP_USING_ADC']): src += Glob('drv_adc.c') diff --git a/bsp/n32g452xx/Libraries/rt_drivers/drv_soft_i2c.c b/bsp/n32g452xx/Libraries/rt_drivers/drv_soft_i2c.c deleted file mode 100644 index 2a5bed30335..00000000000 --- a/bsp/n32g452xx/Libraries/rt_drivers/drv_soft_i2c.c +++ /dev/null @@ -1,231 +0,0 @@ -/* - * Copyright (c) 2006-2023, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2020-01-09 shelton first version - */ - -#include -#include "drv_soft_i2c.h" - -#ifdef RT_USING_I2C - -#define LOG_TAG "drv.i2c" -#include - -#if !defined(BSP_USING_I2C1) && !defined(BSP_USING_I2C2) && !defined(BSP_USING_I2C3) && !defined(BSP_USING_I2C4) - #error "Please define at least one BSP_USING_I2Cx" - /* this driver can be disabled at menuconfig -> RT-Thread Components -> Device Drivers */ -#endif - -static const struct n32_soft_i2c_config soft_i2c_config[] = -{ -#ifdef BSP_USING_I2C1 - I2C1_BUS_CONFIG, -#endif -#ifdef BSP_USING_I2C2 - I2C2_BUS_CONFIG, -#endif -#ifdef BSP_USING_I2C3 - I2C3_BUS_CONFIG, -#endif -#ifdef BSP_USING_I2C4 - I2C4_BUS_CONFIG, -#endif -}; - -static struct n32_i2c i2c_obj[sizeof(soft_i2c_config) / sizeof(soft_i2c_config[0])]; - -/** - * This function initializes the i2c pin. - * - * @param n32 i2c dirver class. - */ -static void n32_i2c_gpio_init(struct n32_i2c *i2c) -{ - struct n32_soft_i2c_config *cfg = (struct n32_soft_i2c_config *)i2c->ops.data; - - rt_pin_mode(cfg->scl, PIN_MODE_OUTPUT_OD); - rt_pin_mode(cfg->sda, PIN_MODE_OUTPUT_OD); - - rt_pin_write(cfg->scl, PIN_HIGH); - rt_pin_write(cfg->sda, PIN_HIGH); -} - -static void n32_i2c_pin_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct n32_i2c); - - for(rt_size_t i = 0; i < obj_num; i++) - { - n32_i2c_gpio_init(&i2c_obj[i]); - } -} - -/** - * This function sets the sda pin. - * - * @param n32 config class. - * @param The sda pin state. - */ -static void n32_set_sda(void *data, rt_int32_t state) -{ - struct n32_soft_i2c_config *cfg = (struct n32_soft_i2c_config *)data; - if (state) - { - rt_pin_write(cfg->sda, PIN_HIGH); - } - else - { - rt_pin_write(cfg->sda, PIN_LOW); - } -} - -/** - * This function sets the scl pin. - * - * @param n32 config class. - * @param The scl pin state. - */ -static void n32_set_scl(void *data, rt_int32_t state) -{ - struct n32_soft_i2c_config *cfg = (struct n32_soft_i2c_config *)data; - if (state) - { - rt_pin_write(cfg->scl, PIN_HIGH); - } - else - { - rt_pin_write(cfg->scl, PIN_LOW); - } -} - -/** - * This function gets the sda pin state. - * - * @param The sda pin state. - */ -static rt_int32_t n32_get_sda(void *data) -{ - struct n32_soft_i2c_config *cfg = (struct n32_soft_i2c_config *)data; - return rt_pin_read(cfg->sda); -} - -/** - * This function gets the scl pin state. - * - * @param The scl pin state. - */ -static rt_int32_t n32_get_scl(void *data) -{ - struct n32_soft_i2c_config *cfg = (struct n32_soft_i2c_config *)data; - return rt_pin_read(cfg->scl); -} -/** - * The time delay function. - * - * @param microseconds. - */ -static void n32_udelay(rt_uint32_t us) -{ - rt_uint32_t ticks; - rt_uint32_t told, tnow, tcnt = 0; - rt_uint32_t reload = SysTick->LOAD; - - ticks = us * reload / (1000000 / RT_TICK_PER_SECOND); - told = SysTick->VAL; - while (1) - { - tnow = SysTick->VAL; - if (tnow != told) - { - if (tnow < told) - { - tcnt += told - tnow; - } - else - { - tcnt += reload - tnow + told; - } - told = tnow; - if (tcnt >= ticks) - { - break; - } - } - } -} - -static const struct rt_i2c_bit_ops n32_bit_ops_default = -{ - .data = RT_NULL, - .pin_init = n32_i2c_pin_init, - .set_sda = n32_set_sda, - .set_scl = n32_set_scl, - .get_sda = n32_get_sda, - .get_scl = n32_get_scl, - .udelay = n32_udelay, - .delay_us = 1, - .timeout = 100, - .i2c_pin_init_flag = RT_FALSE -}; - -/** - * if i2c is locked, this function will unlock it - * - * @param n32 config class - * - * @return RT_EOK indicates successful unlock. - */ -static rt_err_t n32_i2c_bus_unlock(const struct n32_soft_i2c_config *cfg) -{ - rt_int32_t i = 0; - - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - while (i++ < 9) - { - rt_pin_write(cfg->scl, PIN_HIGH); - n32_udelay(100); - rt_pin_write(cfg->scl, PIN_LOW); - n32_udelay(100); - } - } - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - return -RT_ERROR; - } - - return RT_EOK; -} - -/* I2C initialization function */ -int rt_hw_i2c_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct n32_i2c); - rt_err_t result; - - for (rt_size_t i = 0; i < obj_num; i++) - { - i2c_obj[i].ops = n32_bit_ops_default; - i2c_obj[i].ops.data = (void *)&soft_i2c_config[i]; - i2c_obj[i].i2c_bus.priv = &i2c_obj[i].ops; - - result = rt_i2c_bit_add_bus(&i2c_obj[i].i2c_bus, soft_i2c_config[i].bus_name); - RT_ASSERT(result == RT_EOK); - n32_i2c_bus_unlock(&soft_i2c_config[i]); - - LOG_D("software simulation %s init done, pin scl: %d, pin sda %d", - soft_i2c_config[i].bus_name, - soft_i2c_config[i].scl, - soft_i2c_config[i].sda); - } - - return RT_EOK; -} -INIT_BOARD_EXPORT(rt_hw_i2c_init); - -#endif /* RT_USING_I2C */ diff --git a/bsp/n32g452xx/Libraries/rt_drivers/drv_soft_i2c.h b/bsp/n32g452xx/Libraries/rt_drivers/drv_soft_i2c.h deleted file mode 100644 index 12e84df0880..00000000000 --- a/bsp/n32g452xx/Libraries/rt_drivers/drv_soft_i2c.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (c) 2006-2023, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2020-01-09 shelton first version - */ - -#ifndef __DRV_I2C__ -#define __DRV_I2C__ - -#include -#include -#include - -/* n32 config class */ -struct n32_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; -/* n32 i2c dirver class */ -struct n32_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device i2c_bus; -}; - -#ifdef BSP_USING_I2C1 -#define I2C1_BUS_CONFIG \ - { \ - .scl = BSP_I2C1_SCL_PIN, \ - .sda = BSP_I2C1_SDA_PIN, \ - .bus_name = "i2c1", \ - } -#endif - -#ifdef BSP_USING_I2C2 -#define I2C2_BUS_CONFIG \ - { \ - .scl = BSP_I2C2_SCL_PIN, \ - .sda = BSP_I2C2_SDA_PIN, \ - .bus_name = "i2c2", \ - } -#endif - -#ifdef BSP_USING_I2C3 -#define I2C3_BUS_CONFIG \ - { \ - .scl = BSP_I2C3_SCL_PIN, \ - .sda = BSP_I2C3_SDA_PIN, \ - .bus_name = "i2c3", \ - } -#endif - -#ifdef BSP_USING_I2C4 -#define I2C4_BUS_CONFIG \ - { \ - .scl = BSP_I2C4_SCL_PIN, \ - .sda = BSP_I2C4_SDA_PIN, \ - .bus_name = "i2c4", \ - } -#endif -int rt_hw_i2c_init(void); - -#endif diff --git a/bsp/n32g452xx/n32g452xx-mini-system/.ci/attachconfig/ci.attachconfig.yml b/bsp/n32g452xx/n32g452xx-mini-system/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..44e6ac9692d --- /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 373a7d69e29..5a35447a229 100755 --- a/bsp/n32g452xx/n32g452xx-mini-system/board/Kconfig +++ b/bsp/n32g452xx/n32g452xx-mini-system/board/Kconfig @@ -340,23 +340,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "I2C1 scl pin number" - range 1 N32G45X_PIN_NUMBERS - default 29 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 N32G45X_PIN_NUMBERS - default 30 - endif - menuconfig BSP_USING_ADC bool "Enable ADC" default n diff --git a/bsp/nuvoton/libraries/m031/rtt_port/Kconfig b/bsp/nuvoton/libraries/m031/rtt_port/Kconfig index 6a640a19788..c2f88d9e13b 100644 --- a/bsp/nuvoton/libraries/m031/rtt_port/Kconfig +++ b/bsp/nuvoton/libraries/m031/rtt_port/Kconfig @@ -579,47 +579,6 @@ config SOC_SERIES_M032 default y endif - menuconfig BSP_USING_SOFT_I2C - bool "Enable 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 - default n - - 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 - endif - - config BSP_USING_SOFT_I2C1 - bool "Enable SOFT I2C1" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - default n - - 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 - endif - endif - config BSP_USING_WDT bool "Enable Watchdog Timer(WDT)" select RT_USING_WDT @@ -632,4 +591,3 @@ config SOC_SERIES_M032 config BSP_USING_USBD bool "Enable Full-Speed USB Device Controller(USBD)" select RT_USING_USB_DEVICE - diff --git a/bsp/nuvoton/libraries/m031/rtt_port/drv_softi2c.c b/bsp/nuvoton/libraries/m031/rtt_port/drv_softi2c.c deleted file mode 100644 index bd4f6af0fa7..00000000000 --- a/bsp/nuvoton/libraries/m031/rtt_port/drv_softi2c.c +++ /dev/null @@ -1,217 +0,0 @@ -/**************************************************************************//** -* -* @copyright (C) 2020 Nuvoton Technology Corp. All rights reserved. -* -* SPDX-License-Identifier: Apache-2.0 -* -* Change Logs: -* Date Author Notes -* 2021-01-15 klcheng First version -* -******************************************************************************/ - -#include - -#if (defined(BSP_USING_SOFT_I2C) && defined(BSP_USING_GPIO) && defined(RT_USING_I2C_BITOPS) && defined(RT_USING_I2C) && defined(RT_USING_PIN)) - -#include -#include -#include -#include "NuMicro.h" - -/* Private define ---------------------------------------------------------------*/ -#define LOG_TAG "drv.softi2c" -#define DBG_ENABLE -#define DBG_SECTION_NAME LOG_TAG -#define DBG_LEVEL DBG_INFO -#include - -#ifdef BSP_USING_SOFT_I2C0 -#define NU_SOFT_I2C0_BUS_CONFIG \ - { \ - .scl = BSP_SOFT_I2C0_SCL_PIN, \ - .sda = BSP_SOFT_I2C0_SDA_PIN, \ - .bus_name = "softi2c0", \ - } -#endif - -#ifdef BSP_USING_SOFT_I2C1 -#define NU_SOFT_I2C1_BUS_CONFIG \ - { \ - .scl = BSP_SOFT_I2C1_SCL_PIN, \ - .sda = BSP_SOFT_I2C1_SDA_PIN, \ - .bus_name = "softi2c1", \ - } -#endif - -#if (!defined(BSP_USING_SOFT_I2C0) && !defined(BSP_USING_SOFT_I2C1)) - #error "Please define at least one BSP_USING_SOFT_I2Cx" - /* this driver can be disabled at menuconfig ? RT-Thread Components ? Device Drivers */ -#endif - -/* Private typedef --------------------------------------------------------------*/ -/* soft i2c config class */ -struct nu_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; -/* soft i2c driver class */ -struct nu_soft_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device soft_i2c_bus; -}; - -/* Private functions ------------------------------------------------------------*/ -static void nu_soft_i2c_set_sda(void *data, rt_int32_t state); -static void nu_soft_i2c_set_scl(void *data, rt_int32_t state); -static rt_int32_t nu_soft_i2c_get_sda(void *data); -static rt_int32_t nu_soft_i2c_get_scl(void *data); - -/* Private variables ------------------------------------------------------------*/ -static const struct nu_soft_i2c_config nu_soft_i2c_cfg[] = -{ -#ifdef BSP_USING_SOFT_I2C0 - NU_SOFT_I2C0_BUS_CONFIG, -#endif -#ifdef BSP_USING_SOFT_I2C1 - NU_SOFT_I2C1_BUS_CONFIG, -#endif -}; - -static struct nu_soft_i2c nu_soft_i2c_obj[sizeof(nu_soft_i2c_cfg) / sizeof(nu_soft_i2c_cfg[0])]; - -static const struct rt_i2c_bit_ops nu_soft_i2c_bit_ops = -{ - .data = RT_NULL, - .set_sda = nu_soft_i2c_set_sda, - .set_scl = nu_soft_i2c_set_scl, - .get_sda = nu_soft_i2c_get_sda, - .get_scl = nu_soft_i2c_get_scl, - .udelay = rt_hw_us_delay, - .delay_us = 1, - .timeout = 100 -}; - -/* Functions define ------------------------------------------------------------*/ - -/** - * This function initializes the soft i2c pin. - * - * @param soft i2c config class. - */ -static void nu_soft_i2c_gpio_init(const struct nu_soft_i2c_config *cfg) -{ - rt_pin_mode(cfg->scl, PIN_MODE_OUTPUT_OD); - rt_pin_mode(cfg->sda, PIN_MODE_OUTPUT_OD); - - rt_pin_write(cfg->scl, PIN_HIGH); - rt_pin_write(cfg->sda, PIN_HIGH); -} - -/** - * if i2c is locked, this function will unlock it - * - * @param soft i2c config class - * - * @return RT_EOK indicates successful unlock. - */ -static rt_err_t nu_soft_i2c_bus_unlock(const struct nu_soft_i2c_config *cfg) -{ - rt_int32_t i = 0; - - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - while (i++ < 9) - { - rt_pin_write(cfg->scl, PIN_HIGH); - rt_hw_us_delay(100); - rt_pin_write(cfg->scl, PIN_LOW); - rt_hw_us_delay(100); - } - } - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - return -RT_ERROR; - } - - return RT_EOK; -} - -/** - * This function sets the sda pin. - * - * @param soft i2c config class. - * @param The sda pin state. - */ -static void nu_soft_i2c_set_sda(void *data, rt_int32_t state) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - - rt_pin_write(cfg->sda, state ? PIN_HIGH : PIN_LOW); -} - -/** - * This function sets the scl pin. - * - * @param soft i2c config class. - * @param The scl pin state. - */ -static void nu_soft_i2c_set_scl(void *data, rt_int32_t state) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - - rt_pin_write(cfg->scl, state ? PIN_HIGH : PIN_LOW); -} - -/** - * This function gets the sda pin state. - * - * @param The sda pin state. - */ -static rt_int32_t nu_soft_i2c_get_sda(void *data) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - return rt_pin_read(cfg->sda); -} - -/** - * This function gets the scl pin state. - * - * @param The scl pin state. - */ -static rt_int32_t nu_soft_i2c_get_scl(void *data) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - return rt_pin_read(cfg->scl); -} - -/* Soft I2C initialization function */ -int rt_soft_i2c_init(void) -{ - rt_size_t obj_num = sizeof(nu_soft_i2c_obj) / sizeof(struct nu_soft_i2c); - rt_err_t result; - - for (int i = 0; i < obj_num; i++) - { - nu_soft_i2c_obj[i].ops = nu_soft_i2c_bit_ops; - nu_soft_i2c_obj[i].ops.data = (void *)&nu_soft_i2c_cfg[i]; - nu_soft_i2c_obj[i].soft_i2c_bus.priv = &nu_soft_i2c_obj[i].ops; - nu_soft_i2c_gpio_init(&nu_soft_i2c_cfg[i]); - result = rt_i2c_bit_add_bus(&nu_soft_i2c_obj[i].soft_i2c_bus, nu_soft_i2c_cfg[i].bus_name); - RT_ASSERT(result == RT_EOK); - nu_soft_i2c_bus_unlock(&nu_soft_i2c_cfg[i]); - - LOG_D("software simulation %s init done, pin scl: %d, pin sda %d", - nu_soft_i2c_cfg[i].bus_name, - nu_soft_i2c_cfg[i].scl, - nu_soft_i2c_cfg[i].sda); - } - - return 0; -} -INIT_DEVICE_EXPORT(rt_soft_i2c_init); - -#endif //#if (defined(BSP_USING_SOFT_I2C) && defined(BSP_USING_GPIO) && defined(RT_USING_I2C_BITOPS) && defined(RT_USING_I2C) && defined(RT_USING_PIN)) diff --git a/bsp/nuvoton/libraries/m2354/rtt_port/Kconfig b/bsp/nuvoton/libraries/m2354/rtt_port/Kconfig index 67632a47544..302d9ac35ad 100644 --- a/bsp/nuvoton/libraries/m2354/rtt_port/Kconfig +++ b/bsp/nuvoton/libraries/m2354/rtt_port/Kconfig @@ -875,47 +875,6 @@ config SOC_SERIES_M2354 endif - menuconfig BSP_USING_SOFT_I2C - bool "Enable 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 - default n - - 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 - endif - - config BSP_USING_SOFT_I2C1 - bool "Enable SOFT I2C1" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - default n - - 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 - endif - endif - config BSP_USING_WDT bool "Enable Watchdog Timer(WDT)" select RT_USING_WDT diff --git a/bsp/nuvoton/libraries/m2354/rtt_port/drv_softi2c.c b/bsp/nuvoton/libraries/m2354/rtt_port/drv_softi2c.c deleted file mode 100644 index 0d2039a5635..00000000000 --- a/bsp/nuvoton/libraries/m2354/rtt_port/drv_softi2c.c +++ /dev/null @@ -1,217 +0,0 @@ -/**************************************************************************//** -* -* @copyright (C) 2020 Nuvoton Technology Corp. All rights reserved. -* -* SPDX-License-Identifier: Apache-2.0 -* -* Change Logs: -* Date Author Notes -* 2020-6-28 YCHuang12 First version -* -******************************************************************************/ - -#include - -#if (defined(BSP_USING_SOFT_I2C) && defined(BSP_USING_GPIO) && defined(RT_USING_I2C_BITOPS) && defined(RT_USING_I2C) && defined(RT_USING_PIN)) - -#include -#include -#include -#include "NuMicro.h" - -/* Private define ---------------------------------------------------------------*/ -#define LOG_TAG "drv.softi2c" -#define DBG_ENABLE -#define DBG_SECTION_NAME LOG_TAG -#define DBG_LEVEL DBG_INFO -#include - -#ifdef BSP_USING_SOFT_I2C0 -#define NU_SOFT_I2C0_BUS_CONFIG \ - { \ - .scl = BSP_SOFT_I2C0_SCL_PIN, \ - .sda = BSP_SOFT_I2C0_SDA_PIN, \ - .bus_name = "softi2c0", \ - } -#endif - -#ifdef BSP_USING_SOFT_I2C1 -#define NU_SOFT_I2C1_BUS_CONFIG \ - { \ - .scl = BSP_SOFT_I2C1_SCL_PIN, \ - .sda = BSP_SOFT_I2C1_SDA_PIN, \ - .bus_name = "softi2c1", \ - } -#endif - -#if (!defined(BSP_USING_SOFT_I2C0) && !defined(BSP_USING_SOFT_I2C1)) - #error "Please define at least one BSP_USING_SOFT_I2Cx" - /* this driver can be disabled at menuconfig ? RT-Thread Components ? Device Drivers */ -#endif - -/* Private typedef --------------------------------------------------------------*/ -/* soft i2c config class */ -struct nu_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; -/* soft i2c driver class */ -struct nu_soft_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device soft_i2c_bus; -}; - -/* Private functions ------------------------------------------------------------*/ -static void nu_soft_i2c_set_sda(void *data, rt_int32_t state); -static void nu_soft_i2c_set_scl(void *data, rt_int32_t state); -static rt_int32_t nu_soft_i2c_get_sda(void *data); -static rt_int32_t nu_soft_i2c_get_scl(void *data); - -/* Private variables ------------------------------------------------------------*/ -static const struct nu_soft_i2c_config nu_soft_i2c_cfg[] = -{ -#ifdef BSP_USING_SOFT_I2C0 - NU_SOFT_I2C0_BUS_CONFIG, -#endif -#ifdef BSP_USING_SOFT_I2C1 - NU_SOFT_I2C1_BUS_CONFIG, -#endif -}; - -static struct nu_soft_i2c nu_soft_i2c_obj[sizeof(nu_soft_i2c_cfg) / sizeof(nu_soft_i2c_cfg[0])]; - -static const struct rt_i2c_bit_ops nu_soft_i2c_bit_ops = -{ - .data = RT_NULL, - .set_sda = nu_soft_i2c_set_sda, - .set_scl = nu_soft_i2c_set_scl, - .get_sda = nu_soft_i2c_get_sda, - .get_scl = nu_soft_i2c_get_scl, - .udelay = rt_hw_us_delay, - .delay_us = 1, - .timeout = 100 -}; - -/* Functions define ------------------------------------------------------------*/ - -/** - * This function initializes the soft i2c pin. - * - * @param soft i2c config class. - */ -static void nu_soft_i2c_gpio_init(const struct nu_soft_i2c_config *cfg) -{ - rt_pin_mode(cfg->scl, PIN_MODE_OUTPUT_OD); - rt_pin_mode(cfg->sda, PIN_MODE_OUTPUT_OD); - - rt_pin_write(cfg->scl, PIN_HIGH); - rt_pin_write(cfg->sda, PIN_HIGH); -} - -/** - * if i2c is locked, this function will unlock it - * - * @param soft i2c config class - * - * @return RT_EOK indicates successful unlock. - */ -static rt_err_t nu_soft_i2c_bus_unlock(const struct nu_soft_i2c_config *cfg) -{ - rt_int32_t i = 0; - - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - while (i++ < 9) - { - rt_pin_write(cfg->scl, PIN_HIGH); - rt_hw_us_delay(100); - rt_pin_write(cfg->scl, PIN_LOW); - rt_hw_us_delay(100); - } - } - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - return -RT_ERROR; - } - - return RT_EOK; -} - -/** - * This function sets the sda pin. - * - * @param soft i2c config class. - * @param The sda pin state. - */ -static void nu_soft_i2c_set_sda(void *data, rt_int32_t state) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - - rt_pin_write(cfg->sda, state ? PIN_HIGH : PIN_LOW); -} - -/** - * This function sets the scl pin. - * - * @param soft i2c config class. - * @param The scl pin state. - */ -static void nu_soft_i2c_set_scl(void *data, rt_int32_t state) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - - rt_pin_write(cfg->scl, state ? PIN_HIGH : PIN_LOW); -} - -/** - * This function gets the sda pin state. - * - * @param The sda pin state. - */ -static rt_int32_t nu_soft_i2c_get_sda(void *data) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - return rt_pin_read(cfg->sda); -} - -/** - * This function gets the scl pin state. - * - * @param The scl pin state. - */ -static rt_int32_t nu_soft_i2c_get_scl(void *data) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - return rt_pin_read(cfg->scl); -} - -/* Soft I2C initialization function */ -int rt_soft_i2c_init(void) -{ - rt_size_t obj_num = sizeof(nu_soft_i2c_obj) / sizeof(struct nu_soft_i2c); - rt_err_t result; - - for (int i = 0; i < obj_num; i++) - { - nu_soft_i2c_obj[i].ops = nu_soft_i2c_bit_ops; - nu_soft_i2c_obj[i].ops.data = (void *)&nu_soft_i2c_cfg[i]; - nu_soft_i2c_obj[i].soft_i2c_bus.priv = &nu_soft_i2c_obj[i].ops; - nu_soft_i2c_gpio_init(&nu_soft_i2c_cfg[i]); - result = rt_i2c_bit_add_bus(&nu_soft_i2c_obj[i].soft_i2c_bus, nu_soft_i2c_cfg[i].bus_name); - RT_ASSERT(result == RT_EOK); - nu_soft_i2c_bus_unlock(&nu_soft_i2c_cfg[i]); - - LOG_D("software simulation %s init done, pin scl: %d, pin sda %d", - nu_soft_i2c_cfg[i].bus_name, - nu_soft_i2c_cfg[i].scl, - nu_soft_i2c_cfg[i].sda); - } - - return 0; -} -INIT_DEVICE_EXPORT(rt_soft_i2c_init); - -#endif //#if (defined(BSP_USING_SOFT_I2C) && defined(BSP_USING_GPIO) && defined(RT_USING_I2C_BITOPS) && defined(RT_USING_I2C) && defined(RT_USING_PIN)) diff --git a/bsp/nuvoton/libraries/m460/rtt_port/Kconfig b/bsp/nuvoton/libraries/m460/rtt_port/Kconfig index e4a2ec8b7d0..99a2ee78322 100644 --- a/bsp/nuvoton/libraries/m460/rtt_port/Kconfig +++ b/bsp/nuvoton/libraries/m460/rtt_port/Kconfig @@ -1053,47 +1053,6 @@ config SOC_SERIES_M460 endif - menuconfig BSP_USING_SOFT_I2C - bool "Enable 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 - default n - - 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 - endif - - config BSP_USING_SOFT_I2C1 - bool "Enable SOFT I2C1" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - default n - - 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 - endif - endif - config BSP_USING_WDT bool "Enable Watchdog Timer(WDT)" select RT_USING_WDT diff --git a/bsp/nuvoton/libraries/m460/rtt_port/drv_softi2c.c b/bsp/nuvoton/libraries/m460/rtt_port/drv_softi2c.c deleted file mode 100644 index 196737f7b46..00000000000 --- a/bsp/nuvoton/libraries/m460/rtt_port/drv_softi2c.c +++ /dev/null @@ -1,232 +0,0 @@ -/**************************************************************************//** -* -* @copyright (C) 2020 Nuvoton Technology Corp. All rights reserved. -* -* SPDX-License-Identifier: Apache-2.0 -* -* Change Logs: -* Date Author Notes -* 2022-3-15 Wayne First version -* -******************************************************************************/ - -#include - -#if (defined(BSP_USING_SOFT_I2C) && defined(RT_USING_I2C_BITOPS) && defined(RT_USING_I2C) && defined(RT_USING_PIN)) - -#include -#include -#include -#include "NuMicro.h" - -/* Private define ---------------------------------------------------------------*/ -#define LOG_TAG "drv.softi2c" -#define DBG_ENABLE -#define DBG_SECTION_NAME LOG_TAG -#define DBG_LEVEL DBG_INFO -#include - -#ifdef BSP_USING_SOFT_I2C0 -#define NU_SOFT_I2C0_BUS_CONFIG \ - { \ - .scl = BSP_SOFT_I2C0_SCL_PIN, \ - .sda = BSP_SOFT_I2C0_SDA_PIN, \ - .bus_name = "softi2c0", \ - } -#endif - -#ifdef BSP_USING_SOFT_I2C1 -#define NU_SOFT_I2C1_BUS_CONFIG \ - { \ - .scl = BSP_SOFT_I2C1_SCL_PIN, \ - .sda = BSP_SOFT_I2C1_SDA_PIN, \ - .bus_name = "softi2c1", \ - } -#endif - -#if (!defined(BSP_USING_SOFT_I2C0) && !defined(BSP_USING_SOFT_I2C1)) - #error "Please define at least one BSP_USING_SOFT_I2Cx" - /* this driver can be disabled at menuconfig ? RT-Thread Components ? Device Drivers */ -#endif - -/* Private typedef --------------------------------------------------------------*/ -/* soft i2c config class */ -struct nu_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; -/* soft i2c driver class */ -struct nu_soft_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device soft_i2c_bus; -}; - -/* Private functions ------------------------------------------------------------*/ -static void nu_soft_i2c_udelay(rt_uint32_t us); -static void nu_soft_i2c_set_sda(void *data, rt_int32_t state); -static void nu_soft_i2c_set_scl(void *data, rt_int32_t state); -static rt_int32_t nu_soft_i2c_get_sda(void *data); -static rt_int32_t nu_soft_i2c_get_scl(void *data); - -/* Private variables ------------------------------------------------------------*/ -static const struct nu_soft_i2c_config nu_soft_i2c_cfg[] = -{ -#ifdef BSP_USING_SOFT_I2C0 - NU_SOFT_I2C0_BUS_CONFIG, -#endif -#ifdef BSP_USING_SOFT_I2C1 - NU_SOFT_I2C1_BUS_CONFIG, -#endif -}; - -static struct nu_soft_i2c nu_soft_i2c_obj[sizeof(nu_soft_i2c_cfg) / sizeof(nu_soft_i2c_cfg[0])]; - -static const struct rt_i2c_bit_ops nu_soft_i2c_bit_ops = -{ - .data = RT_NULL, - .set_sda = nu_soft_i2c_set_sda, - .set_scl = nu_soft_i2c_set_scl, - .get_sda = nu_soft_i2c_get_sda, - .get_scl = nu_soft_i2c_get_scl, - .udelay = nu_soft_i2c_udelay, - .delay_us = 1, - .timeout = 100 -}; - -/* Functions define ------------------------------------------------------------*/ - -/** - * The time delay function. - * - * @param microseconds. - */ -static void nu_soft_i2c_udelay(rt_uint32_t us) -{ - rt_hw_us_delay(us); -} - -/** - * This function initializes the soft i2c pin. - * - * @param soft i2c config class. - */ -static void nu_soft_i2c_gpio_init(const struct nu_soft_i2c_config *cfg) -{ - rt_pin_mode(cfg->scl, PIN_MODE_OUTPUT_OD); - rt_pin_mode(cfg->sda, PIN_MODE_OUTPUT_OD); - - rt_pin_write(cfg->scl, PIN_HIGH); - rt_pin_write(cfg->sda, PIN_HIGH); -} - -/** - * if i2c is locked, this function will unlock it - * - * @param soft i2c config class - * - * @return RT_EOK indicates successful unlock. - */ -static rt_err_t nu_soft_i2c_bus_unlock(const struct nu_soft_i2c_config *cfg) -{ - rt_int32_t i = 0; - - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - while (i++ < 9) - { - rt_pin_write(cfg->scl, PIN_HIGH); - nu_soft_i2c_udelay(100); - rt_pin_write(cfg->scl, PIN_LOW); - nu_soft_i2c_udelay(100); - } - } - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - return -RT_ERROR; - } - - return RT_EOK; -} - -/** - * This function sets the sda pin. - * - * @param soft i2c config class. - * @param The sda pin state. - */ -static void nu_soft_i2c_set_sda(void *data, rt_int32_t state) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - - rt_pin_write(cfg->sda, state ? PIN_HIGH : PIN_LOW); -} - -/** - * This function sets the scl pin. - * - * @param soft i2c config class. - * @param The scl pin state. - */ -static void nu_soft_i2c_set_scl(void *data, rt_int32_t state) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - - rt_pin_write(cfg->scl, state ? PIN_HIGH : PIN_LOW); -} - -/** - * This function gets the sda pin state. - * - * @param The sda pin state. - */ -static rt_int32_t nu_soft_i2c_get_sda(void *data) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - - return rt_pin_read(cfg->sda); -} - -/** - * This function gets the scl pin state. - * - * @param The scl pin state. - */ -static rt_int32_t nu_soft_i2c_get_scl(void *data) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - - return rt_pin_read(cfg->scl); -} - -/* Soft I2C initialization function */ -int rt_soft_i2c_init(void) -{ - rt_size_t obj_num = sizeof(nu_soft_i2c_obj) / sizeof(struct nu_soft_i2c); - rt_err_t result; - - for (int i = 0; i < obj_num; i++) - { - nu_soft_i2c_obj[i].ops = nu_soft_i2c_bit_ops; - nu_soft_i2c_obj[i].ops.data = (void *)&nu_soft_i2c_cfg[i]; - nu_soft_i2c_obj[i].soft_i2c_bus.priv = &nu_soft_i2c_obj[i].ops; - nu_soft_i2c_gpio_init(&nu_soft_i2c_cfg[i]); - - result = rt_i2c_bit_add_bus(&nu_soft_i2c_obj[i].soft_i2c_bus, nu_soft_i2c_cfg[i].bus_name); - RT_ASSERT(result == RT_EOK); - - nu_soft_i2c_bus_unlock(&nu_soft_i2c_cfg[i]); - - LOG_D("software simulation %s init done, pin scl: %d, pin sda %d", - nu_soft_i2c_cfg[i].bus_name, - nu_soft_i2c_cfg[i].scl, - nu_soft_i2c_cfg[i].sda); - } - - return 0; -} -INIT_DEVICE_EXPORT(rt_soft_i2c_init); - -#endif //#if (defined(BSP_USING_SOFT_I2C) && defined(RT_USING_I2C_BITOPS) && defined(RT_USING_I2C) && defined(RT_USING_PIN)) diff --git a/bsp/nuvoton/libraries/m480/rtt_port/Kconfig b/bsp/nuvoton/libraries/m480/rtt_port/Kconfig index 87a82cf98b5..6d7d626b262 100644 --- a/bsp/nuvoton/libraries/m480/rtt_port/Kconfig +++ b/bsp/nuvoton/libraries/m480/rtt_port/Kconfig @@ -863,47 +863,6 @@ config SOC_SERIES_M480 endif - menuconfig BSP_USING_SOFT_I2C - bool "Enable 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 - default n - - 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 - endif - - config BSP_USING_SOFT_I2C1 - bool "Enable SOFT I2C1" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - default n - - 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 - endif - endif - config BSP_USING_WDT bool "Enable Watchdog Timer(WDT)" select RT_USING_WDT diff --git a/bsp/nuvoton/libraries/m480/rtt_port/drv_softi2c.c b/bsp/nuvoton/libraries/m480/rtt_port/drv_softi2c.c deleted file mode 100644 index 54208fbd617..00000000000 --- a/bsp/nuvoton/libraries/m480/rtt_port/drv_softi2c.c +++ /dev/null @@ -1,217 +0,0 @@ -/**************************************************************************//** -* -* @copyright (C) 2020 Nuvoton Technology Corp. All rights reserved. -* -* SPDX-License-Identifier: Apache-2.0 -* -* Change Logs: -* Date Author Notes -* 2020-5-28 YCHuang12 First version -* -******************************************************************************/ - -#include - -#if (defined(BSP_USING_SOFT_I2C) && defined(BSP_USING_GPIO) && defined(RT_USING_I2C_BITOPS) && defined(RT_USING_I2C) && defined(RT_USING_PIN)) - -#include -#include -#include -#include "NuMicro.h" - -/* Private define ---------------------------------------------------------------*/ -#define LOG_TAG "drv.softi2c" -#define DBG_ENABLE -#define DBG_SECTION_NAME LOG_TAG -#define DBG_LEVEL DBG_INFO -#include - -#ifdef BSP_USING_SOFT_I2C0 -#define NU_SOFT_I2C0_BUS_CONFIG \ - { \ - .scl = BSP_SOFT_I2C0_SCL_PIN, \ - .sda = BSP_SOFT_I2C0_SDA_PIN, \ - .bus_name = "softi2c0", \ - } -#endif - -#ifdef BSP_USING_SOFT_I2C1 -#define NU_SOFT_I2C1_BUS_CONFIG \ - { \ - .scl = BSP_SOFT_I2C1_SCL_PIN, \ - .sda = BSP_SOFT_I2C1_SDA_PIN, \ - .bus_name = "softi2c1", \ - } -#endif - -#if (!defined(BSP_USING_SOFT_I2C0) && !defined(BSP_USING_SOFT_I2C1)) - #error "Please define at least one BSP_USING_SOFT_I2Cx" - /* this driver can be disabled at menuconfig ? RT-Thread Components ? Device Drivers */ -#endif - -/* Private typedef --------------------------------------------------------------*/ -/* soft i2c config class */ -struct nu_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; -/* soft i2c driver class */ -struct nu_soft_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device soft_i2c_bus; -}; - -/* Private functions ------------------------------------------------------------*/ -static void nu_soft_i2c_set_sda(void *data, rt_int32_t state); -static void nu_soft_i2c_set_scl(void *data, rt_int32_t state); -static rt_int32_t nu_soft_i2c_get_sda(void *data); -static rt_int32_t nu_soft_i2c_get_scl(void *data); - -/* Private variables ------------------------------------------------------------*/ -static const struct nu_soft_i2c_config nu_soft_i2c_cfg[] = -{ -#ifdef BSP_USING_SOFT_I2C0 - NU_SOFT_I2C0_BUS_CONFIG, -#endif -#ifdef BSP_USING_SOFT_I2C1 - NU_SOFT_I2C1_BUS_CONFIG, -#endif -}; - -static struct nu_soft_i2c nu_soft_i2c_obj[sizeof(nu_soft_i2c_cfg) / sizeof(nu_soft_i2c_cfg[0])]; - -static const struct rt_i2c_bit_ops nu_soft_i2c_bit_ops = -{ - .data = RT_NULL, - .set_sda = nu_soft_i2c_set_sda, - .set_scl = nu_soft_i2c_set_scl, - .get_sda = nu_soft_i2c_get_sda, - .get_scl = nu_soft_i2c_get_scl, - .udelay = rt_hw_us_delay, - .delay_us = 1, - .timeout = 100 -}; - -/* Functions define ------------------------------------------------------------*/ - -/** - * This function initializes the soft i2c pin. - * - * @param soft i2c config class. - */ -static void nu_soft_i2c_gpio_init(const struct nu_soft_i2c_config *cfg) -{ - rt_pin_mode(cfg->scl, PIN_MODE_OUTPUT_OD); - rt_pin_mode(cfg->sda, PIN_MODE_OUTPUT_OD); - - rt_pin_write(cfg->scl, PIN_HIGH); - rt_pin_write(cfg->sda, PIN_HIGH); -} - -/** - * if i2c is locked, this function will unlock it - * - * @param soft i2c config class - * - * @return RT_EOK indicates successful unlock. - */ -static rt_err_t nu_soft_i2c_bus_unlock(const struct nu_soft_i2c_config *cfg) -{ - rt_int32_t i = 0; - - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - while (i++ < 9) - { - rt_pin_write(cfg->scl, PIN_HIGH); - rt_hw_us_delay(100); - rt_pin_write(cfg->scl, PIN_LOW); - rt_hw_us_delay(100); - } - } - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - return -RT_ERROR; - } - - return RT_EOK; -} - -/** - * This function sets the sda pin. - * - * @param soft i2c config class. - * @param The sda pin state. - */ -static void nu_soft_i2c_set_sda(void *data, rt_int32_t state) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - - rt_pin_write(cfg->sda, state ? PIN_HIGH : PIN_LOW); -} - -/** - * This function sets the scl pin. - * - * @param soft i2c config class. - * @param The scl pin state. - */ -static void nu_soft_i2c_set_scl(void *data, rt_int32_t state) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - - rt_pin_write(cfg->scl, state ? PIN_HIGH : PIN_LOW); -} - -/** - * This function gets the sda pin state. - * - * @param The sda pin state. - */ -static rt_int32_t nu_soft_i2c_get_sda(void *data) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - return rt_pin_read(cfg->sda); -} - -/** - * This function gets the scl pin state. - * - * @param The scl pin state. - */ -static rt_int32_t nu_soft_i2c_get_scl(void *data) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - return rt_pin_read(cfg->scl); -} - -/* Soft I2C initialization function */ -int rt_soft_i2c_init(void) -{ - rt_size_t obj_num = sizeof(nu_soft_i2c_obj) / sizeof(struct nu_soft_i2c); - rt_err_t result; - - for (int i = 0; i < obj_num; i++) - { - nu_soft_i2c_obj[i].ops = nu_soft_i2c_bit_ops; - nu_soft_i2c_obj[i].ops.data = (void *)&nu_soft_i2c_cfg[i]; - nu_soft_i2c_obj[i].soft_i2c_bus.priv = &nu_soft_i2c_obj[i].ops; - nu_soft_i2c_gpio_init(&nu_soft_i2c_cfg[i]); - result = rt_i2c_bit_add_bus(&nu_soft_i2c_obj[i].soft_i2c_bus, nu_soft_i2c_cfg[i].bus_name); - RT_ASSERT(result == RT_EOK); - nu_soft_i2c_bus_unlock(&nu_soft_i2c_cfg[i]); - - LOG_D("software simulation %s init done, pin scl: %d, pin sda %d", - nu_soft_i2c_cfg[i].bus_name, - nu_soft_i2c_cfg[i].scl, - nu_soft_i2c_cfg[i].sda); - } - - return 0; -} -INIT_DEVICE_EXPORT(rt_soft_i2c_init); - -#endif //#if (defined(BSP_USING_SOFT_I2C) && defined(BSP_USING_GPIO) && defined(RT_USING_I2C_BITOPS) && defined(RT_USING_I2C) && defined(RT_USING_PIN)) diff --git a/bsp/nuvoton/libraries/ma35/rtt_port/Kconfig b/bsp/nuvoton/libraries/ma35/rtt_port/Kconfig index ef43e5c16dc..a8c9d9919e1 100644 --- a/bsp/nuvoton/libraries/ma35/rtt_port/Kconfig +++ b/bsp/nuvoton/libraries/ma35/rtt_port/Kconfig @@ -1021,47 +1021,6 @@ endif - menuconfig BSP_USING_SOFT_I2C - bool "Enable 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 - default n - - 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 - endif - - config BSP_USING_SOFT_I2C1 - bool "Enable SOFT I2C1" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - default n - - 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 - endif - endif - config BSP_USING_DISP bool "Enable Display" depends on !USE_MA35D1_SUBM diff --git a/bsp/nuvoton/libraries/ma35/rtt_port/drv_softi2c.c b/bsp/nuvoton/libraries/ma35/rtt_port/drv_softi2c.c deleted file mode 100644 index 69462bfa39f..00000000000 --- a/bsp/nuvoton/libraries/ma35/rtt_port/drv_softi2c.c +++ /dev/null @@ -1,232 +0,0 @@ -/**************************************************************************//** -* -* @copyright (C) 2020 Nuvoton Technology Corp. All rights reserved. -* -* SPDX-License-Identifier: Apache-2.0 -* -* Change Logs: -* Date Author Notes -* 2021-9-6 Wayne First version -* -******************************************************************************/ - -#include - -#if (defined(BSP_USING_SOFT_I2C) && defined(RT_USING_I2C_BITOPS) && defined(RT_USING_I2C) && defined(RT_USING_PIN)) - -#include -#include -#include -#include "NuMicro.h" - -/* Private define ---------------------------------------------------------------*/ -#define LOG_TAG "drv.softi2c" -#define DBG_ENABLE -#define DBG_SECTION_NAME LOG_TAG -#define DBG_LEVEL DBG_INFO -#include - -#ifdef BSP_USING_SOFT_I2C0 -#define NU_SOFT_I2C0_BUS_CONFIG \ - { \ - .scl = BSP_SOFT_I2C0_SCL_PIN, \ - .sda = BSP_SOFT_I2C0_SDA_PIN, \ - .bus_name = "softi2c0", \ - } -#endif - -#ifdef BSP_USING_SOFT_I2C1 -#define NU_SOFT_I2C1_BUS_CONFIG \ - { \ - .scl = BSP_SOFT_I2C1_SCL_PIN, \ - .sda = BSP_SOFT_I2C1_SDA_PIN, \ - .bus_name = "softi2c1", \ - } -#endif - -#if (!defined(BSP_USING_SOFT_I2C0) && !defined(BSP_USING_SOFT_I2C1)) - #error "Please define at least one BSP_USING_SOFT_I2Cx" - /* this driver can be disabled at menuconfig ? RT-Thread Components ? Device Drivers */ -#endif - -/* Private typedef --------------------------------------------------------------*/ -/* soft i2c config class */ -struct nu_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; -/* soft i2c driver class */ -struct nu_soft_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device soft_i2c_bus; -}; - -/* Private functions ------------------------------------------------------------*/ -static void nu_soft_i2c_udelay(rt_uint32_t us); -static void nu_soft_i2c_set_sda(void *data, rt_int32_t state); -static void nu_soft_i2c_set_scl(void *data, rt_int32_t state); -static rt_int32_t nu_soft_i2c_get_sda(void *data); -static rt_int32_t nu_soft_i2c_get_scl(void *data); - -/* Private variables ------------------------------------------------------------*/ -static const struct nu_soft_i2c_config nu_soft_i2c_cfg[] = -{ -#ifdef BSP_USING_SOFT_I2C0 - NU_SOFT_I2C0_BUS_CONFIG, -#endif -#ifdef BSP_USING_SOFT_I2C1 - NU_SOFT_I2C1_BUS_CONFIG, -#endif -}; - -static struct nu_soft_i2c nu_soft_i2c_obj[sizeof(nu_soft_i2c_cfg) / sizeof(nu_soft_i2c_cfg[0])]; - -static const struct rt_i2c_bit_ops nu_soft_i2c_bit_ops = -{ - .data = RT_NULL, - .set_sda = nu_soft_i2c_set_sda, - .set_scl = nu_soft_i2c_set_scl, - .get_sda = nu_soft_i2c_get_sda, - .get_scl = nu_soft_i2c_get_scl, - .udelay = nu_soft_i2c_udelay, - .delay_us = 1, - .timeout = 100 -}; - -/* Functions define ------------------------------------------------------------*/ - -/** - * The time delay function. - * - * @param microseconds. - */ -static void nu_soft_i2c_udelay(rt_uint32_t us) -{ - rt_hw_us_delay(us); -} - -/** - * This function initializes the soft i2c pin. - * - * @param soft i2c config class. - */ -static void nu_soft_i2c_gpio_init(const struct nu_soft_i2c_config *cfg) -{ - rt_pin_mode(cfg->scl, PIN_MODE_OUTPUT_OD); - rt_pin_mode(cfg->sda, PIN_MODE_OUTPUT_OD); - - rt_pin_write(cfg->scl, PIN_HIGH); - rt_pin_write(cfg->sda, PIN_HIGH); -} - -/** - * if i2c is locked, this function will unlock it - * - * @param soft i2c config class - * - * @return RT_EOK indicates successful unlock. - */ -static rt_err_t nu_soft_i2c_bus_unlock(const struct nu_soft_i2c_config *cfg) -{ - rt_int32_t i = 0; - - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - while (i++ < 9) - { - rt_pin_write(cfg->scl, PIN_HIGH); - nu_soft_i2c_udelay(100); - rt_pin_write(cfg->scl, PIN_LOW); - nu_soft_i2c_udelay(100); - } - } - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - return -RT_ERROR; - } - - return RT_EOK; -} - -/** - * This function sets the sda pin. - * - * @param soft i2c config class. - * @param The sda pin state. - */ -static void nu_soft_i2c_set_sda(void *data, rt_int32_t state) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - - rt_pin_write(cfg->sda, state ? PIN_HIGH : PIN_LOW); -} - -/** - * This function sets the scl pin. - * - * @param soft i2c config class. - * @param The scl pin state. - */ -static void nu_soft_i2c_set_scl(void *data, rt_int32_t state) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - - rt_pin_write(cfg->scl, state ? PIN_HIGH : PIN_LOW); -} - -/** - * This function gets the sda pin state. - * - * @param The sda pin state. - */ -static rt_int32_t nu_soft_i2c_get_sda(void *data) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - - return rt_pin_read(cfg->sda); -} - -/** - * This function gets the scl pin state. - * - * @param The scl pin state. - */ -static rt_int32_t nu_soft_i2c_get_scl(void *data) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - - return rt_pin_read(cfg->scl); -} - -/* Soft I2C initialization function */ -int rt_soft_i2c_init(void) -{ - rt_size_t obj_num = sizeof(nu_soft_i2c_obj) / sizeof(struct nu_soft_i2c); - rt_err_t result; - - for (int i = 0; i < obj_num; i++) - { - nu_soft_i2c_obj[i].ops = nu_soft_i2c_bit_ops; - nu_soft_i2c_obj[i].ops.data = (void *)&nu_soft_i2c_cfg[i]; - nu_soft_i2c_obj[i].soft_i2c_bus.priv = &nu_soft_i2c_obj[i].ops; - nu_soft_i2c_gpio_init(&nu_soft_i2c_cfg[i]); - - result = rt_i2c_bit_add_bus(&nu_soft_i2c_obj[i].soft_i2c_bus, nu_soft_i2c_cfg[i].bus_name); - RT_ASSERT(result == RT_EOK); - - nu_soft_i2c_bus_unlock(&nu_soft_i2c_cfg[i]); - - LOG_D("software simulation %s init done, pin scl: %d, pin sda %d", - nu_soft_i2c_cfg[i].bus_name, - nu_soft_i2c_cfg[i].scl, - nu_soft_i2c_cfg[i].sda); - } - - return 0; -} -INIT_DEVICE_EXPORT(rt_soft_i2c_init); - -#endif //#if (defined(BSP_USING_SOFT_I2C) && defined(RT_USING_I2C_BITOPS) && defined(RT_USING_I2C) && defined(RT_USING_PIN)) diff --git a/bsp/nuvoton/libraries/n9h30/rtt_port/Kconfig b/bsp/nuvoton/libraries/n9h30/rtt_port/Kconfig index 1f8df1448ae..f0cab0d300f 100644 --- a/bsp/nuvoton/libraries/n9h30/rtt_port/Kconfig +++ b/bsp/nuvoton/libraries/n9h30/rtt_port/Kconfig @@ -413,47 +413,6 @@ config SOC_SERIES_N9H30 endif endif - menuconfig BSP_USING_SOFT_I2C - bool "Enable 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 - default n - - 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 - endif - - config BSP_USING_SOFT_I2C1 - bool "Enable SOFT I2C1" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - default n - - 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 - endif - endif - config BSP_USING_WDT bool "Enable Watchdog Timer(WDT)" select RT_USING_WDT diff --git a/bsp/nuvoton/libraries/n9h30/rtt_port/drv_softi2c.c b/bsp/nuvoton/libraries/n9h30/rtt_port/drv_softi2c.c deleted file mode 100644 index 8defbe38ebb..00000000000 --- a/bsp/nuvoton/libraries/n9h30/rtt_port/drv_softi2c.c +++ /dev/null @@ -1,238 +0,0 @@ -/**************************************************************************//** -* -* @copyright (C) 2020 Nuvoton Technology Corp. All rights reserved. -* -* SPDX-License-Identifier: Apache-2.0 -* -* Change Logs: -* Date Author Notes -* 2020-12-12 Wayne First version -* -******************************************************************************/ - -#include - -#if (defined(BSP_USING_SOFT_I2C) && defined(RT_USING_I2C_BITOPS) && defined(RT_USING_I2C) && defined(RT_USING_PIN)) - -#include -#include -#include -#include "NuMicro.h" -#include "drv_sys.h" - -/* Private define ---------------------------------------------------------------*/ -#define LOG_TAG "drv.softi2c" -#define DBG_ENABLE -#define DBG_SECTION_NAME LOG_TAG -#define DBG_LEVEL DBG_INFO -#include - -#ifdef BSP_USING_SOFT_I2C0 -#define NU_SOFT_I2C0_BUS_CONFIG \ - { \ - .scl = BSP_SOFT_I2C0_SCL_PIN, \ - .sda = BSP_SOFT_I2C0_SDA_PIN, \ - .bus_name = "softi2c0", \ - } -#endif - -#ifdef BSP_USING_SOFT_I2C1 -#define NU_SOFT_I2C1_BUS_CONFIG \ - { \ - .scl = BSP_SOFT_I2C1_SCL_PIN, \ - .sda = BSP_SOFT_I2C1_SDA_PIN, \ - .bus_name = "softi2c1", \ - } -#endif - -#if (!defined(BSP_USING_SOFT_I2C0) && !defined(BSP_USING_SOFT_I2C1)) - #error "Please define at least one BSP_USING_SOFT_I2Cx" - /* this driver can be disabled at menuconfig ? RT-Thread Components ? Device Drivers */ -#endif - -/* Private typedef --------------------------------------------------------------*/ -/* soft i2c config class */ -struct nu_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; -/* soft i2c driver class */ -struct nu_soft_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device soft_i2c_bus; -}; - -/* Private functions ------------------------------------------------------------*/ -static void nu_soft_i2c_udelay(rt_uint32_t us); -static void nu_soft_i2c_set_sda(void *data, rt_int32_t state); -static void nu_soft_i2c_set_scl(void *data, rt_int32_t state); -static rt_int32_t nu_soft_i2c_get_sda(void *data); -static rt_int32_t nu_soft_i2c_get_scl(void *data); - -/* Private variables ------------------------------------------------------------*/ -static const struct nu_soft_i2c_config nu_soft_i2c_cfg[] = -{ -#ifdef BSP_USING_SOFT_I2C0 - NU_SOFT_I2C0_BUS_CONFIG, -#endif -#ifdef BSP_USING_SOFT_I2C1 - NU_SOFT_I2C1_BUS_CONFIG, -#endif -}; - -static struct nu_soft_i2c nu_soft_i2c_obj[sizeof(nu_soft_i2c_cfg) / sizeof(nu_soft_i2c_cfg[0])]; - -static const struct rt_i2c_bit_ops nu_soft_i2c_bit_ops = -{ - .data = RT_NULL, - .set_sda = nu_soft_i2c_set_sda, - .set_scl = nu_soft_i2c_set_scl, - .get_sda = nu_soft_i2c_get_sda, - .get_scl = nu_soft_i2c_get_scl, - .udelay = nu_soft_i2c_udelay, - .delay_us = 1, - .timeout = 100 -}; - -/* Functions define ------------------------------------------------------------*/ - -/** - * The time delay function. - * - * @param microseconds. - */ -static void nu_soft_i2c_udelay(rt_uint32_t us) -{ - rt_hw_us_delay(us); -} - -/** - * This function initializes the soft i2c pin. - * - * @param soft i2c config class. - */ -static void nu_soft_i2c_gpio_init(const struct nu_soft_i2c_config *cfg) -{ - rt_pin_mode(cfg->scl, PIN_MODE_OUTPUT); - rt_pin_mode(cfg->sda, PIN_MODE_OUTPUT); - - rt_pin_write(cfg->scl, PIN_HIGH); - rt_pin_write(cfg->sda, PIN_HIGH); -} - -/** - * if i2c is locked, this function will unlock it - * - * @param soft i2c config class - * - * @return RT_EOK indicates successful unlock. - */ -static rt_err_t nu_soft_i2c_bus_unlock(const struct nu_soft_i2c_config *cfg) -{ - rt_int32_t i = 0; - - rt_pin_mode(cfg->sda, PIN_MODE_INPUT); - rt_pin_mode(cfg->scl, PIN_MODE_OUTPUT); - - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - while (i++ < 9) - { - rt_pin_write(cfg->scl, PIN_HIGH); - nu_soft_i2c_udelay(100); - rt_pin_write(cfg->scl, PIN_LOW); - nu_soft_i2c_udelay(100); - } - } - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - return -RT_ERROR; - } - - return RT_EOK; -} - -/** - * This function sets the sda pin. - * - * @param soft i2c config class. - * @param The sda pin state. - */ -static void nu_soft_i2c_set_sda(void *data, rt_int32_t state) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - - rt_pin_mode(cfg->sda, PIN_MODE_OUTPUT); - rt_pin_write(cfg->sda, state ? PIN_HIGH : PIN_LOW); -} - -/** - * This function sets the scl pin. - * - * @param soft i2c config class. - * @param The scl pin state. - */ -static void nu_soft_i2c_set_scl(void *data, rt_int32_t state) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - - rt_pin_mode(cfg->scl, PIN_MODE_OUTPUT); - rt_pin_write(cfg->scl, state ? PIN_HIGH : PIN_LOW); -} - -/** - * This function gets the sda pin state. - * - * @param The sda pin state. - */ -static rt_int32_t nu_soft_i2c_get_sda(void *data) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - - rt_pin_mode(cfg->sda, PIN_MODE_INPUT); - return rt_pin_read(cfg->sda); -} - -/** - * This function gets the scl pin state. - * - * @param The scl pin state. - */ -static rt_int32_t nu_soft_i2c_get_scl(void *data) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - - rt_pin_mode(cfg->scl, PIN_MODE_INPUT); - return rt_pin_read(cfg->scl); -} - -/* Soft I2C initialization function */ -int rt_soft_i2c_init(void) -{ - rt_size_t obj_num = sizeof(nu_soft_i2c_obj) / sizeof(struct nu_soft_i2c); - rt_err_t result; - - for (int i = 0; i < obj_num; i++) - { - nu_soft_i2c_obj[i].ops = nu_soft_i2c_bit_ops; - nu_soft_i2c_obj[i].ops.data = (void *)&nu_soft_i2c_cfg[i]; - nu_soft_i2c_obj[i].soft_i2c_bus.priv = &nu_soft_i2c_obj[i].ops; - nu_soft_i2c_gpio_init(&nu_soft_i2c_cfg[i]); - result = rt_i2c_bit_add_bus(&nu_soft_i2c_obj[i].soft_i2c_bus, nu_soft_i2c_cfg[i].bus_name); - RT_ASSERT(result == RT_EOK); - nu_soft_i2c_bus_unlock(&nu_soft_i2c_cfg[i]); - - LOG_I("software simulation %s init done, pin scl: %d, pin sda %d", - nu_soft_i2c_cfg[i].bus_name, - nu_soft_i2c_cfg[i].scl, - nu_soft_i2c_cfg[i].sda); - } - - return 0; -} -INIT_DEVICE_EXPORT(rt_soft_i2c_init); - -#endif //#if (defined(BSP_USING_SOFT_I2C) && defined(RT_USING_I2C_BITOPS) && defined(RT_USING_I2C) && defined(RT_USING_PIN)) diff --git a/bsp/nuvoton/libraries/nuc980/rtt_port/Kconfig b/bsp/nuvoton/libraries/nuc980/rtt_port/Kconfig index af7e441fced..2e494bd0b7e 100644 --- a/bsp/nuvoton/libraries/nuc980/rtt_port/Kconfig +++ b/bsp/nuvoton/libraries/nuc980/rtt_port/Kconfig @@ -542,47 +542,6 @@ config SOC_SERIES_NUC980 endif endif - menuconfig BSP_USING_SOFT_I2C - bool "Enable 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 - default n - - 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 - endif - - config BSP_USING_SOFT_I2C1 - bool "Enable SOFT I2C1" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - default n - - 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 - endif - endif - config BSP_USING_WDT bool "Enable Watchdog Timer(WDT)" select RT_USING_WDT diff --git a/bsp/nuvoton/libraries/nuc980/rtt_port/drv_softi2c.c b/bsp/nuvoton/libraries/nuc980/rtt_port/drv_softi2c.c deleted file mode 100644 index adc62cb4c18..00000000000 --- a/bsp/nuvoton/libraries/nuc980/rtt_port/drv_softi2c.c +++ /dev/null @@ -1,229 +0,0 @@ -/**************************************************************************//** -* -* @copyright (C) 2020 Nuvoton Technology Corp. All rights reserved. -* -* SPDX-License-Identifier: Apache-2.0 -* -* Change Logs: -* Date Author Notes -* 2020-12-12 Wayne First version -* -******************************************************************************/ - -#include - -#if (defined(BSP_USING_SOFT_I2C) && defined(RT_USING_I2C_BITOPS) && defined(RT_USING_I2C) && defined(RT_USING_PIN)) - -#include -#include -#include -#include "NuMicro.h" -#include "drv_sys.h" - -/* Private define ---------------------------------------------------------------*/ -#define LOG_TAG "drv.softi2c" -#define DBG_ENABLE -#define DBG_SECTION_NAME LOG_TAG -#define DBG_LEVEL DBG_INFO -#include - -#ifdef BSP_USING_SOFT_I2C0 -#define NU_SOFT_I2C0_BUS_CONFIG \ - { \ - .scl = BSP_SOFT_I2C0_SCL_PIN, \ - .sda = BSP_SOFT_I2C0_SDA_PIN, \ - .bus_name = "softi2c0", \ - } -#endif - -#ifdef BSP_USING_SOFT_I2C1 -#define NU_SOFT_I2C1_BUS_CONFIG \ - { \ - .scl = BSP_SOFT_I2C1_SCL_PIN, \ - .sda = BSP_SOFT_I2C1_SDA_PIN, \ - .bus_name = "softi2c1", \ - } -#endif - -#if (!defined(BSP_USING_SOFT_I2C0) && !defined(BSP_USING_SOFT_I2C1)) - #error "Please define at least one BSP_USING_SOFT_I2Cx" - /* this driver can be disabled at menuconfig ? RT-Thread Components ? Device Drivers */ -#endif - -/* Private typedef --------------------------------------------------------------*/ -/* soft i2c config class */ -struct nu_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; -/* soft i2c driver class */ -struct nu_soft_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device soft_i2c_bus; -}; - -/* Private functions ------------------------------------------------------------*/ -static void nu_soft_i2c_udelay(rt_uint32_t us); -static void nu_soft_i2c_set_sda(void *data, rt_int32_t state); -static void nu_soft_i2c_set_scl(void *data, rt_int32_t state); -static rt_int32_t nu_soft_i2c_get_sda(void *data); -static rt_int32_t nu_soft_i2c_get_scl(void *data); - -/* Private variables ------------------------------------------------------------*/ -static const struct nu_soft_i2c_config nu_soft_i2c_cfg[] = -{ -#ifdef BSP_USING_SOFT_I2C0 - NU_SOFT_I2C0_BUS_CONFIG, -#endif -#ifdef BSP_USING_SOFT_I2C1 - NU_SOFT_I2C1_BUS_CONFIG, -#endif -}; - -static struct nu_soft_i2c nu_soft_i2c_obj[sizeof(nu_soft_i2c_cfg) / sizeof(nu_soft_i2c_cfg[0])]; - -static const struct rt_i2c_bit_ops nu_soft_i2c_bit_ops = -{ - .data = RT_NULL, - .set_sda = nu_soft_i2c_set_sda, - .set_scl = nu_soft_i2c_set_scl, - .get_sda = nu_soft_i2c_get_sda, - .get_scl = nu_soft_i2c_get_scl, - .udelay = nu_soft_i2c_udelay, - .delay_us = 1, - .timeout = 100 -}; - -/* Functions define ------------------------------------------------------------*/ - -/** - * The time delay function. - * - * @param microseconds. - */ -static void nu_soft_i2c_udelay(rt_uint32_t us) -{ - rt_hw_us_delay(us); -} - -/** - * This function initializes the soft i2c pin. - * - * @param soft i2c config class. - */ -static void nu_soft_i2c_gpio_init(const struct nu_soft_i2c_config *cfg) -{ - rt_pin_mode(cfg->scl, PIN_MODE_OUTPUT_OD); - rt_pin_mode(cfg->sda, PIN_MODE_OUTPUT_OD); - - rt_pin_write(cfg->scl, PIN_HIGH); - rt_pin_write(cfg->sda, PIN_HIGH); -} - -/** - * if i2c is locked, this function will unlock it - * - * @param soft i2c config class - * - * @return RT_EOK indicates successful unlock. - */ -static rt_err_t nu_soft_i2c_bus_unlock(const struct nu_soft_i2c_config *cfg) -{ - rt_int32_t i = 0; - - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - while (i++ < 9) - { - rt_pin_write(cfg->scl, PIN_HIGH); - nu_soft_i2c_udelay(100); - rt_pin_write(cfg->scl, PIN_LOW); - nu_soft_i2c_udelay(100); - } - } - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - return -RT_ERROR; - } - - return RT_EOK; -} - -/** - * This function sets the sda pin. - * - * @param soft i2c config class. - * @param The sda pin state. - */ -static void nu_soft_i2c_set_sda(void *data, rt_int32_t state) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - - rt_pin_write(cfg->sda, state ? PIN_HIGH : PIN_LOW); -} - -/** - * This function sets the scl pin. - * - * @param soft i2c config class. - * @param The scl pin state. - */ -static void nu_soft_i2c_set_scl(void *data, rt_int32_t state) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - - rt_pin_write(cfg->scl, state ? PIN_HIGH : PIN_LOW); -} - -/** - * This function gets the sda pin state. - * - * @param The sda pin state. - */ -static rt_int32_t nu_soft_i2c_get_sda(void *data) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - return rt_pin_read(cfg->sda); -} - -/** - * This function gets the scl pin state. - * - * @param The scl pin state. - */ -static rt_int32_t nu_soft_i2c_get_scl(void *data) -{ - struct nu_soft_i2c_config *cfg = (struct nu_soft_i2c_config *)data; - return rt_pin_read(cfg->scl); -} - -/* Soft I2C initialization function */ -int rt_soft_i2c_init(void) -{ - rt_size_t obj_num = sizeof(nu_soft_i2c_obj) / sizeof(struct nu_soft_i2c); - rt_err_t result; - - for (int i = 0; i < obj_num; i++) - { - nu_soft_i2c_obj[i].ops = nu_soft_i2c_bit_ops; - nu_soft_i2c_obj[i].ops.data = (void *)&nu_soft_i2c_cfg[i]; - nu_soft_i2c_obj[i].soft_i2c_bus.priv = &nu_soft_i2c_obj[i].ops; - nu_soft_i2c_gpio_init(&nu_soft_i2c_cfg[i]); - result = rt_i2c_bit_add_bus(&nu_soft_i2c_obj[i].soft_i2c_bus, nu_soft_i2c_cfg[i].bus_name); - RT_ASSERT(result == RT_EOK); - nu_soft_i2c_bus_unlock(&nu_soft_i2c_cfg[i]); - - LOG_D("software simulation %s init done, pin scl: %d, pin sda %d", - nu_soft_i2c_cfg[i].bus_name, - nu_soft_i2c_cfg[i].scl, - nu_soft_i2c_cfg[i].sda); - } - - return 0; -} -INIT_DEVICE_EXPORT(rt_soft_i2c_init); - -#endif //#if (defined(BSP_USING_SOFT_I2C) && defined(RT_USING_I2C_BITOPS) && defined(RT_USING_I2C) && defined(RT_USING_PIN)) diff --git a/bsp/nuvoton/ma35-rtp/.ci/attachconfig/ci.attachconfig.yml b/bsp/nuvoton/ma35-rtp/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..e7d053497b3 --- /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 00000000000..f5ba058f8e1 --- /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 00000000000..f5ba058f8e1 --- /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 00000000000..f5ba058f8e1 --- /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 00000000000..e7d053497b3 --- /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 00000000000..f5ba058f8e1 --- /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 00000000000..f5ba058f8e1 --- /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 00000000000..e7d053497b3 --- /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 00000000000..f5ba058f8e1 --- /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 00000000000..f5ba058f8e1 --- /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 00000000000..f5ba058f8e1 --- /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 00000000000..f5ba058f8e1 --- /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 9ac4704b462..e1d470b022f 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 #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 772d3452bb4..a921d8d8498 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 9de56d4ffbf..00000000000 --- 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 - -#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 41fd652490e..00000000000 --- 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 - -/* 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 00000000000..1e501cb75b1 --- /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 10269eb496b..ea25d91e422 100644 --- a/bsp/nxp/lpc/lpc55sxx/lpc55s69_nxp_evk/board/Kconfig +++ b/bsp/nxp/lpc/lpc55sxx/lpc55s69_nxp_evk/board/Kconfig @@ -117,43 +117,6 @@ menu "On-chip Peripheral Drivers" endif endif - menuconfig BSP_USING_SOFT_I2C - bool "Enable software I2C bus" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - default n - - if BSP_USING_SOFT_I2C - config BSP_USING_SOFT_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 - - 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 - endif - menuconfig BSP_USING_SPI config BSP_USING_SPI bool "Enable SPI" diff --git a/bsp/nxp/mcx/mcxc/Libraries/drivers/SConscript b/bsp/nxp/mcx/mcxc/Libraries/drivers/SConscript index 56456e2fec7..34b64cb75dc 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 1dee3db3560..d5144b227d2 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 5190ee4a594..00000000000 --- 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 -#include -#include -#include - -#ifdef BSP_USING_SW_I2C - -#define LOG_TAG "drv.i2c" -#include - -/* 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 00000000000..e74cbea5fda --- /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 95d456e6256..54fd1771353 100644 --- a/bsp/nxp/mcx/mcxn/frdm-mcxn236/board/Kconfig +++ b/bsp/nxp/mcx/mcxn/frdm-mcxn236/board/Kconfig @@ -66,28 +66,6 @@ menu "On-chip Peripheral Drivers" default y endif - menuconfig BSP_USING_SW_I2C - bool "Enable I2C BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_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 - default 129 - config BSP_SW_I2C0_SDA_PIN - int "SWI2C0 sda pin number" - range 0 159 - default 128 - endif - endif - menuconfig BSP_USING_SPI config BSP_USING_SPI bool "Enable SPI" diff --git a/bsp/raspberry-pico/Drivers/SConscript b/bsp/raspberry-pico/Drivers/SConscript index 5afbe70b28d..20d95d2b149 100644 --- a/bsp/raspberry-pico/Drivers/SConscript +++ b/bsp/raspberry-pico/Drivers/SConscript @@ -10,9 +10,6 @@ if GetDepend('BSP_USING_PIN'): if GetDepend('BSP_USING_UART'): src += ['drv_uart.c'] -if GetDepend('BSP_USING_SOFT_I2C'): - src += ['drv_soft_i2c.c'] - if GetDepend('BSP_USING_SOFT_SPI'): src += ['drv_soft_spi.c'] diff --git a/bsp/raspberry-pico/Drivers/drv_soft_i2c.c b/bsp/raspberry-pico/Drivers/drv_soft_i2c.c deleted file mode 100644 index bbda17c61c5..00000000000 --- a/bsp/raspberry-pico/Drivers/drv_soft_i2c.c +++ /dev/null @@ -1,189 +0,0 @@ -/* - * Copyright (c) 2006-2023, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2023/06/01 chushicheng first version - */ -#include "drv_soft_i2c.h" - -#ifdef BSP_USING_SOFT_I2C -#define DBG_LEVEL DBG_LOG -#include -#define LOG_TAG "DRV.I2C" - -static const struct pico_soft_i2c_config soft_i2c_config[] = -{ -#ifdef BSP_USING_SOFT_I2C1 - I2C1_BUS_CONFIG, -#endif -}; - -static struct pico_i2c i2c_obj[sizeof(soft_i2c_config) / sizeof(soft_i2c_config[0])]; - -/** - * This function initializes the i2c pin. - * - * @param pico i2c dirver class. - */ -static void pico_i2c_gpio_init(struct pico_i2c *i2c) -{ - struct pico_soft_i2c_config* cfg = (struct pico_soft_i2c_config*)i2c->ops.data; - - rt_pin_mode(cfg->scl, PIN_MODE_OUTPUT_OD); - rt_pin_mode(cfg->sda, PIN_MODE_OUTPUT_OD); - rt_pin_write(cfg->scl, PIN_HIGH); - rt_pin_write(cfg->sda, PIN_HIGH); -} - -static void pico_i2c_pin_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct pico_i2c); - - for(rt_size_t i = 0; i < obj_num; i++) - { - pico_i2c_gpio_init(&i2c_obj[i]); - } -} - -/** - * This function sets the sda pin. - * - * @param pico config class. - * @param The sda pin state. - */ -static void pico_set_sda(void *data, rt_int32_t state) -{ - struct pico_soft_i2c_config* cfg = (struct pico_soft_i2c_config*)data; - if (state) - { - rt_pin_write(cfg->sda, PIN_HIGH); - } - else - { - rt_pin_write(cfg->sda, PIN_LOW); - } -} - -/** - * This function sets the scl pin. - * - * @param pico config class. - * @param The scl pin state. - */ -static void pico_set_scl(void *data, rt_int32_t state) -{ - struct pico_soft_i2c_config* cfg = (struct pico_soft_i2c_config*)data; - if (state) - { - rt_pin_write(cfg->scl, PIN_HIGH); - } - else - { - rt_pin_write(cfg->scl, PIN_LOW); - } -} - -/** - * This function gets the sda pin state. - * - * @param The sda pin state. - */ -static rt_int32_t pico_get_sda(void *data) -{ - struct pico_soft_i2c_config* cfg = (struct pico_soft_i2c_config*)data; - return rt_pin_read(cfg->sda); -} - -/** - * This function gets the scl pin state. - * - * @param The scl pin state. - */ -static rt_int32_t pico_get_scl(void *data) -{ - struct pico_soft_i2c_config* cfg = (struct pico_soft_i2c_config*)data; - return rt_pin_read(cfg->scl); -} - -/** - * The time delay function. - * - * @param microseconds. - */ -static void pico_udelay(rt_uint32_t us) -{ - busy_wait_us_32(us); -} - -static const struct rt_i2c_bit_ops pico_bit_ops_default = -{ - .data = RT_NULL, - .pin_init = pico_i2c_pin_init, - .set_sda = pico_set_sda, - .set_scl = pico_set_scl, - .get_sda = pico_get_sda, - .get_scl = pico_get_scl, - .udelay = pico_udelay, - .delay_us = 1, - .timeout = 100, - .i2c_pin_init_flag = RT_FALSE -}; - -/** - * if i2c is locked, this function will unlock it - * - * @param pico config class - * - * @return RT_EOK indicates successful unlock. - */ -static rt_err_t pico_i2c_bus_unlock(const struct pico_soft_i2c_config *cfg) -{ - rt_int32_t i = 0; - - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - while (i++ < 9) - { - rt_pin_write(cfg->scl, PIN_HIGH); - pico_udelay(100); - rt_pin_write(cfg->scl, PIN_LOW); - pico_udelay(100); - } - } - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - return -RT_ERROR; - } - - return RT_EOK; -} - -/* I2C initialization function */ -int rt_soft_i2c_init(void) -{ - rt_err_t result; - - for (rt_size_t i = 0; i < sizeof(i2c_obj) / sizeof(struct pico_i2c); i++) - { - i2c_obj[i].ops = pico_bit_ops_default; - i2c_obj[i].ops.data = (void*)&soft_i2c_config[i]; - i2c_obj[i].i2c_bus.priv = &i2c_obj[i].ops; - - result = rt_i2c_bit_add_bus(&i2c_obj[i].i2c_bus, soft_i2c_config[i].bus_name); - RT_ASSERT(result == RT_EOK); - pico_i2c_bus_unlock(&soft_i2c_config[i]); - - LOG_D("software simulation %s init done, pin scl: %d, pin sda %d", - soft_i2c_config[i].bus_name, - soft_i2c_config[i].scl, - soft_i2c_config[i].sda); - } - - return RT_EOK; -} -INIT_DEVICE_EXPORT(rt_soft_i2c_init); - -#endif /* BSP_USING_SOFT_I2C */ diff --git a/bsp/raspberry-pico/Drivers/drv_soft_i2c.h b/bsp/raspberry-pico/Drivers/drv_soft_i2c.h deleted file mode 100644 index b5e663b673e..00000000000 --- a/bsp/raspberry-pico/Drivers/drv_soft_i2c.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2006-2023, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2023/06/01 chushicheng first version - */ - -#ifndef __DRV_SOFT_I2C__ -#define __DRV_SOFT_I2C__ - -#include -#include "drv_gpio.h" -#include "board.h" - -#ifdef BSP_USING_SOFT_I2C -/* pico i2c dirver class */ -struct pico_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device i2c_bus; -}; - -/* pico config class */ -struct pico_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; - -#ifdef BSP_USING_SOFT_I2C1 -#define I2C1_BUS_CONFIG \ - { \ - .scl = BSP_SOFT_I2C1_SCL_PIN, \ - .sda = BSP_SOFT_I2C1_SDA_PIN, \ - .bus_name = "i2c1", \ - } -#endif - -int rt_soft_i2c_init(void); - -#endif /* BSP_USING_SOFT_I2C */ -#endif diff --git a/bsp/raspberry-pico/RP2040/.ci/attachconfig/ci.attachconfig.yml b/bsp/raspberry-pico/RP2040/.ci/attachconfig/ci.attachconfig.yml index e1aa367595c..89aed8b0146 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 b1b70a9a389..1929746e1f4 100644 --- a/bsp/raspberry-pico/RP2040/board/Kconfig +++ b/bsp/raspberry-pico/RP2040/board/Kconfig @@ -128,28 +128,6 @@ menu "On-chip Peripheral Drivers" endif endif - menuconfig BSP_USING_SOFT_I2C - bool "Enable I2C BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_SOFT_I2C - config BSP_USING_SOFT_I2C1 - bool "Enable I2C1 Bus (software simulation)" - default n - if BSP_USING_SOFT_I2C1 - config BSP_SOFT_I2C1_SCL_PIN - int "i2c1 scl pin number (GP)" - range 0 28 - default 2 - config BSP_SOFT_I2C1_SDA_PIN - int "I2C1 sda pin number (GP)" - range 0 28 - default 3 - endif - endif - menuconfig BSP_USING_SOFT_SPI bool "Enable soft SPI BUS" default n @@ -684,7 +662,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 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 00000000000..42988723320 --- /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 b1b70a9a389..1929746e1f4 100644 --- a/bsp/raspberry-pico/RP2350/board/Kconfig +++ b/bsp/raspberry-pico/RP2350/board/Kconfig @@ -128,28 +128,6 @@ menu "On-chip Peripheral Drivers" endif endif - menuconfig BSP_USING_SOFT_I2C - bool "Enable I2C BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_SOFT_I2C - config BSP_USING_SOFT_I2C1 - bool "Enable I2C1 Bus (software simulation)" - default n - if BSP_USING_SOFT_I2C1 - config BSP_SOFT_I2C1_SCL_PIN - int "i2c1 scl pin number (GP)" - range 0 28 - default 2 - config BSP_SOFT_I2C1_SDA_PIN - int "I2C1 sda pin number (GP)" - range 0 28 - default 3 - endif - endif - menuconfig BSP_USING_SOFT_SPI bool "Enable soft SPI BUS" default n @@ -684,7 +662,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 diff --git a/bsp/renesas/ra6m3-hmi-board/.ci/attachconfig/attachconfig.yml b/bsp/renesas/ra6m3-hmi-board/.ci/attachconfig/attachconfig.yml index 6844a3c3e04..2e533fefb9c 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 49d678eac75..6b50fa8c036 100644 --- a/bsp/renesas/ra6m3-hmi-board/board/Kconfig +++ b/bsp/renesas/ra6m3-hmi-board/board/Kconfig @@ -112,7 +112,24 @@ menu "Hardware Drivers Config" help Enable this option to include LVGL stress demo. -- LVGL9.3.x endif - endmenu + + config RT_SOFT_I2C0_SCL_PIN_DEFAULT + int + default 514 if BSP_USING_ARDUINO + + config RT_SOFT_I2C0_SDA_PIN_DEFAULT + int + default 515 if BSP_USING_ARDUINO + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 514 if BSP_USING_TOUCH + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 515 if BSP_USING_TOUCH + +endmenu menu "On-chip Peripheral Drivers" @@ -218,68 +235,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 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 e0af324b7a1..b9368241665 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 6982913435d..43b8f8b4b85 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 @@ -38,8 +38,8 @@ const pin_map_t pin_map_table[]= {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) */ + {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 */ 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 72ec3eb9f16..510b26e9630 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 3e6cf30168e..8ae30fa3a2e 100644 --- a/bsp/renesas/ra8p1-titan-board/.ci/attachconfig/attachconfig.yml +++ b/bsp/renesas/ra8p1-titan-board/.ci/attachconfig/attachconfig.yml @@ -38,3 +38,12 @@ devices.ethernet: 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" diff --git a/bsp/renesas/ra8p1-titan-board/board/Kconfig b/bsp/renesas/ra8p1-titan-board/board/Kconfig index 7d1e754f491..986c07ccd43 100644 --- a/bsp/renesas/ra8p1-titan-board/board/Kconfig +++ b/bsp/renesas/ra8p1-titan-board/board/Kconfig @@ -585,29 +585,6 @@ menu "Hardware Drivers Config" default n endif - menuconfig BSP_USING_SOFT_I2C - bool "Enable software I2C bus" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - default n - if BSP_USING_SOFT_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 Bus (software simulation)" - default n - if BSP_USING_I2C1 - comment "Please refer to the 'bsp_io.h' file to configure the pins" - config BSP_I2C1_SCL_PIN - hex "i2c1 scl pin number (hex)" - range 0x0000 0xFFFF - default 0x050C - config BSP_I2C1_SDA_PIN - hex "i2c1 sda pin number (hex)" - range 0x0000 0xFFFF - default 0x050B - endif - endif - menuconfig BSP_USING_SDHI bool "Enable SDHI" default n @@ -750,8 +727,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 RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 if BSP_USING_CEU_CAMERA menu "Camera Pins Configure" @@ -766,7 +743,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 +779,14 @@ menu "Hardware Drivers Config" default 0 endif + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 1292 if BSP_USING_CEU_CAMERA + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 1291 if BSP_USING_CEU_CAMERA + config BSP_USING_G2D bool default n 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 00000000000..8e4f07c856e --- /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 e4cff331160..dde8cdd7792 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,7 @@ menu "Hardware Drivers Config" bool "Enable Hardware I2C1 BUS" default n endif - if !BSP_USING_HW_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default y - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - hex "i2c1 scl pin number" - range 0x0000 0x0B0F - default 0x0B03 - config BSP_I2C1_SDA_PIN - hex "I2C1 sda pin number" - range 0x0000 0x0B0F - default 0x050E - endif - endif endif - menuconfig BSP_USING_SPI bool "Enable SPI BUS" default n 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 00000000000..8e4f07c856e --- /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 9060c7c18dc..93f5dd9d4c9 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,7 @@ menu "Hardware Drivers Config" bool "Enable Hardware I2C1 BUS" default n endif - if !BSP_USING_HW_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default y - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - hex "i2c1 scl pin number" - range 0x0000 0x0B0F - default 0x0B03 - config BSP_I2C1_SDA_PIN - hex "I2C1 sda pin number" - range 0x0000 0x0B0F - default 0x050E - endif - endif endif - menuconfig BSP_USING_SPI bool "Enable SPI BUS" default n diff --git a/bsp/stm32/libraries/HAL_Drivers/drivers/SConscript b/bsp/stm32/libraries/HAL_Drivers/drivers/SConscript index 9c5ab5c4aee..37f52c2c8b2 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 37ffde2d40b..00000000000 --- a/bsp/stm32/libraries/HAL_Drivers/drivers/drv_soft_i2c.c +++ /dev/null @@ -1,196 +0,0 @@ -/* - * Copyright (c) 2006-2023, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2018-11-08 balanceTWK first version - * 2023-06-27 Meco Man replace stm32_udelay as rt_hw_us_delay - */ - -#include "drv_soft_i2c.h" -#include "drv_config.h" - -#if defined(BSP_USING_I2C1) || defined(BSP_USING_I2C2) || defined(BSP_USING_I2C3) || defined(BSP_USING_I2C4) || defined(BSP_USING_I2C5) - - -//#define DRV_DEBUG -#define LOG_TAG "drv.i2c.sw" -#include - -static const struct stm32_soft_i2c_config soft_i2c_config[] = -{ -#ifdef BSP_USING_I2C1 - I2C1_BUS_CONFIG, -#endif -#ifdef BSP_USING_I2C2 - I2C2_BUS_CONFIG, -#endif -#ifdef BSP_USING_I2C3 - I2C3_BUS_CONFIG, -#endif -#ifdef BSP_USING_I2C4 - I2C4_BUS_CONFIG, -#endif -#ifdef BSP_USING_I2C5 - I2C5_BUS_CONFIG, -#endif -}; - -static struct stm32_i2c i2c_obj[sizeof(soft_i2c_config) / sizeof(soft_i2c_config[0])]; - -/** - * This function initializes the i2c pin. - * - * @param Stm32 i2c dirver class. - */ -static void stm32_i2c_gpio_init(struct stm32_i2c *i2c) -{ - struct stm32_soft_i2c_config* cfg = (struct stm32_soft_i2c_config*)i2c->ops.data; - - rt_pin_mode(cfg->scl, PIN_MODE_OUTPUT_OD); - rt_pin_mode(cfg->sda, PIN_MODE_OUTPUT_OD); - - rt_pin_write(cfg->scl, PIN_HIGH); - rt_pin_write(cfg->sda, PIN_HIGH); -} - -static void stm32_i2c_pin_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct stm32_i2c); - - for(rt_size_t i = 0; i < obj_num; i++) - { - stm32_i2c_gpio_init(&i2c_obj[i]); - } -} - -/** - * This function sets the sda pin. - * - * @param Stm32 config class. - * @param The sda pin state. - */ -static void stm32_set_sda(void *data, rt_int32_t state) -{ - struct stm32_soft_i2c_config* cfg = (struct stm32_soft_i2c_config*)data; - if (state) - { - rt_pin_write(cfg->sda, PIN_HIGH); - } - else - { - rt_pin_write(cfg->sda, PIN_LOW); - } -} - -/** - * This function sets the scl pin. - * - * @param Stm32 config class. - * @param The scl pin state. - */ -static void stm32_set_scl(void *data, rt_int32_t state) -{ - struct stm32_soft_i2c_config* cfg = (struct stm32_soft_i2c_config*)data; - if (state) - { - rt_pin_write(cfg->scl, PIN_HIGH); - } - else - { - rt_pin_write(cfg->scl, PIN_LOW); - } -} - -/** - * This function gets the sda pin state. - * - * @param The sda pin state. - */ -static rt_int32_t stm32_get_sda(void *data) -{ - struct stm32_soft_i2c_config* cfg = (struct stm32_soft_i2c_config*)data; - return rt_pin_read(cfg->sda); -} - -/** - * This function gets the scl pin state. - * - * @param The scl pin state. - */ -static rt_int32_t stm32_get_scl(void *data) -{ - struct stm32_soft_i2c_config* cfg = (struct stm32_soft_i2c_config*)data; - return rt_pin_read(cfg->scl); -} - -static const struct rt_i2c_bit_ops stm32_bit_ops_default = -{ - .data = RT_NULL, - .pin_init = stm32_i2c_pin_init, - .set_sda = stm32_set_sda, - .set_scl = stm32_set_scl, - .get_sda = stm32_get_sda, - .get_scl = stm32_get_scl, - .udelay = rt_hw_us_delay, - .delay_us = 1, - .timeout = 100, - .i2c_pin_init_flag = RT_FALSE -}; - -/** - * if i2c is locked, this function will unlock it - * - * @param stm32 config class - * - * @return RT_EOK indicates successful unlock. - */ -static rt_err_t stm32_i2c_bus_unlock(const struct stm32_soft_i2c_config *cfg) -{ - rt_int32_t i = 0; - - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - while (i++ < 9) - { - rt_pin_write(cfg->scl, PIN_HIGH); - rt_hw_us_delay(100); - rt_pin_write(cfg->scl, PIN_LOW); - rt_hw_us_delay(100); - } - } - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - return -RT_ERROR; - } - - return RT_EOK; -} - -/* I2C initialization function */ -int rt_hw_i2c_init(void) -{ - rt_err_t result; - - for (rt_size_t i = 0; i < sizeof(i2c_obj) / sizeof(struct stm32_i2c); i++) - { - i2c_obj[i].ops = stm32_bit_ops_default; - i2c_obj[i].ops.data = (void*)&soft_i2c_config[i]; - i2c_obj[i].i2c_bus.priv = &i2c_obj[i].ops; - result = rt_i2c_bit_add_bus(&i2c_obj[i].i2c_bus, soft_i2c_config[i].bus_name); - RT_ASSERT(result == RT_EOK); - stm32_i2c_bus_unlock(&soft_i2c_config[i]); - - LOG_D("software simulation %s init done, pin scl: %d, pin sda %d", - soft_i2c_config[i].bus_name, - soft_i2c_config[i].scl, - soft_i2c_config[i].sda); - } - - return RT_EOK; -} -INIT_BOARD_EXPORT(rt_hw_i2c_init); - -#endif /* defined(BSP_USING_I2C1) || defined(BSP_USING_I2C2) || defined(BSP_USING_I2C3) || defined(BSP_USING_I2C4) */ diff --git a/bsp/stm32/libraries/HAL_Drivers/drivers/drv_soft_i2c.h b/bsp/stm32/libraries/HAL_Drivers/drivers/drv_soft_i2c.h deleted file mode 100644 index 40c77f566dd..00000000000 --- a/bsp/stm32/libraries/HAL_Drivers/drivers/drv_soft_i2c.h +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright (c) 2006-2023, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2018-11-08 balanceTWK first version - */ - -#ifndef __DRV_I2C__ -#define __DRV_I2C__ - -#include -#include -#include - -/* stm32 config class */ -struct stm32_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; -/* stm32 i2c dirver class */ -struct stm32_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device i2c_bus; -}; - -#ifdef BSP_USING_I2C1 -#define I2C1_BUS_CONFIG \ - { \ - .scl = BSP_I2C1_SCL_PIN, \ - .sda = BSP_I2C1_SDA_PIN, \ - .bus_name = "i2c1", \ - } -#endif - -#ifdef BSP_USING_I2C2 -#define I2C2_BUS_CONFIG \ - { \ - .scl = BSP_I2C2_SCL_PIN, \ - .sda = BSP_I2C2_SDA_PIN, \ - .bus_name = "i2c2", \ - } -#endif - -#ifdef BSP_USING_I2C3 -#define I2C3_BUS_CONFIG \ - { \ - .scl = BSP_I2C3_SCL_PIN, \ - .sda = BSP_I2C3_SDA_PIN, \ - .bus_name = "i2c3", \ - } -#endif - -#ifdef BSP_USING_I2C4 -#define I2C4_BUS_CONFIG \ - { \ - .scl = BSP_I2C4_SCL_PIN, \ - .sda = BSP_I2C4_SDA_PIN, \ - .bus_name = "i2c4", \ - } -#endif - -#ifdef BSP_USING_I2C5 -#define I2C5_BUS_CONFIG \ - { \ - .scl = BSP_I2C5_SCL_PIN, \ - .sda = BSP_I2C5_SDA_PIN, \ - .bus_name = "i2c5", \ - } -#endif -int rt_hw_i2c_init(void); - -#endif diff --git a/bsp/stm32/libraries/templates/stm32l1xx/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/libraries/templates/stm32l1xx/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..d626be14a57 --- /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 d95f206f822..e96db3df75b 100644 --- a/bsp/stm32/libraries/templates/stm32l1xx/board/Kconfig +++ b/bsp/stm32/libraries/templates/stm32l1xx/board/Kconfig @@ -21,7 +21,9 @@ menu "Onboard Peripheral Drivers" default n config BSP_USING_EEPROM bool "Enable I2C EEPROM (i2c1)" - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 default n config BSP_USING_SPI_FLASH @@ -38,6 +40,14 @@ menu "Onboard Peripheral Drivers" select BSP_USING_ADC1 default n + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if BSP_USING_EEPROM + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if BSP_USING_EEPROM + endmenu menu "On-chip Peripheral Drivers" @@ -158,23 +168,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - menuconfig BSP_USING_ADC bool "Enable ADC" default n diff --git a/bsp/stm32/libraries/templates/stm32wbxx/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/libraries/templates/stm32wbxx/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..7dc954e324f --- /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 1287e9a63fe..2f80cb02123 100644 --- a/bsp/stm32/libraries/templates/stm32wbxx/board/Kconfig +++ b/bsp/stm32/libraries/templates/stm32wbxx/board/Kconfig @@ -82,44 +82,6 @@ menu "On-chip Peripheral Drivers" - menuconfig BSP_USING_I2C - bool "Enable I2C BUS" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default y - if BSP_USING_I2C1 - comment "Notice: PB8 --> 24; PB9 --> 25" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 143 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 143 - default 25 - endif - - menuconfig BSP_USING_I2C3 - bool "Enable I2C3 BUS (software simulation)" - default y - if BSP_USING_I2C3 - comment "Notice: PB13 --> 29; PAB6 -->30" - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 1 143 - default 29 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 1 143 - default 30 - endif - endif - menuconfig BSP_USING_TIM bool "Enable timer" default n diff --git a/bsp/stm32/stm32f072-st-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f072-st-nucleo/.ci/attachconfig/ci.attachconfig.yml index 2a7fcdfd275..a863524b070 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 d3fdecd0b03..2fca39c34ae 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 @@ -39,8 +39,8 @@ const pin_map_t pin_map_table[]= {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) */ + {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 */ 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 aff1e18c22f..03b7b453503 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 69900f4061c..c573a81e92f 100644 --- a/bsp/stm32/stm32f072-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32f072-st-nucleo/board/Kconfig @@ -25,8 +25,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM16_CH1 select BSP_USING_PWM17 select BSP_USING_PWM17_CH1 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select BSP_USING_SPI select BSP_USING_SPI1 select BSP_SPI1_TX_USING_DMA @@ -36,6 +37,15 @@ menu "Onboard Peripheral Drivers" imply RTDUINO_USING_SERVO default n + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if BSP_USING_ARDUINO + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if BSP_USING_ARDUINO + endmenu menu "On-chip Peripheral Drivers" @@ -193,30 +203,6 @@ menu "On-chip Peripheral Drivers" endif 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: 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 - 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 e4646070a99..5f0a7623e10 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 d5ea59755e9..5de3160b6a0 100644 --- a/bsp/stm32/stm32f091-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32f091-st-nucleo/board/Kconfig @@ -117,23 +117,6 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 34 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 35 - endif - menuconfig BSP_USING_TIM bool "Enable timer" default n diff --git a/bsp/stm32/stm32f103-100ask-pro/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f103-100ask-pro/.ci/attachconfig/ci.attachconfig.yml index e4646070a99..bafb8dec3cd 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 65919379fc1..da7e871fb45 100644 --- a/bsp/stm32/stm32f103-100ask-pro/board/Kconfig +++ b/bsp/stm32/stm32f103-100ask-pro/board/Kconfig @@ -34,7 +34,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_EEPROM bool "Enable I2C EEPROM (i2c1)" - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 default n config BSP_USING_EXT_SRAM @@ -43,6 +45,14 @@ menu "Onboard Peripheral Drivers" help Chip name is IS62WV51216BLL, 1Mbytes static RAMs organized as 512K words by 16bits. + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if BSP_USING_EEPROM + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if BSP_USING_EEPROM + endmenu menu "On-chip Peripheral Drivers" @@ -217,23 +227,6 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 175 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 175 - default 23 - endif - menuconfig BSP_USING_TIM bool "Enable timer" default n diff --git a/bsp/stm32/stm32f103-atk-nano/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f103-atk-nano/.ci/attachconfig/ci.attachconfig.yml index e4646070a99..bafb8dec3cd 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 282086aecdc..1a2413bb342 100644 --- a/bsp/stm32/stm32f103-atk-nano/board/Kconfig +++ b/bsp/stm32/stm32f103-atk-nano/board/Kconfig @@ -10,7 +10,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_EEPROM bool "Enable I2C EEPROM (i2c1)" - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 default n config BSP_USING_SPI_FLASH @@ -27,6 +29,14 @@ menu "Onboard Peripheral Drivers" select BSP_USING_ADC1 default n + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if BSP_USING_EEPROM + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if BSP_USING_EEPROM + endmenu menu "On-chip Peripheral Drivers" @@ -219,23 +229,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - menuconfig BSP_USING_ADC bool "Enable ADC" default n diff --git a/bsp/stm32/stm32f103-atk-warshipv3/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f103-atk-warshipv3/.ci/attachconfig/ci.attachconfig.yml index e4646070a99..bafb8dec3cd 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 0d7330f082b..b9332960239 100644 --- a/bsp/stm32/stm32f103-atk-warshipv3/board/Kconfig +++ b/bsp/stm32/stm32f103-atk-warshipv3/board/Kconfig @@ -10,7 +10,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_EEPROM bool "Enable I2C EEPROM (i2c1)" - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 default n config BSP_USING_SPI_FLASH @@ -40,6 +42,14 @@ menu "Onboard Peripheral Drivers" select RT_USING_DFS_ELMFAT default n + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if BSP_USING_EEPROM + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if BSP_USING_EEPROM + endmenu menu "On-chip Peripheral Drivers" @@ -232,23 +242,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - menuconfig BSP_USING_ADC bool "Enable ADC" default n diff --git a/bsp/stm32/stm32f103-blue-pill/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f103-blue-pill/.ci/attachconfig/ci.attachconfig.yml index bec3d8400cb..597afb24a5a 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 267d7d9e294..6851111309d 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 @@ -35,8 +35,8 @@ const pin_map_t pin_map_table[]= {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) */ + {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 */ 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 09aced045af..8b518e890ad 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 0c359e8e791..a1faa7e35cb 100644 --- a/bsp/stm32/stm32f103-blue-pill/board/Kconfig +++ b/bsp/stm32/stm32f103-blue-pill/board/Kconfig @@ -26,8 +26,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM3_CH2 select BSP_USING_PWM3_CH3 select BSP_USING_PWM3_CH4 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select BSP_USING_SPI select BSP_USING_SPI2 # select BSP_SPI2_TX_USING_DMA @@ -37,6 +38,15 @@ menu "Onboard Peripheral Drivers" imply RTDUINO_USING_SERVO default n + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if BSP_USING_ARDUINO + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if BSP_USING_ARDUINO + endmenu menu "On-chip Peripheral Drivers" @@ -156,23 +166,6 @@ menu "On-chip Peripheral Drivers" endif endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number (PB8)" - range 0 143 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number (PB9)" - range 0 143 - default 25 - endif - menuconfig BSP_USING_PWM bool "Enable PWM" default n 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 e4646070a99..0041f2e9020 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 ecf31ff3024..2f71ed5c8a3 100644 --- a/bsp/stm32/stm32f103-dofly-M3S/board/Kconfig +++ b/bsp/stm32/stm32f103-dofly-M3S/board/Kconfig @@ -29,8 +29,18 @@ menu "Onboard Peripheral Drivers" config BSP_USING_EEPROM bool "Enable I2C EEPROM (i2c2)" - select BSP_USING_I2C2 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C2 default n + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if BSP_USING_EEPROM + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if BSP_USING_EEPROM + endmenu menu "On-chip Peripheral Drivers" @@ -136,24 +146,6 @@ menu "On-chip Peripheral Drivers" default n 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: 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 - endif - config BSP_USING_ON_CHIP_FLASH bool "Enable on-chip FLASH" default n 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 e4646070a99..bafb8dec3cd 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 75787559a1f..d0b064066bf 100644 --- a/bsp/stm32/stm32f103-fire-arbitrary/board/Kconfig +++ b/bsp/stm32/stm32f103-fire-arbitrary/board/Kconfig @@ -46,7 +46,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_EEPROM bool "Enable I2C EEPROM (i2c1)" - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 default n config BSP_USING_ETH @@ -83,6 +85,14 @@ menu "Onboard Peripheral Drivers" select RT_USING_DFS_ELMFAT default n + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if BSP_USING_EEPROM + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if BSP_USING_EEPROM + endmenu menu "On-chip Peripheral Drivers" @@ -257,23 +267,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 175 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 175 - default 23 - endif - menuconfig BSP_USING_TIM bool "Enable timer" default n diff --git a/bsp/stm32/stm32f103-gizwits-gokitv21/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f103-gizwits-gokitv21/.ci/attachconfig/ci.attachconfig.yml index e4646070a99..38f5930b0fd 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 73b2de6d746..14b8af97685 100644 --- a/bsp/stm32/stm32f103-gizwits-gokitv21/board/Kconfig +++ b/bsp/stm32/stm32f103-gizwits-gokitv21/board/Kconfig @@ -109,22 +109,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 15 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 16 - endif source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig" endmenu diff --git a/bsp/stm32/stm32f103-hw100k-ibox/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f103-hw100k-ibox/.ci/attachconfig/ci.attachconfig.yml index e4646070a99..bafb8dec3cd 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 401cbdfc31d..4ba5138228e 100644 --- a/bsp/stm32/stm32f103-hw100k-ibox/board/Kconfig +++ b/bsp/stm32/stm32f103-hw100k-ibox/board/Kconfig @@ -228,22 +228,6 @@ menu "On-chip Peripheral Drivers" config BSP_USING_ON_CHIP_FLASH bool "Enable on-chip FLASH" default n - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 144 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 144 - default 23 - endif menuconfig BSP_USING_SPI bool "Enable SPI BUS" default n diff --git a/bsp/stm32/stm32f103-keysking-learning/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f103-keysking-learning/.ci/attachconfig/ci.attachconfig.yml index 5d0c8906b8d..fff98fe34e1 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 ae9a9bd106b..0cfe44e8eb0 100644 --- a/bsp/stm32/stm32f103-keysking-learning/board/Kconfig +++ b/bsp/stm32/stm32f103-keysking-learning/board/Kconfig @@ -104,24 +104,6 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS" - 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 - endif - - menuconfig BSP_USING_PWM bool "Enable PWM" select RT_USING_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 e4646070a99..38f5930b0fd 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 7c3b526bc2d..bcca30aac8f 100644 --- a/bsp/stm32/stm32f103-yf-ufun/board/Kconfig +++ b/bsp/stm32/stm32f103-yf-ufun/board/Kconfig @@ -76,23 +76,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 15 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 16 - endif - menuconfig BSP_USING_PWM bool "Enable PWM" default n diff --git a/bsp/stm32/stm32f401-st-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f401-st-nucleo/.ci/attachconfig/ci.attachconfig.yml index 2a7fcdfd275..a863524b070 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 f4a2c693473..49bb23f64ed 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 @@ -39,8 +39,8 @@ const pin_map_t pin_map_table[]= {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) */ + {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 */ 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 1a314d4fc48..f57fddc7956 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 a4ddfc0c2c0..53d5e059828 100644 --- a/bsp/stm32/stm32f401-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32f401-st-nucleo/board/Kconfig @@ -27,8 +27,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM3_CH2 select BSP_USING_PWM4 select BSP_USING_PWM4_CH1 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select BSP_USING_SPI select BSP_USING_SPI1 select BSP_SPI1_TX_USING_DMA @@ -38,6 +39,15 @@ menu "Onboard Peripheral Drivers" imply RTDUINO_USING_SERVO default n + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if BSP_USING_ARDUINO + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if BSP_USING_ARDUINO + endmenu menu "On-chip Peripheral Drivers" @@ -206,30 +216,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: 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 - 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 2a7fcdfd275..13f78252828 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 924204820ce..ba4ff5cc0a5 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 @@ -22,8 +22,8 @@ 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) */ + {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)}, 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 464900f4666..04271243e1b 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 492a539d266..df10a5b26f2 100644 --- a/bsp/stm32/stm32f401-weact-blackpill/board/Kconfig +++ b/bsp/stm32/stm32f401-weact-blackpill/board/Kconfig @@ -20,12 +20,22 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM4_CH2 select BSP_USING_PWM4_CH3 select BSP_USING_PWM4_CH4 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select RTDUINO_USING_WIRE imply RTDUINO_USING_SERVO default n + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 47 if BSP_USING_ARDUINO + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 46 if BSP_USING_ARDUINO + endmenu menu "On-chip Peripheral Drivers" @@ -162,21 +172,6 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number (PC15)" - default 47 - config BSP_I2C1_SDA_PIN - int "i2c1 sda pin number (PC14)" - default 46 - endif - source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig" 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 e4646070a99..92ab2207084 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 613d1cfb85a..e80e13df4be 100644 --- a/bsp/stm32/stm32f407-armfly-v5/board/Kconfig +++ b/bsp/stm32/stm32f407-armfly-v5/board/Kconfig @@ -25,12 +25,22 @@ menu "Onboard Peripheral Drivers" config BSP_USING_MPU6050 bool "Enable MPU6050(i2c2)" - select BSP_USING_I2C2 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C2 select PKG_USING_MPU6XXX select PKG_USING_MPU6XXX_SAMPLE select PKG_USING_MPU6XXX_LATEST_VERSION default n + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 116 if BSP_USING_MPU6050 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 117 if BSP_USING_MPU6050 + endmenu menu "On-chip Peripheral Drivers" @@ -143,24 +153,6 @@ menu "On-chip Peripheral Drivers" default n 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 143 - default 116 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 1 143 - default 117 - endif - menuconfig BSP_USING_TIM bool "Enable timer" default n 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 00000000000..42956366977 --- /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 1cd3f3eb679..e83d582287c 100644 --- a/bsp/stm32/stm32f407-atk-explorer/board/Kconfig +++ b/bsp/stm32/stm32f407-atk-explorer/board/Kconfig @@ -43,7 +43,9 @@ menu "Onboard Peripheral Drivers" if BSP_USING_TOUCH config BSP_USING_TOUCH_CAP bool "Use LCD TOUCH Capacitance (i2c2)" - select BSP_USING_I2C2 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C2 default n if BSP_USING_TOUCH_CAP config BSP_TOUCH_INT_PIN @@ -101,7 +103,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_EEPROM bool "Enable I2C EEPROM (i2c1)" - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 default n config BSP_ETH_LEGACY_MODULE_ENABLED @@ -125,7 +129,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_MPU6050 bool "Enable MPU6050 (i2c1)" default n - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select PKG_USING_MPU6XXX menuconfig BSP_USING_CAN @@ -163,6 +169,22 @@ menu "Onboard Peripheral Drivers" default n endif + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if BSP_USING_EEPROM || BSP_USING_MPU6050 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if BSP_USING_EEPROM || BSP_USING_MPU6050 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 16 if BSP_USING_TOUCH_CAP + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 91 if BSP_USING_TOUCH_CAP + endmenu menu "On-chip Peripheral Drivers" @@ -508,40 +530,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 143 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 143 - default 25 - endif - - menuconfig BSP_USING_I2C2 - bool "Enable LCD Touch BUS (software simulation)" - 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 - endif - menuconfig BSP_USING_DAC bool "Enable DAC" default n 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 66f63d9525d..aa13e2458c8 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 00000000000..42956366977 --- /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 97bf737ac20..0793f9cdd22 100644 --- a/bsp/stm32/stm32f407-fk407m2-zgt6/board/Kconfig +++ b/bsp/stm32/stm32f407-fk407m2-zgt6/board/Kconfig @@ -366,42 +366,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable soft I2C BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 143 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 143 - default 25 - endif - - menuconfig BSP_USING_I2C2 - bool "Enable I2C2 BUS (software simulation)" - default n - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 143 - default 16 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 143 - default 91 - endif - endif - menuconfig BSP_USING_DAC bool "Enable DAC" default n diff --git a/bsp/stm32/stm32f407-lckfb-skystar/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f407-lckfb-skystar/.ci/attachconfig/ci.attachconfig.yml index e4646070a99..12d7fdc2c90 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 606c7725517..e31d827870c 100644 --- a/bsp/stm32/stm32f407-lckfb-skystar/board/Kconfig +++ b/bsp/stm32/stm32f407-lckfb-skystar/board/Kconfig @@ -439,28 +439,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C" - default n - if BSP_USING_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 143 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 143 - default 25 - endif - endif - config BSP_USING_ONBOARD_PM bool "Enable Power Management" select RT_USING_PM diff --git a/bsp/stm32/stm32f407-micu/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f407-micu/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..8b33403ed07 --- /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 25202dfa2f1..ffe43a42abc 100644 --- a/bsp/stm32/stm32f407-micu/board/Kconfig +++ b/bsp/stm32/stm32f407-micu/board/Kconfig @@ -26,21 +26,39 @@ menu "Onboard Peripheral Drivers" config BSP_USING_AHT20 bool "Enable AHT20(i2c1)" - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select PKG_USING_SENSORS_DRIVERS select PKG_USING_AHT10 default n config BSP_USING_ICM20608 bool "Enable ICM20608(i2c1)" - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select PKG_USING_SENSORS_DRIVERS select PKG_USING_ICM20608 default n + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if BSP_USING_AHT20 || BSP_USING_ICM20608 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if BSP_USING_AHT20 || BSP_USING_ICM20608 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if BSP_USING_SSD1306 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if BSP_USING_SSD1306 + endmenu menu "On-chip Peripheral Drivers" @@ -135,45 +153,6 @@ menu "On-chip Peripheral Drivers" endchoice endif - menuconfig BSP_USING_I2C - bool "Enable I2C" - default n - if BSP_USING_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 143 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 143 - 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 - endif - menuconfig BSP_USING_TIM bool "Enable timer" default n @@ -245,8 +224,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 RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C2 select PKG_USING_SSD1306 default n help @@ -255,4 +235,4 @@ 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 2a7fcdfd275..51f84c2e745 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 e1055375307..3107c1e8969 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 @@ -26,8 +26,8 @@ const pin_map_t pin_map_table[]= {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) */ + {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 */ 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 b88d64ce55f..edb6586e1ca 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 bd123367be3..0ea02635ae4 100644 --- a/bsp/stm32/stm32f407-robomaster-c/board/Kconfig +++ b/bsp/stm32/stm32f407-robomaster-c/board/Kconfig @@ -19,12 +19,22 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM8_CH1 select BSP_USING_PWM8_CH2 select BSP_USING_PWM8_CH3 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select RTDUINO_USING_WIRE imply RTDUINO_USING_SERVO default n + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 81 if BSP_USING_ARDUINO + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 80 if BSP_USING_ARDUINO + endmenu menu "On-chip Peripheral Drivers" @@ -257,23 +267,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - comment "Notice: 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 - endif - - source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig" 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 206761fcc2c..3a1b61a05c9 100644 --- a/bsp/stm32/stm32f407-rt-spark/.ci/attachconfig/ci.attachconfig.yml +++ b/bsp/stm32/stm32f407-rt-spark/.ci/attachconfig/ci.attachconfig.yml @@ -203,3 +203,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 3ca3a980b79..4801a24086b 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 @@ -46,10 +46,10 @@ const pin_map_t pin_map_table[]= {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) */ + {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 */ 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 12b7d608853..54ea7daea3d 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 a003330564f..766911446cc 100644 --- a/bsp/stm32/stm32f407-rt-spark/board/Kconfig +++ b/bsp/stm32/stm32f407-rt-spark/board/Kconfig @@ -22,9 +22,10 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM2_CH4 select BSP_USING_PWM4 select BSP_USING_PWM4_CH1 - select BSP_USING_I2C - select BSP_USING_I2C4 - select BSP_USING_I2C5 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C4 + select RT_USING_SOFT_I2C5 select BSP_USING_SOFT_SPI select BSP_USING_SOFT_SPI1 imply RTDUINO_USING_SERVO @@ -124,7 +125,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_EEPROM bool "Enable I2C EEPROM (i2c1)" - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 default n config BSP_USING_ENC28j60 @@ -214,24 +217,27 @@ menu "Onboard Peripheral Drivers" config BSP_USING_AHT21 bool "Enable AHT21(i2c3)" - select BSP_USING_I2C - select BSP_USING_I2C3 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C3 select PKG_USING_SENSORS_DRIVERS select PKG_USING_AHT10 default n config BSP_USING_AP3216C bool "Enable AP3216C(i2c2)" - select BSP_USING_I2C - select BSP_USING_I2C2 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C2 select PKG_USING_SENSORS_DRIVERS select PKG_USING_AP3216C default n config BSP_USING_ICM20608 bool "Enable ICM20608(i2c2)" - select BSP_USING_I2C - select BSP_USING_I2C2 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C2 select PKG_USING_SENSORS_DRIVERS select PKG_USING_ICM20608 default n @@ -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 RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C2 default n if BSP_USING_AUDIO @@ -271,6 +278,47 @@ menu "Onboard Peripheral Drivers" endif + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if BSP_USING_EEPROM + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if BSP_USING_EEPROM + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 81 if BSP_USING_AP3216C || BSP_USING_ICM20608 || BSP_USING_AUDIO + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 80 if BSP_USING_AP3216C || BSP_USING_ICM20608 || BSP_USING_AUDIO + + config RT_SOFT_I2C3_SCL_PIN_DEFAULT + int + default 64 if BSP_USING_AHT21 + + config RT_SOFT_I2C3_SDA_PIN_DEFAULT + int + default 65 if BSP_USING_AHT21 + + config RT_SOFT_I2C4_SCL_PIN_DEFAULT + int + default 103 if BSP_USING_ARDUINO + + config RT_SOFT_I2C4_SDA_PIN_DEFAULT + int + default 55 if BSP_USING_ARDUINO + + config RT_SOFT_I2C5_SCL_PIN_DEFAULT + int + default 22 if BSP_USING_ARDUINO + + config RT_SOFT_I2C5_SDA_PIN_DEFAULT + int + default 23 if BSP_USING_ARDUINO + endmenu menu "On-chip Peripheral Drivers" @@ -660,96 +708,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C" - default n - if BSP_USING_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 143 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 143 - default 25 - endif - - menuconfig BSP_USING_I2C2 - bool "Enable I2C2 BUS for AP3216C/ICM20608/ES8388/ Onboard(software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number, PF1" - range 0 143 - default 81 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number, PF0" - range 0 143 - default 80 - endif - - menuconfig BSP_USING_I2C3 - bool "Enable I2C3 BUS for AHT21 Onboard(software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C3 - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number, PE0" - range 0 143 - default 64 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number, PE1" - range 0 143 - default 65 - endif - - menuconfig BSP_USING_I2C4 - bool "Enable I2C4 BUS for RTduino(software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C4 - config BSP_I2C4_SCL_PIN - int "i2c4 scl pin number, PG7" - range 0 143 - default 103 - config BSP_I2C4_SDA_PIN - int "I2C4 sda pin number, PD7" - range 0 143 - default 55 - endif - - menuconfig BSP_USING_I2C5 - bool "Enable I2C5 BUS for RTduino(software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C5 - config BSP_I2C5_SCL_PIN - int "i2c5 scl pin number, PB6" - range 0 143 - default 22 - config BSP_I2C5_SDA_PIN - int "I2C5 sda pin number, PB7" - range 0 143 - default 23 - endif - endif - config BSP_USING_ONBOARD_PM bool "Enable Power Management" select RT_USING_PM 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 04f485e2469..ae642b0d477 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 fba50f9c5b6..6505443ec1a 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 e4646070a99..12d7fdc2c90 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 21a2adf70a1..9a6630fd17a 100644 --- a/bsp/stm32/stm32f407-st-discovery/board/Kconfig +++ b/bsp/stm32/stm32f407-st-discovery/board/Kconfig @@ -76,22 +76,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 25 - endif source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig" endmenu diff --git a/bsp/stm32/stm32f410-st-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f410-st-nucleo/.ci/attachconfig/ci.attachconfig.yml index 2a7fcdfd275..a863524b070 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 4ee6168858a..580e1300224 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 @@ -35,8 +35,8 @@ const pin_map_t pin_map_table[]= {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) */ + {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 */ 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 f9def347059..aae5f3e54d4 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 990d6df3f61..4d363259f52 100644 --- a/bsp/stm32/stm32f410-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32f410-st-nucleo/board/Kconfig @@ -19,11 +19,21 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM1_CH3 select BSP_USING_PWM1_CH2 select BSP_USING_PWM1_CH1 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select RTDUINO_USING_WIRE imply RTDUINO_USING_SERVO default n + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if BSP_USING_ARDUINO + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if BSP_USING_ARDUINO + endmenu menu "On-chip Peripheral Drivers" @@ -142,24 +152,6 @@ menu "On-chip Peripheral Drivers" endif endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - comment "Notice: PB8 --> 24; PB9 --> 25" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 80 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 80 - default 25 - endif - source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig" 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 e4646070a99..bafb8dec3cd 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 fbb264b09df..3a15b710114 100644 --- a/bsp/stm32/stm32f411-atk-nano/board/Kconfig +++ b/bsp/stm32/stm32f411-atk-nano/board/Kconfig @@ -10,7 +10,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_EEPROM bool "Enable I2C EEPROM (i2c1)" - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 default n config BSP_USING_SPI_FLASH @@ -27,6 +29,14 @@ menu "Onboard Peripheral Drivers" select BSP_USING_ADC1 default n + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if BSP_USING_EEPROM + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if BSP_USING_EEPROM + endmenu menu "On-chip Peripheral Drivers" @@ -152,23 +162,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - menuconfig BSP_USING_ADC bool "Enable ADC" default n diff --git a/bsp/stm32/stm32f411-st-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f411-st-nucleo/.ci/attachconfig/ci.attachconfig.yml index 2a7fcdfd275..a863524b070 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 716fd2318cd..8cb07b8dbc9 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 @@ -39,8 +39,8 @@ const pin_map_t pin_map_table[]= {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) */ + {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 */ 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 504b7464275..fcfc8581b14 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 9c4c0c3466d..f93c647b8fc 100644 --- a/bsp/stm32/stm32f411-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32f411-st-nucleo/board/Kconfig @@ -27,8 +27,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM3_CH2 select BSP_USING_PWM4_CH1 select BSP_USING_PWM1_CH1 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select BSP_USING_SPI select BSP_USING_SPI1 select BSP_SPI1_TX_USING_DMA @@ -38,6 +39,15 @@ menu "Onboard Peripheral Drivers" imply RTDUINO_USING_SERVO default n + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if BSP_USING_ARDUINO + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if BSP_USING_ARDUINO + endmenu menu "On-chip Peripheral Drivers" @@ -134,24 +144,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - comment "Notice: PB8 --> 24; PB9 --> 25" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 80 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 80 - default 25 - endif - menuconfig BSP_USING_PWM bool "Enable PWM" default n 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 2a7fcdfd275..265ebbf9742 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 b54e02e55e0..4fc5872dd44 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 @@ -26,8 +26,8 @@ const pin_map_t pin_map_table[]= {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) */ + {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 */ 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 68689fbf43b..f93acfcea6d 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 13e390fec47..a00c45b389b 100644 --- a/bsp/stm32/stm32f411-weact-blackpill/board/Kconfig +++ b/bsp/stm32/stm32f411-weact-blackpill/board/Kconfig @@ -24,12 +24,22 @@ menu "Onboard Peripheral Drivers" select BSP_USING_SPI1 select BSP_SPI1_TX_USING_DMA select BSP_SPI1_RX_USING_DMA - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select RTDUINO_USING_SPI select RTDUINO_USING_WIRE imply RTDUINO_USING_SERVO default n + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 26 if BSP_USING_ARDUINO + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 18 if BSP_USING_ARDUINO + endmenu menu "On-chip Peripheral Drivers" @@ -126,68 +136,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - comment "Notice: 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" - 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 - endif - endif - menuconfig BSP_USING_SPI bool "Enable SPI BUS" default n 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 e4646070a99..12d7fdc2c90 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 8af913a3926..b7d9da8805c 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 @@ -39,8 +39,8 @@ const pin_map_t pin_map_table[]= {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) */ + {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 */ 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 9840fd7f993..ce997a1dd78 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 28d5f0e1981..2300c93f625 100644 --- a/bsp/stm32/stm32f412-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32f412-st-nucleo/board/Kconfig @@ -27,8 +27,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM4_CH4 select BSP_USING_PWM4_CH3 select BSP_USING_PWM14_CH1 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select BSP_USING_SPI select BSP_USING_SPI1 select BSP_SPI1_TX_USING_DMA @@ -38,6 +39,15 @@ menu "Onboard Peripheral Drivers" imply RTDUINO_USING_SERVO default n + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if BSP_USING_ARDUINO + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if BSP_USING_ARDUINO + endmenu menu "On-chip Peripheral Drivers" @@ -190,30 +200,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: 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 - 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 69dfd8a229d..c18707048cf 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 cd009d2fe29..c96b9228ced 100644 --- a/bsp/stm32/stm32f413-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32f413-st-nucleo/board/Kconfig @@ -115,24 +115,6 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - comment "Notice: PB6 --> 136; PB9 --> 140" - config BSP_I2C1_SCL_PIN - int "I2C1 scl pin number" - range 1 144 - default 136 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 144 - default 140 - endif - menuconfig BSP_USING_TIM bool "Enable timer" default n diff --git a/bsp/stm32/stm32f427-robomaster-a/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f427-robomaster-a/.ci/attachconfig/ci.attachconfig.yml index 2a7fcdfd275..27ce57a8cf2 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 13b630f72e1..cde506d43c6 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 @@ -49,8 +49,8 @@ const pin_map_t pin_map_table[]= {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) */ + {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)}, 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 261c0d46789..ea0651b9ee9 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 dbb3ea37b8b..130869c175e 100644 --- a/bsp/stm32/stm32f427-robomaster-a/board/Kconfig +++ b/bsp/stm32/stm32f427-robomaster-a/board/Kconfig @@ -38,12 +38,22 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM8_CH4 select BSP_USING_PWM12 select BSP_USING_PWM12_CH1 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select RTDUINO_USING_WIRE imply RTDUINO_USING_SERVO default n + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 68 if BSP_USING_ARDUINO + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 69 if BSP_USING_ARDUINO + endmenu menu "On-chip Peripheral Drivers" @@ -258,30 +268,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: 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 - 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 93697a09915..39288ba9ee1 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 99b09d498de..f194292506d 100644 --- a/bsp/stm32/stm32f429-armfly-v6/board/Kconfig +++ b/bsp/stm32/stm32f429-armfly-v6/board/Kconfig @@ -63,11 +63,21 @@ menu "Onboard Peripheral Drivers" config BSP_USING_MPU6050 bool "Enable MPU6050(i2c1)" - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select PKG_USING_MPU6XXX select PKG_USING_MPU6XXX_SAMPLE select PKG_USING_MPU6XXX_LATEST_VERSION default n + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if BSP_USING_MPU6050 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if BSP_USING_MPU6050 + endmenu menu "On-chip Peripheral Drivers" @@ -146,23 +156,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 25 - endif - menuconfig BSP_USING_TIM bool "Enable timer" default n 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 69dfd8a229d..5842675f068 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 151792707e2..22999e3ba2f 100644 --- a/bsp/stm32/stm32f429-atk-apollo/board/Kconfig +++ b/bsp/stm32/stm32f429-atk-apollo/board/Kconfig @@ -35,7 +35,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_MPU9250 bool "Enable MPU 9250 (i2c1)" - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select PKG_USING_MPU6XXX default n @@ -44,7 +46,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_ETH bool "Enable Ethernet (Ethernet pin conflict with uart3)" - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select PKG_USING_PCF8574 select RT_USING_LWIP select PHY_USING_LAN8720A @@ -59,7 +63,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_AUDIO bool "Enable AUDIO (WM8978)" - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select RT_USING_AUDIO default n @@ -74,6 +80,14 @@ menu "Onboard Peripheral Drivers" default n endif + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 116 if BSP_USING_MPU9250 || BSP_USING_ETH || BSP_USING_AUDIO + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 117 if BSP_USING_MPU9250 || BSP_USING_ETH || BSP_USING_AUDIO + endmenu menu "On-chip Peripheral Drivers" @@ -257,24 +271,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - comment "Notice: 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 - endif - menuconfig BSP_USING_TIM bool "Enable timer" default n 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 889c5b0dee7..a59d9396f3a 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 -#define CODEC_I2C_NAME ("i2c1") +#define CODEC_I2C_NAME ("swi2c1") #define RX_DMA_FIFO_SIZE (2048) extern struct drv_sai _sai_a; 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 f564cc1b847..d07a540cd0f 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 -#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 826f8c7ded1..61c48f3d980 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 #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 69dfd8a229d..bafb8dec3cd 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 c56a1b6a85f..40d2b6a2b75 100644 --- a/bsp/stm32/stm32f429-fire-challenger/board/Kconfig +++ b/bsp/stm32/stm32f429-fire-challenger/board/Kconfig @@ -35,7 +35,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_MPU6050 bool "Enable MPU6050 (i2c1)" - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select PKG_USING_MPU6XXX default n @@ -72,6 +74,14 @@ menu "Onboard Peripheral Drivers" select RT_USING_PIN default n + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if BSP_USING_MPU6050 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if BSP_USING_MPU6050 + endmenu menu "On-chip Peripheral Drivers" @@ -234,24 +244,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - comment "Notice: PB6 --> 22; PB7 --> 23" - config BSP_I2C1_SCL_PIN - int "I2C1 scl pin number" - range 1 176 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 176 - default 23 - endif - menuconfig BSP_USING_ONCHIP_RTC bool "Enable RTC" select RT_USING_RTC diff --git a/bsp/stm32/stm32f429-st-disco/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f429-st-disco/.ci/attachconfig/ci.attachconfig.yml index 69dfd8a229d..12d7fdc2c90 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 16195e5a124..3bc09804c62 100644 --- a/bsp/stm32/stm32f429-st-disco/board/Kconfig +++ b/bsp/stm32/stm32f429-st-disco/board/Kconfig @@ -94,23 +94,6 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "I2C1 scl pin number" - range 1 176 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 176 - default 25 - endif - menuconfig BSP_USING_SPI bool "Enable SPI BUS" select RT_USING_SPI diff --git a/bsp/stm32/stm32f469-st-disco/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f469-st-disco/.ci/attachconfig/ci.attachconfig.yml index 69787e1e617..08677bbd3cd 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 2488e187291..264518a3a77 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 @@ -39,8 +39,8 @@ const pin_map_t pin_map_table[]= {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) */ + {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 */ 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 8dd4453fd46..00068f4b660 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 88c6db1b242..c2f58393afa 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 93b561d4744..ce257da050f 100644 --- a/bsp/stm32/stm32f469-st-disco/board/Kconfig +++ b/bsp/stm32/stm32f469-st-disco/board/Kconfig @@ -40,8 +40,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM12 select BSP_USING_PWM12_CH1 select BSP_USING_PWM12_CH2 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select BSP_USING_SPI select BSP_USING_SPI2 select BSP_SPI2_TX_USING_DMA @@ -90,7 +91,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_TOUCH bool "Enable touch screen" select RT_USING_TOUCH - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 choice prompt "Touch IC type" @@ -116,6 +119,15 @@ menu "Onboard Peripheral Drivers" select BSP_USING_LTDC select BSP_USING_LCD_MIPI default n + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if BSP_USING_ARDUINO + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if BSP_USING_ARDUINO + endmenu menu "On-chip Peripheral Drivers" @@ -234,24 +246,6 @@ 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 - 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_SPI bool "Enable SPI BUS" select RT_USING_SPI 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 00000000000..d626be14a57 --- /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 224cd13c3c3..a72ff027868 100644 --- a/bsp/stm32/stm32f746-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32f746-st-nucleo/board/Kconfig @@ -163,23 +163,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 175 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 175 - default 23 - endif - menuconfig BSP_USING_TIM bool "Enable timer" default n diff --git a/bsp/stm32/stm32f767-atk-apollo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f767-atk-apollo/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..e4699eab7c8 --- /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 0bb7894b0ca..45659de29e8 100644 --- a/bsp/stm32/stm32f767-atk-apollo/board/Kconfig +++ b/bsp/stm32/stm32f767-atk-apollo/board/Kconfig @@ -27,7 +27,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_MPU9250 bool "Enable MPU 9250 (i2c2)" - select BSP_USING_I2C2 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_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 RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C2 select PKG_USING_PCF8574 select RT_USING_LWIP select PHY_USING_LAN8720A @@ -60,6 +64,14 @@ menu "Onboard Peripheral Drivers" select BSP_USING_SDRAM default n + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 116 if BSP_USING_MPU9250 || BSP_USING_ETH + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 117 if BSP_USING_MPU9250 || BSP_USING_ETH + endmenu menu "On-chip Peripheral Drivers" @@ -218,42 +230,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - comment "Notice: PB8 --> 24; PB9 --> 25" - config BSP_I2C1_SCL_PIN - int "I2C1 scl pin number" - range 1 176 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 176 - default 25 - endif - - menuconfig BSP_USING_I2C2 - bool "Enable I2C2 BUS (software simulation)" - default n - 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 - endif - menuconfig BSP_USING_ONCHIP_RTC bool "Enable RTC" select RT_USING_RTC 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 18bed5f8e42..c0dcce3b515 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 #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 00000000000..d626be14a57 --- /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 c55f45c72bd..9ec4e434f50 100644 --- a/bsp/stm32/stm32f767-fire-challenger-v1/board/Kconfig +++ b/bsp/stm32/stm32f767-fire-challenger-v1/board/Kconfig @@ -34,7 +34,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_MPU6050 bool "Enable MPU6050 (i2c4)" - select BSP_USING_I2C4 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C4 select PKG_USING_MPU6XXX default n @@ -52,6 +54,14 @@ menu "Onboard Peripheral Drivers" select RT_USING_PIN default n + config RT_SOFT_I2C4_SCL_PIN_DEFAULT + int + default 22 if BSP_USING_MPU6050 + + config RT_SOFT_I2C4_SDA_PIN_DEFAULT + int + default 23 if BSP_USING_MPU6050 + endmenu menu "On-chip Peripheral Drivers" @@ -191,24 +201,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - comment "Notice: PB6 --> 22; PB7 --> 23" - config BSP_I2C1_SCL_PIN - int "I2C1 scl pin number" - range 1 176 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 176 - default 23 - endif - menuconfig BSP_USING_ONCHIP_RTC bool "Enable RTC" select RT_USING_RTC diff --git a/bsp/stm32/stm32g070-st-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32g070-st-nucleo/.ci/attachconfig/ci.attachconfig.yml index e4646070a99..bafb8dec3cd 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 bbf6869bc49..f7daf9ff34a 100644 --- a/bsp/stm32/stm32g070-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32g070-st-nucleo/board/Kconfig @@ -204,23 +204,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - menuconfig BSP_USING_ADC bool "Enable ADC" default n diff --git a/bsp/stm32/stm32g071-st-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32g071-st-nucleo/.ci/attachconfig/ci.attachconfig.yml index e4646070a99..bafb8dec3cd 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 899c308fb49..710da6c25d0 100644 --- a/bsp/stm32/stm32g071-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32g071-st-nucleo/board/Kconfig @@ -196,23 +196,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 47 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 47 - default 23 - endif - menuconfig BSP_USING_ADC bool "Enable ADC" default n diff --git a/bsp/stm32/stm32g474-st-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32g474-st-nucleo/.ci/attachconfig/ci.attachconfig.yml index 2a7fcdfd275..a863524b070 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 6239575e01c..1643f75653c 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 @@ -39,8 +39,8 @@ const pin_map_t pin_map_table[]= {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) */ + {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 */ 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 aea3e8cf525..e9a42e38f7d 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 c43ecd91a8d..6b91e24b600 100644 --- a/bsp/stm32/stm32g474-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32g474-st-nucleo/board/Kconfig @@ -28,8 +28,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM4_CH1 select BSP_USING_PWM8 select BSP_USING_PWM8_CH2 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select BSP_USING_SPI select BSP_USING_SPI1 # select BSP_SPI1_TX_USING_DMA @@ -38,6 +39,15 @@ menu "Onboard Peripheral Drivers" select RTDUINO_USING_SPI imply RTDUINO_USING_SERVO default n + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if BSP_USING_ARDUINO + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if BSP_USING_ARDUINO + endmenu menu "On-chip Peripheral Drivers" @@ -249,21 +259,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number (PB8)" - default 24 - config BSP_I2C1_SDA_PIN - int "i2c1 sda pin number (PB9)" - default 25 - endif - source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig" 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 e4646070a99..e523d299c97 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 9f0dcc53738..af6c4eeab2a 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 00000000000..d626be14a57 --- /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 1983a9545e7..34f81839ea6 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 @@ -34,8 +34,8 @@ const pin_map_t pin_map_table[]= {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) */ + {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 */ 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 54e749704c3..65652b59086 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 dca564fbdb2..81fc5cab266 100644 --- a/bsp/stm32/stm32h503-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32h503-st-nucleo/board/Kconfig @@ -19,12 +19,22 @@ 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 RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select RTDUINO_USING_WIRE imply RTDUINO_USING_SERVO default n + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if BSP_USING_ARDUINO + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if BSP_USING_ARDUINO + endmenu menu "On-chip Peripheral Drivers" @@ -203,21 +213,6 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number (PB.6)" - default 22 - config BSP_I2C1_SDA_PIN - int "i2c1 sda pin number (PB.7)" - default 23 - endif - source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig" endmenu diff --git a/bsp/stm32/stm32h563-st-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32h563-st-nucleo/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..08f15d590b4 --- /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 c392eb458ca..8be74486671 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 @@ -34,8 +34,8 @@ const pin_map_t pin_map_table[]= {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) */ + {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 */ 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 9fa57077f95..e79c0750c64 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 e718390a9f5..5e4b9475696 100644 --- a/bsp/stm32/stm32h563-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32h563-st-nucleo/board/Kconfig @@ -21,12 +21,22 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM4 select BSP_USING_PWM4_CH3 select BSP_USING_PWM4_CH4 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select RTDUINO_USING_WIRE imply RTDUINO_USING_SERVO default n + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if BSP_USING_ARDUINO + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if BSP_USING_ARDUINO + endmenu menu "On-chip Peripheral Drivers" @@ -211,21 +221,6 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number (PB.8)" - default 24 - config BSP_I2C1_SDA_PIN - int "i2c1 sda pin number (PB.9)" - default 25 - endif - source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig" 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 00000000000..d389a541c50 --- /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 05d4e3c37e0..ebd88247988 100644 --- a/bsp/stm32/stm32h743-atk-apollo/board/Kconfig +++ b/bsp/stm32/stm32h743-atk-apollo/board/Kconfig @@ -6,7 +6,9 @@ menu "Onboard Peripheral Drivers" bool "Enable COM2(485)" select BSP_USING_UART select BSP_USING_UART2 - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select PKG_USING_PCF8574 default n @@ -37,10 +39,27 @@ menu "Onboard Peripheral Drivers" config BSP_USING_OV2640 bool "Enable camera (ov2640)" select BSP_USING_DCMI - select BSP_USING_I2C - select BSP_USING_I2C2 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C2 default n + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 116 if BSP_USING_COM2 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 117 if BSP_USING_COM2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 127 if BSP_USING_OV2640 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 125 if BSP_USING_OV2640 + endmenu menu "On-chip Peripheral Drivers" @@ -141,44 +160,6 @@ menu "On-chip Peripheral Drivers" select RT_USING_SPI default n - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - default n - if BSP_USING_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - if BSP_USING_I2C1 - comment "Notice: PH4 --> 116; PH5 --> 117" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 176 - default 116 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 176 - default 117 - endif - - menuconfig BSP_USING_I2C2 - bool "Enable I2C2 BUS (software simulation)" - default n - if BSP_USING_I2C2 - comment "Notice: PH13 --> 125; PH15 --> 127" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 1 176 - default 127 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 1 176 - default 125 - endif - endif - config BSP_USING_ON_CHIP_FLASH bool "Enable on-chip FLASH" default n 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 80c554bbfa7..867906c75c6 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 #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 00000000000..41fd8a8a94e --- /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 8b97b556011..4cba20171e1 100644 --- a/bsp/stm32/stm32h743-openmv-h7plus/board/Kconfig +++ b/bsp/stm32/stm32h743-openmv-h7plus/board/Kconfig @@ -137,8 +137,9 @@ menu "Hardware Drivers Config" config BSP_USING_OV5640 bool "Enable camera (ov5640)" select BSP_USING_DCMI - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select BSP_USING_PWM select BSP_USING_PWM1 select BSP_USING_PWM1_CH1 @@ -148,44 +149,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 +164,14 @@ menu "Hardware Drivers Config" endif endif + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if BSP_USING_OV5640 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if BSP_USING_OV5640 + endmenu 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 f420f658faf..08ecde47b16 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 #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 00000000000..f8eb7b46bc8 --- /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 8a223ef349e..f0e7d63b76a 100644 --- a/bsp/stm32/stm32h750-armfly-h7-tool/board/Kconfig +++ b/bsp/stm32/stm32h750-armfly-h7-tool/board/Kconfig @@ -128,23 +128,6 @@ menu "On-chip Peripheral Drivers" bool "Enable QSPI DMA support" default n - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 135 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 95 - endif - menuconfig BSP_USING_PWM bool "Enable PWM" default n diff --git a/bsp/stm32/stm32h750-artpi/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32h750-artpi/.ci/attachconfig/ci.attachconfig.yml index 6df31cf648f..5e2d390d275 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 26d0bc29881..03f2465171f 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 68b2ed588d8..a941f1d6989 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 RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C2 + select RT_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,22 @@ menu "Onboard Peripheral Drivers" select RT_USING_SAL default n + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 127 if MEDIA_IO_USING_TOUCH + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 125 if MEDIA_IO_USING_TOUCH + + config RT_SOFT_I2C3_SCL_PIN_DEFAULT + int + default 123 if MEDIA_IO_USING_TOUCH + + config RT_SOFT_I2C3_SDA_PIN_DEFAULT + int + default 124 if MEDIA_IO_USING_TOUCH + endmenu menu "On-chip Peripheral Drivers" @@ -285,60 +298,6 @@ menu "On-chip Peripheral Drivers" select RT_USING_RTC default n - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - default n - if BSP_USING_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - comment "Notice: PB6 --> 22; PB7 --> 23" - config BSP_I2C1_SCL_PIN - int "I2C1 scl pin number" - range 0 175 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 175 - default 23 - endif - menuconfig BSP_USING_I2C2 - bool "Enable I2C2 BUS (software simulation)" - default n - if BSP_USING_I2C2 - comment "Notice: PH13 --> 125; PH15 --> 127" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 1 176 - default 127 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 175 - default 125 - endif - menuconfig BSP_USING_I2C3 - bool "Enable I2C3 BUS (software simulation)" - default n - if BSP_USING_I2C3 - comment "Notice: PH12 --> 124; PH11 --> 123" - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 175 - default 123 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 175 - default 124 - endif - endif - config BSP_USING_SDRAM bool "Enable SDRAM" select RT_USING_MEMHEAP 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 00000000000..41fd8a8a94e --- /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 bc0b917610b..0e836d07383 100644 --- a/bsp/stm32/stm32h750-fk750m1-vbt6/board/Kconfig +++ b/bsp/stm32/stm32h750-fk750m1-vbt6/board/Kconfig @@ -13,10 +13,19 @@ menu "Onboard Peripheral Drivers" config BSP_USING_OV2640 bool "Enable camera (ov2640)" select BSP_USING_DCMI - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 default n + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if BSP_USING_OV2640 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if BSP_USING_OV2640 + endmenu menu "On-chip Peripheral Drivers" @@ -95,44 +104,6 @@ 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 - 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_ONCHIP_RTC bool "Enable RTC" select RT_USING_RTC 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 e6ff82e8c81..8420ed091be 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 00000000000..f8eb7b46bc8 --- /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 cc302ec0971..cd7d45c12a8 100644 --- a/bsp/stm32/stm32h750-weact-ministm32h7xx/board/Kconfig +++ b/bsp/stm32/stm32h750-weact-ministm32h7xx/board/Kconfig @@ -118,23 +118,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 135 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 95 - endif - menuconfig BSP_USING_PWM bool "Enable pwm" default n diff --git a/bsp/stm32/stm32h7r7-artpi2/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32h7r7-artpi2/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..6f3d6478a10 --- /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 7152f927ec7..82e330e66e8 100644 --- a/bsp/stm32/stm32h7r7-artpi2/board/Kconfig +++ b/bsp/stm32/stm32h7r7-artpi2/board/Kconfig @@ -192,60 +192,6 @@ menu "On-chip Peripheral Drivers" select RT_USING_RTC default n - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - default n - if BSP_USING_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - comment "Notice: PB6 --> 22; PB7 --> 23" - config BSP_I2C1_SCL_PIN - int "I2C1 scl pin number" - range 0 175 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 175 - default 23 - endif - menuconfig BSP_USING_I2C2 - bool "Enable I2C2 BUS (software simulation)" - default n - if BSP_USING_I2C2 - comment "Notice: PH13 --> 125; PH15 --> 127" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 1 176 - default 127 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 175 - default 125 - endif - menuconfig BSP_USING_I2C3 - bool "Enable I2C3 BUS (software simulation)" - default n - if BSP_USING_I2C3 - comment "Notice: PH12 --> 124; PH11 --> 123" - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 175 - default 123 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 175 - default 124 - endif - endif - config BSP_USING_USBD bool "Enable USB Device" select RT_USING_USB_DEVICE diff --git a/bsp/stm32/stm32h7s7-st-disco/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32h7s7-st-disco/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..6f3d6478a10 --- /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 43ee16e9560..7eee7163df7 100644 --- a/bsp/stm32/stm32h7s7-st-disco/board/Kconfig +++ b/bsp/stm32/stm32h7s7-st-disco/board/Kconfig @@ -179,60 +179,6 @@ menu "On-chip Peripheral Drivers" select RT_USING_RTC default n - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - default n - if BSP_USING_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - comment "Notice: PB6 --> 22; PB7 --> 23" - config BSP_I2C1_SCL_PIN - int "I2C1 scl pin number" - range 0 175 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 175 - default 23 - endif - menuconfig BSP_USING_I2C2 - bool "Enable I2C2 BUS (software simulation)" - default n - if BSP_USING_I2C2 - comment "Notice: PH13 --> 125; PH15 --> 127" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 1 176 - default 127 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 175 - default 125 - endif - menuconfig BSP_USING_I2C3 - bool "Enable I2C3 BUS (software simulation)" - default n - if BSP_USING_I2C3 - comment "Notice: PH12 --> 124; PH11 --> 123" - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 175 - default 123 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 175 - default 124 - endif - endif - config BSP_USING_USBD bool "Enable USB Device" select RT_USING_USB_DEVICE diff --git a/bsp/stm32/stm32l431-BearPi/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32l431-BearPi/.ci/attachconfig/ci.attachconfig.yml index 2a7fcdfd275..4fec7a3cf35 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 b3047742698..f0ecd52e333 100644 --- a/bsp/stm32/stm32l431-BearPi/applications/arduino_pinout/pins_arduino.c +++ b/bsp/stm32/stm32l431-BearPi/applications/arduino_pinout/pins_arduino.c @@ -26,8 +26,8 @@ const pin_map_t pin_map_table[]= {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) */ + {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)}, 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 384373f737e..21a073eb893 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 e1589dc2aad..b82090f76a3 100644 --- a/bsp/stm32/stm32l431-BearPi/board/Kconfig +++ b/bsp/stm32/stm32l431-BearPi/board/Kconfig @@ -108,23 +108,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 143 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 143 - default 23 - endif - menuconfig BSP_USING_PWM bool "Enable PWM" default n @@ -210,8 +193,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM16 select BSP_USING_PWM16_CH1 select BSP_USING_PWM1_CH1 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select BSP_USING_SPI select BSP_USING_SPI1 select BSP_SPI1_TX_USING_DMA @@ -221,10 +205,19 @@ menu "Onboard Peripheral Drivers" imply RTDUINO_USING_SERVO default n + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if BSP_USING_ARDUINO + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if BSP_USING_ARDUINO + config BSP_USING_MPU6050 bool "Enable MPU6050 to read accel data" - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select PKG_USING_MPU6XXX default n if BSP_USING_MPU6050 diff --git a/bsp/stm32/stm32l431-BearPi/board/ports/mpu6050_meas.c b/bsp/stm32/stm32l431-BearPi/board/ports/mpu6050_meas.c index 7d5a4d65a83..8088d4bcacf 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 -#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 00000000000..6304b7700be --- /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 c5ef1f03832..eaf6f65297e 100644 --- a/bsp/stm32/stm32l431-tencentos-tiny-EVB_MX+/board/Kconfig +++ b/bsp/stm32/stm32l431-tencentos-tiny-EVB_MX+/board/Kconfig @@ -192,23 +192,6 @@ menu "On-chip Peripheral Drivers" select BSP_USING_SDIO default n - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 25 - endif - source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig" endmenu diff --git a/bsp/stm32/stm32l433-ali-startkit/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32l433-ali-startkit/.ci/attachconfig/ci.attachconfig.yml index e4646070a99..07fb2b45b57 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 d42f7465c51..54b7ca78ca3 100644 --- a/bsp/stm32/stm32l433-ali-startkit/board/Kconfig +++ b/bsp/stm32/stm32l433-ali-startkit/board/Kconfig @@ -145,56 +145,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - menuconfig BSP_USING_I2C2 - bool "Enable I2C2 BUS (software simulation)" - default n - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 1 176 - default 29 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 1 176 - default 30 - endif - - menuconfig BSP_USING_I2C3 - bool "Enable I2C3 BUS (software simulation)" - default n - if BSP_USING_I2C3 - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 1 176 - default 32 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 1 176 - default 33 - endif - - menuconfig BSP_USING_I2C4 - bool "Enable I2C4 BUS (software simulation)" - default y - if BSP_USING_I2C4 - config BSP_I2C4_SCL_PIN - int "i2c4 scl pin number" - range 1 176 - default 60 - config BSP_I2C4_SDA_PIN - int "i2c4 sda pin number" - range 1 176 - default 61 - endif - endif - config BSP_USING_SDIO bool "Enable sdio" select RT_USING_SDIO diff --git a/bsp/stm32/stm32l452-st-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32l452-st-nucleo/.ci/attachconfig/ci.attachconfig.yml index e4646070a99..38f5930b0fd 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 f320a25f50e..8038e3b264f 100644 --- a/bsp/stm32/stm32l452-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32l452-st-nucleo/board/Kconfig @@ -111,22 +111,6 @@ menu "On-chip Peripheral Drivers" config BSP_USING_ON_CHIP_FLASH bool "Enable on-chip FLASH" default n - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 176 - default 15 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 176 - default 16 - endif source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig" endmenu diff --git a/bsp/stm32/stm32l475-atk-pandora/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32l475-atk-pandora/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..f1ffa2baad6 --- /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 d9b648b1c9d..c070d37c386 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 @@ -54,8 +54,8 @@ const pin_map_t pin_map_table[]= {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) */ + {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 */ 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 79fe8c6ce49..b5780a41378 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 de2fc8ce25f..4401f1b6f04 100644 --- a/bsp/stm32/stm32l475-atk-pandora/board/Kconfig +++ b/bsp/stm32/stm32l475-atk-pandora/board/Kconfig @@ -27,8 +27,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM4_CH4 select BSP_USING_ADC select BSP_USING_ADC1 - select BSP_USING_I2C - select BSP_USING_I2C1 # PC7-SDA PC6-SCL (User I2C) + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 # 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 RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C4 select PKG_USING_ARDUINO_ADAFRUIT_AHTX0 depends on !BSP_USING_AHT10 default n @@ -88,13 +91,17 @@ menu "Onboard Peripheral Drivers" config BSP_USING_ARDUINO_AP3216 bool - select BSP_USING_I2C3 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C3 depends on !BSP_USING_AP3216C default n config BSP_USING_ARDUINO_ICM20608 bool - select BSP_USING_I2C3 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C3 depends on !BSP_USING_ICM20608 default n endif @@ -176,24 +183,27 @@ menu "Onboard Peripheral Drivers" config BSP_USING_ICM20608 bool "Enable ICM20608 (i2c3)" - select BSP_USING_I2C - select BSP_USING_I2C3 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C3 select PKG_USING_MPU6XXX select PKG_USING_MPU6XXX_LATEST_VERSION default n config BSP_USING_AHT10 bool "Enable AHT10 (i2c4)" - select BSP_USING_I2C - select BSP_USING_I2C4 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C4 select PKG_USING_AHT10 select AHT10_USING_SENSOR_DEVICE default n config BSP_USING_AP3216C bool "Enable AP3216C (i2c3)" - select BSP_USING_I2C - select BSP_USING_I2C3 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C3 select PKG_USING_AP3216C select AP3216C_USING_SENSOR_DEVICE default n @@ -201,8 +211,9 @@ menu "Onboard Peripheral Drivers" menuconfig BSP_USING_AUDIO bool "Enable Audio Device" select RT_USING_AUDIO - select BSP_USING_I2C - select BSP_USING_I2C3 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C3 default n if BSP_USING_AUDIO @@ -273,6 +284,31 @@ menu "Onboard Peripheral Drivers" default y endif + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 38 if BSP_USING_ARDUINO + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 39 if BSP_USING_ARDUINO + + config RT_SOFT_I2C3_SCL_PIN_DEFAULT + int + default 32 if BSP_USING_ARDUINO_AP3216 || BSP_USING_ARDUINO_ICM20608 + + config RT_SOFT_I2C3_SDA_PIN_DEFAULT + int + default 33 if BSP_USING_ARDUINO_AP3216 || BSP_USING_ARDUINO_ICM20608 + + config RT_SOFT_I2C4_SCL_PIN_DEFAULT + int + default 54 if BSP_USING_ARDUINO_AHT10 + + config RT_SOFT_I2C4_SDA_PIN_DEFAULT + int + default 33 if BSP_USING_ARDUINO_AHT10 + endmenu menu "On-chip Peripheral Drivers" @@ -424,57 +460,6 @@ menu "On-chip Peripheral Drivers" bool "Enable QSPI DMA support" default n - 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/stm32l475-atk-pandora/board/ports/audio/drv_sound.c b/bsp/stm32/stm32l475-atk-pandora/board/ports/audio/drv_sound.c index b19d584d3d6..e4b0e2af721 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 2b3c3f584ff..f142a3d907b 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 2a7fcdfd275..3bceff88637 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 a61610fcd67..b2d669748b2 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 @@ -39,8 +39,8 @@ const pin_map_t pin_map_table[]= {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) */ + {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 */ 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 4c004252032..465017d5173 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 a8e9ee55f38..19a8b77511a 100644 --- a/bsp/stm32/stm32l476-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32l476-st-nucleo/board/Kconfig @@ -28,8 +28,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM4_CH1 select BSP_USING_PWM17 select BSP_USING_PWM17_CH1 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select BSP_USING_SPI select BSP_USING_SPI1 select BSP_SPI1_TX_USING_DMA @@ -39,6 +40,15 @@ menu "Onboard Peripheral Drivers" imply RTDUINO_USING_SERVO default n + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if BSP_USING_ARDUINO + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if BSP_USING_ARDUINO + endmenu menu "On-chip Peripheral Drivers" @@ -92,63 +102,6 @@ menu "On-chip Peripheral Drivers" endif endif - menuconfig BSP_USING_I2C - bool "Enable I2C (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number (PB8)" - range 1 176 - default 24 - - config BSP_I2C1_SDA_PIN - int "i2c1 sda pin number (PB9)" - range 1 176 - default 25 - endif - - config BSP_USING_I2C2 - bool "Enable I2C2 BUS (software simulation)" - default n - - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 1 176 - default 26 - - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 1 176 - default 27 - endif - - config BSP_USING_I2C3 - bool "Enable I2C3 BUS (software simulation)" - default n - - if BSP_USING_I2C3 - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 1 176 - default 32 - - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 1 176 - default 33 - endif - endif - menuconfig BSP_USING_SPI bool "Enable SPI BUS" default n 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 e4646070a99..07fb2b45b57 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 56643f8cdd2..fe912307d9a 100644 --- a/bsp/stm32/stm32l496-ali-developer/board/Kconfig +++ b/bsp/stm32/stm32l496-ali-developer/board/Kconfig @@ -153,56 +153,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - menuconfig BSP_USING_I2C2 - bool "Enable I2C2 BUS (software simulation)" - default n - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 1 176 - default 29 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 1 176 - default 30 - endif - - menuconfig BSP_USING_I2C3 - bool "Enable I2C3 BUS (software simulation)" - default n - if BSP_USING_I2C3 - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 1 176 - default 32 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 1 176 - default 33 - endif - - menuconfig BSP_USING_I2C4 - bool "Enable I2C4 BUS (software simulation)" - default y - if BSP_USING_I2C4 - config BSP_I2C4_SCL_PIN - int "i2c4 scl pin number" - range 1 176 - default 60 - config BSP_I2C4_SDA_PIN - int "i2c4 sda pin number" - range 1 176 - default 61 - endif - endif - config BSP_USING_SDIO bool "Enable sdio" select RT_USING_SDIO diff --git a/bsp/stm32/stm32l496-st-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32l496-st-nucleo/.ci/attachconfig/ci.attachconfig.yml index 21dbe5769b5..1b4eaf569b9 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 f0c35b330a8..f0e4aee4bfb 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 e4646070a99..8e718423d0c 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 24bbfa43516..abdbd44972c 100644 --- a/bsp/stm32/stm32l4r5-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32l4r5-st-nucleo/board/Kconfig @@ -285,41 +285,6 @@ menu "Hardware Drivers Config" default n endif - menuconfig BSP_USING_I2C - bool "Enable using I2C BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 144 - default 100 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 144 - default 101 - endif - menuconfig BSP_USING_I2C2 - bool "Enable I2C2 BUS (software simulation)" - default n - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 1 144 - default 10 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 1 144 - default 11 - endif - endif - menuconfig BSP_USING_TIM bool "Enable timer" default n diff --git a/bsp/stm32/stm32l4r9-st-eval/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32l4r9-st-eval/.ci/attachconfig/ci.attachconfig.yml index e4646070a99..5842675f068 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 6a34d32811c..519e29be916 100644 --- a/bsp/stm32/stm32l4r9-st-eval/board/Kconfig +++ b/bsp/stm32/stm32l4r9-st-eval/board/Kconfig @@ -18,7 +18,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_TOUCH bool "Enable Touch drivers" - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 default n if BSP_USING_TOUCH config BSP_TOUCH_INT_PIN @@ -35,6 +37,14 @@ menu "Onboard Peripheral Drivers" default n endmenu + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 116 if BSP_USING_TOUCH + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 117 if BSP_USING_TOUCH + endmenu menu "On-chip Peripheral Drivers" @@ -93,23 +103,6 @@ menu "On-chip Peripheral Drivers" select BSP_USING_FMC default n - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 116 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 117 - endif - config BSP_USING_GFXMMU bool default n 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 00000000000..3b17a1f4834 --- /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 05c61bf8b95..b727b5a31f8 100644 --- a/bsp/stm32/stm32mp157a-st-discovery/board/Kconfig +++ b/bsp/stm32/stm32mp157a-st-discovery/board/Kconfig @@ -14,8 +14,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_PMIC bool "Enable PMIC" - select BSP_USING_I2C - select BSP_USING_I2C3 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C3 default y config BSP_USING_PWR @@ -75,8 +76,9 @@ menu "Onboard Peripheral Drivers" select RT_USING_AUDIO select BSP_USING_PMIC select BSP_USING_SDMMC - select BSP_USING_I2C - select BSP_USING_I2C4 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C4 default n if BSP_USING_AUDIO @@ -89,6 +91,22 @@ menu "Onboard Peripheral Drivers" default n endif + config RT_SOFT_I2C3_SCL_PIN_DEFAULT + int + default 180 if BSP_USING_PMIC + + config RT_SOFT_I2C3_SDA_PIN_DEFAULT + int + default 181 if BSP_USING_PMIC + + config RT_SOFT_I2C4_SCL_PIN_DEFAULT + int + default 60 if BSP_USING_AUDIO + + config RT_SOFT_I2C4_SDA_PIN_DEFAULT + int + default 95 if BSP_USING_AUDIO + endmenu menu "On-chip Peripheral Drivers" @@ -244,72 +262,6 @@ 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 - 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 - - endif - menuconfig BSP_USING_SPI bool "Enable SPI BUS" select RT_USING_SPI 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 9444fe872b4..e33c0d2da61 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 -#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 349651e9b9b..257799b6e39 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 -#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 2bf50623bc7..d7095472e3f 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 -#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 00000000000..183e197301d --- /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 fb4c2cea1e3..3c94f3dc33c 100644 --- a/bsp/stm32/stm32mp157a-st-ev1/board/Kconfig +++ b/bsp/stm32/stm32mp157a-st-ev1/board/Kconfig @@ -14,8 +14,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_PMIC bool "Enable PMIC" - select BSP_USING_I2C - select BSP_USING_I2C3 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C3 default y config BSP_USING_PWR @@ -81,8 +82,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_SDMMC select BSP_USING_SDCARD select SD_USING_DFS - select BSP_USING_I2C - select BSP_USING_I2C2 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C2 default n config BSP_USING_DCMI @@ -91,8 +93,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PMIC select BSP_USING_SDMMC select BSP_USING_SDCARD - select BSP_USING_I2C - select BSP_USING_I2C2 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C2 default n config BSP_USING_MFX @@ -115,6 +118,22 @@ menu "Onboard Peripheral Drivers" endif + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 116 if BSP_USING_AUDIO || BSP_USING_DCMI + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 117 if BSP_USING_AUDIO || BSP_USING_DCMI + + config RT_SOFT_I2C3_SCL_PIN_DEFAULT + int + default 180 if BSP_USING_PMIC + + config RT_SOFT_I2C3_SDA_PIN_DEFAULT + int + default 181 if BSP_USING_PMIC + endmenu menu "On-chip Peripheral Drivers" @@ -293,57 +312,6 @@ 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 - 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 - menuconfig BSP_USING_SPI bool "Enable SPI BUS" select RT_USING_SPI 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 924035e5e2c..f9fd2eef7b6 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 #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 97a7721c60a..1127b23fa7e 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 #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 78346365aa7..6b5f41e2d1d 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 -#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 75c1110f154..5199f2190d0 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 -#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 aea09b93fbe..f21b85706b7 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 #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 00000000000..08f15d590b4 --- /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 df8791a72ed..3d9bea9be51 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 @@ -35,8 +35,8 @@ const pin_map_t pin_map_table[]= {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) */ + {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 */ 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 0d460404f8c..eed10b99007 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 659dcfa073d..a9347f1a7ff 100644 --- a/bsp/stm32/stm32u575-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32u575-st-nucleo/board/Kconfig @@ -15,8 +15,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM1_CH3 select BSP_USING_PWM4 select BSP_USING_PWM4_CH4 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 select BSP_USING_SPI select BSP_USING_SPI1 select BSP_SPI1_TX_USING_DMA @@ -35,8 +36,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_MPU6XXX bool "Enable mpu6xxx (i2c2)" - select BSP_USING_I2C - select BSP_USING_I2C2 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C2 select PKG_USING_SENSORS_DRIVERS select PKG_USING_MPU6XXX select PKG_USING_MPU6XXX_LATEST_VERSION @@ -48,6 +50,23 @@ menu "Onboard Peripheral Drivers" select RT_USING_SFUD default n + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if BSP_USING_ARDUINO + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if BSP_USING_ARDUINO + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 24 if BSP_USING_MPU6XXX + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 25 if BSP_USING_MPU6XXX + endmenu menu "On-chip Peripheral Drivers" @@ -222,29 +241,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_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 - source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig" 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 00000000000..7dc954e324f --- /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 1351db70619..80dec59d4f9 100644 --- a/bsp/stm32/stm32wb55-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32wb55-st-nucleo/board/Kconfig @@ -75,44 +75,6 @@ menu "On-chip Peripheral Drivers" - menuconfig BSP_USING_I2C - bool "Enable I2C BUS" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default y - if BSP_USING_I2C1 - comment "Notice: PB8 --> 24; PB9 --> 25" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 143 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 143 - default 25 - endif - - menuconfig BSP_USING_I2C3 - bool "Enable I2C3 BUS (software simulation)" - default y - if BSP_USING_I2C3 - comment "Notice: PB13 --> 29; PAB6 -->30" - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 1 143 - default 29 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 1 143 - default 30 - endif - endif - menuconfig BSP_USING_TIM bool "Enable timer" default n diff --git a/bsp/synwit/libraries/SWM320_drivers/SConscript b/bsp/synwit/libraries/SWM320_drivers/SConscript index c4beaaac5b0..3cca80755d5 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 ed9ceb7142c..00000000000 --- a/bsp/synwit/libraries/SWM320_drivers/drv_soft_i2c.c +++ /dev/null @@ -1,241 +0,0 @@ -/* - * Copyright (c) 2006-2022, Synwit Technology Co.,Ltd. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2018-05-31 ZYH first version - * 2018-12-10 Zohar_Lee format file - * 2020-07-10 lik rewrite - */ - -#include "drv_soft_i2c.h" - -#ifdef RT_USING_I2C -#ifdef BSP_USING_I2C - -/*************************************************************** -*!!!!!!!!!!!!!!!!!!!!!!!!!!!!NOTICE!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -*In order to use swm drv_soft_i2c,you need to commented out -line 114 (SDA_H(ops);) and line 167 (SDA_H(ops);) in i2c-bit-ops.c -At the same time, add one line (SDA_L(ops);)after line 154 (SCL_L(ops);) -in i2c-bit-ops.c -***************************************************************/ - -//#define DRV_DEBUG -#define LOG_TAG "drv.i2c" -#include - -#if !defined(BSP_USING_I2C0) && !defined(BSP_USING_I2C1) -#error "Please define at least one BSP_USING_I2Cx" -/* this driver can be disabled at menuconfig ? RT-Thread Components ? Device Drivers */ -#endif - -#ifdef BSP_USING_I2C0 -#define I2C0_BUS_CFG \ - { \ - .scl = BSP_I2C0_SCL_PIN, \ - .sda = BSP_I2C0_SDA_PIN, \ - .name = "i2c0", \ - } -#endif - -#ifdef BSP_USING_I2C1 -#define I2C1_BUS_CFG \ - { \ - .scl = BSP_I2C1_SCL_PIN, \ - .sda = BSP_I2C1_SDA_PIN, \ - .name = "i2c1", \ - } -#endif - -/* swm config class */ -struct swm_soft_i2c_cfg -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *name; -}; -/* swm i2c dirver class */ -struct swm_soft_i2c_device -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device i2c_bus; -}; -static const struct swm_soft_i2c_cfg swm_soft_i2c_cfg[] = - { -#ifdef BSP_USING_I2C0 - I2C0_BUS_CFG, -#endif -#ifdef BSP_USING_I2C1 - I2C1_BUS_CFG, -#endif -}; - -static struct swm_soft_i2c_device i2c_obj[sizeof(swm_soft_i2c_cfg) / sizeof(swm_soft_i2c_cfg[0])]; - -/** - * This function initializes the i2c pin. - * - * @param swm i2c dirver class. - */ -static void swm_i2c_gpio_init(struct swm_soft_i2c_device *i2c) -{ - struct swm_soft_i2c_cfg *soft_i2c_cfg = (struct swm_soft_i2c_cfg *)i2c->ops.data; - - rt_pin_mode(soft_i2c_cfg->scl, PIN_MODE_OUTPUT_OD); - rt_pin_mode(soft_i2c_cfg->sda, PIN_MODE_OUTPUT_OD); - - rt_pin_write(soft_i2c_cfg->scl, PIN_HIGH); - rt_pin_write(soft_i2c_cfg->sda, PIN_HIGH); -} - -static void swm_i2c_pin_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct swm_soft_i2c_device); - - for(rt_size_t i = 0; i < obj_num; i++) - { - swm_i2c_gpio_init(&i2c_obj[i]); - } -} - -/** - * This function sets the sda pin. - * - * @param swm config class. - * @param The sda pin state. - */ -static void swm_i2c_set_sda(void *data, rt_int32_t state) -{ - struct swm_soft_i2c_cfg *soft_i2c_cfg = (struct swm_soft_i2c_cfg *)data; - rt_pin_mode(soft_i2c_cfg->sda, PIN_MODE_OUTPUT_OD); - if (state) - { - rt_pin_write(soft_i2c_cfg->sda, PIN_HIGH); - } - else - { - rt_pin_write(soft_i2c_cfg->sda, PIN_LOW); - } -} - -/** - * This function sets the scl pin. - * - * @param swm config class. - * @param The scl pin state. - */ -static void swm_i2c_set_scl(void *data, rt_int32_t state) -{ - struct swm_soft_i2c_cfg *soft_i2c_cfg = (struct swm_soft_i2c_cfg *)data; - rt_pin_mode(soft_i2c_cfg->scl, PIN_MODE_OUTPUT_OD); - if (state) - { - rt_pin_write(soft_i2c_cfg->scl, PIN_HIGH); - } - else - { - rt_pin_write(soft_i2c_cfg->scl, PIN_LOW); - } -} - -/** - * This function gets the sda pin state. - * - * @param The sda pin state. - */ -static rt_int32_t swm_i2c_get_sda(void *data) -{ - struct swm_soft_i2c_cfg *soft_i2c_cfg = (struct swm_soft_i2c_cfg *)data; - rt_pin_mode(soft_i2c_cfg->sda, PIN_MODE_INPUT_PULLUP); - return rt_pin_read(soft_i2c_cfg->sda); -} - -/** - * This function gets the scl pin state. - * - * @param The scl pin state. - */ -static rt_int32_t swm_i2c_get_scl(void *data) -{ - struct swm_soft_i2c_cfg *soft_i2c_cfg = (struct swm_soft_i2c_cfg *)data; - rt_pin_mode(soft_i2c_cfg->scl, PIN_MODE_INPUT_PULLUP); - return rt_pin_read(soft_i2c_cfg->scl); -} - -/** - * The time delay function. - * - * @param microseconds. - */ -static void swm_i2c_udelay(rt_uint32_t us) -{ - rt_uint32_t ticks; - rt_uint32_t told, tnow, tcnt = 0; - rt_uint32_t reload = SysTick->LOAD; - - ticks = us * reload / (1000000 / RT_TICK_PER_SECOND); - told = SysTick->VAL; - while (1) - { - tnow = SysTick->VAL; - if (tnow != told) - { - if (tnow < told) - { - tcnt += told - tnow; - } - else - { - tcnt += reload - tnow + told; - } - told = tnow; - if (tcnt >= ticks) - { - break; - } - } - } -} - -static const struct rt_i2c_bit_ops swm_i2c_bit_ops = -{ - .data = RT_NULL, - .pin_init = swm_i2c_pin_init, - .set_sda = swm_i2c_set_sda, - .set_scl = swm_i2c_set_scl, - .get_sda = swm_i2c_get_sda, - .get_scl = swm_i2c_get_scl, - .udelay = swm_i2c_udelay, - .delay_us = 1, - .timeout = 100, - .i2c_pin_init_flag = RT_FALSE -}; - -/* I2C initialization function */ -int swm_i2c_init(void) -{ - rt_err_t result; - - for (rt_size_t i = 0; i < sizeof(i2c_obj) / sizeof(struct swm_soft_i2c_device); i++) - { - i2c_obj[i].ops = swm_i2c_bit_ops; - i2c_obj[i].ops.data = (void *)&swm_soft_i2c_cfg[i]; - i2c_obj[i].i2c_bus.priv = &i2c_obj[i].ops; - - result = rt_i2c_bit_add_bus(&i2c_obj[i].i2c_bus, swm_soft_i2c_cfg[i].name); - RT_ASSERT(result == RT_EOK); - - LOG_D("software simulation %s init done, pin scl: %d, pin sda %d", - swm_soft_i2c_cfg[i].name, - swm_soft_i2c_cfg[i].scl, - swm_soft_i2c_cfg[i].sda); - } - - return RT_EOK; -} -INIT_DEVICE_EXPORT(swm_i2c_init); -#endif /* BSP_USING_I2C */ -#endif /* RT_USING_I2C */ diff --git a/bsp/synwit/libraries/SWM320_drivers/drv_soft_i2c.h b/bsp/synwit/libraries/SWM320_drivers/drv_soft_i2c.h deleted file mode 100644 index 2dd38221249..00000000000 --- a/bsp/synwit/libraries/SWM320_drivers/drv_soft_i2c.h +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright (c) 2006-2022, Synwit Technology Co.,Ltd. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2018-12-10 Zohar_Lee first version - * 2020-07-10 lik rewrite - */ - -#ifndef __DRV_SOFT_I2C_H__ -#define __DRV_SOFT_I2C_H__ - -#include "board.h" - -int swm_i2c_init(void); - -#endif /* __DRV_SOFT_I2C_H__ */ diff --git a/bsp/synwit/libraries/SWM341_drivers/SConscript b/bsp/synwit/libraries/SWM341_drivers/SConscript index 26bef4ca2bc..bb7bb6d9270 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 f74715d03df..00000000000 --- a/bsp/synwit/libraries/SWM341_drivers/drv_soft_i2c.c +++ /dev/null @@ -1,219 +0,0 @@ -/* - * Copyright (c) 2006-2022, Synwit Technology Co.,Ltd. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2021-07-01 lik first version - */ - -#include "drv_soft_i2c.h" - -#ifdef RT_USING_I2C -#ifdef BSP_USING_I2C - -//#define DRV_DEBUG -#define LOG_TAG "drv.i2c" -#include - -#if !defined(BSP_USING_I2C0) && !defined(BSP_USING_I2C1) -#error "Please define at least one BSP_USING_I2Cx" -/* this driver can be disabled at menuconfig ? RT-Thread Components ? Device Drivers */ -#endif - -#ifdef BSP_USING_I2C0 -#define I2C0_BUS_CFG \ - { \ - .scl = BSP_I2C0_SCL_PIN, \ - .sda = BSP_I2C0_SDA_PIN, \ - .name = "i2c0", \ - } -#endif - -#ifdef BSP_USING_I2C1 -#define I2C1_BUS_CFG \ - { \ - .scl = BSP_I2C1_SCL_PIN, \ - .sda = BSP_I2C1_SDA_PIN, \ - .name = "i2c1", \ - } -#endif - -/* swm config class */ -struct swm_soft_i2c_cfg -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *name; -}; -/* swm i2c dirver class */ -struct swm_soft_i2c_device -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device i2c_bus; -}; - -static const struct swm_soft_i2c_cfg swm_soft_i2c_cfg[] = - { -#ifdef BSP_USING_I2C0 - I2C0_BUS_CFG, -#endif -#ifdef BSP_USING_I2C1 - I2C1_BUS_CFG, -#endif -}; - -static struct swm_soft_i2c_device i2c_obj[sizeof(swm_soft_i2c_cfg) / sizeof(swm_soft_i2c_cfg[0])]; - -/** - * This function initializes the i2c pin. - * - * @param swm i2c dirver class. - */ -static void swm_i2c_gpio_init(struct swm_soft_i2c_device *i2c) -{ - struct swm_soft_i2c_cfg *soft_i2c_cfg = (struct swm_soft_i2c_cfg *)i2c->ops.data; - - rt_pin_mode(soft_i2c_cfg->scl, PIN_MODE_OUTPUT_OD); - rt_pin_mode(soft_i2c_cfg->sda, PIN_MODE_OUTPUT_OD); - - rt_pin_write(soft_i2c_cfg->scl, PIN_HIGH); - rt_pin_write(soft_i2c_cfg->sda, PIN_HIGH); -} - -/** - * This function sets the sda pin. - * - * @param swm config class. - * @param The sda pin state. - */ -static void swm_i2c_set_sda(void *data, rt_int32_t state) -{ - struct swm_soft_i2c_cfg *soft_i2c_cfg = (struct swm_soft_i2c_cfg *)data; - rt_pin_mode(soft_i2c_cfg->sda, PIN_MODE_OUTPUT_OD); - if (state) - { - rt_pin_write(soft_i2c_cfg->sda, PIN_HIGH); - } - else - { - rt_pin_write(soft_i2c_cfg->sda, PIN_LOW); - } -} - -/** - * This function sets the scl pin. - * - * @param swm config class. - * @param The scl pin state. - */ -static void swm_i2c_set_scl(void *data, rt_int32_t state) -{ - struct swm_soft_i2c_cfg *soft_i2c_cfg = (struct swm_soft_i2c_cfg *)data; - rt_pin_mode(soft_i2c_cfg->scl, PIN_MODE_OUTPUT_OD); - if (state) - { - rt_pin_write(soft_i2c_cfg->scl, PIN_HIGH); - } - else - { - rt_pin_write(soft_i2c_cfg->scl, PIN_LOW); - } -} - -/** - * This function gets the sda pin state. - * - * @param The sda pin state. - */ -static rt_int32_t swm_i2c_get_sda(void *data) -{ - struct swm_soft_i2c_cfg *soft_i2c_cfg = (struct swm_soft_i2c_cfg *)data; - rt_pin_mode(soft_i2c_cfg->sda, PIN_MODE_INPUT_PULLDOWN); - return rt_pin_read(soft_i2c_cfg->sda); -} - -/** - * This function gets the scl pin state. - * - * @param The scl pin state. - */ -static rt_int32_t swm_i2c_get_scl(void *data) -{ - struct swm_soft_i2c_cfg *soft_i2c_cfg = (struct swm_soft_i2c_cfg *)data; - rt_pin_mode(soft_i2c_cfg->scl, PIN_MODE_INPUT_PULLDOWN); - return rt_pin_read(soft_i2c_cfg->scl); -} - -/** - * The time delay function. - * - * @param microseconds. - */ -static void swm_i2c_udelay(rt_uint32_t us) -{ - rt_uint32_t ticks; - rt_uint32_t told, tnow, tcnt = 0; - rt_uint32_t reload = SysTick->LOAD; - - ticks = us * reload / (1000000 / RT_TICK_PER_SECOND); - told = SysTick->VAL; - while (1) - { - tnow = SysTick->VAL; - if (tnow != told) - { - if (tnow < told) - { - tcnt += told - tnow; - } - else - { - tcnt += reload - tnow + told; - } - told = tnow; - if (tcnt >= ticks) - { - break; - } - } - } -} - -static const struct rt_i2c_bit_ops swm_i2c_bit_ops = - { - .data = RT_NULL, - .set_sda = swm_i2c_set_sda, - .set_scl = swm_i2c_set_scl, - .get_sda = swm_i2c_get_sda, - .get_scl = swm_i2c_get_scl, - .udelay = swm_i2c_udelay, - .delay_us = 1, - .timeout = 100}; - -/* I2C initialization function */ -int swm_i2c_init(void) -{ - rt_err_t result; - - for (int i = 0; i < sizeof(i2c_obj) / sizeof(struct swm_soft_i2c_device); i++) - { - i2c_obj[i].ops = swm_i2c_bit_ops; - i2c_obj[i].ops.data = (void *)&swm_soft_i2c_cfg[i]; - i2c_obj[i].i2c_bus.priv = &i2c_obj[i].ops; - swm_i2c_gpio_init(&i2c_obj[i]); - result = rt_i2c_bit_add_bus(&i2c_obj[i].i2c_bus, swm_soft_i2c_cfg[i].name); - RT_ASSERT(result == RT_EOK); - - LOG_D("software simulation %s init done, pin scl: %d, pin sda %d", - swm_soft_i2c_cfg[i].name, - swm_soft_i2c_cfg[i].scl, - swm_soft_i2c_cfg[i].sda); - } - - return RT_EOK; -} -INIT_DEVICE_EXPORT(swm_i2c_init); -#endif /* BSP_USING_I2C */ -#endif /* RT_USING_I2C */ diff --git a/bsp/synwit/libraries/SWM341_drivers/drv_soft_i2c.h b/bsp/synwit/libraries/SWM341_drivers/drv_soft_i2c.h deleted file mode 100644 index 60151d0e509..00000000000 --- a/bsp/synwit/libraries/SWM341_drivers/drv_soft_i2c.h +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright (c) 2006-2022, Synwit Technology Co.,Ltd. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2021-07-01 lik first version - */ - -#ifndef __DRV_SOFT_I2C_H__ -#define __DRV_SOFT_I2C_H__ - -#include "board.h" - -int swm_i2c_init(void); - -#endif /* __DRV_SOFT_I2C_H__ */ diff --git a/bsp/synwit/swm320-mini/.ci/attachconfig/ci.attachconfig.yml b/bsp/synwit/swm320-mini/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..090bc5b70e7 --- /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 8a2c6875e16..0434b347619 100644 --- a/bsp/synwit/swm320-mini/board/Kconfig +++ b/bsp/synwit/swm320-mini/board/Kconfig @@ -124,43 +124,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C0 - bool "Enable I2C0" - default n - if BSP_USING_I2C0 - comment "Notice: PC2 --> 28; PC3 --> 29" - config BSP_I2C0_SCL_PIN - int "I2C0 scl pin number" - range 0 99 - default 28 - config BSP_I2C0_SDA_PIN - int "I2C0 sda pin number" - range 0 99 - default 29 - endif - config BSP_USING_I2C1 - bool "Enable I2C1" - default n - if BSP_USING_I2C1 - comment "Notice: PC6 --> 32; PC7 --> 33" - config BSP_I2C1_SCL_PIN - int "I2C1 scl pin number" - range 0 99 - default 32 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 99 - default 33 - endif - endif - menuconfig BSP_USING_PWM bool "Enable PWM" default n diff --git a/bsp/synwit/swm341-mini/.ci/attachconfig/ci.attachconfig.yml b/bsp/synwit/swm341-mini/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..e3a04a5ec13 --- /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 4d32b758e2b..2cde418752c 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 6e6564850d4..9e56f290a31 100644 --- a/bsp/synwit/swm341-mini/board/Kconfig +++ b/bsp/synwit/swm341-mini/board/Kconfig @@ -184,41 +184,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C0 - bool "Enable I2C0" - default n - if BSP_USING_I2C0 - 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 - menuconfig BSP_USING_PWM bool "Enable PWM" default n @@ -369,8 +334,9 @@ menu "On-chip Peripheral Drivers" bool "Enable gt9147(use i2c0)" select RT_USING_TOUCH select RT_TOUCH_PIN_IRQ - select BSP_USING_I2C - select BSP_USING_I2C0 + select RT_USING_I2C + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C0 select PKG_USING_GT9147 select PKG_USING_GT9147_LATEST_VERSION default n @@ -395,6 +361,14 @@ menu "On-chip Peripheral Drivers" default n endif + config RT_SOFT_I2C0_SCL_PIN_DEFAULT + int + default 1 if BSP_USING_GT9147 + + config RT_SOFT_I2C0_SDA_PIN_DEFAULT + int + default 0 if BSP_USING_GT9147 + endmenu menu "Onboard Peripheral Drivers" diff --git a/bsp/tae32f5300/.ci/attachconfig/ci.attachconfig.yml b/bsp/tae32f5300/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..bf1a5ff7584 --- /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 29451af6c7f..76229114588 100644 --- a/bsp/tae32f5300/drivers/Kconfig +++ b/bsp/tae32f5300/drivers/Kconfig @@ -51,23 +51,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default y - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 176 - default 51 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 176 - default 90 - endif - menuconfig BSP_USING_SPI bool "Enable SPI BUS" default n diff --git a/bsp/tkm32F499/.ci/attachconfig/ci.attachconfig.yml b/bsp/tkm32F499/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..d626be14a57 --- /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 d856bc73ff4..78c410ae011 100644 --- a/bsp/tkm32F499/drivers/Kconfig +++ b/bsp/tkm32F499/drivers/Kconfig @@ -67,23 +67,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 175 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 175 - default 23 - endif - menuconfig BSP_USING_TIM bool "Enable timer" default n diff --git a/bsp/w60x/drivers/Kconfig b/bsp/w60x/drivers/Kconfig index 5c2b5c6d82a..377adfc13eb 100644 --- a/bsp/w60x/drivers/Kconfig +++ b/bsp/w60x/drivers/Kconfig @@ -185,24 +185,6 @@ menu "On-chip Peripheral Drivers" default 200000 endif - menuconfig BSP_USING_SOFT_I2C - bool "Enable SOFT I2C" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - default n - - if BSP_USING_SOFT_I2C - config BSP_USING_SOFT_I2C1 - bool "Enabel SOFT I2C1" - default n - endif - - if BSP_USING_SOFT_I2C - config BSP_USING_SOFT_I2C2 - bool "Enabel SOFT I2C2" - default n - endif - menuconfig BSP_USING_SPI bool "Enable SPI" select RT_USING_SPI diff --git a/bsp/w60x/drivers/SConscript b/bsp/w60x/drivers/SConscript index 44dd0267b38..5d985d937fc 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 6cda890ec2e..00000000000 --- a/bsp/w60x/drivers/drv_soft_i2c.c +++ /dev/null @@ -1,222 +0,0 @@ -/* - * Copyright (c) 2006-2021, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2019-03-22 balanceTWK first version - */ - -#include -#include "drv_soft_i2c.h" - -#include "wm_regs.h" -#include "wm_gpio.h" -#include "pin_map.h" - -#define DBG_SECTION_NAME "soft_i2c" -#define DBG_COLOR -#define DBG_LEVEL DBG_LOG -#include - -#ifdef BSP_USING_SOFT_I2C - -#if !defined(BSP_USING_SOFT_I2C1) && !defined(BSP_USING_SOFT_I2C2) && !defined(BSP_USING_SOFT_I2C3) -#error "Please define at least one BSP_USING_SOFT_I2Cx" -#endif - -static const struct w60x_soft_i2c_config soft_i2c_config[] = -{ -#ifdef BSP_USING_SOFT_I2C1 - I2C1_BUS_CONFIG, -#endif -#ifdef BSP_USING_SOFT_I2C2 - I2C2_BUS_CONFIG, -#endif -#ifdef BSP_USING_SOFT_I2C3 - I2C3_BUS_CONFIG, -#endif -}; - -static struct w60x_i2c i2c_obj[sizeof(soft_i2c_config) / sizeof(soft_i2c_config[0])]; - -/** - * This function initializes the i2c pin. - * - * @param w60x i2c dirver class. - */ -static void w60x_i2c_gpio_init(struct w60x_i2c *i2c) -{ - struct w60x_soft_i2c_config* cfg = (struct w60x_soft_i2c_config*)i2c->ops.data; - rt_int16_t scl,sda; - - scl = wm_get_pin(cfg->scl); - sda = wm_get_pin(cfg->sda); - - tls_gpio_cfg((enum tls_io_name)scl, WM_GPIO_DIR_OUTPUT, WM_GPIO_ATTR_PULLHIGH); - tls_gpio_cfg((enum tls_io_name)sda, WM_GPIO_DIR_OUTPUT, WM_GPIO_ATTR_PULLHIGH); - - tls_gpio_write((enum tls_io_name)scl, 1); - tls_gpio_write((enum tls_io_name)sda, 1); -} - -static void w60x_i2c_pin_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct w60x_i2c); - - for(rt_size_t i = 0; i < obj_num; i++) - { - w60x_i2c_gpio_init(&i2c_obj[i]); - } -} - -/** - * This function sets the sda pin. - * - * @param w60x config class. - * @param The sda pin state. - */ -static void w60x_set_sda(void *data, rt_int32_t state) -{ - struct w60x_soft_i2c_config* cfg = (struct w60x_soft_i2c_config*)data; - rt_int16_t sda; - - sda = wm_get_pin(cfg->sda); - - if (state) - { - tls_gpio_cfg((enum tls_io_name)sda, WM_GPIO_DIR_INPUT, WM_GPIO_ATTR_PULLHIGH); - } - else - { - tls_gpio_cfg((enum tls_io_name)sda, WM_GPIO_DIR_OUTPUT, WM_GPIO_ATTR_FLOATING); - tls_gpio_write((enum tls_io_name)sda, 0); - } -} - -/** - * This function sets the scl pin. - * - * @param w60x config class. - * @param The scl pin state. - */ -static void w60x_set_scl(void *data, rt_int32_t state) -{ - struct w60x_soft_i2c_config* cfg = (struct w60x_soft_i2c_config*)data; - rt_int16_t scl; - - scl = wm_get_pin(cfg->scl); - - if (state) - { - tls_gpio_cfg((enum tls_io_name)scl, WM_GPIO_DIR_INPUT, WM_GPIO_ATTR_PULLHIGH); - } - else - { - tls_gpio_cfg((enum tls_io_name)scl, WM_GPIO_DIR_OUTPUT, WM_GPIO_ATTR_FLOATING); - tls_gpio_write((enum tls_io_name)scl, 0); - } -} - -/** - * This function gets the sda pin state. - * - * @param The sda pin state. - */ -static rt_int32_t w60x_get_sda(void *data) -{ - struct w60x_soft_i2c_config* cfg = (struct w60x_soft_i2c_config*)data; - rt_int16_t sda; - - sda = wm_get_pin(cfg->sda); - - return tls_gpio_read((enum tls_io_name)sda); -} - -/** - * This function gets the scl pin state. - * - * @param The scl pin state. - */ -static rt_int32_t w60x_get_scl(void *data) -{ - struct w60x_soft_i2c_config* cfg = (struct w60x_soft_i2c_config*)data; - rt_int16_t scl; - - scl = wm_get_pin(cfg->scl); - - return tls_gpio_read((enum tls_io_name)scl); -} - - -static const struct rt_i2c_bit_ops w60x_bit_ops_default = -{ - .data = RT_NULL, - .pin_init = w60x_i2c_pin_init, - .set_sda = w60x_set_sda, - .set_scl = w60x_set_scl, - .get_sda = w60x_get_sda, - .get_scl = w60x_get_scl, - .udelay = rt_hw_us_delay, - .delay_us = 1, - .timeout = 100, - .i2c_pin_init_flag = RT_FALSE -}; - -/** - * if i2c is locked, this function will unlock it - * - * @param w60x config class - * - * @return RT_EOK indicates successful unlock. - */ -static rt_err_t w60x_i2c_bus_unlock(const struct w60x_soft_i2c_config *cfg) -{ - rt_int32_t i = 0; - - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - while (i++ < 9) - { - rt_pin_write(cfg->scl, PIN_HIGH); - rt_hw_us_delay(100); - rt_pin_write(cfg->scl, PIN_LOW); - rt_hw_us_delay(100); - } - } - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - return -RT_ERROR; - } - - return RT_EOK; -} - -/* I2C initialization function */ -int rt_soft_i2c_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct w60x_i2c); - rt_err_t result; - - for (rt_size_t i = 0; i < obj_num; i++) - { - i2c_obj[i].ops = w60x_bit_ops_default; - i2c_obj[i].ops.data = (void*)&soft_i2c_config[i]; - i2c_obj[i].i2c_bus.priv = &i2c_obj[i].ops; - - result = rt_i2c_bit_add_bus(&i2c_obj[i].i2c_bus, soft_i2c_config[i].bus_name); - RT_ASSERT(result == RT_EOK); - w60x_i2c_bus_unlock(&soft_i2c_config[i]); - - LOG_D("software simulation %s init done, pin scl: %d, pin sda %d", - soft_i2c_config[i].bus_name, - soft_i2c_config[i].scl, - soft_i2c_config[i].sda); - } - - return RT_EOK; -} -INIT_DEVICE_EXPORT(rt_soft_i2c_init); - -#endif /* BSP_USING_SOFT_I2C */ diff --git a/bsp/w60x/drivers/drv_soft_i2c.h b/bsp/w60x/drivers/drv_soft_i2c.h deleted file mode 100644 index bd0cdc0431f..00000000000 --- a/bsp/w60x/drivers/drv_soft_i2c.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2006-2021, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2019-03-22 balanceTWK first version - */ - -#ifndef __DRV_SOFT_I2C__ -#define __DRV_SOFT_I2C__ - -#include -#include -#include - -/* w60x config class */ -struct w60x_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; -/* w60x i2c dirver class */ -struct w60x_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device i2c_bus; -}; - -#ifdef BSP_USING_SOFT_I2C1 -#define I2C1_BUS_CONFIG \ - { \ - .scl = SOFT_I2C1_SCL_PIN, \ - .sda = SOFT_I2C1_SDA_PIN, \ - .bus_name = "i2c1soft", \ - } -#endif - -#ifdef BSP_USING_SOFT_I2C2 -#define I2C2_BUS_CONFIG \ - { \ - .scl = SOFT_I2C2_SCL_PIN, \ - .sda = SOFT_I2C2_SDA_PIN, \ - .bus_name = "i2c2soft", \ - } -#endif - -#ifdef BSP_USING_SOFT_I2C3 -#define I2C3_BUS_CONFIG \ - { \ - .scl = SOFT_I2C3_SCL_PIN, \ - .sda = SOFT_I2C3_SDA_PIN, \ - .bus_name = "i2c3soft", \ - } -#endif - -int rt_hw_i2c_init(void); - -#endif diff --git a/bsp/wch/risc-v/Libraries/ch32_drivers/SConscript b/bsp/wch/risc-v/Libraries/ch32_drivers/SConscript index 537dd03f728..c14c16e4086 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 149d2efb62d..00000000000 --- a/bsp/wch/risc-v/Libraries/ch32_drivers/drv_soft_i2c.c +++ /dev/null @@ -1,226 +0,0 @@ -/* - * Copyright (c) 2006-2023, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2022-09-19 hg0720 the first version which add from wch - */ - -#include -#include "drv_soft_i2c.h" - -#ifdef BSP_USING_SOFT_I2C - -//#define DRV_DEBUG -#define LOG_TAG "drv.i2c" -#include - -#if !defined(BSP_USING_I2C1) && !defined(BSP_USING_I2C2) -#error "Please define at least one BSP_USING_I2Cx" -/* this driver can be disabled at menuconfig -> RT-Thread Components -> Device Drivers */ -#endif - -static const struct ch32_soft_i2c_config soft_i2c_config[] = -{ -#ifdef BSP_USING_I2C1 - I2C1_BUS_CONFIG, -#endif -#ifdef BSP_USING_I2C2 - I2C2_BUS_CONFIG, -#endif -}; - -static struct ch32_i2c i2c_obj[sizeof(soft_i2c_config) / sizeof(soft_i2c_config[0])]; - -/* - * This function initializes the i2c pin. - * - * @param ch32 i2c dirver class. - */ -static void ch32_i2c_gpio_init(struct ch32_i2c *i2c) -{ - struct ch32_soft_i2c_config* cfg = (struct ch32_soft_i2c_config*)i2c->ops.data; - - rt_pin_mode(cfg->scl, PIN_MODE_OUTPUT_OD); - rt_pin_mode(cfg->sda, PIN_MODE_OUTPUT_OD); - - rt_pin_write(cfg->scl, PIN_HIGH); - rt_pin_write(cfg->sda, PIN_HIGH); -} - -static void ch32_i2c_pin_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct ch32_i2c); - - for(rt_size_t i = 0; i < obj_num; i++) - { - ch32_i2c_gpio_init(&i2c_obj[i]); - } -} - -/* - * This function sets the sda pin. - * - * @param Ch32 config class. - * @param The sda pin state. - */ -static void ch32_set_sda(void *data, rt_int32_t state) -{ - struct ch32_soft_i2c_config* cfg = (struct ch32_soft_i2c_config*)data; - if (state) - { - rt_pin_write(cfg->sda, PIN_HIGH); - } - else - { - rt_pin_write(cfg->sda, PIN_LOW); - } -} - -/* - * This function sets the scl pin. - * - * @param Ch32 config class. - * @param The scl pin state. - */ -static void ch32_set_scl(void *data, rt_int32_t state) -{ - struct ch32_soft_i2c_config* cfg = (struct ch32_soft_i2c_config*)data; - if (state) - { - rt_pin_write(cfg->scl, PIN_HIGH); - } - else - { - rt_pin_write(cfg->scl, PIN_LOW); - } -} - -/* - * This function gets the sda pin state. - * - * @param The sda pin state. - */ -static rt_int32_t ch32_get_sda(void *data) -{ - struct ch32_soft_i2c_config* cfg = (struct ch32_soft_i2c_config*)data; - return rt_pin_read(cfg->sda); -} - -/* - * This function gets the scl pin state. - * - * @param The scl pin state. - */ -static rt_int32_t ch32_get_scl(void *data) -{ - struct ch32_soft_i2c_config* cfg = (struct ch32_soft_i2c_config*)data; - return rt_pin_read(cfg->scl); -} - -/* - * The time delay function. - * - * @param microseconds. - */ -static void ch32_udelay(rt_uint32_t us) -{ - rt_uint32_t ticks; - rt_uint32_t told, tnow, tcnt = 0; - rt_uint32_t reload = SysTick->CMP; - - ticks = us * reload / (1000000 / RT_TICK_PER_SECOND); - told = SysTick->CNT; - while (1) - { - tnow = SysTick->CNT; - if (tnow != told) - { - if (tnow > told) - { - tcnt += tnow - told; - } - else - { - tcnt += reload - told + tnow; - } - told = tnow; - if (tcnt >= ticks) - { - break; - } - } - } -} - -static const struct rt_i2c_bit_ops ch32_bit_ops_default = -{ - .data = RT_NULL, - .pin_init = ch32_i2c_pin_init, - .set_sda = ch32_set_sda, - .set_scl = ch32_set_scl, - .get_sda = ch32_get_sda, - .get_scl = ch32_get_scl, - .udelay = ch32_udelay, - .delay_us = 1, - .timeout = 100, - .i2c_pin_init_flag = RT_FALSE -}; - -/* - * if i2c is locked, this function will unlock it - * - * @param ch32 config class - * - * @return RT_EOK indicates successful unlock. - */ -static rt_err_t ch32_i2c_bus_unlock(const struct ch32_soft_i2c_config *cfg) -{ - rt_int32_t i = 0; - - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - while (i++ < 9) - { - rt_pin_write(cfg->scl, PIN_HIGH); - ch32_udelay(100); - rt_pin_write(cfg->scl, PIN_LOW); - ch32_udelay(100); - } - } - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - return -RT_ERROR; - } - - return RT_EOK; -} - -/* I2C initialization function */ -int rt_hw_i2c_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct ch32_i2c); - rt_err_t result; - - for (rt_size_t i = 0; i < obj_num; i++) - { - i2c_obj[i].ops = ch32_bit_ops_default; - i2c_obj[i].ops.data = (void*)&soft_i2c_config[i]; - i2c_obj[i].i2c_bus.priv = &i2c_obj[i].ops; - - result = rt_i2c_bit_add_bus(&i2c_obj[i].i2c_bus, soft_i2c_config[i].bus_name); - RT_ASSERT(result == RT_EOK); - ch32_i2c_bus_unlock(&soft_i2c_config[i]); - LOG_D("software simulation %s init done, pin scl: %d, pin sda %d", - soft_i2c_config[i].bus_name, - soft_i2c_config[i].scl, - soft_i2c_config[i].sda); - } - - return RT_EOK; -} -INIT_BOARD_EXPORT(rt_hw_i2c_init); - -#endif /* RT_USING_I2C */ diff --git a/bsp/wch/risc-v/Libraries/ch32_drivers/drv_soft_i2c.h b/bsp/wch/risc-v/Libraries/ch32_drivers/drv_soft_i2c.h deleted file mode 100644 index b0d9912fa45..00000000000 --- a/bsp/wch/risc-v/Libraries/ch32_drivers/drv_soft_i2c.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 2006-2023, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2022-09-19 hg0720 the first version which add from wch - */ - -#ifndef __DRV_I2C__ -#define __DRV_I2C__ - -#include -#include -#include - -/* ch32 config class */ -struct ch32_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; - -/* ch32 i2c dirver class */ -struct ch32_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device i2c_bus; -}; - -#ifdef BSP_USING_I2C1 -#define I2C1_BUS_CONFIG \ - { \ - .scl = BSP_I2C1_SCL_PIN, \ - .sda = BSP_I2C1_SDA_PIN, \ - .bus_name = "i2c1", \ - } -#endif - -#ifdef BSP_USING_I2C2 -#define I2C2_BUS_CONFIG \ - { \ - .scl = BSP_I2C2_SCL_PIN, \ - .sda = BSP_I2C2_SDA_PIN, \ - .bus_name = "i2c2", \ - } -#endif - -int rt_hw_i2c_init(void); - -#endif diff --git a/bsp/wch/risc-v/ch32v208w-r0/.ci/attachconfig/ci.attachconfig.yml b/bsp/wch/risc-v/ch32v208w-r0/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 00000000000..258515f455e --- /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 1ef09bd521c..7d02521cae4 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 @@ -121,48 +119,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_SOFT_I2C - bool "Enable I2C Bus" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - default n - - if BSP_USING_SOFT_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 Bus (software simulation)" - default n - - if BSP_USING_I2C1 - comment "Notice: PC7 --> 39; PC6 --> 38" - - config BSP_I2C1_SCL_PIN - int "i2c1 SCL pin number" - range 0 79 - default 38 - config BSP_I2C1_SDA_PIN - int "i2c1 SDA pin number" - range 0 79 - default 39 - endif - - config BSP_USING_I2C2 - bool "Enable I2C2 Bus (software simulation)" - default n - - if BSP_USING_I2C2 - comment "Notice: PC1 --> 33; PC0 --> 32" - config BSP_I2C2_SCL_PIN - int "i2c2 SCL pin number" - range 0 79 - default 32 - config BSP_I2C2_SDA_PIN - int "i2c2 SDA pin number" - range 0 79 - default 33 - endif - endif - menuconfig BSP_USING_SPI bool "Enable SPI" select RT_USING_SOFT_SPI 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 8f92bf90466..9ca1fd6a376 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 ececb91344d..790a1c490fb 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 @@ -383,48 +381,6 @@ 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 - default n - - if BSP_USING_SOFT_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 Bus (software simulation)" - default n - - if BSP_USING_I2C1 - comment "Notice: PB10 --> 26; PB11 --> 27" - - config BSP_I2C1_SCL_PIN - int "i2c1 SCL pin number" - range 0 79 - default 26 - config BSP_I2C1_SDA_PIN - int "i2c1 SDA pin number" - range 0 79 - default 27 - endif - - config BSP_USING_I2C2 - bool "Enable I2C2 Bus (software simulation)" - default n - - if BSP_USING_I2C2 - comment "Notice: PC1 --> 33; PC0 --> 32" - config BSP_I2C2_SCL_PIN - int "i2c2 SCL pin number" - range 0 79 - default 32 - config BSP_I2C2_SDA_PIN - int "i2c2 SDA pin number" - range 0 79 - default 33 - endif - endif - menuconfig BSP_USING_SPI bool "Enable SPI" select RT_USING_SPI @@ -857,4 +813,3 @@ menu "Board extended module Drivers" endmenu 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 8f92bf90466..9ca1fd6a376 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 dccae0c2bb4..538a0e603df 100644 --- a/bsp/wch/risc-v/yd-ch32v307vct6/board/Kconfig +++ b/bsp/wch/risc-v/yd-ch32v307vct6/board/Kconfig @@ -92,48 +92,6 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_SOFT_I2C - bool "Enable I2C Bus" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - default n - - if BSP_USING_SOFT_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 Bus (software simulation)" - default n - - if BSP_USING_I2C1 - comment "Notice: PB10 --> 26; PB11 --> 27" - - config BSP_I2C1_SCL_PIN - int "i2c1 SCL pin number" - range 0 79 - default 26 - config BSP_I2C1_SDA_PIN - int "i2c1 SDA pin number" - range 0 79 - default 27 - endif - - config BSP_USING_I2C2 - bool "Enable I2C2 Bus (software simulation)" - default n - - if BSP_USING_I2C2 - comment "Notice: PC1 --> 33; PC0 --> 32" - config BSP_I2C2_SCL_PIN - int "i2c2 SCL pin number" - range 0 79 - default 32 - config BSP_I2C2_SDA_PIN - int "i2c2 SDA pin number" - range 0 79 - default 33 - endif - endif - menuconfig BSP_USING_SPI bool "Enable SPI" select RT_USING_SPI @@ -575,4 +533,3 @@ menu "Board extended module Drivers" endmenu endmenu - diff --git a/components/drivers/i2c/Kconfig b/components/drivers/i2c/Kconfig index d24d24b9c41..f28b62b5828 100644 --- a/components/drivers/i2c/Kconfig +++ b/components/drivers/i2c/Kconfig @@ -23,6 +23,12 @@ if RT_USING_I2C select RT_USING_PIN select RT_USING_I2C_BITOPS if RT_USING_SOFT_I2C + 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 @@ -30,14 +36,16 @@ if RT_USING_I2C config RT_SOFT_I2C0_SCL_PIN int "SCL pin number" range 0 32767 + default RT_SOFT_I2C0_SCL_PIN_DEFAULT if RT_SOFT_I2C0_SCL_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_SDA_PIN_DEFAULT != "" default 2 config RT_SOFT_I2C0_BUS_NAME string "Bus name" - default "i2c0" + default "swi2c0" config RT_SOFT_I2C0_TIMING_DELAY int "Timing delay (us)" range 0 32767 @@ -47,6 +55,12 @@ if RT_USING_I2C range 0 32767 default 10 endif + 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 @@ -54,14 +68,16 @@ if RT_USING_I2C config RT_SOFT_I2C1_SCL_PIN int "SCL pin number" range 0 32767 + default RT_SOFT_I2C1_SCL_PIN_DEFAULT if RT_SOFT_I2C1_SCL_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_SDA_PIN_DEFAULT != "" default 4 config RT_SOFT_I2C1_BUS_NAME string "Bus name" - default "i2c1" + default "swi2c1" config RT_SOFT_I2C1_TIMING_DELAY int "Timing delay (us)" range 0 32767 @@ -71,6 +87,12 @@ if RT_USING_I2C range 0 32767 default 10 endif + 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)" default n @@ -78,14 +100,16 @@ if RT_USING_I2C config RT_SOFT_I2C2_SCL_PIN int "SCL pin number" range 0 32767 + default RT_SOFT_I2C2_SCL_PIN_DEFAULT if RT_SOFT_I2C2_SCL_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_SDA_PIN_DEFAULT != "" default 6 config RT_SOFT_I2C2_BUS_NAME string "Bus name" - default "i2c2" + default "swi2c2" config RT_SOFT_I2C2_TIMING_DELAY int "Timing delay (us)" range 0 32767 @@ -95,6 +119,12 @@ if RT_USING_I2C range 0 32767 default 10 endif + 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)" default n @@ -102,14 +132,16 @@ if RT_USING_I2C config RT_SOFT_I2C3_SCL_PIN int "SCL pin number" range 0 32767 + default RT_SOFT_I2C3_SCL_PIN_DEFAULT if RT_SOFT_I2C3_SCL_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_SDA_PIN_DEFAULT != "" default 8 config RT_SOFT_I2C3_BUS_NAME string "Bus name" - default "i2c3" + default "swi2c3" config RT_SOFT_I2C3_TIMING_DELAY int "Timing delay (us)" range 0 32767 @@ -119,6 +151,12 @@ if RT_USING_I2C range 0 32767 default 10 endif + 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)" default n @@ -126,14 +164,16 @@ if RT_USING_I2C config RT_SOFT_I2C4_SCL_PIN int "SCL pin number" range 0 32767 + default RT_SOFT_I2C4_SCL_PIN_DEFAULT if RT_SOFT_I2C4_SCL_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_SDA_PIN_DEFAULT != "" default 10 config RT_SOFT_I2C4_BUS_NAME string "Bus name" - default "i2c4" + default "swi2c4" config RT_SOFT_I2C4_TIMING_DELAY int "Timing delay (us)" range 0 32767 @@ -143,6 +183,12 @@ if RT_USING_I2C range 0 32767 default 10 endif + 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)" default n @@ -150,14 +196,16 @@ if RT_USING_I2C config RT_SOFT_I2C5_SCL_PIN int "SCL pin number" range 0 32767 + default RT_SOFT_I2C5_SCL_PIN_DEFAULT if RT_SOFT_I2C5_SCL_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_SDA_PIN_DEFAULT != "" default 12 config RT_SOFT_I2C5_BUS_NAME string "Bus name" - default "i2c5" + default "swi2c5" config RT_SOFT_I2C5_TIMING_DELAY int "Timing delay (us)" range 0 32767 @@ -167,6 +215,12 @@ if RT_USING_I2C range 0 32767 default 10 endif + 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)" default n @@ -174,14 +228,16 @@ if RT_USING_I2C config RT_SOFT_I2C6_SCL_PIN int "SCL pin number" range 0 32767 + default RT_SOFT_I2C6_SCL_PIN_DEFAULT if RT_SOFT_I2C6_SCL_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_SDA_PIN_DEFAULT != "" default 14 config RT_SOFT_I2C6_BUS_NAME string "Bus name" - default "i2c6" + default "swi2c6" config RT_SOFT_I2C6_TIMING_DELAY int "Timing delay (us)" range 0 32767 @@ -191,6 +247,12 @@ if RT_USING_I2C range 0 32767 default 10 endif + 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)" default n @@ -198,14 +260,16 @@ if RT_USING_I2C config RT_SOFT_I2C7_SCL_PIN int "SCL pin number" range 0 32767 + default RT_SOFT_I2C7_SCL_PIN_DEFAULT if RT_SOFT_I2C7_SCL_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_SDA_PIN_DEFAULT != "" default 16 config RT_SOFT_I2C7_BUS_NAME string "Bus name" - default "i2c7" + default "swi2c7" config RT_SOFT_I2C7_TIMING_DELAY int "Timing delay (us)" range 0 32767 @@ -215,6 +279,12 @@ if RT_USING_I2C range 0 32767 default 10 endif + 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)" default n @@ -222,14 +292,16 @@ if RT_USING_I2C config RT_SOFT_I2C8_SCL_PIN int "SCL pin number" range 0 32767 + default RT_SOFT_I2C8_SCL_PIN_DEFAULT if RT_SOFT_I2C8_SCL_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_SDA_PIN_DEFAULT != "" default 18 config RT_SOFT_I2C8_BUS_NAME string "Bus name" - default "i2c8" + default "swi2c8" config RT_SOFT_I2C8_TIMING_DELAY int "Timing delay (us)" range 0 32767