diff --git a/bsp/ESP/ESP32_C3/.ci/attachconfig/ci.attachconfig.yml b/bsp/ESP/ESP32_C3/.ci/attachconfig/ci.attachconfig.yml index a2a990be1c58..ca2eddb6ad64 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 b7cb8f1275d6..1d2c125d5911 100644 --- a/bsp/ESP/libraries/drivers/Kconfig +++ b/bsp/ESP/libraries/drivers/Kconfig @@ -75,25 +75,27 @@ menu "On-chip Peripheral Drivers" menuconfig BSP_USING_HW_I2C bool "Enable HardWare I2C" default n - - menuconfig BSP_USING_SW_I2C - bool "Enable SoftWare I2C" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n - if BSP_USING_SW_I2C - config BSP_USING_SW_I2C0 - bool "Enable SoftWare I2C0" - default n - if BSP_USING_SW_I2C0 - config BSP_SW_I2C0_SDA_PIN - int "SWI2C0 sda pin number" - range 0 21 - default 18 - config BSP_SW_I2C0_SCL_PIN - int "SWI2C0 scl pin number" - range 0 21 - default 19 - endif - endif + select RT_USING_I2C + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C0 + bool "Enable software I2C0 Bus (swi2c0)" + default n + select RT_USING_SOFT_I2C0 + if BSP_USING_SOFT_I2C0 + config RT_SOFT_I2C0_SCL_PIN + int "swi2c0 SCL pin number" + default 19 + config RT_SOFT_I2C0_SDA_PIN + int "swi2c0 SDA pin number" + default 18 + endif + endif + + endif menuconfig BSP_USING_SPI @@ -171,4 +173,16 @@ config BSP_ENABLE_GDBSTUB bool "Enable ESP_GDBSTUB compontent" default n -endmenu \ No newline at end of file + config RT_SOFT_I2C0_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C0 + + config RT_SOFT_I2C0_SCL_PIN_DEFAULT + int + default 19 if RT_USING_SOFT_I2C0 + + config RT_SOFT_I2C0_SDA_PIN_DEFAULT + int + default 18 if RT_USING_SOFT_I2C0 + +endmenu diff --git a/bsp/ESP/libraries/drivers/SConscript b/bsp/ESP/libraries/drivers/SConscript index 74d91cca657f..c8d534e1646b 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 fbfed4d71dbe..000000000000 --- 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 ab353e473fa5..000000000000 --- 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 017b3cb4d775..280ee05b70f8 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 9c20a54ca1b4..000000000000 --- 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 2e49a62c2f82..000000000000 --- 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 000000000000..6cbc2bc3c363 --- /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 07a230d7969c..5a771696dd1c 100644 --- a/bsp/Infineon/libraries/templates/PSOC62/board/Kconfig +++ b/bsp/Infineon/libraries/templates/PSOC62/board/Kconfig @@ -173,29 +173,26 @@ menu "On-chip Peripheral Drivers" default 105 endif endif - - menuconfig BSP_USING_I2C - bool "Enable Software I2C Bus" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 Bus (User I2C)" - default n - if BSP_USING_I2C1 - comment "Notice: P13_1 --> 105; P13_2 --> 106" - config BSP_I2C1_SCL_PIN - int "i2c1 SCL pin number" - range 1 113 - default 105 - config BSP_I2C1_SDA_PIN - int "i2c1 SDA pin number" - range 1 113 - default 106 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 105 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 106 + endif + endif + menuconfig BSP_USING_RTC bool "Enable RTC" @@ -250,4 +247,16 @@ menu "On-chip Peripheral Drivers" endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 105 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 106 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/Infineon/psoc6-cy8ckit-062-BLE/.ci/attachconfig/ci.attachconfig.yml b/bsp/Infineon/psoc6-cy8ckit-062-BLE/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..6cbc2bc3c363 --- /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 77a4380e4a99..3acbc9e3c221 100644 --- a/bsp/Infineon/psoc6-cy8ckit-062-BLE/board/Kconfig +++ b/bsp/Infineon/psoc6-cy8ckit-062-BLE/board/Kconfig @@ -173,29 +173,26 @@ menu "On-chip Peripheral Drivers" default 105 endif endif - - menuconfig BSP_USING_I2C - bool "Enable Software I2C Bus" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 Bus (User I2C)" - default n - if BSP_USING_I2C1 - comment "Notice: P13_1 --> 105; P13_2 --> 106" - config BSP_I2C1_SCL_PIN - int "i2c1 SCL pin number" - range 1 113 - default 105 - config BSP_I2C1_SDA_PIN - int "i2c1 SDA pin number" - range 1 113 - default 106 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 105 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 106 + endif + endif + menuconfig BSP_USING_RTC bool "Enable RTC" @@ -250,4 +247,16 @@ menu "On-chip Peripheral Drivers" endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 105 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 106 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/Infineon/psoc6-cy8ckit-062-WIFI-BT/.ci/attachconfig/ci.attachconfig.yml b/bsp/Infineon/psoc6-cy8ckit-062-WIFI-BT/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..6cbc2bc3c363 --- /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 6b1995145662..c1bda32bfa98 100644 --- a/bsp/Infineon/psoc6-cy8ckit-062-WIFI-BT/board/Kconfig +++ b/bsp/Infineon/psoc6-cy8ckit-062-WIFI-BT/board/Kconfig @@ -181,29 +181,26 @@ menu "On-chip Peripheral Drivers" default 105 endif endif - - menuconfig BSP_USING_I2C - bool "Enable Software I2C Bus" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 Bus (User I2C)" - default n - if BSP_USING_I2C1 - comment "Notice: P13_1 --> 105; P13_2 --> 106" - config BSP_I2C1_SCL_PIN - int "i2c1 SCL pin number" - range 1 113 - default 105 - config BSP_I2C1_SDA_PIN - int "i2c1 SDA pin number" - range 1 113 - default 106 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 105 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 106 + endif + endif + menuconfig BSP_USING_RTC bool "Enable RTC" @@ -258,4 +255,16 @@ menu "On-chip Peripheral Drivers" endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 105 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 106 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/Infineon/psoc6-cy8ckit-062S2-43012/.ci/attachconfig/ci.attachconfig.yml b/bsp/Infineon/psoc6-cy8ckit-062S2-43012/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..6cbc2bc3c363 --- /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 0a5cec3667dd..7378d38f770b 100644 --- a/bsp/Infineon/psoc6-cy8ckit-062S2-43012/board/Kconfig +++ b/bsp/Infineon/psoc6-cy8ckit-062S2-43012/board/Kconfig @@ -180,29 +180,26 @@ menu "On-chip Peripheral Drivers" default 105 endif endif - - menuconfig BSP_USING_I2C - bool "Enable Software I2C Bus" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 Bus (User I2C)" - default n - if BSP_USING_I2C1 - comment "Notice: P13_1 --> 105; P13_2 --> 106" - config BSP_I2C1_SCL_PIN - int "i2c1 SCL pin number" - range 1 113 - default 105 - config BSP_I2C1_SDA_PIN - int "i2c1 SDA pin number" - range 1 113 - default 106 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 105 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 106 + endif + endif + config BSP_USING_USBD bool "Enable USB Device" @@ -325,4 +322,16 @@ menu "Board extended module Drivers" endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 105 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 106 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/Infineon/psoc6-cy8ckit-062s4/.ci/attachconfig/ci.attachconfig.yml b/bsp/Infineon/psoc6-cy8ckit-062s4/.ci/attachconfig/ci.attachconfig.yml index d453530aff0a..ab4f866f4e1a 100644 --- a/bsp/Infineon/psoc6-cy8ckit-062s4/.ci/attachconfig/ci.attachconfig.yml +++ b/bsp/Infineon/psoc6-cy8ckit-062s4/.ci/attachconfig/ci.attachconfig.yml @@ -9,3 +9,13 @@ utest.pin: - CONFIG_RT_USING_UTESTCASES=y - CONFIG_RT_CONSOLEBUF_SIZE=256 - CONFIG_RT_UTEST_PIN=y + +# ------ devices CI ------ +devices.soft_i2c: + kconfig: + - CONFIG_RT_USING_I2C=y + - CONFIG_RT_USING_SOFT_I2C=y + - CONFIG_RT_USING_SOFT_I2C1=y + - CONFIG_RT_SOFT_I2C1_SCL_PIN=105 + - CONFIG_RT_SOFT_I2C1_SDA_PIN=106 + - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1" diff --git a/bsp/Infineon/psoc6-cy8ckit-062s4/board/Kconfig b/bsp/Infineon/psoc6-cy8ckit-062s4/board/Kconfig index bfe1fd8b864c..9de4f6fd8107 100644 --- a/bsp/Infineon/psoc6-cy8ckit-062s4/board/Kconfig +++ b/bsp/Infineon/psoc6-cy8ckit-062s4/board/Kconfig @@ -173,29 +173,26 @@ menu "On-chip Peripheral Drivers" default 105 endif endif - - menuconfig BSP_USING_I2C - bool "Enable Software I2C Bus" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 Bus (User I2C)" - default n - if BSP_USING_I2C1 - comment "Notice: P13_1 --> 105; P13_2 --> 106" - config BSP_I2C1_SCL_PIN - int "i2c1 SCL pin number" - range 1 113 - default 105 - config BSP_I2C1_SDA_PIN - int "i2c1 SDA pin number" - range 1 113 - default 106 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 105 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 106 + endif + endif + menuconfig BSP_USING_RTC bool "Enable RTC" @@ -250,4 +247,16 @@ menu "On-chip Peripheral Drivers" endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 105 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 106 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/Infineon/psoc6-cy8cproto-062S3-4343W/.ci/attachconfig/ci.attachconfig.yml b/bsp/Infineon/psoc6-cy8cproto-062S3-4343W/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..6cbc2bc3c363 --- /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 6006e7e97d57..4bfbbf1433d7 100644 --- a/bsp/Infineon/psoc6-cy8cproto-062S3-4343W/board/Kconfig +++ b/bsp/Infineon/psoc6-cy8cproto-062S3-4343W/board/Kconfig @@ -180,29 +180,26 @@ menu "On-chip Peripheral Drivers" default 105 endif endif - - menuconfig BSP_USING_I2C - bool "Enable Software I2C Bus" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 Bus (User I2C)" - default n - if BSP_USING_I2C1 - comment "Notice: P13_1 --> 105; P13_2 --> 106" - config BSP_I2C1_SCL_PIN - int "i2c1 SCL pin number" - range 1 113 - default 105 - config BSP_I2C1_SDA_PIN - int "i2c1 SDA pin number" - range 1 113 - default 106 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 105 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 106 + endif + endif + config BSP_USING_USBD bool "Enable USB Device" @@ -325,4 +322,16 @@ menu "Board extended module Drivers" endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 105 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 106 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/Infineon/psoc6-evaluationkit-062S2/.ci/attachconfig/ci.attachconfig.yml b/bsp/Infineon/psoc6-evaluationkit-062S2/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..6cbc2bc3c363 --- /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 ef00b67eba19..d98584b94b88 100644 --- a/bsp/Infineon/psoc6-evaluationkit-062S2/board/Kconfig +++ b/bsp/Infineon/psoc6-evaluationkit-062S2/board/Kconfig @@ -229,29 +229,26 @@ menu "On-chip Peripheral Drivers" default 65 endif endif - - menuconfig BSP_USING_I2C - bool "Enable Software I2C Bus" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 Bus (User I2C)" - default n - if BSP_USING_I2C1 - comment "Notice: P13_1 --> 105; P13_2 --> 106" - config BSP_I2C1_SCL_PIN - int "i2c1 SCL pin number" - range 1 113 - default 105 - config BSP_I2C1_SDA_PIN - int "i2c1 SDA pin number" - range 1 113 - default 106 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 105 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 106 + endif + endif + menuconfig BSP_USING_RTC bool "Enable RTC" @@ -487,4 +484,16 @@ menu "Board extended module Drivers" default n endmenu -endmenu \ No newline at end of file + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 105 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 106 if RT_USING_SOFT_I2C1 + +endmenu diff --git a/bsp/acm32/acm32f0x0-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/acm32/acm32f0x0-nucleo/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..872296ed471a --- /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 e112183e2b43..1bcc5bfb6d26 100644 --- a/bsp/acm32/acm32f0x0-nucleo/drivers/Kconfig +++ b/bsp/acm32/acm32f0x0-nucleo/drivers/Kconfig @@ -105,28 +105,26 @@ menu "On-chip Peripheral Drivers" default n select RT_USING_I2C endmenu - menuconfig BSP_USING_SOFT_I2C - bool "Enable Soft I2C" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN + bool "Enable software I2C (swi2c)" default n + select RT_USING_I2C + select RT_USING_SOFT_I2C if BSP_USING_SOFT_I2C - menuconfig BSP_USING_I2C0 - bool "Enable I2C1 BUS (software simulation)" - default n - if BSP_USING_I2C0 - config BSP_I2C0_SCL_PIN - int "i2c0 scl pin number (PD, 6)" - range 0 63 - default 54 - config BSP_I2C0_SDA_PIN - int "I2C0 sda pin number (PD, 7)" - range 0 63 - default 55 - endif - endif + menuconfig BSP_USING_SOFT_I2C0 + bool "Enable software I2C0 Bus (swi2c0)" + default n + select RT_USING_SOFT_I2C0 + if BSP_USING_SOFT_I2C0 + config RT_SOFT_I2C0_SCL_PIN + int "swi2c0 SCL pin number" + default 54 + config RT_SOFT_I2C0_SDA_PIN + int "swi2c0 SDA pin number" + default 55 + endif + endif + menu "Hardware CAN" config BSP_USING_CAN1 @@ -256,5 +254,16 @@ menu "Board extended module Drivers" endmenu -endmenu + config RT_SOFT_I2C0_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C0 + + config RT_SOFT_I2C0_SCL_PIN_DEFAULT + int + default 54 if RT_USING_SOFT_I2C0 + config RT_SOFT_I2C0_SDA_PIN_DEFAULT + int + default 55 if RT_USING_SOFT_I2C0 + +endmenu diff --git a/bsp/acm32/acm32f0x0-nucleo/drivers/drv_soft_i2c.c b/bsp/acm32/acm32f0x0-nucleo/drivers/drv_soft_i2c.c deleted file mode 100644 index 47b8e9fb067d..000000000000 --- 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 e66083b0d9e2..000000000000 --- 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 000000000000..08f15d590b4d --- /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 65f1c9b152c6..e3a7201469fb 100644 --- a/bsp/airm2m/air32f103/board/Kconfig +++ b/bsp/airm2m/air32f103/board/Kconfig @@ -48,28 +48,26 @@ menu "On-chip Peripheral Drivers" bool "Enable UART3" default n endif - - menuconfig BSP_USING_SOFTI2C - bool "Enable SOFT I2C" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n - if BSP_USING_SOFTI2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 25 - endif - endif + select RT_USING_I2C + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 25 + endif + endif + menuconfig BSP_USING_SPI bool "Enable SPI BUS" @@ -131,4 +129,16 @@ menu "On-chip Peripheral Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/airm2m/air32f103/libraries/SConscript b/bsp/airm2m/air32f103/libraries/SConscript index 8848f19239a1..575a0af08b34 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 5ca9a4e55bbd..000000000000 --- 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 2d7c723dc690..000000000000 --- 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 000000000000..7cd4362ffcea --- /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 c8c59dee476c..4d3471e37179 100644 --- a/bsp/apm32/apm32e103ze-evalboard/board/Kconfig +++ b/bsp/apm32/apm32e103ze-evalboard/board/Kconfig @@ -24,9 +24,10 @@ menu "Onboard Peripheral Drivers" default n config BSP_USING_EEPROM - bool "Enable I2C EEPROM (i2c1)" - select BSP_USING_I2C - select BSP_USING_I2C1 + bool "Enable I2C EEPROM (swi2c1)" + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C1 default n config BSP_USING_SDCARD @@ -41,6 +42,18 @@ menu "Onboard Peripheral Drivers" select BSP_USING_DMC default n + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + endmenu menu "On-chip Peripheral Drivers" @@ -105,54 +118,52 @@ menu "On-chip Peripheral Drivers" bool "RTC USING LSI" endchoice endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - comment "Notice: PB6 --> 22; PB7 --> 23" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - comment "Notice: PA0 --> 0; PA1 --> 1" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 22 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - comment "Notice: PB0 --> 16; PB1 --> 17" - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 63 - default 8 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 63 - default 41 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 22 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C3 + bool "Enable software I2C3 Bus (swi2c3)" + default n + select RT_USING_SOFT_I2C3 + if BSP_USING_SOFT_I2C3 + config RT_SOFT_I2C3_SCL_PIN + int "swi2c3 SCL pin number" + default 8 + config RT_SOFT_I2C3_SDA_PIN + int "swi2c3 SDA pin number" + default 41 + endif + endif + menuconfig BSP_USING_SPI bool "Enable SPI" @@ -271,4 +282,28 @@ menu "On-chip Peripheral Drivers" endmenu + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C3_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SCL_PIN_DEFAULT + int + default 8 if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SDA_PIN_DEFAULT + int + default 41 if RT_USING_SOFT_I2C3 + endmenu diff --git a/bsp/apm32/apm32e103ze-tinyboard/.ci/attachconfig/ci.attachconfig.yml b/bsp/apm32/apm32e103ze-tinyboard/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..7cd4362ffcea --- /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 4ff30f548e6f..992400010803 100644 --- a/bsp/apm32/apm32e103ze-tinyboard/board/Kconfig +++ b/bsp/apm32/apm32e103ze-tinyboard/board/Kconfig @@ -86,54 +86,52 @@ menu "On-chip Peripheral Drivers" bool "RTC USING LSI" endchoice endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - comment "Notice: PB6 --> 22; PB7 --> 23" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - comment "Notice: PA0 --> 0; PA1 --> 1" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 22 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - comment "Notice: PB0 --> 16; PB1 --> 17" - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 63 - default 8 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 63 - default 41 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 22 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C3 + bool "Enable software I2C3 Bus (swi2c3)" + default n + select RT_USING_SOFT_I2C3 + if BSP_USING_SOFT_I2C3 + config RT_SOFT_I2C3_SCL_PIN + int "swi2c3 SCL pin number" + default 8 + config RT_SOFT_I2C3_SDA_PIN + int "swi2c3 SDA pin number" + default 41 + endif + endif + menuconfig BSP_USING_SPI bool "Enable SPI" @@ -248,4 +246,40 @@ menu "On-chip Peripheral Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C3_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SCL_PIN_DEFAULT + int + default 8 if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SDA_PIN_DEFAULT + int + default 41 if RT_USING_SOFT_I2C3 + endmenu diff --git a/bsp/apm32/apm32f030r8-miniboard/.ci/attachconfig/ci.attachconfig.yml b/bsp/apm32/apm32f030r8-miniboard/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..d88fbcccd5a2 --- /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 c583254b8355..e3cde3f9c902 100644 --- a/bsp/apm32/apm32f030r8-miniboard/board/Kconfig +++ b/bsp/apm32/apm32f030r8-miniboard/board/Kconfig @@ -67,41 +67,39 @@ menu "On-chip Peripheral Drivers" bool "RTC USING LSI" endchoice endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - comment "Notice: PB10 --> 26; PB11 --> 27" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 26 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 27 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - comment "Notice: PA0 --> 0; PA1 --> 1" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 22 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 23 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 26 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 27 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 22 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 23 + endif + endif + menuconfig BSP_USING_SPI bool "Enable SPI" @@ -193,4 +191,28 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C2 + endmenu diff --git a/bsp/apm32/apm32f051r8-evalboard/.ci/attachconfig/ci.attachconfig.yml b/bsp/apm32/apm32f051r8-evalboard/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..d88fbcccd5a2 --- /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 aef90aa40b30..974d428ead79 100644 --- a/bsp/apm32/apm32f051r8-evalboard/board/Kconfig +++ b/bsp/apm32/apm32f051r8-evalboard/board/Kconfig @@ -16,11 +16,24 @@ menu "Onboard Peripheral Drivers" default y config BSP_USING_EEPROM - bool "Enable I2C EEPROM (i2c1 software simulation)" - select BSP_USING_I2C - select BSP_USING_I2C1 + bool "Enable I2C EEPROM (swi2c1)" + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C1 default n + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C1 + endmenu menu "On-chip Peripheral Drivers" @@ -79,41 +92,39 @@ menu "On-chip Peripheral Drivers" bool "RTC USING LSI" endchoice endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - comment "Notice: PB10 --> 26; PB11 --> 27" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 26 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 27 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - comment "Notice: PA0 --> 0; PA1 --> 1" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 22 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 23 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 26 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 27 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 22 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 23 + endif + endif + menuconfig BSP_USING_SPI bool "Enable SPI" @@ -205,4 +216,16 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C2 + endmenu diff --git a/bsp/apm32/apm32f072vb-miniboard/.ci/attachconfig/ci.attachconfig.yml b/bsp/apm32/apm32f072vb-miniboard/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..f08ad08d180c --- /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 cae05eae10e7..6416306f2b22 100644 --- a/bsp/apm32/apm32f072vb-miniboard/board/Kconfig +++ b/bsp/apm32/apm32f072vb-miniboard/board/Kconfig @@ -67,54 +67,52 @@ menu "On-chip Peripheral Drivers" bool "RTC USING LSI" endchoice endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - comment "Notice: PB10 --> 26; PB11 --> 27" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 26 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 27 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - comment "Notice: PA0 --> 0; PA1 --> 1" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 22 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - comment "Notice: PB0 --> 16; PB1 --> 17" - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 63 - default 8 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 63 - default 41 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 26 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 27 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 22 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C3 + bool "Enable software I2C3 Bus (swi2c3)" + default n + select RT_USING_SOFT_I2C3 + if BSP_USING_SOFT_I2C3 + config RT_SOFT_I2C3_SCL_PIN + int "swi2c3 SCL pin number" + default 8 + config RT_SOFT_I2C3_SDA_PIN + int "swi2c3 SDA pin number" + default 41 + endif + endif + menuconfig BSP_USING_SPI bool "Enable SPI" @@ -214,4 +212,40 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C3_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SCL_PIN_DEFAULT + int + default 8 if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SDA_PIN_DEFAULT + int + default 41 if RT_USING_SOFT_I2C3 + endmenu diff --git a/bsp/apm32/apm32f091vc-miniboard/.ci/attachconfig/ci.attachconfig.yml b/bsp/apm32/apm32f091vc-miniboard/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..f08ad08d180c --- /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 757ecc8b85ee..53666c4a67a3 100644 --- a/bsp/apm32/apm32f091vc-miniboard/board/Kconfig +++ b/bsp/apm32/apm32f091vc-miniboard/board/Kconfig @@ -67,54 +67,52 @@ menu "On-chip Peripheral Drivers" bool "RTC USING LSI" endchoice endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - comment "Notice: PB10 --> 26; PB11 --> 27" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 26 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 27 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - comment "Notice: PA0 --> 0; PA1 --> 1" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 22 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - comment "Notice: PB0 --> 16; PB1 --> 17" - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 63 - default 8 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 63 - default 41 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 26 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 27 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 22 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C3 + bool "Enable software I2C3 Bus (swi2c3)" + default n + select RT_USING_SOFT_I2C3 + if BSP_USING_SOFT_I2C3 + config RT_SOFT_I2C3_SCL_PIN + int "swi2c3 SCL pin number" + default 8 + config RT_SOFT_I2C3_SDA_PIN + int "swi2c3 SDA pin number" + default 41 + endif + endif + menuconfig BSP_USING_SPI bool "Enable SPI" @@ -214,4 +212,40 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C3_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SCL_PIN_DEFAULT + int + default 8 if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SDA_PIN_DEFAULT + int + default 41 if RT_USING_SOFT_I2C3 + endmenu diff --git a/bsp/apm32/apm32f103vb-miniboard/.ci/attachconfig/ci.attachconfig.yml b/bsp/apm32/apm32f103vb-miniboard/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..840e3e8093c3 --- /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 6abbc344154c..b18f0da3e78e 100644 --- a/bsp/apm32/apm32f103vb-miniboard/board/Kconfig +++ b/bsp/apm32/apm32f103vb-miniboard/board/Kconfig @@ -69,41 +69,39 @@ menu "On-chip Peripheral Drivers" bool "RTC USING LSI" endchoice endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - comment "Notice: PB6 --> 22; PB7 --> 23" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - comment "Notice: PA0 --> 0; PA1 --> 1" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 0 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 1 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 0 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 1 + endif + endif + menuconfig BSP_USING_SPI bool "Enable SPI" @@ -205,4 +203,28 @@ menu "On-chip Peripheral Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 0 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 1 if RT_USING_SOFT_I2C2 + endmenu diff --git a/bsp/apm32/apm32f103xe-minibroard/.ci/attachconfig/ci.attachconfig.yml b/bsp/apm32/apm32f103xe-minibroard/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..d626be14a578 --- /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 12182a2c48cd..4c5467276d67 100644 --- a/bsp/apm32/apm32f103xe-minibroard/board/Kconfig +++ b/bsp/apm32/apm32f103xe-minibroard/board/Kconfig @@ -80,23 +80,26 @@ menu "On-chip Peripheral Drivers" bool "RTC USING LSI" endchoice endif - - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + endif + menuconfig BSP_USING_SPI bool "Enable SPI" @@ -211,4 +214,16 @@ menu "On-chip Peripheral Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/apm32/apm32f107vc-evalboard/.ci/attachconfig/ci.attachconfig.yml b/bsp/apm32/apm32f107vc-evalboard/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..840e3e8093c3 --- /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 31d7d7113a86..13145613e7a5 100644 --- a/bsp/apm32/apm32f107vc-evalboard/board/Kconfig +++ b/bsp/apm32/apm32f107vc-evalboard/board/Kconfig @@ -24,9 +24,10 @@ menu "Onboard Peripheral Drivers" default n config BSP_USING_EEPROM - bool "Enable I2C EEPROM (i2c1 software simulation)" - select BSP_USING_I2C - select BSP_USING_I2C1 + bool "Enable I2C EEPROM (swi2c1)" + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C1 default n config BSP_USING_ETH @@ -41,6 +42,18 @@ menu "Onboard Peripheral Drivers" depends on BSP_USING_ETH default y + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + endmenu menu "On-chip Peripheral Drivers" @@ -99,41 +112,39 @@ menu "On-chip Peripheral Drivers" bool "RTC USING LSI" endchoice endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - comment "Notice: PB6 --> 22; PB7 --> 23" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - comment "Notice: PA0 --> 0; PA1 --> 1" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 0 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 1 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 0 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 1 + endif + endif + menuconfig BSP_USING_SPI bool "Enable SPI" @@ -242,4 +253,16 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 0 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 1 if RT_USING_SOFT_I2C2 + endmenu diff --git a/bsp/apm32/apm32f407ig-minibroard/.ci/attachconfig/ci.attachconfig.yml b/bsp/apm32/apm32f407ig-minibroard/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..d626be14a578 --- /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 d14dafe814c1..4e6da91758d0 100644 --- a/bsp/apm32/apm32f407ig-minibroard/board/Kconfig +++ b/bsp/apm32/apm32f407ig-minibroard/board/Kconfig @@ -69,23 +69,26 @@ menu "On-chip Peripheral Drivers" bool "RTC USING LSI" endchoice endif - - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + endif + menuconfig BSP_USING_SPI bool "Enable SPI" @@ -214,4 +217,16 @@ menu "On-chip Peripheral Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/apm32/apm32f407zg-evalboard/.ci/attachconfig/ci.attachconfig.yml b/bsp/apm32/apm32f407zg-evalboard/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..840e3e8093c3 --- /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 3d933499a04b..de816807638c 100644 --- a/bsp/apm32/apm32f407zg-evalboard/board/Kconfig +++ b/bsp/apm32/apm32f407zg-evalboard/board/Kconfig @@ -111,41 +111,39 @@ menu "On-chip Peripheral Drivers" bool "RTC USING LSI" endchoice endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - comment "Notice: PB6 --> 22; PB7 --> 23" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - comment "Notice: PA0 --> 0; PA1 --> 1" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 0 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 1 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 0 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 1 + endif + endif + menuconfig BSP_USING_SPI bool "Enable SPI" @@ -292,4 +290,28 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 0 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 1 if RT_USING_SOFT_I2C2 + endmenu diff --git a/bsp/apm32/apm32s103vb-miniboard/.ci/attachconfig/ci.attachconfig.yml b/bsp/apm32/apm32s103vb-miniboard/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..7cd4362ffcea --- /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 af6d754f8ddd..58321e820815 100644 --- a/bsp/apm32/apm32s103vb-miniboard/board/Kconfig +++ b/bsp/apm32/apm32s103vb-miniboard/board/Kconfig @@ -74,54 +74,52 @@ menu "On-chip Peripheral Drivers" bool "RTC USING LSI" endchoice endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - comment "Notice: PB6 --> 22; PB7 --> 23" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - comment "Notice: PA0 --> 0; PA1 --> 1" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 22 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - comment "Notice: PB0 --> 16; PB1 --> 17" - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 63 - default 8 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 63 - default 41 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 22 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C3 + bool "Enable software I2C3 Bus (swi2c3)" + default n + select RT_USING_SOFT_I2C3 + if BSP_USING_SOFT_I2C3 + config RT_SOFT_I2C3_SCL_PIN + int "swi2c3 SCL pin number" + default 8 + config RT_SOFT_I2C3_SDA_PIN + int "swi2c3 SDA pin number" + default 41 + endif + endif + menuconfig BSP_USING_SPI bool "Enable SPI" @@ -210,4 +208,40 @@ menu "On-chip Peripheral Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C3_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SCL_PIN_DEFAULT + int + default 8 if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SDA_PIN_DEFAULT + int + default 41 if RT_USING_SOFT_I2C3 + endmenu diff --git a/bsp/apm32/libraries/Drivers/SConscript b/bsp/apm32/libraries/Drivers/SConscript index a5d05ad81512..03b78577da1c 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 bb488c75b488..000000000000 --- 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 000000000000..f726ac261353 --- /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 b7d8486d2737..af31ed0b239d 100644 --- a/bsp/at32/at32a403a-start/board/Kconfig +++ b/bsp/at32/at32a403a-start/board/Kconfig @@ -237,51 +237,52 @@ menu "On-chip Peripheral Drivers" select BSP_SPI2_TX_USING_DMA default n endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 63 - default 8 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 63 - default 41 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 26 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 27 + endif + + menuconfig BSP_USING_SOFT_I2C3 + bool "Enable software I2C3 Bus (swi2c3)" + default n + select RT_USING_SOFT_I2C3 + if BSP_USING_SOFT_I2C3 + config RT_SOFT_I2C3_SCL_PIN + int "swi2c3 SCL pin number" + default 8 + config RT_SOFT_I2C3_SDA_PIN + int "swi2c3 SDA pin number" + default 41 + endif + endif + menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" @@ -381,4 +382,40 @@ menu "On-chip Peripheral Drivers" endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C3_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SCL_PIN_DEFAULT + int + default 8 if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SDA_PIN_DEFAULT + int + default 41 if RT_USING_SOFT_I2C3 + endmenu diff --git a/bsp/at32/at32a423-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32a423-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..8b33403ed07d --- /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 6da7a57f63e4..4888c433b189 100644 --- a/bsp/at32/at32a423-start/board/Kconfig +++ b/bsp/at32/at32a423-start/board/Kconfig @@ -261,39 +261,39 @@ menu "On-chip Peripheral Drivers" select BSP_SPI3_TX_USING_DMA default n endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 26 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 27 + endif + endif + menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" @@ -380,4 +380,28 @@ menu "On-chip Peripheral Drivers" endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + endmenu diff --git a/bsp/at32/at32f402-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f402-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..f726ac261353 --- /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 58d9aa1a6400..6d0f45296a6d 100644 --- a/bsp/at32/at32f402-start/board/Kconfig +++ b/bsp/at32/at32f402-start/board/Kconfig @@ -260,51 +260,52 @@ menu "On-chip Peripheral Drivers" select BSP_SPI2_TX_USING_DMA default n endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 63 - default 8 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 63 - default 41 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 26 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 27 + endif + + menuconfig BSP_USING_SOFT_I2C3 + bool "Enable software I2C3 Bus (swi2c3)" + default n + select RT_USING_SOFT_I2C3 + if BSP_USING_SOFT_I2C3 + config RT_SOFT_I2C3_SCL_PIN + int "swi2c3 SCL pin number" + default 8 + config RT_SOFT_I2C3_SDA_PIN + int "swi2c3 SDA pin number" + default 41 + endif + endif + menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" @@ -378,4 +379,40 @@ menu "On-chip Peripheral Drivers" endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C3_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SCL_PIN_DEFAULT + int + default 8 if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SDA_PIN_DEFAULT + int + default 41 if RT_USING_SOFT_I2C3 + endmenu diff --git a/bsp/at32/at32f403a-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f403a-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..f726ac261353 --- /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 a12ff97a9709..e3bdd8d8fd09 100644 --- a/bsp/at32/at32f403a-start/board/Kconfig +++ b/bsp/at32/at32f403a-start/board/Kconfig @@ -237,51 +237,52 @@ menu "On-chip Peripheral Drivers" select BSP_SPI2_TX_USING_DMA default n endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 63 - default 8 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 63 - default 41 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 26 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 27 + endif + + menuconfig BSP_USING_SOFT_I2C3 + bool "Enable software I2C3 Bus (swi2c3)" + default n + select RT_USING_SOFT_I2C3 + if BSP_USING_SOFT_I2C3 + config RT_SOFT_I2C3_SCL_PIN + int "swi2c3 SCL pin number" + default 8 + config RT_SOFT_I2C3_SDA_PIN + int "swi2c3 SDA pin number" + default 41 + endif + endif + menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" @@ -381,4 +382,40 @@ menu "On-chip Peripheral Drivers" endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C3_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SCL_PIN_DEFAULT + int + default 8 if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SDA_PIN_DEFAULT + int + default 41 if RT_USING_SOFT_I2C3 + endmenu diff --git a/bsp/at32/at32f405-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f405-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..f726ac261353 --- /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 50f523cd4cf9..7012bd6184b5 100644 --- a/bsp/at32/at32f405-start/board/Kconfig +++ b/bsp/at32/at32f405-start/board/Kconfig @@ -279,51 +279,52 @@ menu "On-chip Peripheral Drivers" select BSP_SPI2_TX_USING_DMA default n endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 63 - default 8 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 63 - default 41 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 26 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 27 + endif + + menuconfig BSP_USING_SOFT_I2C3 + bool "Enable software I2C3 Bus (swi2c3)" + default n + select RT_USING_SOFT_I2C3 + if BSP_USING_SOFT_I2C3 + config RT_SOFT_I2C3_SCL_PIN + int "swi2c3 SCL pin number" + default 8 + config RT_SOFT_I2C3_SDA_PIN + int "swi2c3 SDA pin number" + default 41 + endif + endif + menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" @@ -397,4 +398,40 @@ menu "On-chip Peripheral Drivers" endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C3_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SCL_PIN_DEFAULT + int + default 8 if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SDA_PIN_DEFAULT + int + default 41 if RT_USING_SOFT_I2C3 + endmenu diff --git a/bsp/at32/at32f407-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f407-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..f726ac261353 --- /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 c4c7e6504886..2187761bca5c 100644 --- a/bsp/at32/at32f407-start/board/Kconfig +++ b/bsp/at32/at32f407-start/board/Kconfig @@ -260,51 +260,52 @@ menu "On-chip Peripheral Drivers" select BSP_SPI2_TX_USING_DMA default n endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 63 - default 8 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 63 - default 41 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 26 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 27 + endif + + menuconfig BSP_USING_SOFT_I2C3 + bool "Enable software I2C3 Bus (swi2c3)" + default n + select RT_USING_SOFT_I2C3 + if BSP_USING_SOFT_I2C3 + config RT_SOFT_I2C3_SCL_PIN + int "swi2c3 SCL pin number" + default 8 + config RT_SOFT_I2C3_SDA_PIN + int "swi2c3 SDA pin number" + default 41 + endif + endif + menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" @@ -404,4 +405,40 @@ menu "On-chip Peripheral Drivers" endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C3_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SCL_PIN_DEFAULT + int + default 8 if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SDA_PIN_DEFAULT + int + default 41 if RT_USING_SOFT_I2C3 + endmenu diff --git a/bsp/at32/at32f413-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f413-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..8b33403ed07d --- /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 b809dd5702e1..2da7d6844ef5 100644 --- a/bsp/at32/at32f413-start/board/Kconfig +++ b/bsp/at32/at32f413-start/board/Kconfig @@ -237,39 +237,39 @@ menu "On-chip Peripheral Drivers" select BSP_SPI2_TX_USING_DMA default n endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 26 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 27 + endif + endif + menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" @@ -344,4 +344,28 @@ menu "On-chip Peripheral Drivers" endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + endmenu diff --git a/bsp/at32/at32f415-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f415-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..8b33403ed07d --- /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 fd29cc332e73..37a81975ebb3 100644 --- a/bsp/at32/at32f415-start/board/Kconfig +++ b/bsp/at32/at32f415-start/board/Kconfig @@ -252,39 +252,39 @@ menu "On-chip Peripheral Drivers" select BSP_SPI2_TX_USING_DMA default n endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 26 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 27 + endif + endif + menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" @@ -353,4 +353,28 @@ menu "On-chip Peripheral Drivers" endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + endmenu diff --git a/bsp/at32/at32f421-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f421-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..8b33403ed07d --- /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 e037d8d49930..3b8bbd6ca43c 100644 --- a/bsp/at32/at32f421-start/board/Kconfig +++ b/bsp/at32/at32f421-start/board/Kconfig @@ -181,39 +181,39 @@ menu "On-chip Peripheral Drivers" select BSP_SPI2_TX_USING_DMA default n endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 26 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 27 + endif + endif + menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" @@ -262,4 +262,28 @@ menu "On-chip Peripheral Drivers" endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + endmenu diff --git a/bsp/at32/at32f423-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f423-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..8b33403ed07d --- /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 51da2462ab51..05dafa6bd81f 100644 --- a/bsp/at32/at32f423-start/board/Kconfig +++ b/bsp/at32/at32f423-start/board/Kconfig @@ -261,39 +261,39 @@ menu "On-chip Peripheral Drivers" select BSP_SPI3_TX_USING_DMA default n endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 26 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 27 + endif + endif + menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" @@ -380,4 +380,28 @@ menu "On-chip Peripheral Drivers" endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + endmenu diff --git a/bsp/at32/at32f425-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f425-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..8b33403ed07d --- /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 cc47c5432936..6cac7dfd562d 100644 --- a/bsp/at32/at32f425-start/board/Kconfig +++ b/bsp/at32/at32f425-start/board/Kconfig @@ -261,39 +261,39 @@ menu "On-chip Peripheral Drivers" select BSP_SPI3_TX_USING_DMA default n endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 26 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 27 + endif + endif + menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" @@ -352,4 +352,28 @@ menu "On-chip Peripheral Drivers" endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + endmenu diff --git a/bsp/at32/at32f435-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f435-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..f726ac261353 --- /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 f00c2718f458..b38541d23e01 100644 --- a/bsp/at32/at32f435-start/board/Kconfig +++ b/bsp/at32/at32f435-start/board/Kconfig @@ -286,51 +286,52 @@ menu "On-chip Peripheral Drivers" select BSP_SPI2_TX_USING_DMA default n endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 63 - default 8 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 63 - default 41 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 26 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 27 + endif + + menuconfig BSP_USING_SOFT_I2C3 + bool "Enable software I2C3 Bus (swi2c3)" + default n + select RT_USING_SOFT_I2C3 + if BSP_USING_SOFT_I2C3 + config RT_SOFT_I2C3_SCL_PIN + int "swi2c3 SCL pin number" + default 8 + config RT_SOFT_I2C3_SDA_PIN + int "swi2c3 SDA pin number" + default 41 + endif + endif + menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" @@ -430,4 +431,40 @@ menu "On-chip Peripheral Drivers" endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C3_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SCL_PIN_DEFAULT + int + default 8 if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SDA_PIN_DEFAULT + int + default 41 if RT_USING_SOFT_I2C3 + endmenu diff --git a/bsp/at32/at32f437-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f437-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..f726ac261353 --- /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 da90f3c231e7..3c52f6d8d58f 100644 --- a/bsp/at32/at32f437-start/board/Kconfig +++ b/bsp/at32/at32f437-start/board/Kconfig @@ -309,51 +309,52 @@ menu "On-chip Peripheral Drivers" select BSP_SPI2_TX_USING_DMA default n endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 63 - default 8 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 63 - default 41 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 26 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 27 + endif + + menuconfig BSP_USING_SOFT_I2C3 + bool "Enable software I2C3 Bus (swi2c3)" + default n + select RT_USING_SOFT_I2C3 + if BSP_USING_SOFT_I2C3 + config RT_SOFT_I2C3_SCL_PIN + int "swi2c3 SCL pin number" + default 8 + config RT_SOFT_I2C3_SDA_PIN + int "swi2c3 SDA pin number" + default 41 + endif + endif + menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" @@ -453,4 +454,40 @@ menu "On-chip Peripheral Drivers" endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C3_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SCL_PIN_DEFAULT + int + default 8 if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SDA_PIN_DEFAULT + int + default 41 if RT_USING_SOFT_I2C3 + endmenu diff --git a/bsp/at32/at32f455-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f455-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..f726ac261353 --- /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 c8f39b0b8073..ef4c6e6e5f1f 100644 --- a/bsp/at32/at32f455-start/board/Kconfig +++ b/bsp/at32/at32f455-start/board/Kconfig @@ -272,51 +272,52 @@ menu "On-chip Peripheral Drivers" select BSP_SPI2_TX_USING_DMA default n endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 63 - default 8 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 63 - default 41 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 26 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 27 + endif + + menuconfig BSP_USING_SOFT_I2C3 + bool "Enable software I2C3 Bus (swi2c3)" + default n + select RT_USING_SOFT_I2C3 + if BSP_USING_SOFT_I2C3 + config RT_SOFT_I2C3_SCL_PIN + int "swi2c3 SCL pin number" + default 8 + config RT_SOFT_I2C3_SDA_PIN + int "swi2c3 SDA pin number" + default 41 + endif + endif + menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" @@ -419,4 +420,40 @@ menu "On-chip Peripheral Drivers" endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C3_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SCL_PIN_DEFAULT + int + default 8 if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SDA_PIN_DEFAULT + int + default 41 if RT_USING_SOFT_I2C3 + endmenu diff --git a/bsp/at32/at32f456-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f456-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..f726ac261353 --- /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 b474dba7710c..f4c2d8896b83 100644 --- a/bsp/at32/at32f456-start/board/Kconfig +++ b/bsp/at32/at32f456-start/board/Kconfig @@ -272,51 +272,52 @@ menu "On-chip Peripheral Drivers" select BSP_SPI2_TX_USING_DMA default n endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 63 - default 8 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 63 - default 41 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 26 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 27 + endif + + menuconfig BSP_USING_SOFT_I2C3 + bool "Enable software I2C3 Bus (swi2c3)" + default n + select RT_USING_SOFT_I2C3 + if BSP_USING_SOFT_I2C3 + config RT_SOFT_I2C3_SCL_PIN + int "swi2c3 SCL pin number" + default 8 + config RT_SOFT_I2C3_SDA_PIN + int "swi2c3 SDA pin number" + default 41 + endif + endif + menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" @@ -419,4 +420,40 @@ menu "On-chip Peripheral Drivers" endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C3_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SCL_PIN_DEFAULT + int + default 8 if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SDA_PIN_DEFAULT + int + default 41 if RT_USING_SOFT_I2C3 + endmenu diff --git a/bsp/at32/at32f457-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32f457-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..f726ac261353 --- /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 2fce389a8275..c10686fec4c4 100644 --- a/bsp/at32/at32f457-start/board/Kconfig +++ b/bsp/at32/at32f457-start/board/Kconfig @@ -272,51 +272,52 @@ menu "On-chip Peripheral Drivers" select BSP_SPI2_TX_USING_DMA default n endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS" - if BSP_USING_I2C3 - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 63 - default 8 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 63 - default 41 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 26 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 27 + endif + + menuconfig BSP_USING_SOFT_I2C3 + bool "Enable software I2C3 Bus (swi2c3)" + default n + select RT_USING_SOFT_I2C3 + if BSP_USING_SOFT_I2C3 + config RT_SOFT_I2C3_SCL_PIN + int "swi2c3 SCL pin number" + default 8 + config RT_SOFT_I2C3_SDA_PIN + int "swi2c3 SDA pin number" + default 41 + endif + endif + menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" @@ -419,4 +420,40 @@ menu "On-chip Peripheral Drivers" endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C3_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SCL_PIN_DEFAULT + int + default 8 if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SDA_PIN_DEFAULT + int + default 41 if RT_USING_SOFT_I2C3 + endmenu diff --git a/bsp/at32/at32m412-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32m412-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..8b33403ed07d --- /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 02d3b0c5b4cf..bda898610d72 100644 --- a/bsp/at32/at32m412-start/board/Kconfig +++ b/bsp/at32/at32m412-start/board/Kconfig @@ -181,39 +181,39 @@ menu "On-chip Peripheral Drivers" select BSP_SPI2_TX_USING_DMA default n endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 26 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 27 + endif + endif + menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" @@ -282,4 +282,28 @@ menu "On-chip Peripheral Drivers" endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + endmenu diff --git a/bsp/at32/at32m416-start/.ci/attachconfig/ci.attachconfig.yml b/bsp/at32/at32m416-start/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..8b33403ed07d --- /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 92791fd229fb..097ec6e581a1 100644 --- a/bsp/at32/at32m416-start/board/Kconfig +++ b/bsp/at32/at32m416-start/board/Kconfig @@ -181,39 +181,39 @@ menu "On-chip Peripheral Drivers" select BSP_SPI2_TX_USING_DMA default n endif - - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS" - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 - endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS" - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 63 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 63 - default 27 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 26 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 27 + endif + endif + menuconfig BSP_USING_HARD_I2C bool "Enable I2C BUS (hardware driver)" @@ -282,4 +282,28 @@ menu "On-chip Peripheral Drivers" endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + endmenu diff --git a/bsp/at32/libraries/rt_drivers/SConscript b/bsp/at32/libraries/rt_drivers/SConscript index 090fde5febeb..fa6fa3dec583 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 711d1e66f520..000000000000 --- 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 fecab31b4dfc..000000000000 --- 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 13402ecb14ba..c6e83b1deed0 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 09500e50079b..000000000000 --- 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 6425c453f550..ad649d8785c2 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 a25dc11bb2eb..000000000000 --- 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 000000000000..331b736fa25c --- /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 cb4d873dc418..acfc338cc959 100644 --- a/bsp/avr32/at32uc3a0256/Kconfig +++ b/bsp/avr32/at32uc3a0256/Kconfig @@ -122,23 +122,35 @@ menu "On-chip Peripheral Drivers" endif menuconfig BSP_USING_SOFT_I2C - bool "Enable I2C BUS (software simulation)" + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN + select RT_USING_SOFT_I2C if BSP_USING_SOFT_I2C - config BSP_USING_SOFT_I2C1 - bool "Enable I2C1 Bus (software simulation)" - default n - if BSP_USING_SOFT_I2C1 - config BSP_SOFT_I2C1_SCL_PIN - int "I2C1 SCL pin number (GP)" - default 30 - config BSP_SOFT_I2C1_SDA_PIN - int "I2C1 SDA pin number (GP)" - default 29 - endif + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 30 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 29 + endif endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 30 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 29 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/avr32/at32uc3a0256/board.c b/bsp/avr32/at32uc3a0256/board.c index 64281a3ec6e4..9955c39becf2 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 2ecd23b5d6c8..46ba2b75429b 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 2f7b15969d86..000000000000 --- 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 01d81d728912..000000000000 --- 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 000000000000..0b0d86ca46b7 --- /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 670a59980ccc..1990ad7827cd 100644 --- a/bsp/bluetrum/ab32vg1-ab-prougen/board/Kconfig +++ b/bsp/bluetrum/ab32vg1-ab-prougen/board/Kconfig @@ -86,24 +86,25 @@ menu "On-chip Peripheral Drivers" select RT_USING_DFS_ELMFAT default n - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - comment "Notice: PE3 --> 16; PE2 --> 15" - config BSP_I2C1_SCL_PIN - int "I2C1 scl pin number" - range 1 27 - default 16 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 27 - default 15 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 16 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 15 + endif endif - menuconfig BSP_USING_PWM bool "Enable PWM" default n @@ -243,4 +244,16 @@ menu "On-chip Peripheral Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 16 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 15 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/bluetrum/libraries/hal_drivers/SConscript b/bsp/bluetrum/libraries/hal_drivers/SConscript index 0a6dd7e0cd27..258dc71d590b 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 9d0c383b5d69..000000000000 --- 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 216c3c4c67f4..000000000000 --- 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 000000000000..6d57d803d9d7 --- /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 000000000000..6d57d803d9d7 --- /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 000000000000..6d57d803d9d7 --- /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 c12477ca803e..9103aca2250c 100755 --- a/bsp/bouffalo_lab/libraries/Kconfig +++ b/bsp/bouffalo_lab/libraries/Kconfig @@ -1076,129 +1076,25 @@ menu "General Drivers Configuration" endif endif - if !BSP_USING_HW_I2C - menuconfig BSP_USING_SOFT_I2C1 - bool "Enable I2C1 BUS (software simulation)" - select RT_USING_I2C_BITOPS - select BSP_USING_GPIO - default n - if BSP_USING_SOFT_I2C1 - choice - prompt "I2C1 SCL" - default SOFT_I2C1_SCL_USING_GPIO0 - - config SOFT_I2C1_SCL_USING_GPIO0 - bool "GPIO_0" - config SOFT_I2C1_SCL_USING_GPIO2 - bool "GPIO_2" - config SOFT_I2C1_SCL_USING_GPIO4 - bool "GPIO_4" - config SOFT_I2C1_SCL_USING_GPIO6 - bool "GPIO_6" - config SOFT_I2C1_SCL_USING_GPIO8 - bool "GPIO_8" - config SOFT_I2C1_SCL_USING_GPIO10 - bool "GPIO_10" - config SOFT_I2C1_SCL_USING_GPIO12 - bool "GPIO_12" - config SOFT_I2C1_SCL_USING_GPIO14 - bool "GPIO_14" - config SOFT_I2C1_SCL_USING_GPIO16 - bool "GPIO_16" - config SOFT_I2C1_SCL_USING_GPIO18 - bool "GPIO_18" - config SOFT_I2C1_SCL_USING_GPIO20 - bool "GPIO_20" - config SOFT_I2C1_SCL_USING_GPIO22 - bool "GPIO_22" - config SOFT_I2C1_SCL_USING_GPIO24 - bool "GPIO_8" - config SOFT_I2C1_SCL_USING_GPIO26 - bool "GPIO_26" - config SOFT_I2C1_SCL_USING_GPIO28 - bool "GPIO_28" - config SOFT_I2C1_SCL_USING_GPIO30 - bool "GPIO_30" - config SOFT_I2C1_SCL_USING_GPIO32 - bool "GPIO_32" - config SOFT_I2C1_SCL_USING_GPIO34 - bool "GPIO_34" - config SOFT_I2C1_SDA_USING_GPIO36 - depends on BSP_USING_BL808 - bool "GPIO_36" - config SOFT_I2C1_SDA_USING_GPIO38 - depends on BSP_USING_BL808 - bool "GPIO_38" - config SOFT_I2C1_SDA_USING_GPIO40 - depends on BSP_USING_BL808 - bool "GPIO_40" - config SOFT_I2C1_SDA_USING_GPIO42 - depends on BSP_USING_BL808 - bool "GPIO_42" - config SOFT_I2C1_SDA_USING_GPIO44 - depends on BSP_USING_BL808 - bool "GPIO_44" - endchoice - - choice - prompt "I2C1 SDA" - default SOFT_I2C1_SDA_USING_GPIO1 - - config SOFT_I2C1_SDA_USING_GPIO1 - bool "GPIO_1" - config SOFT_I2C1_SDA_USING_GPIO3 - bool "GPIO_3" - config SOFT_I2C1_SDA_USING_GPIO5 - bool "GPIO_5" - config SOFT_I2C1_SDA_USING_GPIO7 - bool "GPIO_7" - config SOFT_I2C1_SDA_USING_GPIO9 - bool "GPIO_9" - config SOFT_I2C1_SDA_USING_GPIO11 - bool "GPIO_11" - config SOFT_I2C1_SDA_USING_GPIO13 - bool "GPIO_13" - config SOFT_I2C1_SDA_USING_GPIO15 - bool "GPIO_15" - config SOFT_I2C1_SDA_USING_GPIO17 - bool "GPIO_17" - config SOFT_I2C1_SDA_USING_GPIO19 - bool "GPIO_19" - config SOFT_I2C1_SDA_USING_GPIO21 - bool "GPIO_21" - config SOFT_I2C1_SDA_USING_GPIO23 - bool "GPIO_23" - config SOFT_I2C1_SDA_USING_GPIO25 - bool "GPIO_25" - config SOFT_I2C1_SDA_USING_GPIO27 - bool "GPIO_27" - config SOFT_I2C1_SDA_USING_GPIO29 - bool "GPIO_29" - config SOFT_I2C1_SDA_USING_GPIO31 - bool "GPIO_31" - config SOFT_I2C1_SDA_USING_GPIO33 - bool "GPIO_33" - config SOFT_I2C1_SDA_USING_GPIO35 - depends on BSP_USING_BL808 - bool "GPIO_35" - config SOFT_I2C1_SDA_USING_GPIO37 - depends on BSP_USING_BL808 - bool "GPIO_37" - config SOFT_I2C1_SDA_USING_GPIO39 - depends on BSP_USING_BL808 - bool "GPIO_39" - config SOFT_I2C1_SDA_USING_GPIO41 - depends on BSP_USING_BL808 - bool "GPIO_41" - config SOFT_I2C1_SDA_USING_GPIO43 - depends on BSP_USING_BL808 - bool "GPIO_43" - config SOFT_I2C1_SDA_USING_GPIO45 - depends on BSP_USING_BL808 - bool "GPIO_45" - endchoice - endif - endif + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" + default n + select RT_USING_I2C + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 0 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 1 + endif + endif endif menuconfig BSP_USING_SPI @@ -1516,4 +1412,16 @@ menu "General Drivers Configuration" bool "Enable Secure Digital Host Controller(SDH)" default n + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 0 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 1 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/bouffalo_lab/libraries/rt_drivers/SConscript b/bsp/bouffalo_lab/libraries/rt_drivers/SConscript index 39396ad7a710..0e533f1eaebb 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 5a4ad8bb50da..000000000000 --- 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 3275c2c4c67b..000000000000 --- 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 104648aa6987..6d24570dc6f6 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 d0cb78020e93..9cef18979967 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 704e728356a6..985ba83a56ec 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 000000000000..08f15d590b4d --- /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 abd9f94bc6fd..121c7602ce08 100644 --- a/bsp/gd32/risc-v/gd32vf103r-start/board/Kconfig +++ b/bsp/gd32/risc-v/gd32vf103r-start/board/Kconfig @@ -99,23 +99,25 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 25 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 25 + endif endif - menuconfig BSP_USING_ADC bool "Enable ADC" default n @@ -179,5 +181,17 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/gd32/risc-v/gd32vf103v-eval/.ci/attachconfig/ci.attachconfig.yml b/bsp/gd32/risc-v/gd32vf103v-eval/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..08f15d590b4d --- /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 421d2da24fad..ca13680e6627 100644 --- a/bsp/gd32/risc-v/gd32vf103v-eval/board/Kconfig +++ b/bsp/gd32/risc-v/gd32vf103v-eval/board/Kconfig @@ -99,23 +99,25 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 25 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 25 + endif endif - menuconfig BSP_USING_ADC bool "Enable ADC" default n @@ -182,5 +184,17 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/gd32/risc-v/libraries/gd32_drivers/SConscript b/bsp/gd32/risc-v/libraries/gd32_drivers/SConscript index 05e694d9e2a3..4de168c83500 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 b149131c5c79..000000000000 --- 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 af91af4c97bc..000000000000 --- 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 2fcf64d29378..87664e42b0ed 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 74d429bcc133..fd1eced7ad44 100644 --- a/bsp/hc32/ev_hc32f334_lqfp64/board/Kconfig +++ b/bsp/hc32/ev_hc32f334_lqfp64/board/Kconfig @@ -183,24 +183,25 @@ menu "On-chip Peripheral Drivers" default n select RT_USING_I2C - if BSP_USING_I2C - menuconfig BSP_USING_I2C1_SW - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1_SW - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 68 - default 22 # PB6 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 68 - default 23 # PB7 - endif + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" + default n + select RT_USING_I2C + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif endif - if BSP_USING_I2C config BSP_I2C_USING_DMA bool @@ -574,4 +575,16 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/hc32/ev_hc32f448_lqfp80/.ci/attachconfig/ci.attachconfig.yml b/bsp/hc32/ev_hc32f448_lqfp80/.ci/attachconfig/ci.attachconfig.yml index 38498a3c9b48..8ee6e6f61f8e 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 e0f7eb0c5b93..55020011cf80 100644 --- a/bsp/hc32/ev_hc32f448_lqfp80/board/Kconfig +++ b/bsp/hc32/ev_hc32f448_lqfp80/board/Kconfig @@ -232,24 +232,25 @@ menu "On-chip Peripheral Drivers" default n select RT_USING_I2C - if BSP_USING_I2C - menuconfig BSP_USING_I2C1_SW - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1_SW - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 80 - default 10 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 80 - default 9 - endif + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" + default n + select RT_USING_I2C + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 10 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 9 + endif endif - if BSP_USING_I2C config BSP_I2C_USING_DMA bool @@ -694,4 +695,16 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 10 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 9 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/hc32/ev_hc32f460_lqfp100_v2/.ci/attachconfig/ci.attachconfig.yml b/bsp/hc32/ev_hc32f460_lqfp100_v2/.ci/attachconfig/ci.attachconfig.yml index 1412567fb0fd..9e8ef49aa0d8 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 4fa6b3994a9a..87f8bb4bec35 100644 --- a/bsp/hc32/ev_hc32f460_lqfp100_v2/board/Kconfig +++ b/bsp/hc32/ev_hc32f460_lqfp100_v2/board/Kconfig @@ -176,24 +176,25 @@ menu "On-chip Peripheral Drivers" default n select RT_USING_I2C - if BSP_USING_I2C - menuconfig BSP_USING_I2C1_SW - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1_SW - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 100 - default 36 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 100 - default 7 - endif + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" + default n + select RT_USING_I2C + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 36 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 7 + endif endif - if BSP_USING_I2C config BSP_I2C_USING_DMA bool @@ -683,4 +684,16 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 36 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 7 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/hc32/ev_hc32f467_lqfp144/board/Kconfig b/bsp/hc32/ev_hc32f467_lqfp144/board/Kconfig index b20ce601401f..bba3f853e206 100644 --- a/bsp/hc32/ev_hc32f467_lqfp144/board/Kconfig +++ b/bsp/hc32/ev_hc32f467_lqfp144/board/Kconfig @@ -312,22 +312,34 @@ menu "On-chip Peripheral Drivers" if BSP_USING_I2C menuconfig BSP_USING_I2C1_SW - bool "Enable I2C1 BUS (software simulation)" + bool "Enable software I2C1 Bus (swi2c1)" default n - select RT_USING_I2C_BITOPS - select RT_USING_PIN + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 if BSP_USING_I2C1_SW - config BSP_I2C1_SCL_PIN - int "I2C1 scl pin number" + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" range 1 144 default 8 # PA8 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" range 1 144 default 23 # PB7 endif endif + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 8 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + if BSP_USING_I2C config BSP_I2C_USING_DMA bool diff --git a/bsp/hc32/ev_hc32f472_lqfp100/.ci/attachconfig/ci.attachconfig.yml b/bsp/hc32/ev_hc32f472_lqfp100/.ci/attachconfig/ci.attachconfig.yml index a4c0a565b393..d65fad8dd86b 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 965ab1b51b4e..8f3f80125dfa 100644 --- a/bsp/hc32/ev_hc32f472_lqfp100/board/Kconfig +++ b/bsp/hc32/ev_hc32f472_lqfp100/board/Kconfig @@ -232,24 +232,25 @@ menu "On-chip Peripheral Drivers" default n select RT_USING_I2C - if BSP_USING_I2C - menuconfig BSP_USING_I2C1_SW - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1_SW - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 100 - default 10 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 100 - default 9 - endif + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" + default n + select RT_USING_I2C + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 10 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 9 + endif endif - if BSP_USING_I2C config BSP_I2C_USING_DMA bool @@ -784,4 +785,16 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 10 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 9 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/hc32/ev_hc32f4a0_lqfp176/.ci/attachconfig/ci.attachconfig.yml b/bsp/hc32/ev_hc32f4a0_lqfp176/.ci/attachconfig/ci.attachconfig.yml index 9f5f2866382b..57503cc5b4b8 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 a89de950045f..75b786541c83 100644 --- a/bsp/hc32/ev_hc32f4a0_lqfp176/board/Kconfig +++ b/bsp/hc32/ev_hc32f4a0_lqfp176/board/Kconfig @@ -357,24 +357,25 @@ menu "On-chip Peripheral Drivers" default n select RT_USING_I2C - if BSP_USING_I2C - menuconfig BSP_USING_I2C1_SW - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1_SW - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 176 - default 8 # PA8 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 176 - default 23 # PB7 - endif + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" + default n + select RT_USING_I2C + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 8 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif endif - if BSP_USING_I2C config BSP_I2C_USING_DMA bool @@ -1038,4 +1039,16 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 8 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/hc32/ev_hc32f4a2_lqfp176/board/Kconfig b/bsp/hc32/ev_hc32f4a2_lqfp176/board/Kconfig index 450edc974ab1..3fdfe5cc43e7 100644 --- a/bsp/hc32/ev_hc32f4a2_lqfp176/board/Kconfig +++ b/bsp/hc32/ev_hc32f4a2_lqfp176/board/Kconfig @@ -359,22 +359,34 @@ menu "On-chip Peripheral Drivers" if BSP_USING_I2C menuconfig BSP_USING_I2C1_SW - bool "Enable I2C1 BUS (software simulation)" + bool "Enable software I2C1 Bus (swi2c1)" default n - select RT_USING_I2C_BITOPS - select RT_USING_PIN + select RT_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 if BSP_USING_I2C1_SW - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" range 1 176 default 8 # PA8 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" range 1 176 default 23 # PB7 endif endif + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 8 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + if BSP_USING_I2C config BSP_I2C_USING_DMA bool diff --git a/bsp/hc32/ev_hc32f4a8_lqfp176/.ci/attachconfig/ci.attachconfig.yml b/bsp/hc32/ev_hc32f4a8_lqfp176/.ci/attachconfig/ci.attachconfig.yml index 66e9f4c0b4b8..c6818d0ecd3f 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 b54cb3351828..470c4badf49e 100644 --- a/bsp/hc32/ev_hc32f4a8_lqfp176/board/Kconfig +++ b/bsp/hc32/ev_hc32f4a8_lqfp176/board/Kconfig @@ -346,24 +346,25 @@ menu "On-chip Peripheral Drivers" default n select RT_USING_I2C - if BSP_USING_I2C - menuconfig BSP_USING_I2C1_SW - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1_SW - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 176 - default 8 # PA8 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 176 - default 23 # PB7 - endif + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" + default n + select RT_USING_I2C + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 8 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif endif - if BSP_USING_I2C config BSP_I2C_USING_DMA bool @@ -1036,4 +1037,16 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 8 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/hc32/lckfb-hc32f4a0-lqfp100/.ci/attachconfig/ci.attachconfig.yml b/bsp/hc32/lckfb-hc32f4a0-lqfp100/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..bf1a5ff75843 --- /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 b449422c9900..8f040f0445c6 100644 --- a/bsp/hc32/lckfb-hc32f4a0-lqfp100/board/Kconfig +++ b/bsp/hc32/lckfb-hc32f4a0-lqfp100/board/Kconfig @@ -353,24 +353,25 @@ menu "On-chip Peripheral Drivers" default n select RT_USING_I2C - if BSP_USING_I2C - menuconfig BSP_USING_I2C1_SW - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1_SW - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 176 - default 51 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 176 - default 90 - endif + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" + default n + select RT_USING_I2C + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 51 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 90 + endif endif - if BSP_USING_I2C config BSP_I2C_USING_DMA bool @@ -958,4 +959,16 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 51 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 90 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/hc32/libraries/hc32_drivers/SConscript b/bsp/hc32/libraries/hc32_drivers/SConscript index 3edb6bc1c807..9e0ed1a50293 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 1472b36c466f..000000000000 --- a/bsp/hc32/libraries/hc32_drivers/drv_soft_i2c.c +++ /dev/null @@ -1,262 +0,0 @@ -/* - * Copyright (C) 2022-2024, Xiaohua Semiconductor Co., Ltd. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2022-04-28 CDT first version - */ - -/******************************************************************************* - * Include files - ******************************************************************************/ -#include "drv_soft_i2c.h" -#include "board_config.h" - -#if defined(RT_USING_I2C) - -#if defined(BSP_USING_I2C1_SW) || defined(BSP_USING_I2C2_SW) || defined(BSP_USING_I2C3_SW) || \ - defined(BSP_USING_I2C4_SW) || defined(BSP_USING_I2C5_SW) || defined(BSP_USING_I2C6_SW) - -/******************************************************************************* - * Local type definitions ('typedef') - ******************************************************************************/ - -/******************************************************************************* - * Local pre-processor symbols/macros ('#define') - ******************************************************************************/ -//#define DRV_DEBUG -#define LOG_TAG "drv.i2c" -#include - -/******************************************************************************* - * 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 52abc5776421..000000000000 --- a/bsp/hc32/libraries/hc32_drivers/drv_soft_i2c.h +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright (C) 2022-2024, Xiaohua Semiconductor Co., Ltd. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2022-04-28 CDT first version - */ - -#ifndef __DRV_I2C_SOFT_H__ -#define __DRV_I2C_SOFT_H__ - -/******************************************************************************* - * Include files - ******************************************************************************/ -#include - -/* 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 74d279fda2a0..047375d4c4b1 100644 --- a/bsp/hc32/tests/SConscript +++ b/bsp/hc32/tests/SConscript @@ -24,7 +24,7 @@ if GetDepend(['BSP_USING_QSPI']): if GetDepend(['BSP_USING_I2C']): src += ['test_i2c.c'] - if GetDepend(['RT_USING_I2C_BITOPS']): + if GetDepend(['RT_USING_SOFT_I2C1']): src += ['test_soft_i2c.c'] if GetDepend(['BSP_USING_ETH', 'RT_USING_LWIP']): diff --git a/bsp/hc32/tests/test_soft_i2c.c b/bsp/hc32/tests/test_soft_i2c.c index fd2b3b8127c5..2fb87be6f1ff 100644 --- a/bsp/hc32/tests/test_soft_i2c.c +++ b/bsp/hc32/tests/test_soft_i2c.c @@ -25,10 +25,10 @@ #if defined(RT_USING_I2C) -#if defined(BSP_USING_I2C1_SW) +#if defined(RT_USING_SOFT_I2C1) /* using i2c1 control oled12864 */ -#define SW_I2C_NAME "i2c1_sw" +#define SW_I2C_NAME RT_SOFT_I2C1_BUS_NAME #define SSD1306_ADDR (0x78U >> 1) #define SSD1306_MD_CMD (0x00U) #define SSD1306_MD_DATA (0x40U) @@ -336,7 +336,7 @@ rt_uint8_t logo_array[][SYM_BYTE_SIZE] = { MSH_CMD_EXPORT(sw_i2c_sample, soft i2c sample); -#endif /* BSP_USING_I2C1_SW */ +#endif /* RT_USING_SOFT_I2C1 */ #endif/* RT_USING_I2C */ /* diff --git a/bsp/hc32l136/.ci/attachconfig/ci.attachconfig.yml b/bsp/hc32l136/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..bf1a5ff75843 --- /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 641c61c83aa3..09493f6e36ca 100644 --- a/bsp/hc32l136/board/Kconfig +++ b/bsp/hc32l136/board/Kconfig @@ -31,27 +31,41 @@ menu "On-chip Peripheral Drivers" default y endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default y + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" + default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 176 - default 51 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 176 - default 90 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 51 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 90 + endif endif - endmenu menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 51 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 90 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/hc32l136/drivers/SConscript b/bsp/hc32l136/drivers/SConscript index 951195c3d748..0258ca131b8b 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 000000000000..41fd8a8a94ea --- /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 e3e8e27c2faa..ea733fb15b14 100644 --- a/bsp/hk32/hk32f030c8-mini/board/Kconfig +++ b/bsp/hk32/hk32f030c8-mini/board/Kconfig @@ -102,42 +102,38 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 25 - endif - - 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 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 25 + endif + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 26 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 27 + endif + endif menuconfig BSP_USING_ADC bool "Enable ADC" default n @@ -153,4 +149,28 @@ menu "On-chip Peripheral Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + endmenu diff --git a/bsp/hk32/libraries/rt_drivers/SConscript b/bsp/hk32/libraries/rt_drivers/SConscript index c816e2c8fbda..6947366c4ed9 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 6daf5b30a38d..000000000000 --- 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 59864f144752..000000000000 --- 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 000000000000..b05aa7d5b6cb --- /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 78fde3292713..6a0ca4f74f1f 100644 --- a/bsp/ht32/ht32f12366/board/Kconfig +++ b/bsp/ht32/ht32f12366/board/Kconfig @@ -209,70 +209,51 @@ menu "On-chip Peripheral Drivers" default "hw_i2c1" endif - menuconfig BSP_USING_I2C_SW - bool "Enable I2C Bus(software)" - default n - select BSP_USING_GPIO if BSP_USING_I2C_SW - select RT_USING_I2C if BSP_USING_I2C_SW - - if BSP_USING_I2C_SW - config BSP_USING_I2C0_SW - bool "Enable Software I2C0 Bus" - default n - config BSP_USING_I2C0_SW_NAME - depends on BSP_USING_I2C0_SW - string "software i2c0 name" - default "sw_i2c0" - if BSP_USING_I2C0_SW - config BSP_I2C0_SLC_PIN - int "i2c0 slc pin number" - range 0 51 - default 22 - - config BSP_I2C0_SDA_PIN - int "i2c0 sda pin number" - range 0 51 - default 23 - endif - - config BSP_USING_I2C1_SW - bool "Enable Software I2C1 Bus" - default n - config BSP_USING_I2C1_SW_NAME - depends on BSP_USING_I2C1_SW - string "software i2c1 name" - default "sw_i2c1" - if BSP_USING_I2C1_SW - config BSP_I2C1_SLC_PIN - int "i2c1 slc pin number" - range 0 51 - default 24 - - 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 + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" + default n + select RT_USING_I2C + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C0 + bool "Enable software I2C0 Bus (swi2c0)" + default n + select RT_USING_SOFT_I2C0 + if BSP_USING_SOFT_I2C0 + config RT_SOFT_I2C0_SCL_PIN + int "swi2c0 SCL pin number" + default 22 + config RT_SOFT_I2C0_SDA_PIN + int "swi2c0 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 25 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 26 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 27 + endif + endif endif menuconfig BSP_USING_ADC @@ -447,4 +428,40 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C0_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C0 + + config RT_SOFT_I2C0_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C0 + + config RT_SOFT_I2C0_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C0 + + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + endmenu diff --git a/bsp/ht32/ht32f52352/.ci/attachconfig/ci.attachconfig.yml b/bsp/ht32/ht32f52352/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..b05aa7d5b6cb --- /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 8ba20cd72d2b..d8755a6d190a 100644 --- a/bsp/ht32/ht32f52352/board/Kconfig +++ b/bsp/ht32/ht32f52352/board/Kconfig @@ -209,70 +209,51 @@ menu "On-chip Peripheral Drivers" default "hw_i2c1" endif - menuconfig BSP_USING_I2C_SW - bool "Enable I2C Bus(software)" - default n - select BSP_USING_GPIO if BSP_USING_I2C_SW - select RT_USING_I2C if BSP_USING_I2C_SW - - if BSP_USING_I2C_SW - config BSP_USING_I2C0_SW - bool "Enable Software I2C0 Bus" - default n - config BSP_USING_I2C0_SW_NAME - depends on BSP_USING_I2C0_SW - string "software i2c0 name" - default "sw_i2c0" - if BSP_USING_I2C0_SW - config BSP_I2C0_SLC_PIN - int "i2c0 slc pin number" - range 0 51 - default 22 - - config BSP_I2C0_SDA_PIN - int "i2c0 sda pin number" - range 0 51 - default 23 - endif - - config BSP_USING_I2C1_SW - bool "Enable Software I2C1 Bus" - default n - config BSP_USING_I2C1_SW_NAME - depends on BSP_USING_I2C1_SW - string "software i2c1 name" - default "sw_i2c1" - if BSP_USING_I2C1_SW - config BSP_I2C1_SLC_PIN - int "i2c1 slc pin number" - range 0 51 - default 24 - - 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 + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" + default n + select RT_USING_I2C + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C0 + bool "Enable software I2C0 Bus (swi2c0)" + default n + select RT_USING_SOFT_I2C0 + if BSP_USING_SOFT_I2C0 + config RT_SOFT_I2C0_SCL_PIN + int "swi2c0 SCL pin number" + default 22 + config RT_SOFT_I2C0_SDA_PIN + int "swi2c0 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 25 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 26 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 27 + endif + endif endif menuconfig BSP_USING_ADC @@ -446,4 +427,40 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C0_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C0 + + config RT_SOFT_I2C0_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C0 + + config RT_SOFT_I2C0_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C0 + + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + endmenu diff --git a/bsp/ht32/ht32f53252/.ci/attachconfig/ci.attachconfig.yml b/bsp/ht32/ht32f53252/.ci/attachconfig/ci.attachconfig.yml index 817cf4e3d027..cd9ba3032b9b 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 8ba20cd72d2b..d8755a6d190a 100644 --- a/bsp/ht32/ht32f53252/board/Kconfig +++ b/bsp/ht32/ht32f53252/board/Kconfig @@ -209,70 +209,51 @@ menu "On-chip Peripheral Drivers" default "hw_i2c1" endif - menuconfig BSP_USING_I2C_SW - bool "Enable I2C Bus(software)" - default n - select BSP_USING_GPIO if BSP_USING_I2C_SW - select RT_USING_I2C if BSP_USING_I2C_SW - - if BSP_USING_I2C_SW - config BSP_USING_I2C0_SW - bool "Enable Software I2C0 Bus" - default n - config BSP_USING_I2C0_SW_NAME - depends on BSP_USING_I2C0_SW - string "software i2c0 name" - default "sw_i2c0" - if BSP_USING_I2C0_SW - config BSP_I2C0_SLC_PIN - int "i2c0 slc pin number" - range 0 51 - default 22 - - config BSP_I2C0_SDA_PIN - int "i2c0 sda pin number" - range 0 51 - default 23 - endif - - config BSP_USING_I2C1_SW - bool "Enable Software I2C1 Bus" - default n - config BSP_USING_I2C1_SW_NAME - depends on BSP_USING_I2C1_SW - string "software i2c1 name" - default "sw_i2c1" - if BSP_USING_I2C1_SW - config BSP_I2C1_SLC_PIN - int "i2c1 slc pin number" - range 0 51 - default 24 - - 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 + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" + default n + select RT_USING_I2C + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C0 + bool "Enable software I2C0 Bus (swi2c0)" + default n + select RT_USING_SOFT_I2C0 + if BSP_USING_SOFT_I2C0 + config RT_SOFT_I2C0_SCL_PIN + int "swi2c0 SCL pin number" + default 22 + config RT_SOFT_I2C0_SDA_PIN + int "swi2c0 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 25 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 26 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 27 + endif + endif endif menuconfig BSP_USING_ADC @@ -446,4 +427,40 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C0_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C0 + + config RT_SOFT_I2C0_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C0 + + config RT_SOFT_I2C0_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C0 + + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + endmenu diff --git a/bsp/ht32/libraries/ht32_drivers/SConscript b/bsp/ht32/libraries/ht32_drivers/SConscript index 86ba719ad989..1bb5a2d96c67 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 269eaf5eee08..000000000000 --- 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 3ce48ee6ef91..000000000000 --- 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 eb707b757cba..74da3c3dc9f1 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 6904155eb5e0..000000000000 --- 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 cbacdbb0f533..000000000000 --- 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 c25aeacdc8de..3fa0923c9ef1 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 6f22c63a934a..d4dec283af41 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 93b2f1965838..549cfc75e737 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 000000000000..d626be14a578 --- /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 2325be729d2e..98e6ecbd9977 100644 --- a/bsp/n32/n32gxx_lxx/n32g43xcl-stb/board/Kconfig +++ b/bsp/n32/n32gxx_lxx/n32g43xcl-stb/board/Kconfig @@ -64,24 +64,25 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 64 - default 22 - - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 64 - default 23 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif endif - menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC @@ -265,4 +266,16 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/n32/n32gxx_lxx/n32g457qel-stb/.ci/attachconfig/ci.attachconfig.yml b/bsp/n32/n32gxx_lxx/n32g457qel-stb/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..d626be14a578 --- /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 870dfd624029..6fa32090251f 100644 --- a/bsp/n32/n32gxx_lxx/n32g457qel-stb/board/Kconfig +++ b/bsp/n32/n32gxx_lxx/n32g457qel-stb/board/Kconfig @@ -75,23 +75,25 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 111 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 111 - default 23 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif endif - menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC @@ -292,4 +294,16 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/n32/n32gxx_lxx/n32g45xcl-stb/.ci/attachconfig/ci.attachconfig.yml b/bsp/n32/n32gxx_lxx/n32g45xcl-stb/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..d626be14a578 --- /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 86024542c08e..b7638374cfb8 100644 --- a/bsp/n32/n32gxx_lxx/n32g45xcl-stb/board/Kconfig +++ b/bsp/n32/n32gxx_lxx/n32g45xcl-stb/board/Kconfig @@ -72,23 +72,25 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 111 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 111 - default 23 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif endif - menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC @@ -291,4 +293,16 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/n32/n32gxx_lxx/n32g45xml-stb/.ci/attachconfig/ci.attachconfig.yml b/bsp/n32/n32gxx_lxx/n32g45xml-stb/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..d626be14a578 --- /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 f336f3042f96..c25cc4936aee 100644 --- a/bsp/n32/n32gxx_lxx/n32g45xml-stb/board/Kconfig +++ b/bsp/n32/n32gxx_lxx/n32g45xml-stb/board/Kconfig @@ -75,23 +75,25 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 111 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 111 - default 23 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif endif - menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC @@ -292,4 +294,16 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/n32/n32gxx_lxx/n32g45xrl-stb/.ci/attachconfig/ci.attachconfig.yml b/bsp/n32/n32gxx_lxx/n32g45xrl-stb/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..d626be14a578 --- /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 afc8ec9e5c04..41041454727b 100644 --- a/bsp/n32/n32gxx_lxx/n32g45xrl-stb/board/Kconfig +++ b/bsp/n32/n32gxx_lxx/n32g45xrl-stb/board/Kconfig @@ -75,23 +75,25 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 111 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 111 - default 23 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif endif - menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC @@ -292,4 +294,16 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/n32/n32gxx_lxx/n32g45xvl-stb/.ci/attachconfig/ci.attachconfig.yml b/bsp/n32/n32gxx_lxx/n32g45xvl-stb/.ci/attachconfig/ci.attachconfig.yml index d63beb299e2b..f0c2884397b3 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 f71c05030ae2..9ef229eff476 100644 --- a/bsp/n32/n32gxx_lxx/n32g45xvl-stb/board/Kconfig +++ b/bsp/n32/n32gxx_lxx/n32g45xvl-stb/board/Kconfig @@ -405,23 +405,25 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 111 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 111 - default 23 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif endif - menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC @@ -625,4 +627,16 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/n32/n32gxx_lxx/n32g4frml-stb/.ci/attachconfig/ci.attachconfig.yml b/bsp/n32/n32gxx_lxx/n32g4frml-stb/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..d626be14a578 --- /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 961f796db7dc..b4606f9611ad 100644 --- a/bsp/n32/n32gxx_lxx/n32g4frml-stb/board/Kconfig +++ b/bsp/n32/n32gxx_lxx/n32g4frml-stb/board/Kconfig @@ -75,23 +75,25 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 111 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 111 - default 23 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif endif - menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC @@ -290,4 +292,16 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/n32/n32gxx_lxx/n32l40xcl-stb/.ci/attachconfig/ci.attachconfig.yml b/bsp/n32/n32gxx_lxx/n32l40xcl-stb/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..d626be14a578 --- /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 9c7600c3e143..73ecf9119e29 100644 --- a/bsp/n32/n32gxx_lxx/n32l40xcl-stb/board/Kconfig +++ b/bsp/n32/n32gxx_lxx/n32l40xcl-stb/board/Kconfig @@ -64,24 +64,25 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 64 - default 22 - - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 64 - default 23 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif endif - menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC @@ -310,4 +311,16 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/n32/n32gxx_lxx/n32l436-evb/.ci/attachconfig/ci.attachconfig.yml b/bsp/n32/n32gxx_lxx/n32l436-evb/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..d626be14a578 --- /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 6f85182039cf..4899a911addd 100644 --- a/bsp/n32/n32gxx_lxx/n32l436-evb/board/Kconfig +++ b/bsp/n32/n32gxx_lxx/n32l436-evb/board/Kconfig @@ -64,24 +64,25 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 64 - default 22 - - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 64 - default 23 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif endif - menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC @@ -308,4 +309,16 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/n32/n32gxx_lxx/n32l43xml-stb/.ci/attachconfig/ci.attachconfig.yml b/bsp/n32/n32gxx_lxx/n32l43xml-stb/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..d626be14a578 --- /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 d9a04c250902..e80382754af0 100644 --- a/bsp/n32/n32gxx_lxx/n32l43xml-stb/board/Kconfig +++ b/bsp/n32/n32gxx_lxx/n32l43xml-stb/board/Kconfig @@ -64,24 +64,25 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 64 - default 22 - - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 64 - default 23 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif endif - menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC @@ -308,4 +309,16 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/n32/n32gxx_lxx/n32l43xrl-stb/.ci/attachconfig/ci.attachconfig.yml b/bsp/n32/n32gxx_lxx/n32l43xrl-stb/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..d626be14a578 --- /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 b0e0d5efb48d..5e1d88d2d5ce 100644 --- a/bsp/n32/n32gxx_lxx/n32l43xrl-stb/board/Kconfig +++ b/bsp/n32/n32gxx_lxx/n32l43xrl-stb/board/Kconfig @@ -64,24 +64,25 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 64 - default 22 - - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 64 - default 23 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif endif - menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC @@ -308,4 +309,16 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/n32/n32gxx_lxx/n32wb45xl-evb/.ci/attachconfig/ci.attachconfig.yml b/bsp/n32/n32gxx_lxx/n32wb45xl-evb/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..08f15d590b4d --- /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 0de27deaa4d4..2d12a7e2db6f 100644 --- a/bsp/n32/n32gxx_lxx/n32wb45xl-evb/board/Kconfig +++ b/bsp/n32/n32gxx_lxx/n32wb45xl-evb/board/Kconfig @@ -75,23 +75,25 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 79 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 79 - default 25 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 25 + endif endif - menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC @@ -287,4 +289,16 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/n32/n32hxxx/libraries/N32_Drivers/drivers/SConscript b/bsp/n32/n32hxxx/libraries/N32_Drivers/drivers/SConscript index 3dda86ed0cf3..bb9d95e4e325 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 5a0a7b911feb..000000000000 --- 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 2695e5896e1e..000000000000 --- 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 e4646070a994..bafb8dec3cda 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 0ac364d0bf12..25f11e5d9a47 100644 --- a/bsp/n32/n32hxxx/n32h760zil7-stb/board/Kconfig +++ b/bsp/n32/n32hxxx/n32h760zil7-stb/board/Kconfig @@ -81,24 +81,25 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 64 - default 22 - - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 64 - default 23 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif endif - menuconfig BSP_USING_HARD_I2C bool "Enable Hard I2C BUS" default n @@ -162,4 +163,16 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/n32g452xx/Libraries/rt_drivers/SConscript b/bsp/n32g452xx/Libraries/rt_drivers/SConscript index cf9e595798df..80515ad981ab 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 2a5bed303350..000000000000 --- 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 12e84df0880a..000000000000 --- 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 000000000000..44e6ac9692de --- /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 373a7d69e295..9fd5a1cfbe64 100755 --- a/bsp/n32g452xx/n32g452xx-mini-system/board/Kconfig +++ b/bsp/n32g452xx/n32g452xx-mini-system/board/Kconfig @@ -340,23 +340,25 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "I2C1 scl pin number" - range 1 N32G45X_PIN_NUMBERS - default 29 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 N32G45X_PIN_NUMBERS - default 30 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 29 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 30 + endif endif - menuconfig BSP_USING_ADC bool "Enable ADC" default n @@ -394,4 +396,16 @@ menu "On-chip Peripheral Drivers" endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 29 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 30 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/nuvoton/libraries/m031/rtt_port/Kconfig b/bsp/nuvoton/libraries/m031/rtt_port/Kconfig index 6a640a197888..dd5bff39ecbc 100644 --- a/bsp/nuvoton/libraries/m031/rtt_port/Kconfig +++ b/bsp/nuvoton/libraries/m031/rtt_port/Kconfig @@ -580,46 +580,37 @@ config SOC_SERIES_M032 endif menuconfig BSP_USING_SOFT_I2C - bool "Enable SOFT I2C" - + bool "Enable software I2C (swi2c)" + default n + select RT_USING_I2C + select RT_USING_SOFT_I2C if BSP_USING_SOFT_I2C - config BSP_USING_SOFT_I2C0 - bool "Enable SOFT I2C0" - select RT_USING_I2C - select RT_USING_I2C_BITOPS + menuconfig BSP_USING_SOFT_I2C0 + bool "Enable software I2C0 Bus (swi2c0)" default n - + select RT_USING_SOFT_I2C0 if BSP_USING_SOFT_I2C0 - config BSP_SOFT_I2C0_SCL_PIN - hex "Specify the pin index of SCL of SOFT I2C0" - range 0 0x7F - default 0x18 - - config BSP_SOFT_I2C0_SDA_PIN - hex "Specify the pin index of SDA of SOFT I2C0" - range 0 0x7F - default 0x17 + config RT_SOFT_I2C0_SCL_PIN + int "swi2c0 SCL pin number" + default 0x18 + config RT_SOFT_I2C0_SDA_PIN + int "swi2c0 SDA pin number" + default 0x17 endif - config BSP_USING_SOFT_I2C1 - bool "Enable SOFT I2C1" - select RT_USING_I2C - select RT_USING_I2C_BITOPS + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" default n - + select RT_USING_SOFT_I2C1 if BSP_USING_SOFT_I2C1 - config BSP_SOFT_I2C1_SCL_PIN - hex "Specify the pin index of SCL of SOFT I2C1" - range 0 0x7F - default 0x0B - - config BSP_SOFT_I2C1_SDA_PIN - hex "Specify the pin index of SDA of SOFT I2C1" - range 0 0x7F - default 0x0A + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 0x0B + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 0x0A endif endif - config BSP_USING_WDT bool "Enable Watchdog Timer(WDT)" select RT_USING_WDT @@ -631,5 +622,30 @@ config SOC_SERIES_M032 config BSP_USING_USBD bool "Enable Full-Speed USB Device Controller(USBD)" + + select RT_USING_USB_DEVICE + config RT_SOFT_I2C0_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C0 + + config RT_SOFT_I2C0_SCL_PIN_DEFAULT + int + default 0x18 if RT_USING_SOFT_I2C0 + + config RT_SOFT_I2C0_SDA_PIN_DEFAULT + int + default 0x17 if RT_USING_SOFT_I2C0 + + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 0x0B if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 0x0A if RT_USING_SOFT_I2C1 diff --git a/bsp/nuvoton/libraries/m031/rtt_port/drv_softi2c.c b/bsp/nuvoton/libraries/m031/rtt_port/drv_softi2c.c deleted file mode 100644 index bd4f6af0fa7f..000000000000 --- 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 67632a475443..b5880549712f 100644 --- a/bsp/nuvoton/libraries/m2354/rtt_port/Kconfig +++ b/bsp/nuvoton/libraries/m2354/rtt_port/Kconfig @@ -876,46 +876,37 @@ config SOC_SERIES_M2354 menuconfig BSP_USING_SOFT_I2C - bool "Enable SOFT I2C" - + bool "Enable software I2C (swi2c)" + default n + select RT_USING_I2C + select RT_USING_SOFT_I2C if BSP_USING_SOFT_I2C - config BSP_USING_SOFT_I2C0 - bool "Enable SOFT I2C0" - select RT_USING_I2C - select RT_USING_I2C_BITOPS + menuconfig BSP_USING_SOFT_I2C0 + bool "Enable software I2C0 Bus (swi2c0)" default n - + select RT_USING_SOFT_I2C0 if BSP_USING_SOFT_I2C0 - config BSP_SOFT_I2C0_SCL_PIN - hex "Specify the pin index of SCL of SOFT I2C0" - range 0 0x7F - default 0x18 - - config BSP_SOFT_I2C0_SDA_PIN - hex "Specify the pin index of SDA of SOFT I2C0" - range 0 0x7F - default 0x17 + config RT_SOFT_I2C0_SCL_PIN + int "swi2c0 SCL pin number" + default 0x18 + config RT_SOFT_I2C0_SDA_PIN + int "swi2c0 SDA pin number" + default 0x17 endif - config BSP_USING_SOFT_I2C1 - bool "Enable SOFT I2C1" - select RT_USING_I2C - select RT_USING_I2C_BITOPS + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" default n - + select RT_USING_SOFT_I2C1 if BSP_USING_SOFT_I2C1 - config BSP_SOFT_I2C1_SCL_PIN - hex "Specify the pin index of SCL of SOFT I2C1" - range 0 0x7F - default 0x0B - - config BSP_SOFT_I2C1_SDA_PIN - hex "Specify the pin index of SDA of SOFT I2C1" - range 0 0x7F - default 0x0A + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 0x0B + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 0x0A endif endif - config BSP_USING_WDT bool "Enable Watchdog Timer(WDT)" select RT_USING_WDT @@ -948,4 +939,30 @@ config SOC_SERIES_M2354 config BSP_USING_OTG bool "Enable Full-Speed USB On-The-Go(OTG)" select BSP_USING_USBH + + select BSP_USING_USBD + + config RT_SOFT_I2C0_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C0 + + config RT_SOFT_I2C0_SCL_PIN_DEFAULT + int + default 0x18 if RT_USING_SOFT_I2C0 + + config RT_SOFT_I2C0_SDA_PIN_DEFAULT + int + default 0x17 if RT_USING_SOFT_I2C0 + + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 0x0B if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 0x0A if RT_USING_SOFT_I2C1 diff --git a/bsp/nuvoton/libraries/m2354/rtt_port/drv_softi2c.c b/bsp/nuvoton/libraries/m2354/rtt_port/drv_softi2c.c deleted file mode 100644 index 0d2039a56350..000000000000 --- 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 e4a2ec8b7d06..6b3e91915a6b 100644 --- a/bsp/nuvoton/libraries/m460/rtt_port/Kconfig +++ b/bsp/nuvoton/libraries/m460/rtt_port/Kconfig @@ -1054,46 +1054,37 @@ config SOC_SERIES_M460 menuconfig BSP_USING_SOFT_I2C - bool "Enable SOFT I2C" - + bool "Enable software I2C (swi2c)" + default n + select RT_USING_I2C + select RT_USING_SOFT_I2C if BSP_USING_SOFT_I2C - config BSP_USING_SOFT_I2C0 - bool "Enable SOFT I2C0" - select RT_USING_I2C - select RT_USING_I2C_BITOPS + menuconfig BSP_USING_SOFT_I2C0 + bool "Enable software I2C0 Bus (swi2c0)" default n - + select RT_USING_SOFT_I2C0 if BSP_USING_SOFT_I2C0 - config BSP_SOFT_I2C0_SCL_PIN - hex "Specify the pin index of SCL of SOFT I2C0" - range 0 0x7F - default 0x18 - - config BSP_SOFT_I2C0_SDA_PIN - hex "Specify the pin index of SDA of SOFT I2C0" - range 0 0x7F - default 0x17 + config RT_SOFT_I2C0_SCL_PIN + int "swi2c0 SCL pin number" + default 0x18 + config RT_SOFT_I2C0_SDA_PIN + int "swi2c0 SDA pin number" + default 0x17 endif - config BSP_USING_SOFT_I2C1 - bool "Enable SOFT I2C1" - select RT_USING_I2C - select RT_USING_I2C_BITOPS + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" default n - + select RT_USING_SOFT_I2C1 if BSP_USING_SOFT_I2C1 - config BSP_SOFT_I2C1_SCL_PIN - hex "Specify the pin index of SCL of SOFT I2C1" - range 0 0x7F - default 0x0B - - config BSP_SOFT_I2C1_SDA_PIN - hex "Specify the pin index of SDA of SOFT I2C1" - range 0 0x7F - default 0x0A + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 0x0B + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 0x0A endif endif - config BSP_USING_WDT bool "Enable Watchdog Timer(WDT)" select RT_USING_WDT @@ -1135,4 +1126,30 @@ config SOC_SERIES_M460 config BSP_USING_HSOTG bool "Enable High-Speed USB On-The-Go(HSOTG)" select BSP_USING_HSUSBH + + select BSP_USING_HSUSBD + + config RT_SOFT_I2C0_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C0 + + config RT_SOFT_I2C0_SCL_PIN_DEFAULT + int + default 0x18 if RT_USING_SOFT_I2C0 + + config RT_SOFT_I2C0_SDA_PIN_DEFAULT + int + default 0x17 if RT_USING_SOFT_I2C0 + + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 0x0B if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 0x0A if RT_USING_SOFT_I2C1 diff --git a/bsp/nuvoton/libraries/m460/rtt_port/drv_softi2c.c b/bsp/nuvoton/libraries/m460/rtt_port/drv_softi2c.c deleted file mode 100644 index 196737f7b460..000000000000 --- 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 87a82cf98b5c..4acc0f7bb705 100644 --- a/bsp/nuvoton/libraries/m480/rtt_port/Kconfig +++ b/bsp/nuvoton/libraries/m480/rtt_port/Kconfig @@ -864,46 +864,37 @@ config SOC_SERIES_M480 menuconfig BSP_USING_SOFT_I2C - bool "Enable SOFT I2C" - + bool "Enable software I2C (swi2c)" + default n + select RT_USING_I2C + select RT_USING_SOFT_I2C if BSP_USING_SOFT_I2C - config BSP_USING_SOFT_I2C0 - bool "Enable SOFT I2C0" - select RT_USING_I2C - select RT_USING_I2C_BITOPS + menuconfig BSP_USING_SOFT_I2C0 + bool "Enable software I2C0 Bus (swi2c0)" default n - + select RT_USING_SOFT_I2C0 if BSP_USING_SOFT_I2C0 - config BSP_SOFT_I2C0_SCL_PIN - hex "Specify the pin index of SCL of SOFT I2C0" - range 0 0x7F - default 0x18 - - config BSP_SOFT_I2C0_SDA_PIN - hex "Specify the pin index of SDA of SOFT I2C0" - range 0 0x7F - default 0x17 + config RT_SOFT_I2C0_SCL_PIN + int "swi2c0 SCL pin number" + default 0x18 + config RT_SOFT_I2C0_SDA_PIN + int "swi2c0 SDA pin number" + default 0x17 endif - config BSP_USING_SOFT_I2C1 - bool "Enable SOFT I2C1" - select RT_USING_I2C - select RT_USING_I2C_BITOPS + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" default n - + select RT_USING_SOFT_I2C1 if BSP_USING_SOFT_I2C1 - config BSP_SOFT_I2C1_SCL_PIN - hex "Specify the pin index of SCL of SOFT I2C1" - range 0 0x7F - default 0x0B - - config BSP_SOFT_I2C1_SDA_PIN - hex "Specify the pin index of SDA of SOFT I2C1" - range 0 0x7F - default 0x0A + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 0x0B + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 0x0A endif endif - config BSP_USING_WDT bool "Enable Watchdog Timer(WDT)" select RT_USING_WDT @@ -941,4 +932,30 @@ config SOC_SERIES_M480 config BSP_USING_HSOTG bool "Enable High-Speed USB On-The-Go(HSOTG)" select BSP_USING_HSUSBH + + select BSP_USING_HSUSBD + + config RT_SOFT_I2C0_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C0 + + config RT_SOFT_I2C0_SCL_PIN_DEFAULT + int + default 0x18 if RT_USING_SOFT_I2C0 + + config RT_SOFT_I2C0_SDA_PIN_DEFAULT + int + default 0x17 if RT_USING_SOFT_I2C0 + + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 0x0B if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 0x0A if RT_USING_SOFT_I2C1 diff --git a/bsp/nuvoton/libraries/m480/rtt_port/drv_softi2c.c b/bsp/nuvoton/libraries/m480/rtt_port/drv_softi2c.c deleted file mode 100644 index 54208fbd617e..000000000000 --- 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 ef43e5c16dcf..ebfdd1176855 100644 --- a/bsp/nuvoton/libraries/ma35/rtt_port/Kconfig +++ b/bsp/nuvoton/libraries/ma35/rtt_port/Kconfig @@ -1022,46 +1022,37 @@ endif menuconfig BSP_USING_SOFT_I2C - bool "Enable SOFT I2C" - + bool "Enable software I2C (swi2c)" + default n + select RT_USING_I2C + select RT_USING_SOFT_I2C if BSP_USING_SOFT_I2C - config BSP_USING_SOFT_I2C0 - bool "Enable SOFT I2C0" - select RT_USING_I2C - select RT_USING_I2C_BITOPS + menuconfig BSP_USING_SOFT_I2C0 + bool "Enable software I2C0 Bus (swi2c0)" default n - + select RT_USING_SOFT_I2C0 if BSP_USING_SOFT_I2C0 - config BSP_SOFT_I2C0_SCL_PIN - hex "Specify the pin index of SCL of SOFT I2C0" - range 0 0xDF - default 0x19 - - config BSP_SOFT_I2C0_SDA_PIN - hex "Specify the pin index of SDA of SOFT I2C0" - range 0 0xDF - default 0x18 + config RT_SOFT_I2C0_SCL_PIN + int "swi2c0 SCL pin number" + default 0x19 + config RT_SOFT_I2C0_SDA_PIN + int "swi2c0 SDA pin number" + default 0x18 endif - config BSP_USING_SOFT_I2C1 - bool "Enable SOFT I2C1" - select RT_USING_I2C - select RT_USING_I2C_BITOPS + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" default n - + select RT_USING_SOFT_I2C1 if BSP_USING_SOFT_I2C1 - config BSP_SOFT_I2C1_SCL_PIN - hex "Specify the pin index of SCL of SOFT I2C1" - range 0 0xDF - default 0x0B - - config BSP_SOFT_I2C1_SDA_PIN - hex "Specify the pin index of SDA of SOFT I2C1" - range 0 0xDF - default 0x0A + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 0x0B + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 0x0A endif endif - config BSP_USING_DISP bool "Enable Display" depends on !USE_MA35D1_SUBM @@ -1182,4 +1173,30 @@ config BSP_USING_HSUSBH1 bool "Enable HSUSBH1" default y + + endif + + config RT_SOFT_I2C0_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C0 + + config RT_SOFT_I2C0_SCL_PIN_DEFAULT + int + default 0x19 if RT_USING_SOFT_I2C0 + + config RT_SOFT_I2C0_SDA_PIN_DEFAULT + int + default 0x18 if RT_USING_SOFT_I2C0 + + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 0x0B if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 0x0A if RT_USING_SOFT_I2C1 diff --git a/bsp/nuvoton/libraries/ma35/rtt_port/drv_softi2c.c b/bsp/nuvoton/libraries/ma35/rtt_port/drv_softi2c.c deleted file mode 100644 index 69462bfa39f1..000000000000 --- 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 1f8df1448aef..75166d50246e 100644 --- a/bsp/nuvoton/libraries/n9h30/rtt_port/Kconfig +++ b/bsp/nuvoton/libraries/n9h30/rtt_port/Kconfig @@ -414,46 +414,37 @@ config SOC_SERIES_N9H30 endif menuconfig BSP_USING_SOFT_I2C - bool "Enable SOFT I2C" - + bool "Enable software I2C (swi2c)" + default n + select RT_USING_I2C + select RT_USING_SOFT_I2C if BSP_USING_SOFT_I2C - config BSP_USING_SOFT_I2C0 - bool "Enable SOFT I2C0" - select RT_USING_I2C - select RT_USING_I2C_BITOPS + menuconfig BSP_USING_SOFT_I2C0 + bool "Enable software I2C0 Bus (swi2c0)" default n - + select RT_USING_SOFT_I2C0 if BSP_USING_SOFT_I2C0 - config BSP_SOFT_I2C0_SCL_PIN - hex "Specify the pin index of SCL of SOFT I2C0" - range 0 0x7F - default 0x18 - - config BSP_SOFT_I2C0_SDA_PIN - hex "Specify the pin index of SDA of SOFT I2C0" - range 0 0x7F - default 0x17 + config RT_SOFT_I2C0_SCL_PIN + int "swi2c0 SCL pin number" + default 0x18 + config RT_SOFT_I2C0_SDA_PIN + int "swi2c0 SDA pin number" + default 0x17 endif - config BSP_USING_SOFT_I2C1 - bool "Enable SOFT I2C1" - select RT_USING_I2C - select RT_USING_I2C_BITOPS + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" default n - + select RT_USING_SOFT_I2C1 if BSP_USING_SOFT_I2C1 - config BSP_SOFT_I2C1_SCL_PIN - hex "Specify the pin index of SCL of SOFT I2C1" - range 0 0x7F - default 0x0B - - config BSP_SOFT_I2C1_SDA_PIN - hex "Specify the pin index of SDA of SOFT I2C1" - range 0 0x7F - default 0x0A + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 0x0B + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 0x0A endif endif - config BSP_USING_WDT bool "Enable Watchdog Timer(WDT)" select RT_USING_WDT @@ -533,4 +524,30 @@ config SOC_SERIES_N9H30 config BSP_USING_USBH bool "Enable USB Host Controller(USBH)" select RT_USING_USB_HOST + + select RT_USBH_MSTORAGE + + config RT_SOFT_I2C0_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C0 + + config RT_SOFT_I2C0_SCL_PIN_DEFAULT + int + default 0x18 if RT_USING_SOFT_I2C0 + + config RT_SOFT_I2C0_SDA_PIN_DEFAULT + int + default 0x17 if RT_USING_SOFT_I2C0 + + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 0x0B if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 0x0A if RT_USING_SOFT_I2C1 diff --git a/bsp/nuvoton/libraries/n9h30/rtt_port/drv_softi2c.c b/bsp/nuvoton/libraries/n9h30/rtt_port/drv_softi2c.c deleted file mode 100644 index 8defbe38ebbc..000000000000 --- 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 af7e441fced8..0f45065f1cd7 100644 --- a/bsp/nuvoton/libraries/nuc980/rtt_port/Kconfig +++ b/bsp/nuvoton/libraries/nuc980/rtt_port/Kconfig @@ -543,46 +543,37 @@ config SOC_SERIES_NUC980 endif menuconfig BSP_USING_SOFT_I2C - bool "Enable SOFT I2C" - + bool "Enable software I2C (swi2c)" + default n + select RT_USING_I2C + select RT_USING_SOFT_I2C if BSP_USING_SOFT_I2C - config BSP_USING_SOFT_I2C0 - bool "Enable SOFT I2C0" - select RT_USING_I2C - select RT_USING_I2C_BITOPS + menuconfig BSP_USING_SOFT_I2C0 + bool "Enable software I2C0 Bus (swi2c0)" default n - + select RT_USING_SOFT_I2C0 if BSP_USING_SOFT_I2C0 - config BSP_SOFT_I2C0_SCL_PIN - hex "Specify the pin index of SCL of SOFT I2C0" - range 0 0x7F - default 0x18 - - config BSP_SOFT_I2C0_SDA_PIN - hex "Specify the pin index of SDA of SOFT I2C0" - range 0 0x7F - default 0x17 + config RT_SOFT_I2C0_SCL_PIN + int "swi2c0 SCL pin number" + default 0x18 + config RT_SOFT_I2C0_SDA_PIN + int "swi2c0 SDA pin number" + default 0x17 endif - config BSP_USING_SOFT_I2C1 - bool "Enable SOFT I2C1" - select RT_USING_I2C - select RT_USING_I2C_BITOPS + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" default n - + select RT_USING_SOFT_I2C1 if BSP_USING_SOFT_I2C1 - config BSP_SOFT_I2C1_SCL_PIN - hex "Specify the pin index of SCL of SOFT I2C1" - range 0 0x7F - default 0x0B - - config BSP_SOFT_I2C1_SDA_PIN - hex "Specify the pin index of SDA of SOFT I2C1" - range 0 0x7F - default 0x0A + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 0x0B + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 0x0A endif endif - config BSP_USING_WDT bool "Enable Watchdog Timer(WDT)" select RT_USING_WDT @@ -599,4 +590,30 @@ config SOC_SERIES_NUC980 config BSP_USING_USBH bool "Enable USB Host Controller(USBH)" select RT_USING_USB_HOST + + select RT_USBH_MSTORAGE + + config RT_SOFT_I2C0_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C0 + + config RT_SOFT_I2C0_SCL_PIN_DEFAULT + int + default 0x18 if RT_USING_SOFT_I2C0 + + config RT_SOFT_I2C0_SDA_PIN_DEFAULT + int + default 0x17 if RT_USING_SOFT_I2C0 + + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 0x0B if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 0x0A if RT_USING_SOFT_I2C1 diff --git a/bsp/nuvoton/libraries/nuc980/rtt_port/drv_softi2c.c b/bsp/nuvoton/libraries/nuc980/rtt_port/drv_softi2c.c deleted file mode 100644 index adc62cb4c181..000000000000 --- 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 000000000000..e7d053497b3b --- /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 000000000000..f5ba058f8e16 --- /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 000000000000..f5ba058f8e16 --- /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 000000000000..f5ba058f8e16 --- /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 000000000000..e7d053497b3b --- /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 000000000000..f5ba058f8e16 --- /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 000000000000..f5ba058f8e16 --- /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 000000000000..e7d053497b3b --- /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 000000000000..f5ba058f8e16 --- /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 000000000000..f5ba058f8e16 --- /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 000000000000..f5ba058f8e16 --- /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 000000000000..f5ba058f8e16 --- /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 9ac4704b462d..e1d470b022fb 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 772d3452bb46..a921d8d8498f 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 9de56d4ffbfb..000000000000 --- 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 41fd652490ea..000000000000 --- 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 000000000000..1e501cb75b1e --- /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 10269eb496bf..e76b37862f91 100644 --- a/bsp/nxp/lpc/lpc55sxx/lpc55s69_nxp_evk/board/Kconfig +++ b/bsp/nxp/lpc/lpc55sxx/lpc55s69_nxp_evk/board/Kconfig @@ -118,42 +118,37 @@ menu "On-chip Peripheral Drivers" endif menuconfig BSP_USING_SOFT_I2C - bool "Enable software I2C bus" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN + bool "Enable software I2C (swi2c)" default n - + select RT_USING_I2C + select RT_USING_SOFT_I2C if BSP_USING_SOFT_I2C - config BSP_USING_SOFT_I2C1 - bool "Enable I2C1 Bus (software simulation)" - default n - if BSP_USING_SOFT_I2C1 - comment "Notice: num = 32 * PORTx + PINx + 1" - comment "0_15 --> 16; 1_8 --> 41" - config BSP_SOFT_I2C1_SCL_PIN - int "si2c1 SCL pin number" - default 16 - config BSP_SOFT_I2C1_SDA_PIN - int "si2c1 SDA pin number" - default 41 - endif + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 16 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 41 + endif - config BSP_USING_SOFT_I2C2 - bool "Enable I2C2 Bus (software simulation)" - default n - if BSP_USING_SOFT_I2C2 - comment "Notice: num = 32 * PORTx + PINx + 1" - comment "0_18 --> 19; 1_10 --> 43" - config BSP_SOFT_I2C2_SCL_PIN - int "si2c2 SCL pin number" - default 19 - config BSP_SOFT_I2C2_SDA_PIN - int "si2c2 SDA pin number" - default 43 - endif + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 19 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 43 + endif endif - menuconfig BSP_USING_SPI config BSP_USING_SPI bool "Enable SPI" @@ -411,4 +406,28 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 16 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 41 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 19 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 43 if RT_USING_SOFT_I2C2 + endmenu diff --git a/bsp/nxp/mcx/mcxc/Libraries/drivers/SConscript b/bsp/nxp/mcx/mcxc/Libraries/drivers/SConscript index 56456e2fec7c..34b64cb75dca 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 1dee3db35605..d5144b227d2e 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 5190ee4a5940..000000000000 --- 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 000000000000..e74cbea5fda5 --- /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 95d456e62564..5d09780f2b44 100644 --- a/bsp/nxp/mcx/mcxn/frdm-mcxn236/board/Kconfig +++ b/bsp/nxp/mcx/mcxn/frdm-mcxn236/board/Kconfig @@ -66,28 +66,25 @@ menu "On-chip Peripheral Drivers" default y endif - menuconfig BSP_USING_SW_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_SW_I2C - config BSP_USING_SW_I2C0 - bool "Enable soft I2C0" - default y - if BSP_USING_SW_I2C0 - config BSP_SW_I2C0_SCL_PIN - int "SWI2C0 scl pin number" - range 0 159 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C0 + bool "Enable software I2C0 Bus (swi2c0)" + default n + select RT_USING_SOFT_I2C0 + if BSP_USING_SOFT_I2C0 + config RT_SOFT_I2C0_SCL_PIN + int "swi2c0 SCL pin number" default 129 - config BSP_SW_I2C0_SDA_PIN - int "SWI2C0 sda pin number" - range 0 159 + config RT_SOFT_I2C0_SDA_PIN + int "swi2c0 SDA pin number" default 128 - endif + endif endif - menuconfig BSP_USING_SPI config BSP_USING_SPI bool "Enable SPI" @@ -237,4 +234,16 @@ menu "Board extended module Drivers" endif endmenu + config RT_SOFT_I2C0_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C0 + + config RT_SOFT_I2C0_SCL_PIN_DEFAULT + int + default 129 if RT_USING_SOFT_I2C0 + + config RT_SOFT_I2C0_SDA_PIN_DEFAULT + int + default 128 if RT_USING_SOFT_I2C0 + endmenu diff --git a/bsp/raspberry-pico/RP2040/.ci/attachconfig/ci.attachconfig.yml b/bsp/raspberry-pico/RP2040/.ci/attachconfig/ci.attachconfig.yml index e1aa367595c5..89aed8b01464 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 b1b70a9a389e..9df9bf3e2ac6 100644 --- a/bsp/raspberry-pico/RP2040/board/Kconfig +++ b/bsp/raspberry-pico/RP2040/board/Kconfig @@ -129,27 +129,24 @@ menu "On-chip Peripheral Drivers" endif menuconfig BSP_USING_SOFT_I2C - bool "Enable I2C BUS (software simulation)" + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN + select RT_USING_SOFT_I2C if BSP_USING_SOFT_I2C - config BSP_USING_SOFT_I2C1 - bool "Enable I2C1 Bus (software simulation)" - default n - if BSP_USING_SOFT_I2C1 - config BSP_SOFT_I2C1_SCL_PIN - int "i2c1 scl pin number (GP)" - range 0 28 - default 2 - config BSP_SOFT_I2C1_SDA_PIN - int "I2C1 sda pin number (GP)" - range 0 28 - default 3 - endif + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 2 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 3 + endif endif - menuconfig BSP_USING_SOFT_SPI bool "Enable soft SPI BUS" default n @@ -684,7 +681,6 @@ menu "On-chip Peripheral Drivers" menuconfig BSP_USING_I2C bool "Enable I2C" select RT_USING_I2C - select RT_USING_I2C_BITOPS select RT_USING_PIN default n @@ -810,4 +806,16 @@ menu "On-chip Peripheral Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 2 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 3 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/raspberry-pico/RP2350/.ci/attachconfig/ci.attachconfig.yml b/bsp/raspberry-pico/RP2350/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..429887233203 --- /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 b1b70a9a389e..9df9bf3e2ac6 100644 --- a/bsp/raspberry-pico/RP2350/board/Kconfig +++ b/bsp/raspberry-pico/RP2350/board/Kconfig @@ -129,27 +129,24 @@ menu "On-chip Peripheral Drivers" endif menuconfig BSP_USING_SOFT_I2C - bool "Enable I2C BUS (software simulation)" + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN + select RT_USING_SOFT_I2C if BSP_USING_SOFT_I2C - config BSP_USING_SOFT_I2C1 - bool "Enable I2C1 Bus (software simulation)" - default n - if BSP_USING_SOFT_I2C1 - config BSP_SOFT_I2C1_SCL_PIN - int "i2c1 scl pin number (GP)" - range 0 28 - default 2 - config BSP_SOFT_I2C1_SDA_PIN - int "I2C1 sda pin number (GP)" - range 0 28 - default 3 - endif + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 2 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 3 + endif endif - menuconfig BSP_USING_SOFT_SPI bool "Enable soft SPI BUS" default n @@ -684,7 +681,6 @@ menu "On-chip Peripheral Drivers" menuconfig BSP_USING_I2C bool "Enable I2C" select RT_USING_I2C - select RT_USING_I2C_BITOPS select RT_USING_PIN default n @@ -810,4 +806,16 @@ menu "On-chip Peripheral Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 2 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 3 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/raspberry-pico/libraries/Drivers/SConscript b/bsp/raspberry-pico/libraries/Drivers/SConscript index 5afbe70b28de..20d95d2b149e 100644 --- a/bsp/raspberry-pico/libraries/Drivers/SConscript +++ b/bsp/raspberry-pico/libraries/Drivers/SConscript @@ -10,9 +10,6 @@ if GetDepend('BSP_USING_PIN'): if GetDepend('BSP_USING_UART'): src += ['drv_uart.c'] -if GetDepend('BSP_USING_SOFT_I2C'): - src += ['drv_soft_i2c.c'] - if GetDepend('BSP_USING_SOFT_SPI'): src += ['drv_soft_spi.c'] diff --git a/bsp/raspberry-pico/libraries/Drivers/drv_soft_i2c.c b/bsp/raspberry-pico/libraries/Drivers/drv_soft_i2c.c deleted file mode 100644 index bbda17c61c53..000000000000 --- a/bsp/raspberry-pico/libraries/Drivers/drv_soft_i2c.c +++ /dev/null @@ -1,189 +0,0 @@ -/* - * Copyright (c) 2006-2023, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2023/06/01 chushicheng first version - */ -#include "drv_soft_i2c.h" - -#ifdef BSP_USING_SOFT_I2C -#define DBG_LEVEL DBG_LOG -#include -#define LOG_TAG "DRV.I2C" - -static const struct pico_soft_i2c_config soft_i2c_config[] = -{ -#ifdef BSP_USING_SOFT_I2C1 - I2C1_BUS_CONFIG, -#endif -}; - -static struct pico_i2c i2c_obj[sizeof(soft_i2c_config) / sizeof(soft_i2c_config[0])]; - -/** - * This function initializes the i2c pin. - * - * @param pico i2c dirver class. - */ -static void pico_i2c_gpio_init(struct pico_i2c *i2c) -{ - struct pico_soft_i2c_config* cfg = (struct pico_soft_i2c_config*)i2c->ops.data; - - rt_pin_mode(cfg->scl, PIN_MODE_OUTPUT_OD); - rt_pin_mode(cfg->sda, PIN_MODE_OUTPUT_OD); - rt_pin_write(cfg->scl, PIN_HIGH); - rt_pin_write(cfg->sda, PIN_HIGH); -} - -static void pico_i2c_pin_init(void) -{ - rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct pico_i2c); - - for(rt_size_t i = 0; i < obj_num; i++) - { - pico_i2c_gpio_init(&i2c_obj[i]); - } -} - -/** - * This function sets the sda pin. - * - * @param pico config class. - * @param The sda pin state. - */ -static void pico_set_sda(void *data, rt_int32_t state) -{ - struct pico_soft_i2c_config* cfg = (struct pico_soft_i2c_config*)data; - if (state) - { - rt_pin_write(cfg->sda, PIN_HIGH); - } - else - { - rt_pin_write(cfg->sda, PIN_LOW); - } -} - -/** - * This function sets the scl pin. - * - * @param pico config class. - * @param The scl pin state. - */ -static void pico_set_scl(void *data, rt_int32_t state) -{ - struct pico_soft_i2c_config* cfg = (struct pico_soft_i2c_config*)data; - if (state) - { - rt_pin_write(cfg->scl, PIN_HIGH); - } - else - { - rt_pin_write(cfg->scl, PIN_LOW); - } -} - -/** - * This function gets the sda pin state. - * - * @param The sda pin state. - */ -static rt_int32_t pico_get_sda(void *data) -{ - struct pico_soft_i2c_config* cfg = (struct pico_soft_i2c_config*)data; - return rt_pin_read(cfg->sda); -} - -/** - * This function gets the scl pin state. - * - * @param The scl pin state. - */ -static rt_int32_t pico_get_scl(void *data) -{ - struct pico_soft_i2c_config* cfg = (struct pico_soft_i2c_config*)data; - return rt_pin_read(cfg->scl); -} - -/** - * The time delay function. - * - * @param microseconds. - */ -static void pico_udelay(rt_uint32_t us) -{ - busy_wait_us_32(us); -} - -static const struct rt_i2c_bit_ops pico_bit_ops_default = -{ - .data = RT_NULL, - .pin_init = pico_i2c_pin_init, - .set_sda = pico_set_sda, - .set_scl = pico_set_scl, - .get_sda = pico_get_sda, - .get_scl = pico_get_scl, - .udelay = pico_udelay, - .delay_us = 1, - .timeout = 100, - .i2c_pin_init_flag = RT_FALSE -}; - -/** - * if i2c is locked, this function will unlock it - * - * @param pico config class - * - * @return RT_EOK indicates successful unlock. - */ -static rt_err_t pico_i2c_bus_unlock(const struct pico_soft_i2c_config *cfg) -{ - rt_int32_t i = 0; - - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - while (i++ < 9) - { - rt_pin_write(cfg->scl, PIN_HIGH); - pico_udelay(100); - rt_pin_write(cfg->scl, PIN_LOW); - pico_udelay(100); - } - } - if (PIN_LOW == rt_pin_read(cfg->sda)) - { - return -RT_ERROR; - } - - return RT_EOK; -} - -/* I2C initialization function */ -int rt_soft_i2c_init(void) -{ - rt_err_t result; - - for (rt_size_t i = 0; i < sizeof(i2c_obj) / sizeof(struct pico_i2c); i++) - { - i2c_obj[i].ops = pico_bit_ops_default; - i2c_obj[i].ops.data = (void*)&soft_i2c_config[i]; - i2c_obj[i].i2c_bus.priv = &i2c_obj[i].ops; - - result = rt_i2c_bit_add_bus(&i2c_obj[i].i2c_bus, soft_i2c_config[i].bus_name); - RT_ASSERT(result == RT_EOK); - pico_i2c_bus_unlock(&soft_i2c_config[i]); - - LOG_D("software simulation %s init done, pin scl: %d, pin sda %d", - soft_i2c_config[i].bus_name, - soft_i2c_config[i].scl, - soft_i2c_config[i].sda); - } - - return RT_EOK; -} -INIT_DEVICE_EXPORT(rt_soft_i2c_init); - -#endif /* BSP_USING_SOFT_I2C */ diff --git a/bsp/raspberry-pico/libraries/Drivers/drv_soft_i2c.h b/bsp/raspberry-pico/libraries/Drivers/drv_soft_i2c.h deleted file mode 100644 index b5e663b673e7..000000000000 --- a/bsp/raspberry-pico/libraries/Drivers/drv_soft_i2c.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2006-2023, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2023/06/01 chushicheng first version - */ - -#ifndef __DRV_SOFT_I2C__ -#define __DRV_SOFT_I2C__ - -#include -#include "drv_gpio.h" -#include "board.h" - -#ifdef BSP_USING_SOFT_I2C -/* pico i2c dirver class */ -struct pico_i2c -{ - struct rt_i2c_bit_ops ops; - struct rt_i2c_bus_device i2c_bus; -}; - -/* pico config class */ -struct pico_soft_i2c_config -{ - rt_uint8_t scl; - rt_uint8_t sda; - const char *bus_name; -}; - -#ifdef BSP_USING_SOFT_I2C1 -#define I2C1_BUS_CONFIG \ - { \ - .scl = BSP_SOFT_I2C1_SCL_PIN, \ - .sda = BSP_SOFT_I2C1_SDA_PIN, \ - .bus_name = "i2c1", \ - } -#endif - -int rt_soft_i2c_init(void); - -#endif /* BSP_USING_SOFT_I2C */ -#endif diff --git a/bsp/renesas/ra6m3-hmi-board/.ci/attachconfig/attachconfig.yml b/bsp/renesas/ra6m3-hmi-board/.ci/attachconfig/attachconfig.yml index 6844a3c3e04f..2e533fefb9cb 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 49d678eac750..ca46d6b09af5 100644 --- a/bsp/renesas/ra6m3-hmi-board/board/Kconfig +++ b/bsp/renesas/ra6m3-hmi-board/board/Kconfig @@ -14,8 +14,8 @@ menu "Hardware Drivers Config" select BSP_USING_PWM2 select BSP_USING_PWM8 select RT_USING_I2C - select RT_USING_SOFT_I2C - select RT_USING_SOFT_I2C0 + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C0 select BSP_USING_SOFT_SPI select BSP_USING_SOFT_SPI1 select RTDUINO_USING_WIRE @@ -72,8 +72,8 @@ menu "Hardware Drivers Config" select RT_USING_TOUCH select RT_TOUCH_PIN_IRQ select RT_USING_I2C - select RT_USING_SOFT_I2C - select RT_USING_SOFT_I2C1 + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C1 default n menuconfig BSP_USING_LVGL @@ -112,7 +112,32 @@ menu "Hardware Drivers Config" help Enable this option to include LVGL stress demo. -- LVGL9.3.x endif - endmenu + + config RT_SOFT_I2C0_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C0 + + config RT_SOFT_I2C0_SCL_PIN_DEFAULT + int + default 514 if RT_USING_SOFT_I2C0 + + config RT_SOFT_I2C0_SDA_PIN_DEFAULT + int + default 515 if RT_USING_SOFT_I2C0 + + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 514 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 515 if RT_USING_SOFT_I2C1 + +endmenu menu "On-chip Peripheral Drivers" @@ -218,68 +243,6 @@ menu "Hardware Drivers Config" endif endif - config RT_USING_I2C - bool - default n - if RT_USING_I2C - config RT_USING_SOFT_I2C - bool "Enable soft I2C BUS" - default n - if RT_USING_SOFT_I2C - menuconfig RT_USING_SOFT_I2C0 - bool "Enable I2C0 Bus (software simulation)" - default n - if RT_USING_SOFT_I2C0 - comment "Please refer to the 'bsp_io.h' file to configure the pins" - config RT_SOFT_I2C0_SCL_PIN - hex "i2c0 scl pin number (hex)" - range 0x0000 0xFFFF - default 0x202 - config RT_SOFT_I2C0_SDA_PIN - hex "i2c0 sda pin number (hex)" - range 0x0000 0xFFFF - default 0x203 - config RT_SOFT_I2C0_BUS_NAME - string "Bus name" - default "i2c0" - config RT_SOFT_I2C0_TIMING_DELAY - int "Timing delay (us)" - range 0 32767 - default 10 - config RT_SOFT_I2C0_TIMING_TIMEOUT - int "Timing timeout (tick)" - range 0 32767 - default 10 - endif - - menuconfig RT_USING_SOFT_I2C1 - bool "Enable I2C1 Bus (software simulation)" - default n - if RT_USING_SOFT_I2C1 - comment "Please refer to the 'bsp_io.h' file to configure the pins" - config RT_SOFT_I2C1_SCL_PIN - hex "i2c1 scl pin number (hex)" - range 0x0000 0xFFFF - default 0x202 - config RT_SOFT_I2C1_SDA_PIN - hex "i2c1 sda pin number (hex)" - range 0x0000 0xFFFF - default 0x203 - config RT_SOFT_I2C1_BUS_NAME - string "Bus name" - default "i2c1" - config RT_SOFT_I2C1_TIMING_DELAY - int "Timing delay (us)" - range 0 32767 - default 10 - config RT_SOFT_I2C1_TIMING_TIMEOUT - int "Timing timeout (tick)" - range 0 32767 - default 10 - endif - endif - endif - menuconfig BSP_USING_ADC bool "Enable ADC" default n @@ -710,6 +673,40 @@ menu "Hardware Drivers Config" endif endif + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" + default n + select RT_USING_I2C + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C0 + bool "Enable software I2C0 Bus (swi2c0)" + default n + select RT_USING_SOFT_I2C0 + if BSP_USING_SOFT_I2C0 + config RT_SOFT_I2C0_SCL_PIN + int "swi2c0 SCL pin number" + default 514 + config RT_SOFT_I2C0_SDA_PIN + int "swi2c0 SDA pin number" + default 515 + endif + + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 514 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 515 + endif + endif + + endmenu menu "Board extended module Drivers" diff --git a/bsp/renesas/ra6m3-hmi-board/board/lvgl/lv_port_indev.c b/bsp/renesas/ra6m3-hmi-board/board/lvgl/lv_port_indev.c index e0af324b7a18..b9368241665e 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 6982913435d2..ffa06c9f0edc 100644 --- a/bsp/renesas/ra6m3-hmi-board/board/rtduino/arduino_pinout/pins_arduino.c +++ b/bsp/renesas/ra6m3-hmi-board/board/rtduino/arduino_pinout/pins_arduino.c @@ -22,28 +22,27 @@ * Analog pins MUST give the device name and channel(ADC, PWM or DAC). * Arduino Pin must keep in sequence. */ -const pin_map_t pin_map_table[]= -{ - {D0, BSP_IO_PORT_02_PIN_06, "uart4"}, /* Serial4-RX */ - {D1, BSP_IO_PORT_02_PIN_05, "uart4"}, /* Serial4-TX */ - {D2, BSP_IO_PORT_00_PIN_08}, - {D3, BSP_IO_PORT_05_PIN_06}, - {D4, BSP_IO_PORT_06_PIN_03}, - {D5, BSP_IO_PORT_06_PIN_04, "pwm8", 0}, - {D6, BSP_IO_PORT_06_PIN_05, "pwm8", 0}, - {D7, BSP_IO_PORT_02_PIN_08}, - {D8, BSP_IO_PORT_02_PIN_07}, - {D9, BSP_IO_PORT_00_PIN_09}, - {D10, BSP_IO_PORT_07_PIN_12, "pwm2", 0}, /* PWM */ - {D11, BSP_IO_PORT_05_PIN_12, "pwm0", 0}, /* PWM */ - {D12, BSP_IO_PORT_05_PIN_11}, - {D13, BSP_IO_PORT_02_PIN_04}, - {D14, BSP_IO_PORT_02_PIN_03, "i2c0"}, /* I2C-SDA (Soft Wire) */ - {D15, BSP_IO_PORT_02_PIN_02, "i2c0"}, /* I2C-SCL (Soft Wire) */ - {A0, BSP_IO_PORT_00_PIN_00, "adc0", 0}, /* ADC */ - {A1, BSP_IO_PORT_00_PIN_01, "adc0", 1}, /* ADC */ - {A2, BSP_IO_PORT_00_PIN_02, "adc0", 2}, /* ADC */ - {A3, BSP_IO_PORT_00_PIN_03, "adc0", 7}, /* ADC */ - {A4, BSP_IO_PORT_05_PIN_08, "adc0", 20}, /* ADC */ - {A5, BSP_IO_PORT_00_PIN_14, "adc0", 5} /* ADC */ +const pin_map_t pin_map_table[] = { + { D0, BSP_IO_PORT_02_PIN_06, "uart4" }, /* Serial4-RX */ + { D1, BSP_IO_PORT_02_PIN_05, "uart4" }, /* Serial4-TX */ + { D2, BSP_IO_PORT_00_PIN_08 }, + { D3, BSP_IO_PORT_05_PIN_06 }, + { D4, BSP_IO_PORT_06_PIN_03 }, + { D5, BSP_IO_PORT_06_PIN_04, "pwm8", 0 }, + { D6, BSP_IO_PORT_06_PIN_05, "pwm8", 0 }, + { D7, BSP_IO_PORT_02_PIN_08 }, + { D8, BSP_IO_PORT_02_PIN_07 }, + { D9, BSP_IO_PORT_00_PIN_09 }, + { D10, BSP_IO_PORT_07_PIN_12, "pwm2", 0 }, /* PWM */ + { D11, BSP_IO_PORT_05_PIN_12, "pwm0", 0 }, /* PWM */ + { D12, BSP_IO_PORT_05_PIN_11 }, + { D13, BSP_IO_PORT_02_PIN_04 }, + { D14, BSP_IO_PORT_02_PIN_03, "swi2c0" }, /* I2C-SDA (Soft Wire) */ + { D15, BSP_IO_PORT_02_PIN_02, "swi2c0" }, /* I2C-SCL (Soft Wire) */ + { A0, BSP_IO_PORT_00_PIN_00, "adc0", 0 }, /* ADC */ + { A1, BSP_IO_PORT_00_PIN_01, "adc0", 1 }, /* ADC */ + { A2, BSP_IO_PORT_00_PIN_02, "adc0", 2 }, /* ADC */ + { A3, BSP_IO_PORT_00_PIN_03, "adc0", 7 }, /* ADC */ + { A4, BSP_IO_PORT_05_PIN_08, "adc0", 20 }, /* ADC */ + { A5, BSP_IO_PORT_00_PIN_14, "adc0", 5 } /* ADC */ }; diff --git a/bsp/renesas/ra6m3-hmi-board/board/rtduino/arduino_pinout/pins_arduino.h b/bsp/renesas/ra6m3-hmi-board/board/rtduino/arduino_pinout/pins_arduino.h index 72ec3eb9f16e..510b26e96302 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 56cd5ad1a721..01cc75d8b25f 100644 --- a/bsp/renesas/ra8p1-titan-board/.ci/attachconfig/attachconfig.yml +++ b/bsp/renesas/ra8p1-titan-board/.ci/attachconfig/attachconfig.yml @@ -39,6 +39,15 @@ devices.rtc: kconfig: - CONFIG_BSP_USING_ONCHIP_RTC=y +devices.soft_i2c: + kconfig: + - CONFIG_RT_USING_I2C=y + - CONFIG_RT_USING_SOFT_I2C=y + - CONFIG_RT_USING_SOFT_I2C1=y + - CONFIG_RT_SOFT_I2C1_SCL_PIN=0x050C + - CONFIG_RT_SOFT_I2C1_SDA_PIN=0x050B + - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1" + # ------ utest CI ------ utest.pin: kconfig: diff --git a/bsp/renesas/ra8p1-titan-board/board/Kconfig b/bsp/renesas/ra8p1-titan-board/board/Kconfig index 7d1e754f4914..800f8e0e6b06 100644 --- a/bsp/renesas/ra8p1-titan-board/board/Kconfig +++ b/bsp/renesas/ra8p1-titan-board/board/Kconfig @@ -586,28 +586,24 @@ menu "Hardware Drivers Config" endif menuconfig BSP_USING_SOFT_I2C - bool "Enable software I2C bus" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN + bool "Enable software I2C (swi2c)" default n + select RT_USING_I2C + select RT_USING_SOFT_I2C if BSP_USING_SOFT_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 Bus (software simulation)" - default n - if BSP_USING_I2C1 - comment "Please refer to the 'bsp_io.h' file to configure the pins" - config BSP_I2C1_SCL_PIN - hex "i2c1 scl pin number (hex)" - range 0x0000 0xFFFF - default 0x050C - config BSP_I2C1_SDA_PIN - hex "i2c1 sda pin number (hex)" - range 0x0000 0xFFFF - default 0x050B - endif + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 1292 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 1291 + endif endif - menuconfig BSP_USING_SDHI bool "Enable SDHI" default n @@ -750,8 +746,8 @@ menu "Hardware Drivers Config" bool "Enable ceu camera driver" default n select RT_USING_I2C - select BSP_USING_I2C - select BSP_USING_I2C1 + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C1 if BSP_USING_CEU_CAMERA menu "Camera Pins Configure" @@ -766,7 +762,7 @@ menu "Hardware Drivers Config" config SENSOR_BUS_NAME string "Sensor I2C Bus Name" depends on RT_USING_I2C - default "i2c1" + default "swi2c1" config SENSOR_MT9V034 int "Sensor support MT9V034" @@ -802,6 +798,18 @@ menu "Hardware Drivers Config" default 0 endif + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 1292 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 1291 if RT_USING_SOFT_I2C1 + config BSP_USING_G2D bool default n @@ -851,4 +859,5 @@ menu "Hardware Drivers Config" default 0x0303 endif endmenu + endmenu diff --git a/bsp/renesas/rzn2l_etherkit/.ci/attachconfig/ci.attachconfig.yml b/bsp/renesas/rzn2l_etherkit/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..8e4f07c856eb --- /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 e4cff331160a..e7d9450ce889 100644 --- a/bsp/renesas/rzn2l_etherkit/board/Kconfig +++ b/bsp/renesas/rzn2l_etherkit/board/Kconfig @@ -445,7 +445,6 @@ menu "Hardware Drivers Config" bool "Enable I2C BUS" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS select RT_USING_PIN if BSP_USING_I2C config BSP_USING_HW_I2C @@ -461,23 +460,26 @@ menu "Hardware Drivers Config" bool "Enable Hardware I2C1 BUS" default n endif - if !BSP_USING_HW_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default y - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - hex "i2c1 scl pin number" - range 0x0000 0x0B0F - default 0x0B03 - config BSP_I2C1_SDA_PIN - hex "I2C1 sda pin number" - range 0x0000 0x0B0F - default 0x050E - endif - endif + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" + default n + select RT_USING_I2C + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 0x0B03 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 0x050E + endif + endif endif - menuconfig BSP_USING_SPI bool "Enable SPI BUS" default n @@ -562,4 +564,16 @@ menu "Hardware Drivers Config" default 0x1706 endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 0x0B03 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 0x050E if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/renesas/rzn2l_rsk/.ci/attachconfig/ci.attachconfig.yml b/bsp/renesas/rzn2l_rsk/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..8e4f07c856eb --- /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 9060c7c18dca..270259d3045f 100644 --- a/bsp/renesas/rzn2l_rsk/board/Kconfig +++ b/bsp/renesas/rzn2l_rsk/board/Kconfig @@ -84,7 +84,6 @@ menu "Hardware Drivers Config" bool "Enable I2C BUS" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS select RT_USING_PIN if BSP_USING_I2C config BSP_USING_HW_I2C @@ -100,23 +99,26 @@ menu "Hardware Drivers Config" bool "Enable Hardware I2C1 BUS" default n endif - if !BSP_USING_HW_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default y - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - hex "i2c1 scl pin number" - range 0x0000 0x0B0F - default 0x0B03 - config BSP_I2C1_SDA_PIN - hex "I2C1 sda pin number" - range 0x0000 0x0B0F - default 0x050E - endif - endif + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" + default n + select RT_USING_I2C + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 0x0B03 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 0x050E + endif + endif endif - menuconfig BSP_USING_SPI bool "Enable SPI BUS" default n @@ -191,4 +193,16 @@ menu "Hardware Drivers Config" default 0x1706 endif endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 0x0B03 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 0x050E if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/stm32/libraries/HAL_Drivers/drivers/SConscript b/bsp/stm32/libraries/HAL_Drivers/drivers/SConscript index be974a8bc8f4..458940a6e6fa 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 37ffde2d40b7..000000000000 --- 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 40c77f566dd8..000000000000 --- 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 000000000000..d626be14a578 --- /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 d95f206f8228..cb0593c180aa 100644 --- a/bsp/stm32/libraries/templates/stm32l1xx/board/Kconfig +++ b/bsp/stm32/libraries/templates/stm32l1xx/board/Kconfig @@ -20,8 +20,10 @@ menu "Onboard Peripheral Drivers" select BSP_USING_USBD default n config BSP_USING_EEPROM - bool "Enable I2C EEPROM (i2c1)" - select BSP_USING_I2C1 + bool "Enable I2C EEPROM (swi2c1)" + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C1 default n config BSP_USING_SPI_FLASH @@ -38,6 +40,18 @@ menu "Onboard Peripheral Drivers" select BSP_USING_ADC1 default n + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + endmenu menu "On-chip Peripheral Drivers" @@ -157,22 +171,24 @@ menu "On-chip Peripheral Drivers" select BSP_SPI2_TX_USING_DMA default n endif - - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif endif menuconfig BSP_USING_ADC @@ -219,4 +235,5 @@ menu "Board extended module Drivers" endmenu + endmenu diff --git a/bsp/stm32/libraries/templates/stm32wbxx/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/libraries/templates/stm32wbxx/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..7dc954e324fe --- /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 1287e9a63fed..6d30a2912dda 100644 --- a/bsp/stm32/libraries/templates/stm32wbxx/board/Kconfig +++ b/bsp/stm32/libraries/templates/stm32wbxx/board/Kconfig @@ -82,44 +82,38 @@ menu "On-chip Peripheral Drivers" - menuconfig BSP_USING_I2C - bool "Enable I2C BUS" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default y - if BSP_USING_I2C1 - comment "Notice: PB8 --> 24; PB9 --> 25" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 143 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 143 - default 25 - endif - - 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 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 25 + endif + + menuconfig BSP_USING_SOFT_I2C3 + bool "Enable software I2C3 Bus (swi2c3)" + default n + select RT_USING_SOFT_I2C3 + if BSP_USING_SOFT_I2C3 + config RT_SOFT_I2C3_SCL_PIN + int "swi2c3 SCL pin number" + default 29 + config RT_SOFT_I2C3_SDA_PIN + int "swi2c3 SDA pin number" + default 30 + endif endif - menuconfig BSP_USING_TIM bool "Enable timer" default n @@ -170,4 +164,28 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C3_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SCL_PIN_DEFAULT + int + default 29 if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SDA_PIN_DEFAULT + int + default 30 if RT_USING_SOFT_I2C3 + endmenu diff --git a/bsp/stm32/stm32f072-st-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f072-st-nucleo/.ci/attachconfig/ci.attachconfig.yml index 2a7fcdfd2753..a863524b0707 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 d3fdecd0b03f..a671cafb02e8 100644 --- a/bsp/stm32/stm32f072-st-nucleo/applications/arduino_pinout/pins_arduino.c +++ b/bsp/stm32/stm32f072-st-nucleo/applications/arduino_pinout/pins_arduino.c @@ -23,33 +23,32 @@ * Analog pins MUST give the device name and channel(ADC, PWM or DAC). * Arduino Pin must keep in sequence. */ -const pin_map_t pin_map_table[]= -{ - {D0, GET_PIN(A,3), "uart2"}, /* Serial-Rx */ - {D1, GET_PIN(A,2), "uart2"}, /* Serial-Tx */ - {D2, GET_PIN(A,10)}, - {D3, GET_PIN(B,3), "pwm2", 2}, /* PWM */ - {D4, GET_PIN(B,5)}, - {D5, GET_PIN(B,4), "pwm3", 1}, /* PWM */ - {D6, GET_PIN(B,10), "pwm2", 3}, /* PWM */ - {D7, GET_PIN(A,8)}, - {D8, GET_PIN(A,9)}, - {D9, GET_PIN(C,7), "pwm3", 2}, /* PWM */ - {D10, GET_PIN(B,6), "pwm16", -1}, /* PWM */ - {D11, GET_PIN(A,7), "pwm17", 1}, /* PWM */ - {D12, GET_PIN(A,6)}, - {D13, GET_PIN(A,5)}, /* LED_BUILTIN */ - {D14, GET_PIN(B,9), "i2c1"}, /* I2C-SDA (Wire) */ - {D15, GET_PIN(B,8), "i2c1"}, /* I2C-SCL (Wire) */ - {D16, GET_PIN(C,13)}, /* USER KEY */ - {A0, GET_PIN(A,0), "adc1", 0}, /* ADC */ - {A1, GET_PIN(A,1), "adc1", 1}, /* ADC */ - {A2, GET_PIN(A,4), "adc1", 4}, /* ADC */ - {A3, GET_PIN(B,0), "adc1", 8}, /* ADC */ - {A4, GET_PIN(C,1), "adc1", 11}, /* ADC */ - {A5, GET_PIN(C,0), "adc1", 10}, /* ADC */ - {A6, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF}, /* ADC, On-Chip: internal reference voltage */ - {A7, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER}, /* ADC, On-Chip: internal temperature sensor */ +const pin_map_t pin_map_table[] = { + { D0, GET_PIN(A, 3), "uart2" }, /* Serial-Rx */ + { D1, GET_PIN(A, 2), "uart2" }, /* Serial-Tx */ + { D2, GET_PIN(A, 10) }, + { D3, GET_PIN(B, 3), "pwm2", 2 }, /* PWM */ + { D4, GET_PIN(B, 5) }, + { D5, GET_PIN(B, 4), "pwm3", 1 }, /* PWM */ + { D6, GET_PIN(B, 10), "pwm2", 3 }, /* PWM */ + { D7, GET_PIN(A, 8) }, + { D8, GET_PIN(A, 9) }, + { D9, GET_PIN(C, 7), "pwm3", 2 }, /* PWM */ + { D10, GET_PIN(B, 6), "pwm16", -1 }, /* PWM */ + { D11, GET_PIN(A, 7), "pwm17", 1 }, /* PWM */ + { D12, GET_PIN(A, 6) }, + { D13, GET_PIN(A, 5) }, /* LED_BUILTIN */ + { D14, GET_PIN(B, 9), "swi2c1" }, /* I2C-SDA (Wire) */ + { D15, GET_PIN(B, 8), "swi2c1" }, /* I2C-SCL (Wire) */ + { D16, GET_PIN(C, 13) }, /* USER KEY */ + { A0, GET_PIN(A, 0), "adc1", 0 }, /* ADC */ + { A1, GET_PIN(A, 1), "adc1", 1 }, /* ADC */ + { A2, GET_PIN(A, 4), "adc1", 4 }, /* ADC */ + { A3, GET_PIN(B, 0), "adc1", 8 }, /* ADC */ + { A4, GET_PIN(C, 1), "adc1", 11 }, /* ADC */ + { A5, GET_PIN(C, 0), "adc1", 10 }, /* ADC */ + { A6, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF }, /* ADC, On-Chip: internal reference voltage */ + { A7, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER }, /* ADC, On-Chip: internal temperature sensor */ }; #ifdef RTDUINO_USING_SPI diff --git a/bsp/stm32/stm32f072-st-nucleo/applications/arduino_pinout/pins_arduino.h b/bsp/stm32/stm32f072-st-nucleo/applications/arduino_pinout/pins_arduino.h index aff1e18c22f3..00fac8c15019 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 69900f4061cf..7351ebe243c1 100644 --- a/bsp/stm32/stm32f072-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32f072-st-nucleo/board/Kconfig @@ -25,8 +25,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM16_CH1 select BSP_USING_PWM17 select BSP_USING_PWM17_CH1 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C1 select BSP_USING_SPI select BSP_USING_SPI1 select BSP_SPI1_TX_USING_DMA @@ -36,6 +37,19 @@ menu "Onboard Peripheral Drivers" imply RTDUINO_USING_SERVO default n + + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if RT_USING_SOFT_I2C1 + endmenu menu "On-chip Peripheral Drivers" @@ -193,30 +207,25 @@ menu "On-chip Peripheral Drivers" endif endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 Bus (User I2C)" - default n - if BSP_USING_I2C1 - comment "Notice: PB9 --> 25; PB8 --> 24" - config BSP_I2C1_SCL_PIN - int "i2c1 SCL pin number" - range 1 176 - default 24 - config BSP_I2C1_SDA_PIN - int "i2c1 SDA pin number" - range 1 176 - default 25 - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 25 + endif endif - source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig" endmenu diff --git a/bsp/stm32/stm32f091-st-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f091-st-nucleo/.ci/attachconfig/ci.attachconfig.yml index e4646070a994..5f0a7623e103 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 d5ea59755e92..42c5da149f40 100644 --- a/bsp/stm32/stm32f091-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32f091-st-nucleo/board/Kconfig @@ -117,23 +117,25 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 34 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 35 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 34 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 35 + endif endif - menuconfig BSP_USING_TIM bool "Enable timer" default n @@ -211,4 +213,16 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 34 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 35 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/stm32/stm32f103-100ask-pro/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f103-100ask-pro/.ci/attachconfig/ci.attachconfig.yml index e4646070a994..bafb8dec3cda 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 65919379fc17..62dd05e54ce8 100644 --- a/bsp/stm32/stm32f103-100ask-pro/board/Kconfig +++ b/bsp/stm32/stm32f103-100ask-pro/board/Kconfig @@ -33,8 +33,10 @@ menu "Onboard Peripheral Drivers" default n config BSP_USING_EEPROM - bool "Enable I2C EEPROM (i2c1)" - select BSP_USING_I2C1 + bool "Enable I2C EEPROM (swi2c1)" + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C1 default n config BSP_USING_EXT_SRAM @@ -43,6 +45,18 @@ menu "Onboard Peripheral Drivers" help Chip name is IS62WV51216BLL, 1Mbytes static RAMs organized as 512K words by 16bits. + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + endmenu menu "On-chip Peripheral Drivers" @@ -217,23 +231,25 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 175 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 175 - default 23 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif endif - menuconfig BSP_USING_TIM bool "Enable timer" default n @@ -292,4 +308,5 @@ menu "Board extended module Drivers" endmenu + endmenu diff --git a/bsp/stm32/stm32f103-atk-nano/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f103-atk-nano/.ci/attachconfig/ci.attachconfig.yml index e4646070a994..bafb8dec3cda 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 282086aecdc9..ea7b185e36ca 100644 --- a/bsp/stm32/stm32f103-atk-nano/board/Kconfig +++ b/bsp/stm32/stm32f103-atk-nano/board/Kconfig @@ -9,8 +9,10 @@ menu "Onboard Peripheral Drivers" default y config BSP_USING_EEPROM - bool "Enable I2C EEPROM (i2c1)" - select BSP_USING_I2C1 + bool "Enable I2C EEPROM (swi2c1)" + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C1 default n config BSP_USING_SPI_FLASH @@ -27,6 +29,18 @@ menu "Onboard Peripheral Drivers" select BSP_USING_ADC1 default n + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + endmenu menu "On-chip Peripheral Drivers" @@ -218,22 +232,24 @@ menu "On-chip Peripheral Drivers" select BSP_SPI2_TX_USING_DMA default n endif - - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif endif menuconfig BSP_USING_ADC @@ -280,4 +296,5 @@ menu "Board extended module Drivers" endmenu + endmenu diff --git a/bsp/stm32/stm32f103-atk-warshipv3/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f103-atk-warshipv3/.ci/attachconfig/ci.attachconfig.yml index e4646070a994..bafb8dec3cda 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 0d7330f082bf..8976d2a742e0 100644 --- a/bsp/stm32/stm32f103-atk-warshipv3/board/Kconfig +++ b/bsp/stm32/stm32f103-atk-warshipv3/board/Kconfig @@ -9,8 +9,10 @@ menu "Onboard Peripheral Drivers" default y config BSP_USING_EEPROM - bool "Enable I2C EEPROM (i2c1)" - select BSP_USING_I2C1 + bool "Enable I2C EEPROM (swi2c1)" + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C1 default n config BSP_USING_SPI_FLASH @@ -40,6 +42,18 @@ menu "Onboard Peripheral Drivers" select RT_USING_DFS_ELMFAT default n + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + endmenu menu "On-chip Peripheral Drivers" @@ -232,23 +246,25 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif endif - menuconfig BSP_USING_ADC bool "Enable ADC" default n @@ -320,4 +336,5 @@ menu "Board extended module Drivers" endmenu + endmenu diff --git a/bsp/stm32/stm32f103-blue-pill/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f103-blue-pill/.ci/attachconfig/ci.attachconfig.yml index bec3d8400cbc..597afb24a5a2 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 267d7d9e294b..ec83a534683f 100644 --- a/bsp/stm32/stm32f103-blue-pill/applications/arduino_pinout/pins_arduino.c +++ b/bsp/stm32/stm32f103-blue-pill/applications/arduino_pinout/pins_arduino.c @@ -19,40 +19,39 @@ * Analog pins MUST give the device name and channel(ADC, PWM or DAC). * Arduino Pin must keep in sequence. */ -const pin_map_t pin_map_table[]= -{ - {D0, GET_PIN(B,7)}, - {D1, GET_PIN(B,6)}, - {D2, GET_PIN(B,5), "pwm3", 2}, /* PWM */ - {D3, GET_PIN(B,4), "pwm3", 1}, /* PWM */ - {D4, GET_PIN(B,3), "pwm2", 2}, /* PWM */ - {D5, GET_PIN(A,15), "pwm2", 1}, /* PWM */ - {D6, GET_PIN(A,8)}, - {D7, GET_PIN(B,12)}, /* SPI-SS */ - {D8, GET_PIN(C,13)}, /* LED_BUILTIN */ - {D9, GET_PIN(C,14)}, - {D10, GET_PIN(C,15)}, - {D11, GET_PIN(A,0)}, - {D12, GET_PIN(B,0), "pwm3", 3}, /* PWM */ - {D13, GET_PIN(B,1), "pwm3", 4}, /* PWM */ - {D14, GET_PIN(B,9), "i2c1"}, /* I2C-SDA (Wire) */ - {D15, GET_PIN(B,8), "i2c1"}, /* I2C-SCL (Wire) */ - {D16, GET_PIN(A,12), "usb"}, /* SerialUSB */ - {D17, GET_PIN(A,11), "usb"}, /* SerialUSB */ - {D18, GET_PIN(A,10), "uart1"}, /* Serial-Rx */ - {D19, GET_PIN(A,9), "uart1"}, /* Serial-Tx */ - {D20, GET_PIN(A,2), "uart2"}, /* Serial2-Tx */ - {D21, GET_PIN(A,3), "uart2"}, /* Serial2-Rx */ - {D22, GET_PIN(B,10), "uart3"}, /* Serial3-Tx */ - {D23, GET_PIN(B,11), "uart3"}, /* Serial3-Rx */ - {D24, GET_PIN(B,15), "spi2"}, /* SPI-MOSI */ - {D25, GET_PIN(B,14), "spi2"}, /* SPI-MISO */ - {D26, GET_PIN(B,13), "spi2"}, /* SPI-SCK */ - {A0, GET_PIN(A,1), "adc1", 1}, /* ADC */ - {A1, GET_PIN(A,4), "adc1", 4}, /* ADC */ - {A2, GET_PIN(A,5), "adc1", 5}, /* ADC */ - {A3, GET_PIN(A,6), "adc1", 6}, /* ADC */ - {A4, GET_PIN(A,7), "adc1", 7}, /* ADC */ - {A5, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF}, /* ADC, On-Chip: internal reference voltage */ - {A6, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER}, /* ADC, On-Chip: internal temperature sensor */ +const pin_map_t pin_map_table[] = { + { D0, GET_PIN(B, 7) }, + { D1, GET_PIN(B, 6) }, + { D2, GET_PIN(B, 5), "pwm3", 2 }, /* PWM */ + { D3, GET_PIN(B, 4), "pwm3", 1 }, /* PWM */ + { D4, GET_PIN(B, 3), "pwm2", 2 }, /* PWM */ + { D5, GET_PIN(A, 15), "pwm2", 1 }, /* PWM */ + { D6, GET_PIN(A, 8) }, + { D7, GET_PIN(B, 12) }, /* SPI-SS */ + { D8, GET_PIN(C, 13) }, /* LED_BUILTIN */ + { D9, GET_PIN(C, 14) }, + { D10, GET_PIN(C, 15) }, + { D11, GET_PIN(A, 0) }, + { D12, GET_PIN(B, 0), "pwm3", 3 }, /* PWM */ + { D13, GET_PIN(B, 1), "pwm3", 4 }, /* PWM */ + { D14, GET_PIN(B, 9), "swi2c1" }, /* I2C-SDA (Wire) */ + { D15, GET_PIN(B, 8), "swi2c1" }, /* I2C-SCL (Wire) */ + { D16, GET_PIN(A, 12), "usb" }, /* SerialUSB */ + { D17, GET_PIN(A, 11), "usb" }, /* SerialUSB */ + { D18, GET_PIN(A, 10), "uart1" }, /* Serial-Rx */ + { D19, GET_PIN(A, 9), "uart1" }, /* Serial-Tx */ + { D20, GET_PIN(A, 2), "uart2" }, /* Serial2-Tx */ + { D21, GET_PIN(A, 3), "uart2" }, /* Serial2-Rx */ + { D22, GET_PIN(B, 10), "uart3" }, /* Serial3-Tx */ + { D23, GET_PIN(B, 11), "uart3" }, /* Serial3-Rx */ + { D24, GET_PIN(B, 15), "spi2" }, /* SPI-MOSI */ + { D25, GET_PIN(B, 14), "spi2" }, /* SPI-MISO */ + { D26, GET_PIN(B, 13), "spi2" }, /* SPI-SCK */ + { A0, GET_PIN(A, 1), "adc1", 1 }, /* ADC */ + { A1, GET_PIN(A, 4), "adc1", 4 }, /* ADC */ + { A2, GET_PIN(A, 5), "adc1", 5 }, /* ADC */ + { A3, GET_PIN(A, 6), "adc1", 6 }, /* ADC */ + { A4, GET_PIN(A, 7), "adc1", 7 }, /* ADC */ + { A5, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF }, /* ADC, On-Chip: internal reference voltage */ + { A6, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER }, /* ADC, On-Chip: internal temperature sensor */ }; diff --git a/bsp/stm32/stm32f103-blue-pill/applications/arduino_pinout/pins_arduino.h b/bsp/stm32/stm32f103-blue-pill/applications/arduino_pinout/pins_arduino.h index 09aced045af0..e680e3d70f1e 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 0c359e8e7913..a3cccaff9dae 100644 --- a/bsp/stm32/stm32f103-blue-pill/board/Kconfig +++ b/bsp/stm32/stm32f103-blue-pill/board/Kconfig @@ -26,8 +26,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM3_CH2 select BSP_USING_PWM3_CH3 select BSP_USING_PWM3_CH4 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C1 select BSP_USING_SPI select BSP_USING_SPI2 # select BSP_SPI2_TX_USING_DMA @@ -37,6 +38,19 @@ menu "Onboard Peripheral Drivers" imply RTDUINO_USING_SERVO default n + + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if RT_USING_SOFT_I2C1 + endmenu menu "On-chip Peripheral Drivers" @@ -156,23 +170,25 @@ menu "On-chip Peripheral Drivers" endif endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number (PB8)" - range 0 143 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number (PB9)" - range 0 143 - default 25 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 25 + endif endif - menuconfig BSP_USING_PWM bool "Enable PWM" default n @@ -275,4 +291,5 @@ menu "Board extended module Drivers" endmenu + endmenu diff --git a/bsp/stm32/stm32f103-dofly-M3S/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f103-dofly-M3S/.ci/attachconfig/ci.attachconfig.yml index e4646070a994..0041f2e90200 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 ecf31ff30242..aa71ae084a7e 100644 --- a/bsp/stm32/stm32f103-dofly-M3S/board/Kconfig +++ b/bsp/stm32/stm32f103-dofly-M3S/board/Kconfig @@ -28,9 +28,23 @@ menu "Onboard Peripheral Drivers" default n config BSP_USING_EEPROM - bool "Enable I2C EEPROM (i2c2)" - select BSP_USING_I2C2 + bool "Enable I2C EEPROM (swi2c2)" + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C2 default n + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + endmenu menu "On-chip Peripheral Drivers" @@ -136,24 +150,25 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C2 - bool "Enable I2C2 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C2 - comment "Notice: PB10 --> 26; PB11 --> 27" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 175 - default 26 - config BSP_I2C2_SDA_PIN - int "i2c2 sda pin number" - range 0 175 - default 27 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 26 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 27 + endif endif - config BSP_USING_ON_CHIP_FLASH bool "Enable on-chip FLASH" default n @@ -178,4 +193,5 @@ menu "Board extended module Drivers" endmenu + endmenu diff --git a/bsp/stm32/stm32f103-fire-arbitrary/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f103-fire-arbitrary/.ci/attachconfig/ci.attachconfig.yml index e4646070a994..bafb8dec3cda 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 75787559a1f7..93e033c0af6a 100644 --- a/bsp/stm32/stm32f103-fire-arbitrary/board/Kconfig +++ b/bsp/stm32/stm32f103-fire-arbitrary/board/Kconfig @@ -45,8 +45,10 @@ menu "Onboard Peripheral Drivers" default n config BSP_USING_EEPROM - bool "Enable I2C EEPROM (i2c1)" - select BSP_USING_I2C1 + bool "Enable I2C EEPROM (swi2c1)" + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C1 default n config BSP_USING_ETH @@ -83,6 +85,18 @@ menu "Onboard Peripheral Drivers" select RT_USING_DFS_ELMFAT default n + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + endmenu menu "On-chip Peripheral Drivers" @@ -257,23 +271,25 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 175 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 175 - default 23 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif endif - menuconfig BSP_USING_TIM bool "Enable timer" default n @@ -388,4 +404,5 @@ menu "Board extended module Drivers" endmenu + endmenu diff --git a/bsp/stm32/stm32f103-gizwits-gokitv21/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f103-gizwits-gokitv21/.ci/attachconfig/ci.attachconfig.yml index e4646070a994..38f5930b0fd2 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 73b2de6d746b..2f6a02aecd0b 100644 --- a/bsp/stm32/stm32f103-gizwits-gokitv21/board/Kconfig +++ b/bsp/stm32/stm32f103-gizwits-gokitv21/board/Kconfig @@ -109,21 +109,24 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 15 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 16 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 15 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 16 + endif endif source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig" @@ -133,4 +136,16 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 15 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 16 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/stm32/stm32f103-hw100k-ibox/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f103-hw100k-ibox/.ci/attachconfig/ci.attachconfig.yml index e4646070a994..bafb8dec3cda 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 401cbdfc31df..159492e0909b 100644 --- a/bsp/stm32/stm32f103-hw100k-ibox/board/Kconfig +++ b/bsp/stm32/stm32f103-hw100k-ibox/board/Kconfig @@ -228,21 +228,24 @@ menu "On-chip Peripheral Drivers" config BSP_USING_ON_CHIP_FLASH bool "Enable on-chip FLASH" default n - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 144 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 144 - default 23 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif endif menuconfig BSP_USING_SPI bool "Enable SPI BUS" @@ -323,4 +326,16 @@ menu "Board extended module Drivers" default n endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/stm32/stm32f103-keysking-learning/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f103-keysking-learning/.ci/attachconfig/ci.attachconfig.yml index 5d0c8906b8db..fff98fe34e16 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 ae9a9bd106b0..8e2f11ac8d12 100644 --- a/bsp/stm32/stm32f103-keysking-learning/board/Kconfig +++ b/bsp/stm32/stm32f103-keysking-learning/board/Kconfig @@ -104,23 +104,39 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number (PB8)" - range 0 143 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number (PB9)" - range 0 143 - default 25 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + range 0 143 + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + range 0 143 + default 25 + endif endif + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if RT_USING_SOFT_I2C1 menuconfig BSP_USING_PWM bool "Enable PWM" diff --git a/bsp/stm32/stm32f103-yf-ufun/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f103-yf-ufun/.ci/attachconfig/ci.attachconfig.yml index e4646070a994..38f5930b0fd2 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 7c3b526bc2d9..9b8fb8efcf01 100644 --- a/bsp/stm32/stm32f103-yf-ufun/board/Kconfig +++ b/bsp/stm32/stm32f103-yf-ufun/board/Kconfig @@ -76,23 +76,25 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 15 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 16 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 15 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 16 + endif endif - menuconfig BSP_USING_PWM bool "Enable PWM" default n @@ -131,4 +133,16 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 15 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 16 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/stm32/stm32f401-st-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f401-st-nucleo/.ci/attachconfig/ci.attachconfig.yml index 2a7fcdfd2753..a863524b0707 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 f4a2c6934732..7f8f90125b50 100644 --- a/bsp/stm32/stm32f401-st-nucleo/applications/arduino_pinout/pins_arduino.c +++ b/bsp/stm32/stm32f401-st-nucleo/applications/arduino_pinout/pins_arduino.c @@ -23,33 +23,32 @@ * Analog pins MUST give the device name and channel(ADC, PWM or DAC). * Arduino Pin must keep in sequence. */ -const pin_map_t pin_map_table[]= -{ - {D0, GET_PIN(A,3), "uart2"}, /* Serial-Rx */ - {D1, GET_PIN(A,2), "uart2"}, /* Serial-Tx */ - {D2, GET_PIN(A,10)}, - {D3, GET_PIN(B,3), "pwm2", 2}, /* PWM */ - {D4, GET_PIN(B,5)}, - {D5, GET_PIN(B,4), "pwm3", 1}, /* PWM */ - {D6, GET_PIN(B,10), "pwm2", 3}, /* PWM */ - {D7, GET_PIN(A,8)}, - {D8, GET_PIN(A,9)}, - {D9, GET_PIN(C,7), "pwm3", 2}, /* PWM */ - {D10, GET_PIN(B,6), "pwm4", 1}, /* PWM */ - {D11, GET_PIN(A,7), "pwm1", -1}, /* PWM */ - {D12, GET_PIN(A,6)}, - {D13, GET_PIN(A,5)}, /* LED_BUILTIN */ - {D14, GET_PIN(B,9), "i2c1"}, /* I2C-SDA (Wire) */ - {D15, GET_PIN(B,8), "i2c1"}, /* I2C-SCL (Wire) */ - {D16, GET_PIN(C,13)}, /* USER KEY */ - {A0, GET_PIN(A,0), "adc1", 0}, /* ADC */ - {A1, GET_PIN(A,1), "adc1", 1}, /* ADC */ - {A2, GET_PIN(A,4), "adc1", 4}, /* ADC */ - {A3, GET_PIN(B,0), "adc1", 8}, /* ADC */ - {A4, GET_PIN(C,1), "adc1", 11}, /* ADC */ - {A5, GET_PIN(C,0), "adc1", 10}, /* ADC */ - {A6, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF}, /* ADC, On-Chip: internal reference voltage */ - {A7, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER}, /* ADC, On-Chip: internal temperature sensor */ +const pin_map_t pin_map_table[] = { + { D0, GET_PIN(A, 3), "uart2" }, /* Serial-Rx */ + { D1, GET_PIN(A, 2), "uart2" }, /* Serial-Tx */ + { D2, GET_PIN(A, 10) }, + { D3, GET_PIN(B, 3), "pwm2", 2 }, /* PWM */ + { D4, GET_PIN(B, 5) }, + { D5, GET_PIN(B, 4), "pwm3", 1 }, /* PWM */ + { D6, GET_PIN(B, 10), "pwm2", 3 }, /* PWM */ + { D7, GET_PIN(A, 8) }, + { D8, GET_PIN(A, 9) }, + { D9, GET_PIN(C, 7), "pwm3", 2 }, /* PWM */ + { D10, GET_PIN(B, 6), "pwm4", 1 }, /* PWM */ + { D11, GET_PIN(A, 7), "pwm1", -1 }, /* PWM */ + { D12, GET_PIN(A, 6) }, + { D13, GET_PIN(A, 5) }, /* LED_BUILTIN */ + { D14, GET_PIN(B, 9), "swi2c1" }, /* I2C-SDA (Wire) */ + { D15, GET_PIN(B, 8), "swi2c1" }, /* I2C-SCL (Wire) */ + { D16, GET_PIN(C, 13) }, /* USER KEY */ + { A0, GET_PIN(A, 0), "adc1", 0 }, /* ADC */ + { A1, GET_PIN(A, 1), "adc1", 1 }, /* ADC */ + { A2, GET_PIN(A, 4), "adc1", 4 }, /* ADC */ + { A3, GET_PIN(B, 0), "adc1", 8 }, /* ADC */ + { A4, GET_PIN(C, 1), "adc1", 11 }, /* ADC */ + { A5, GET_PIN(C, 0), "adc1", 10 }, /* ADC */ + { A6, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF }, /* ADC, On-Chip: internal reference voltage */ + { A7, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER }, /* ADC, On-Chip: internal temperature sensor */ }; #ifdef RTDUINO_USING_SPI diff --git a/bsp/stm32/stm32f401-st-nucleo/applications/arduino_pinout/pins_arduino.h b/bsp/stm32/stm32f401-st-nucleo/applications/arduino_pinout/pins_arduino.h index 1a314d4fc488..9d56d2dcc3ad 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 a4ddfc0c2c09..64d3c2f82abe 100644 --- a/bsp/stm32/stm32f401-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32f401-st-nucleo/board/Kconfig @@ -27,8 +27,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM3_CH2 select BSP_USING_PWM4 select BSP_USING_PWM4_CH1 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C1 select BSP_USING_SPI select BSP_USING_SPI1 select BSP_SPI1_TX_USING_DMA @@ -38,6 +39,19 @@ menu "Onboard Peripheral Drivers" imply RTDUINO_USING_SERVO default n + + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if RT_USING_SOFT_I2C1 + endmenu menu "On-chip Peripheral Drivers" @@ -206,30 +220,25 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 Bus (User I2C)" - default n - if BSP_USING_I2C1 - comment "Notice: PB9 --> 25; PB8 --> 24" - config BSP_I2C1_SCL_PIN - int "i2c1 SCL pin number" - range 1 176 - default 24 - config BSP_I2C1_SDA_PIN - int "i2c1 SDA pin number" - range 1 176 - default 25 - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 25 + endif endif - source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig" endmenu diff --git a/bsp/stm32/stm32f401-weact-blackpill/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f401-weact-blackpill/.ci/attachconfig/ci.attachconfig.yml index 2a7fcdfd2753..13f782528280 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 924204820ced..fa6806d05e15 100644 --- a/bsp/stm32/stm32f401-weact-blackpill/applications/arduino_pinout/pins_arduino.c +++ b/bsp/stm32/stm32f401-weact-blackpill/applications/arduino_pinout/pins_arduino.c @@ -19,40 +19,39 @@ * Analog pins MUST give the device name and channel(ADC, PWM or DAC). * Arduino Pin must keep in sequence. */ -const pin_map_t pin_map_table[]= -{ - {D0, GET_PIN(C,13)}, /* LED_BUILTIN */ - {D1, GET_PIN(C,14), "i2c1"}, /* I2C-SDA (Wire) */ - {D2, GET_PIN(C,15), "i2c1"}, /* I2C-SCL (Wire) */ - {D3, GET_PIN(A,2), "uart2"}, /* Serial2-TX */ - {D4, GET_PIN(A,3), "uart2"}, /* Serial2-RX */ - {D5, GET_PIN(B,2)}, - {D6, GET_PIN(B,10)}, - {D7, GET_PIN(B,9), "pwm4", 4}, /* PWM */ - {D8, GET_PIN(B,8), "pwm4", 3}, /* PWM */ - {D9, GET_PIN(B,7), "pwm4", 2}, /* PWM */ - {D10, GET_PIN(B,6), "pwm4", 1}, /* PWM */ - {D11, GET_PIN(B,5)}, - {D12, GET_PIN(B,4)}, - {D13, GET_PIN(B,3)}, - {D14, GET_PIN(A,15)}, - {D15, GET_PIN(A,12)}, - {D16, GET_PIN(A,11)}, - {D17, GET_PIN(A,10), "uart1"}, /* Serial-RX */ - {D18, GET_PIN(A,9), "uart1"}, /* Serial-TX */ - {D19, GET_PIN(A,8)}, - {D20, GET_PIN(B,15), "pwm1", 3}, /* PWM */ - {D21, GET_PIN(B,14), "pwm1", 2}, /* PWM */ - {D22, GET_PIN(B,13), "pwm1", 1}, /* PWM */ - {D23, GET_PIN(B,12)}, - {A0, GET_PIN(A,0), "adc1", 0}, /* ADC */ - {A1, GET_PIN(A,1), "adc1", 1}, /* ADC */ - {A2, GET_PIN(A,4), "adc1", 4}, /* ADC */ - {A3, GET_PIN(A,5), "adc1", 5}, /* ADC */ - {A4, GET_PIN(A,6), "adc1", 6}, /* ADC */ - {A5, GET_PIN(A,7), "adc1", 7}, /* ADC */ - {A6, GET_PIN(B,0), "adc1", 8}, /* ADC */ - {A7, GET_PIN(B,1), "adc1", 9}, /* ADC */ - {A8, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF}, /* ADC, On-Chip: internal reference voltage */ - {A9, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER}, /* ADC, On-Chip: internal temperature sensor */ +const pin_map_t pin_map_table[] = { + { D0, GET_PIN(C, 13) }, /* LED_BUILTIN */ + { D1, GET_PIN(C, 14), "swi2c1" }, /* I2C-SDA (Wire) */ + { D2, GET_PIN(C, 15), "swi2c1" }, /* I2C-SCL (Wire) */ + { D3, GET_PIN(A, 2), "uart2" }, /* Serial2-TX */ + { D4, GET_PIN(A, 3), "uart2" }, /* Serial2-RX */ + { D5, GET_PIN(B, 2) }, + { D6, GET_PIN(B, 10) }, + { D7, GET_PIN(B, 9), "pwm4", 4 }, /* PWM */ + { D8, GET_PIN(B, 8), "pwm4", 3 }, /* PWM */ + { D9, GET_PIN(B, 7), "pwm4", 2 }, /* PWM */ + { D10, GET_PIN(B, 6), "pwm4", 1 }, /* PWM */ + { D11, GET_PIN(B, 5) }, + { D12, GET_PIN(B, 4) }, + { D13, GET_PIN(B, 3) }, + { D14, GET_PIN(A, 15) }, + { D15, GET_PIN(A, 12) }, + { D16, GET_PIN(A, 11) }, + { D17, GET_PIN(A, 10), "uart1" }, /* Serial-RX */ + { D18, GET_PIN(A, 9), "uart1" }, /* Serial-TX */ + { D19, GET_PIN(A, 8) }, + { D20, GET_PIN(B, 15), "pwm1", 3 }, /* PWM */ + { D21, GET_PIN(B, 14), "pwm1", 2 }, /* PWM */ + { D22, GET_PIN(B, 13), "pwm1", 1 }, /* PWM */ + { D23, GET_PIN(B, 12) }, + { A0, GET_PIN(A, 0), "adc1", 0 }, /* ADC */ + { A1, GET_PIN(A, 1), "adc1", 1 }, /* ADC */ + { A2, GET_PIN(A, 4), "adc1", 4 }, /* ADC */ + { A3, GET_PIN(A, 5), "adc1", 5 }, /* ADC */ + { A4, GET_PIN(A, 6), "adc1", 6 }, /* ADC */ + { A5, GET_PIN(A, 7), "adc1", 7 }, /* ADC */ + { A6, GET_PIN(B, 0), "adc1", 8 }, /* ADC */ + { A7, GET_PIN(B, 1), "adc1", 9 }, /* ADC */ + { A8, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF }, /* ADC, On-Chip: internal reference voltage */ + { A9, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER }, /* ADC, On-Chip: internal temperature sensor */ }; diff --git a/bsp/stm32/stm32f401-weact-blackpill/applications/arduino_pinout/pins_arduino.h b/bsp/stm32/stm32f401-weact-blackpill/applications/arduino_pinout/pins_arduino.h index 464900f46667..48e8664fd7ce 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 492a539d266f..f2fcab1b1f48 100644 --- a/bsp/stm32/stm32f401-weact-blackpill/board/Kconfig +++ b/bsp/stm32/stm32f401-weact-blackpill/board/Kconfig @@ -20,12 +20,26 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM4_CH2 select BSP_USING_PWM4_CH3 select BSP_USING_PWM4_CH4 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C1 select RTDUINO_USING_WIRE imply RTDUINO_USING_SERVO default n + + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 47 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 46 if RT_USING_SOFT_I2C1 + endmenu menu "On-chip Peripheral Drivers" @@ -162,21 +176,25 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number (PC15)" - default 47 - config BSP_I2C1_SDA_PIN - int "i2c1 sda pin number (PC14)" - default 46 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 47 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 46 + endif endif - source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig" endmenu @@ -185,4 +203,5 @@ menu "Board extended module Drivers" endmenu + endmenu diff --git a/bsp/stm32/stm32f407-armfly-v5/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f407-armfly-v5/.ci/attachconfig/ci.attachconfig.yml index e4646070a994..92ab22070844 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 613d1cfb85aa..8218079aeea2 100644 --- a/bsp/stm32/stm32f407-armfly-v5/board/Kconfig +++ b/bsp/stm32/stm32f407-armfly-v5/board/Kconfig @@ -24,13 +24,27 @@ menu "Onboard Peripheral Drivers" default n config BSP_USING_MPU6050 - bool "Enable MPU6050(i2c2)" - select BSP_USING_I2C2 + bool "Enable MPU6050(swi2c2)" + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C2 select PKG_USING_MPU6XXX select PKG_USING_MPU6XXX_SAMPLE select PKG_USING_MPU6XXX_LATEST_VERSION default n + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 116 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 117 if RT_USING_SOFT_I2C2 + endmenu menu "On-chip Peripheral Drivers" @@ -143,24 +157,25 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C2 - bool "Enable I2C2 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C2 - comment "Notice: PH4 --> 116; PH5 --> 117" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 1 143 - default 116 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 1 143 - default 117 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 116 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 117 + endif endif - menuconfig BSP_USING_TIM bool "Enable timer" default n @@ -240,4 +255,5 @@ menu "Board extended module Drivers" endmenu + endmenu diff --git a/bsp/stm32/stm32f407-atk-explorer/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f407-atk-explorer/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..42956366977d --- /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 1cd3f3eb6794..454e46f87203 100644 --- a/bsp/stm32/stm32f407-atk-explorer/board/Kconfig +++ b/bsp/stm32/stm32f407-atk-explorer/board/Kconfig @@ -42,8 +42,10 @@ menu "Onboard Peripheral Drivers" default n if BSP_USING_TOUCH config BSP_USING_TOUCH_CAP - bool "Use LCD TOUCH Capacitance (i2c2)" - select BSP_USING_I2C2 + bool "Use LCD TOUCH Capacitance (swi2c2)" + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C2 default n if BSP_USING_TOUCH_CAP config BSP_TOUCH_INT_PIN @@ -100,8 +102,10 @@ menu "Onboard Peripheral Drivers" default n config BSP_USING_EEPROM - bool "Enable I2C EEPROM (i2c1)" - select BSP_USING_I2C1 + bool "Enable I2C EEPROM (swi2c1)" + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C1 default n config BSP_ETH_LEGACY_MODULE_ENABLED @@ -123,9 +127,11 @@ menu "Onboard Peripheral Drivers" default y config BSP_USING_MPU6050 - bool "Enable MPU6050 (i2c1)" + bool "Enable MPU6050 (swi2c1)" default n - select BSP_USING_I2C1 + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C1 select PKG_USING_MPU6XXX menuconfig BSP_USING_CAN @@ -163,6 +169,30 @@ menu "Onboard Peripheral Drivers" default n endif + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 16 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 91 if RT_USING_SOFT_I2C2 + endmenu menu "On-chip Peripheral Drivers" @@ -508,40 +538,38 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 143 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 143 - default 25 - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 25 + endif - menuconfig BSP_USING_I2C2 - bool "Enable LCD Touch BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number, PB0" - range 0 143 - default 16 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number, PF11" - range 0 143 - default 91 + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 16 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 91 + endif endif - menuconfig BSP_USING_DAC bool "Enable DAC" default n @@ -663,4 +691,5 @@ menu "Board extended module Drivers" endmenu + endmenu diff --git a/bsp/stm32/stm32f407-atk-explorer/board/ports/touch/drv_touch.c b/bsp/stm32/stm32f407-atk-explorer/board/ports/touch/drv_touch.c index 66f63d9525d3..aa13e2458c84 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 000000000000..42956366977d --- /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 97bf737ac205..a4b907076be0 100644 --- a/bsp/stm32/stm32f407-fk407m2-zgt6/board/Kconfig +++ b/bsp/stm32/stm32f407-fk407m2-zgt6/board/Kconfig @@ -366,42 +366,38 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable soft I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 143 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 143 - default 25 - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 25 + endif - menuconfig BSP_USING_I2C2 - bool "Enable I2C2 BUS (software simulation)" - default n - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 0 143 - default 16 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 143 - default 91 - endif + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 16 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 91 + endif endif - menuconfig BSP_USING_DAC bool "Enable DAC" default n @@ -492,4 +488,28 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 16 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 91 if RT_USING_SOFT_I2C2 + endmenu diff --git a/bsp/stm32/stm32f407-lckfb-skystar/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f407-lckfb-skystar/.ci/attachconfig/ci.attachconfig.yml index e4646070a994..12d7fdc2c90c 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 606c7725517f..0a9ad19cad26 100644 --- a/bsp/stm32/stm32f407-lckfb-skystar/board/Kconfig +++ b/bsp/stm32/stm32f407-lckfb-skystar/board/Kconfig @@ -439,28 +439,25 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n - if BSP_USING_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 143 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 143 - default 25 - endif + select RT_USING_I2C + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 25 + endif endif - config BSP_USING_ONBOARD_PM bool "Enable Power Management" select RT_USING_PM @@ -538,4 +535,16 @@ menu "On-chip Peripheral Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/stm32/stm32f407-micu/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f407-micu/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..8b33403ed07d --- /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 25202dfa2f1b..aa364c3b0bc4 100644 --- a/bsp/stm32/stm32f407-micu/board/Kconfig +++ b/bsp/stm32/stm32f407-micu/board/Kconfig @@ -25,22 +25,48 @@ menu "Onboard Peripheral Drivers" default n config BSP_USING_AHT20 - bool "Enable AHT20(i2c1)" - select BSP_USING_I2C - select BSP_USING_I2C1 + bool "Enable AHT20(swi2c1)" + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C1 select PKG_USING_SENSORS_DRIVERS select PKG_USING_AHT10 default n config BSP_USING_ICM20608 - bool "Enable ICM20608(i2c1)" - select BSP_USING_I2C - select BSP_USING_I2C1 + bool "Enable ICM20608(swi2c1)" + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C1 select PKG_USING_SENSORS_DRIVERS select PKG_USING_ICM20608 default n + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + endmenu menu "On-chip Peripheral Drivers" @@ -135,45 +161,38 @@ menu "On-chip Peripheral Drivers" endchoice endif - menuconfig BSP_USING_I2C - bool "Enable I2C" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n - if BSP_USING_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 143 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 143 - default 23 - endif - - 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 + select RT_USING_I2C + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 26 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 27 + endif endif - menuconfig BSP_USING_TIM bool "Enable timer" default n @@ -245,8 +264,9 @@ menu "Board extended module Drivers" config BSP_USING_SSD1306 bool "Enable SSD1306 OLED" - select BSP_USING_I2C - select BSP_USING_I2C2 + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C2 select PKG_USING_SSD1306 default n help @@ -255,4 +275,5 @@ menu "Board extended module Drivers" endmenu -endmenu \ No newline at end of file + +endmenu diff --git a/bsp/stm32/stm32f407-robomaster-c/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f407-robomaster-c/.ci/attachconfig/ci.attachconfig.yml index 2a7fcdfd2753..51f84c2e7451 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 e10553753073..db3498e2ca3d 100644 --- a/bsp/stm32/stm32f407-robomaster-c/applications/arduino_pinout/pins_arduino.c +++ b/bsp/stm32/stm32f407-robomaster-c/applications/arduino_pinout/pins_arduino.c @@ -19,22 +19,21 @@ * Analog pins MUST give the device name and channel(ADC, PWM or DAC). * Arduino Pin must keep in sequence. */ -const pin_map_t pin_map_table[]= -{ - {D0, GET_PIN(H,11)}, /* LED_BUILTIN */ - {D1, GET_PIN(B,7), "uart1"}, /* Serial-RX */ - {D2, GET_PIN(A,9), "uart1"}, /* Serial-TX */ - {D3, GET_PIN(G,9), "uart6"}, /* Serial-RX */ - {D4, GET_PIN(G,14), "uart6"}, /* Serial-TX */ - {D5, GET_PIN(F,1), "i2c1"}, /* I2C-SCL (Wire) */ - {D6, GET_PIN(F,0), "i2c1"}, /* I2C-SDA (Wire) */ - {D7, GET_PIN(E,9), "pwm1", 1}, /* PWM */ - {D8, GET_PIN(E,11), "pwm1", 2}, /* PWM */ - {D9, GET_PIN(E,13), "pwm1", 3}, /* PWM */ - {D10, GET_PIN(E,14), "pwm1", 4}, /* PWM */ - {D11, GET_PIN(C,6), "pwm8", 1}, /* PWM */ - {D12, GET_PIN(I,6), "pwm8", 2}, /* PWM */ - {D13, GET_PIN(I,7), "pwm8", 3}, /* PWM */ - {A0, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF}, /* ADC, On-Chip: internal temperature sensor */ - {A1, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER}, /* ADC, On-Chip: internal reference voltage */ +const pin_map_t pin_map_table[] = { + { D0, GET_PIN(H, 11) }, /* LED_BUILTIN */ + { D1, GET_PIN(B, 7), "uart1" }, /* Serial-RX */ + { D2, GET_PIN(A, 9), "uart1" }, /* Serial-TX */ + { D3, GET_PIN(G, 9), "uart6" }, /* Serial-RX */ + { D4, GET_PIN(G, 14), "uart6" }, /* Serial-TX */ + { D5, GET_PIN(F, 1), "swi2c1" }, /* I2C-SCL (Wire) */ + { D6, GET_PIN(F, 0), "swi2c1" }, /* I2C-SDA (Wire) */ + { D7, GET_PIN(E, 9), "pwm1", 1 }, /* PWM */ + { D8, GET_PIN(E, 11), "pwm1", 2 }, /* PWM */ + { D9, GET_PIN(E, 13), "pwm1", 3 }, /* PWM */ + { D10, GET_PIN(E, 14), "pwm1", 4 }, /* PWM */ + { D11, GET_PIN(C, 6), "pwm8", 1 }, /* PWM */ + { D12, GET_PIN(I, 6), "pwm8", 2 }, /* PWM */ + { D13, GET_PIN(I, 7), "pwm8", 3 }, /* PWM */ + { A0, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF }, /* ADC, On-Chip: internal temperature sensor */ + { A1, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER }, /* ADC, On-Chip: internal reference voltage */ }; diff --git a/bsp/stm32/stm32f407-robomaster-c/applications/arduino_pinout/pins_arduino.h b/bsp/stm32/stm32f407-robomaster-c/applications/arduino_pinout/pins_arduino.h index b88d64ce55f9..772bca72c053 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 bd123367be3d..5a07ae8c6b46 100644 --- a/bsp/stm32/stm32f407-robomaster-c/board/Kconfig +++ b/bsp/stm32/stm32f407-robomaster-c/board/Kconfig @@ -19,12 +19,26 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM8_CH1 select BSP_USING_PWM8_CH2 select BSP_USING_PWM8_CH3 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C1 select RTDUINO_USING_WIRE imply RTDUINO_USING_SERVO default n + + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 81 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 80 if RT_USING_SOFT_I2C1 + endmenu menu "On-chip Peripheral Drivers" @@ -257,23 +271,25 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - comment "Notice: PF0 --> 80; PF1 --> 81" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - default 81 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - default 80 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 81 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 80 + endif endif - - source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig" endmenu @@ -282,4 +298,5 @@ menu "Board extended module Drivers" endmenu + endmenu diff --git a/bsp/stm32/stm32f407-rt-spark/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f407-rt-spark/.ci/attachconfig/ci.attachconfig.yml index a823a64aebe2..a2bddc743c60 100644 --- a/bsp/stm32/stm32f407-rt-spark/.ci/attachconfig/ci.attachconfig.yml +++ b/bsp/stm32/stm32f407-rt-spark/.ci/attachconfig/ci.attachconfig.yml @@ -246,3 +246,29 @@ component.cherryusb_cdc: - CONFIG_RT_CHERRYUSB_DEVICE_DWC2_ST=y - CONFIG_RT_CHERRYUSB_DEVICE_CDC_ACM=y - CONFIG_RT_CHERRYUSB_DEVICE_TEMPLATE_CDC_ACM=y + +devices.soft_i2c: + <<: *scons + kconfig: + - CONFIG_RT_USING_I2C=y + - CONFIG_RT_USING_SOFT_I2C=y + - CONFIG_RT_USING_SOFT_I2C1=y + - CONFIG_RT_SOFT_I2C1_SCL_PIN=24 + - CONFIG_RT_SOFT_I2C1_SDA_PIN=25 + - CONFIG_RT_SOFT_I2C1_BUS_NAME="swi2c1" + - CONFIG_RT_USING_SOFT_I2C2=y + - CONFIG_RT_SOFT_I2C2_SCL_PIN=81 + - CONFIG_RT_SOFT_I2C2_SDA_PIN=80 + - CONFIG_RT_SOFT_I2C2_BUS_NAME="swi2c2" + - CONFIG_RT_USING_SOFT_I2C3=y + - CONFIG_RT_SOFT_I2C3_SCL_PIN=64 + - CONFIG_RT_SOFT_I2C3_SDA_PIN=65 + - CONFIG_RT_SOFT_I2C3_BUS_NAME="swi2c3" + - CONFIG_RT_USING_SOFT_I2C4=y + - CONFIG_RT_SOFT_I2C4_SCL_PIN=103 + - CONFIG_RT_SOFT_I2C4_SDA_PIN=55 + - CONFIG_RT_SOFT_I2C4_BUS_NAME="swi2c4" + - CONFIG_RT_USING_SOFT_I2C5=y + - CONFIG_RT_SOFT_I2C5_SCL_PIN=22 + - CONFIG_RT_SOFT_I2C5_SDA_PIN=23 + - CONFIG_RT_SOFT_I2C5_BUS_NAME="swi2c5" diff --git a/bsp/stm32/stm32f407-rt-spark/applications/arduino_pinout/pins_arduino.c b/bsp/stm32/stm32f407-rt-spark/applications/arduino_pinout/pins_arduino.c index 3ca3a980b797..8746c939d0c4 100644 --- a/bsp/stm32/stm32f407-rt-spark/applications/arduino_pinout/pins_arduino.c +++ b/bsp/stm32/stm32f407-rt-spark/applications/arduino_pinout/pins_arduino.c @@ -19,51 +19,50 @@ * Analog pins MUST give the device name and channel(ADC, PWM or DAC). * Arduino Pin must keep in sequence. */ -const pin_map_t pin_map_table[]= -{ - {D0, GET_PIN(A, 10), "uart1"}, /* Serial-RX */ - {D1, GET_PIN(A, 9), "uart1"}, /* Serial-TX */ - {D2, GET_PIN(A, 8)}, - {D3, GET_PIN(B, 10), "pwm2", 3}, /* PWM */ - {D4, GET_PIN(A, 1)}, - {D5, GET_PIN(B, 14)}, - {D6, GET_PIN(B, 11), "pwm2", 4}, /* PWM */ - {D7, GET_PIN(B, 15)}, - {D8, GET_PIN(F, 15)}, - {D9, GET_PIN(E, 11), "pwm1", 2}, /* PWM */ - {D10, GET_PIN(E, 13), "pwm1", 3}, /* PWM */ - {D11, GET_PIN(D, 12), "pwm4", 1}, /* PWM */ - {D12, GET_PIN(D, 10)}, - {D13, GET_PIN(D, 8)}, - {D14, GET_PIN(E, 14)}, - {D15, GET_PIN(E, 12)}, - {D16, GET_PIN(E, 15)}, - {D17, GET_PIN(D, 9)}, - {D18, GET_PIN(G, 2)}, - {D19, GET_PIN(B, 2)}, - {D20, GET_PIN(G, 0)}, - {D21, GET_PIN(A, 0)}, - {D22, GET_PIN(G, 5), "sspi1"}, /* SOFT-SPI-SCK */ - {D23, GET_PIN(G, 3), "sspi1"}, /* SOFT-SPI-MISO */ - {D24, GET_PIN(G, 1), "sspi1"}, /* SOFT-SPI-MOSI */ - {D25, GET_PIN(G, 7), "i2c4"}, /* I2C-SCL (Wire) */ - {D26, GET_PIN(D, 7), "i2c4"}, /* I2C-SDA (Wire) */ - {D27, GET_PIN(B, 6), "i2c5"}, /* I2C-SCL (Wire) */ - {D28, GET_PIN(B, 7), "i2c5"}, /* I2C-SDA (Wire) */ - {D29, GET_PIN(G, 6)}, /* SPI-SS */ - {D30, GET_PIN(G, 4)}, - {D31, GET_PIN(A, 2), "uart2"}, /* Serial2-TX */ - {D32, GET_PIN(A, 3), "uart2"}, /* Serial2-RX */ - {D33, GET_PIN(F, 12)}, /* On-Board R_LED */ - {D34, GET_PIN(F, 11)}, /* On-Board B_LED */ - {D35, GET_PIN(B, 0)}, /* On_Board Buzzer */ - {D36, GET_PIN(C, 5)}, /* On-Board KEY_UP */ - {D37, GET_PIN(C, 1)}, /* On-Board KEY_DOWM */ - {D38, GET_PIN(C, 0)}, /* On-Board KEY_LEFT */ - {D39, GET_PIN(C, 4)}, /* On-Board KEY_RIGHT */ - {A0, GET_PIN(F, 6), "adc3", 4}, /* ADC */ - {A1, GET_PIN(F, 7), "adc3", 5}, /* ADC */ - {A2, GET_PIN(F, 4), "adc3", 14}, /* ADC */ - {A3, GET_PIN(F, 5), "adc3", 15}, /* ADC */ - {DAC0, GET_PIN(A, 4), "dac1", 1}, /* DAC */ +const pin_map_t pin_map_table[] = { + { D0, GET_PIN(A, 10), "uart1" }, /* Serial-RX */ + { D1, GET_PIN(A, 9), "uart1" }, /* Serial-TX */ + { D2, GET_PIN(A, 8) }, + { D3, GET_PIN(B, 10), "pwm2", 3 }, /* PWM */ + { D4, GET_PIN(A, 1) }, + { D5, GET_PIN(B, 14) }, + { D6, GET_PIN(B, 11), "pwm2", 4 }, /* PWM */ + { D7, GET_PIN(B, 15) }, + { D8, GET_PIN(F, 15) }, + { D9, GET_PIN(E, 11), "pwm1", 2 }, /* PWM */ + { D10, GET_PIN(E, 13), "pwm1", 3 }, /* PWM */ + { D11, GET_PIN(D, 12), "pwm4", 1 }, /* PWM */ + { D12, GET_PIN(D, 10) }, + { D13, GET_PIN(D, 8) }, + { D14, GET_PIN(E, 14) }, + { D15, GET_PIN(E, 12) }, + { D16, GET_PIN(E, 15) }, + { D17, GET_PIN(D, 9) }, + { D18, GET_PIN(G, 2) }, + { D19, GET_PIN(B, 2) }, + { D20, GET_PIN(G, 0) }, + { D21, GET_PIN(A, 0) }, + { D22, GET_PIN(G, 5), "sspi1" }, /* SOFT-SPI-SCK */ + { D23, GET_PIN(G, 3), "sspi1" }, /* SOFT-SPI-MISO */ + { D24, GET_PIN(G, 1), "sspi1" }, /* SOFT-SPI-MOSI */ + { D25, GET_PIN(G, 7), "swi2c4" }, /* I2C-SCL (Wire) */ + { D26, GET_PIN(D, 7), "swi2c4" }, /* I2C-SDA (Wire) */ + { D27, GET_PIN(B, 6), "swi2c5" }, /* I2C-SCL (Wire) */ + { D28, GET_PIN(B, 7), "swi2c5" }, /* I2C-SDA (Wire) */ + { D29, GET_PIN(G, 6) }, /* SPI-SS */ + { D30, GET_PIN(G, 4) }, + { D31, GET_PIN(A, 2), "uart2" }, /* Serial2-TX */ + { D32, GET_PIN(A, 3), "uart2" }, /* Serial2-RX */ + { D33, GET_PIN(F, 12) }, /* On-Board R_LED */ + { D34, GET_PIN(F, 11) }, /* On-Board B_LED */ + { D35, GET_PIN(B, 0) }, /* On_Board Buzzer */ + { D36, GET_PIN(C, 5) }, /* On-Board KEY_UP */ + { D37, GET_PIN(C, 1) }, /* On-Board KEY_DOWM */ + { D38, GET_PIN(C, 0) }, /* On-Board KEY_LEFT */ + { D39, GET_PIN(C, 4) }, /* On-Board KEY_RIGHT */ + { A0, GET_PIN(F, 6), "adc3", 4 }, /* ADC */ + { A1, GET_PIN(F, 7), "adc3", 5 }, /* ADC */ + { A2, GET_PIN(F, 4), "adc3", 14 }, /* ADC */ + { A3, GET_PIN(F, 5), "adc3", 15 }, /* ADC */ + { DAC0, GET_PIN(A, 4), "dac1", 1 }, /* DAC */ }; diff --git a/bsp/stm32/stm32f407-rt-spark/applications/arduino_pinout/pins_arduino.h b/bsp/stm32/stm32f407-rt-spark/applications/arduino_pinout/pins_arduino.h index 12b7d6088535..54ea7daea3d1 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 a003330564fd..1f686d255c65 100644 --- a/bsp/stm32/stm32f407-rt-spark/board/Kconfig +++ b/bsp/stm32/stm32f407-rt-spark/board/Kconfig @@ -22,9 +22,10 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM2_CH4 select BSP_USING_PWM4 select BSP_USING_PWM4_CH1 - select BSP_USING_I2C - select BSP_USING_I2C4 - select BSP_USING_I2C5 + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C4 + select BSP_USING_SOFT_I2C5 select BSP_USING_SOFT_SPI select BSP_USING_SOFT_SPI1 imply RTDUINO_USING_SERVO @@ -123,8 +124,10 @@ menu "Onboard Peripheral Drivers" default n config BSP_USING_EEPROM - bool "Enable I2C EEPROM (i2c1)" - select BSP_USING_I2C1 + bool "Enable I2C EEPROM (swi2c1)" + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C1 default n config BSP_USING_ENC28j60 @@ -213,25 +216,28 @@ menu "Onboard Peripheral Drivers" endif config BSP_USING_AHT21 - bool "Enable AHT21(i2c3)" - select BSP_USING_I2C - select BSP_USING_I2C3 + bool "Enable AHT21(swi2c3)" + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C3 select PKG_USING_SENSORS_DRIVERS select PKG_USING_AHT10 default n config BSP_USING_AP3216C - bool "Enable AP3216C(i2c2)" - select BSP_USING_I2C - select BSP_USING_I2C2 + bool "Enable AP3216C(swi2c2)" + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C2 select PKG_USING_SENSORS_DRIVERS select PKG_USING_AP3216C default n config BSP_USING_ICM20608 - bool "Enable ICM20608(i2c2)" - select BSP_USING_I2C - select BSP_USING_I2C2 + bool "Enable ICM20608(swi2c2)" + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C2 select PKG_USING_SENSORS_DRIVERS select PKG_USING_ICM20608 default n @@ -256,8 +262,9 @@ menu "Onboard Peripheral Drivers" menuconfig BSP_USING_AUDIO bool "Enable Audio Device" select RT_USING_AUDIO - select BSP_USING_I2C - select BSP_USING_I2C2 + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C2 default n if BSP_USING_AUDIO @@ -271,6 +278,67 @@ menu "Onboard Peripheral Drivers" endif + + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 81 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 80 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C3_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SCL_PIN_DEFAULT + int + default 64 if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SDA_PIN_DEFAULT + int + default 65 if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C4_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C4 + + config RT_SOFT_I2C4_SCL_PIN_DEFAULT + int + default 103 if RT_USING_SOFT_I2C4 + + config RT_SOFT_I2C4_SDA_PIN_DEFAULT + int + default 55 if RT_USING_SOFT_I2C4 + + config RT_SOFT_I2C5_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C5 + + config RT_SOFT_I2C5_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C5 + + config RT_SOFT_I2C5_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C5 + endmenu menu "On-chip Peripheral Drivers" @@ -660,96 +728,77 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n - if BSP_USING_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 143 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 143 - default 25 - endif + select RT_USING_I2C + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 25 + endif - menuconfig BSP_USING_I2C2 - bool "Enable I2C2 BUS for AP3216C/ICM20608/ES8388/ Onboard(software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number, PF1" - range 0 143 - default 81 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number, PF0" - range 0 143 - default 80 - endif + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 81 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 80 + endif - menuconfig BSP_USING_I2C3 - bool "Enable I2C3 BUS for AHT21 Onboard(software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C3 - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number, PE0" - range 0 143 - default 64 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number, PE1" - range 0 143 - default 65 - endif - - menuconfig BSP_USING_I2C4 - bool "Enable I2C4 BUS for RTduino(software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C4 - config BSP_I2C4_SCL_PIN - int "i2c4 scl pin number, PG7" - range 0 143 - default 103 - config BSP_I2C4_SDA_PIN - int "I2C4 sda pin number, PD7" - range 0 143 - default 55 - endif - - menuconfig BSP_USING_I2C5 - bool "Enable I2C5 BUS for RTduino(software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C5 - config BSP_I2C5_SCL_PIN - int "i2c5 scl pin number, PB6" - range 0 143 - default 22 - config BSP_I2C5_SDA_PIN - int "I2C5 sda pin number, PB7" - range 0 143 - default 23 - endif - endif + menuconfig BSP_USING_SOFT_I2C3 + bool "Enable software I2C3 Bus (swi2c3)" + default n + select RT_USING_SOFT_I2C3 + if BSP_USING_SOFT_I2C3 + config RT_SOFT_I2C3_SCL_PIN + int "swi2c3 SCL pin number" + default 64 + config RT_SOFT_I2C3_SDA_PIN + int "swi2c3 SDA pin number" + default 65 + endif + menuconfig BSP_USING_SOFT_I2C4 + bool "Enable software I2C4 Bus (swi2c4)" + default n + select RT_USING_SOFT_I2C4 + if BSP_USING_SOFT_I2C4 + config RT_SOFT_I2C4_SCL_PIN + int "swi2c4 SCL pin number" + default 103 + config RT_SOFT_I2C4_SDA_PIN + int "swi2c4 SDA pin number" + default 55 + endif + + menuconfig BSP_USING_SOFT_I2C5 + bool "Enable software I2C5 Bus (swi2c5)" + default n + select RT_USING_SOFT_I2C5 + if BSP_USING_SOFT_I2C5 + config RT_SOFT_I2C5_SCL_PIN + int "swi2c5 SCL pin number" + default 22 + config RT_SOFT_I2C5_SDA_PIN + int "swi2c5 SDA pin number" + default 23 + endif + endif config BSP_USING_ONBOARD_PM bool "Enable Power Management" select RT_USING_PM @@ -877,4 +926,5 @@ menu "Board extended module Drivers" endmenu + endmenu diff --git a/bsp/stm32/stm32f407-rt-spark/board/ports/audio/drv_mic.c b/bsp/stm32/stm32f407-rt-spark/board/ports/audio/drv_mic.c index 04f485e2469e..ae642b0d4779 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 fba50f9c5b6f..6505443ec1a3 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 e4646070a994..12d7fdc2c90c 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 21a2adf70a19..590ed2c7bcd7 100644 --- a/bsp/stm32/stm32f407-st-discovery/board/Kconfig +++ b/bsp/stm32/stm32f407-st-discovery/board/Kconfig @@ -76,21 +76,24 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 25 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 25 + endif endif source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig" @@ -100,4 +103,16 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/stm32/stm32f410-st-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f410-st-nucleo/.ci/attachconfig/ci.attachconfig.yml index 2a7fcdfd2753..a863524b0707 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 4ee6168858a8..8b80688bc547 100644 --- a/bsp/stm32/stm32f410-st-nucleo/applications/arduino_pinout/pins_arduino.c +++ b/bsp/stm32/stm32f410-st-nucleo/applications/arduino_pinout/pins_arduino.c @@ -19,31 +19,30 @@ * Analog pins MUST give the device name and channel(ADC, PWM or DAC). * Arduino Pin must keep in sequence. */ -const pin_map_t pin_map_table[]= -{ - {D0, GET_PIN(A,3), "uart2"}, /* Serial-RX */ - {D1, GET_PIN(A,2), "uart2"}, /* Serial-TX */ - {D2, GET_PIN(A,10), "pwm1", 3}, /* PWM */ - {D3, GET_PIN(B,3)}, - {D4, GET_PIN(B,5)}, - {D5, GET_PIN(B,4)}, - {D6, GET_PIN(B,10)}, - {D7, GET_PIN(A,8)}, - {D8, GET_PIN(A,9), "pwm1", 2}, /* PWM */ - {D9, GET_PIN(C,7)}, - {D10, GET_PIN(B,6)}, - {D11, GET_PIN(A,7), "pwm1", -1}, /* PWM */ - {D12, GET_PIN(A,6)}, - {D13, GET_PIN(A,5)}, /* LED_BUILTIN */ - {D14, GET_PIN(B,9), "i2c1"}, /* I2C-SDA (Wire) */ - {D15, GET_PIN(B,8), "i2c1"}, /* I2C-SCL (Wire) */ - {D16, GET_PIN(C,13)}, /* USER KEY */ - {A0, GET_PIN(A,0), "adc1", 0}, /* ADC */ - {A1, GET_PIN(A,1), "adc1", 1}, /* ADC */ - {A2, GET_PIN(A,4), "adc1", 4}, /* ADC */ - {A3, GET_PIN(B,0), "adc1", 8}, /* ADC */ - {A4, GET_PIN(C,1), "adc1", 11}, /* ADC */ - {A5, GET_PIN(C,0), "adc1", 10}, /* ADC */ - {A6, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF}, /* ADC, On-Chip: internal reference voltage */ - {A7, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER}, /* ADC, On-Chip: internal temperature sensor */ +const pin_map_t pin_map_table[] = { + { D0, GET_PIN(A, 3), "uart2" }, /* Serial-RX */ + { D1, GET_PIN(A, 2), "uart2" }, /* Serial-TX */ + { D2, GET_PIN(A, 10), "pwm1", 3 }, /* PWM */ + { D3, GET_PIN(B, 3) }, + { D4, GET_PIN(B, 5) }, + { D5, GET_PIN(B, 4) }, + { D6, GET_PIN(B, 10) }, + { D7, GET_PIN(A, 8) }, + { D8, GET_PIN(A, 9), "pwm1", 2 }, /* PWM */ + { D9, GET_PIN(C, 7) }, + { D10, GET_PIN(B, 6) }, + { D11, GET_PIN(A, 7), "pwm1", -1 }, /* PWM */ + { D12, GET_PIN(A, 6) }, + { D13, GET_PIN(A, 5) }, /* LED_BUILTIN */ + { D14, GET_PIN(B, 9), "swi2c1" }, /* I2C-SDA (Wire) */ + { D15, GET_PIN(B, 8), "swi2c1" }, /* I2C-SCL (Wire) */ + { D16, GET_PIN(C, 13) }, /* USER KEY */ + { A0, GET_PIN(A, 0), "adc1", 0 }, /* ADC */ + { A1, GET_PIN(A, 1), "adc1", 1 }, /* ADC */ + { A2, GET_PIN(A, 4), "adc1", 4 }, /* ADC */ + { A3, GET_PIN(B, 0), "adc1", 8 }, /* ADC */ + { A4, GET_PIN(C, 1), "adc1", 11 }, /* ADC */ + { A5, GET_PIN(C, 0), "adc1", 10 }, /* ADC */ + { A6, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF }, /* ADC, On-Chip: internal reference voltage */ + { A7, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER }, /* ADC, On-Chip: internal temperature sensor */ }; diff --git a/bsp/stm32/stm32f410-st-nucleo/applications/arduino_pinout/pins_arduino.h b/bsp/stm32/stm32f410-st-nucleo/applications/arduino_pinout/pins_arduino.h index f9def347059b..25b1685896f0 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 990d6df3f61a..6843eb316ee2 100644 --- a/bsp/stm32/stm32f410-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32f410-st-nucleo/board/Kconfig @@ -19,11 +19,25 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM1_CH3 select BSP_USING_PWM1_CH2 select BSP_USING_PWM1_CH1 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C1 select RTDUINO_USING_WIRE imply RTDUINO_USING_SERVO default n + + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if RT_USING_SOFT_I2C1 + endmenu menu "On-chip Peripheral Drivers" @@ -142,24 +156,25 @@ menu "On-chip Peripheral Drivers" endif endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - comment "Notice: PB8 --> 24; PB9 --> 25" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 80 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 80 - default 25 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 25 + endif endif - source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig" endmenu @@ -168,4 +183,5 @@ menu "Board extended module Drivers" endmenu + endmenu diff --git a/bsp/stm32/stm32f411-atk-nano/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f411-atk-nano/.ci/attachconfig/ci.attachconfig.yml index e4646070a994..bafb8dec3cda 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 fbb264b09df0..5b273459037f 100644 --- a/bsp/stm32/stm32f411-atk-nano/board/Kconfig +++ b/bsp/stm32/stm32f411-atk-nano/board/Kconfig @@ -9,8 +9,10 @@ menu "Onboard Peripheral Drivers" default y config BSP_USING_EEPROM - bool "Enable I2C EEPROM (i2c1)" - select BSP_USING_I2C1 + bool "Enable I2C EEPROM (swi2c1)" + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C1 default n config BSP_USING_SPI_FLASH @@ -27,6 +29,18 @@ menu "Onboard Peripheral Drivers" select BSP_USING_ADC1 default n + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + endmenu menu "On-chip Peripheral Drivers" @@ -151,22 +165,24 @@ menu "On-chip Peripheral Drivers" select BSP_SPI2_TX_USING_DMA default n endif - - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif endif menuconfig BSP_USING_ADC @@ -213,4 +229,5 @@ menu "Board extended module Drivers" endmenu + endmenu diff --git a/bsp/stm32/stm32f411-st-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f411-st-nucleo/.ci/attachconfig/ci.attachconfig.yml index 2a7fcdfd2753..a863524b0707 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 716fd2318cd0..027677b3ed29 100644 --- a/bsp/stm32/stm32f411-st-nucleo/applications/arduino_pinout/pins_arduino.c +++ b/bsp/stm32/stm32f411-st-nucleo/applications/arduino_pinout/pins_arduino.c @@ -23,33 +23,32 @@ * Analog pins MUST give the device name and channel(ADC, PWM or DAC). * Arduino Pin must keep in sequence. */ -const pin_map_t pin_map_table[]= -{ - {D0, GET_PIN(A,3), "uart2"}, /* Serial-RX */ - {D1, GET_PIN(A,2), "uart2"}, /* Serial-TX */ - {D2, GET_PIN(A,10)}, - {D3, GET_PIN(B,3), "pwm2", 2}, /* PWM */ - {D4, GET_PIN(B,5)}, - {D5, GET_PIN(B,4), "pwm3", 1}, /* PWM */ - {D6, GET_PIN(B,10), "pwm2", 3}, /* PWM */ - {D7, GET_PIN(A,8)}, - {D8, GET_PIN(A,9)}, - {D9, GET_PIN(C,7), "pwm3", 2}, /* PWM */ - {D10, GET_PIN(B,6), "pwm4", 1}, /* PWM */ - {D11, GET_PIN(A,7), "pwm1", -1}, /* PWM */ - {D12, GET_PIN(A,6)}, - {D13, GET_PIN(A,5)}, /* LED_BUILTIN */ - {D14, GET_PIN(B,9), "i2c1"}, /* I2C-SDA (Wire) */ - {D15, GET_PIN(B,8), "i2c1"}, /* I2C-SCL (Wire) */ - {D16, GET_PIN(C,13)}, - {A0, GET_PIN(A,0), "adc1", 0}, /* ADC */ - {A1, GET_PIN(A,1), "adc1", 1}, /* ADC */ - {A2, GET_PIN(A,4), "adc1", 4}, /* ADC */ - {A3, GET_PIN(B,0), "adc1", 8}, /* ADC */ - {A4, GET_PIN(C,1), "adc1", 11}, /* ADC */ - {A5, GET_PIN(C,0), "adc1", 10}, /* ADC */ - {A6, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF}, /* ADC, On-Chip: internal reference voltage */ - {A7, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER}, /* ADC, On-Chip: internal temperature sensor */ +const pin_map_t pin_map_table[] = { + { D0, GET_PIN(A, 3), "uart2" }, /* Serial-RX */ + { D1, GET_PIN(A, 2), "uart2" }, /* Serial-TX */ + { D2, GET_PIN(A, 10) }, + { D3, GET_PIN(B, 3), "pwm2", 2 }, /* PWM */ + { D4, GET_PIN(B, 5) }, + { D5, GET_PIN(B, 4), "pwm3", 1 }, /* PWM */ + { D6, GET_PIN(B, 10), "pwm2", 3 }, /* PWM */ + { D7, GET_PIN(A, 8) }, + { D8, GET_PIN(A, 9) }, + { D9, GET_PIN(C, 7), "pwm3", 2 }, /* PWM */ + { D10, GET_PIN(B, 6), "pwm4", 1 }, /* PWM */ + { D11, GET_PIN(A, 7), "pwm1", -1 }, /* PWM */ + { D12, GET_PIN(A, 6) }, + { D13, GET_PIN(A, 5) }, /* LED_BUILTIN */ + { D14, GET_PIN(B, 9), "swi2c1" }, /* I2C-SDA (Wire) */ + { D15, GET_PIN(B, 8), "swi2c1" }, /* I2C-SCL (Wire) */ + { D16, GET_PIN(C, 13) }, + { A0, GET_PIN(A, 0), "adc1", 0 }, /* ADC */ + { A1, GET_PIN(A, 1), "adc1", 1 }, /* ADC */ + { A2, GET_PIN(A, 4), "adc1", 4 }, /* ADC */ + { A3, GET_PIN(B, 0), "adc1", 8 }, /* ADC */ + { A4, GET_PIN(C, 1), "adc1", 11 }, /* ADC */ + { A5, GET_PIN(C, 0), "adc1", 10 }, /* ADC */ + { A6, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF }, /* ADC, On-Chip: internal reference voltage */ + { A7, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER }, /* ADC, On-Chip: internal temperature sensor */ }; #ifdef RTDUINO_USING_SPI diff --git a/bsp/stm32/stm32f411-st-nucleo/applications/arduino_pinout/pins_arduino.h b/bsp/stm32/stm32f411-st-nucleo/applications/arduino_pinout/pins_arduino.h index 504b7464275f..5cb67c343742 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 9c4c0c3466df..c7544d7fd414 100644 --- a/bsp/stm32/stm32f411-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32f411-st-nucleo/board/Kconfig @@ -27,8 +27,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM3_CH2 select BSP_USING_PWM4_CH1 select BSP_USING_PWM1_CH1 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C1 select BSP_USING_SPI select BSP_USING_SPI1 select BSP_SPI1_TX_USING_DMA @@ -38,6 +39,19 @@ menu "Onboard Peripheral Drivers" imply RTDUINO_USING_SERVO default n + + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if RT_USING_SOFT_I2C1 + endmenu menu "On-chip Peripheral Drivers" @@ -134,24 +148,25 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - comment "Notice: PB8 --> 24; PB9 --> 25" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 80 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 80 - default 25 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 25 + endif endif - menuconfig BSP_USING_PWM bool "Enable PWM" default n @@ -287,4 +302,5 @@ menu "Board extended module Drivers" endmenu + endmenu diff --git a/bsp/stm32/stm32f411-weact-blackpill/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f411-weact-blackpill/.ci/attachconfig/ci.attachconfig.yml index 2a7fcdfd2753..265ebbf9742f 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 b54e02e55e0d..0bd2b34f19f1 100644 --- a/bsp/stm32/stm32f411-weact-blackpill/applications/arduino_pinout/pins_arduino.c +++ b/bsp/stm32/stm32f411-weact-blackpill/applications/arduino_pinout/pins_arduino.c @@ -19,40 +19,39 @@ * Analog pins MUST give the device name and channel(ADC, PWM or DAC). * Arduino Pin must keep in sequence. */ -const pin_map_t pin_map_table[]= -{ - {D0, GET_PIN(C,13)}, /* LED_BUILTIN */ - {D1, GET_PIN(C,14)}, - {D2, GET_PIN(C,15)}, - {D3, GET_PIN(A,2), "uart2"}, /* Serial-TX */ - {D4, GET_PIN(A,3), "uart2"}, /* Serial-RX */ - {D5, GET_PIN(B,2), "i2c1"}, /* I2C-SDA (Wire) */ - {D6, GET_PIN(B,10), "i2c1"}, /* I2C-SCL (Wire) */ - {D7, GET_PIN(B,9), "pwm4", 4}, /* PWM */ - {D8, GET_PIN(B,8), "pwm4", 3}, /* PWM */ - {D9, GET_PIN(B,7), "pwm4", 2}, /* PWM */ - {D10, GET_PIN(B,6), "pwm4", 1}, /* PWM */ - {D11, GET_PIN(B,5), "spi1"}, /* SPI-MOSI */ - {D12, GET_PIN(B,4), "spi1"}, /* SPI-MISO */ - {D13, GET_PIN(B,3), "spi1"}, /* SPI-SCK */ - {D14, GET_PIN(A,15), "spi1"}, /* SPI-SS */ - {D15, GET_PIN(A,12), "usb"}, /* SerialUSB */ - {D16, GET_PIN(A,11), "usb"}, /* SerialUSB */ - {D17, GET_PIN(A,10), "uart1"}, /* Serial-RX */ - {D18, GET_PIN(A,9), "uart1"}, /* Serial-TX */ - {D19, GET_PIN(A,8)}, - {D20, GET_PIN(B,15), "pwm1", -3}, /* PWM */ - {D21, GET_PIN(B,14), "pwm1", -2}, /* PWM */ - {D22, GET_PIN(B,13), "pwm1", -1}, /* PWM */ - {D23, GET_PIN(B,12)}, - {A0, GET_PIN(A,0), "adc1", 0}, /* ADC */ - {A1, GET_PIN(A,1), "adc1", 1}, /* ADC */ - {A2, GET_PIN(A,4), "adc1", 4}, /* ADC */ - {A3, GET_PIN(A,5), "adc1", 5}, /* ADC */ - {A4, GET_PIN(A,6), "adc1", 6}, /* ADC */ - {A5, GET_PIN(A,7), "adc1", 7}, /* ADC */ - {A6, GET_PIN(B,0), "adc1", 8}, /* ADC */ - {A7, GET_PIN(B,1), "adc1", 9}, /* ADC */ - {A8, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF}, /* ADC, On-Chip: internal reference voltage */ - {A9, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER}, /* ADC, On-Chip: internal temperature sensor */ +const pin_map_t pin_map_table[] = { + { D0, GET_PIN(C, 13) }, /* LED_BUILTIN */ + { D1, GET_PIN(C, 14) }, + { D2, GET_PIN(C, 15) }, + { D3, GET_PIN(A, 2), "uart2" }, /* Serial-TX */ + { D4, GET_PIN(A, 3), "uart2" }, /* Serial-RX */ + { D5, GET_PIN(B, 2), "swi2c1" }, /* I2C-SDA (Wire) */ + { D6, GET_PIN(B, 10), "swi2c1" }, /* I2C-SCL (Wire) */ + { D7, GET_PIN(B, 9), "pwm4", 4 }, /* PWM */ + { D8, GET_PIN(B, 8), "pwm4", 3 }, /* PWM */ + { D9, GET_PIN(B, 7), "pwm4", 2 }, /* PWM */ + { D10, GET_PIN(B, 6), "pwm4", 1 }, /* PWM */ + { D11, GET_PIN(B, 5), "spi1" }, /* SPI-MOSI */ + { D12, GET_PIN(B, 4), "spi1" }, /* SPI-MISO */ + { D13, GET_PIN(B, 3), "spi1" }, /* SPI-SCK */ + { D14, GET_PIN(A, 15), "spi1" }, /* SPI-SS */ + { D15, GET_PIN(A, 12), "usb" }, /* SerialUSB */ + { D16, GET_PIN(A, 11), "usb" }, /* SerialUSB */ + { D17, GET_PIN(A, 10), "uart1" }, /* Serial-RX */ + { D18, GET_PIN(A, 9), "uart1" }, /* Serial-TX */ + { D19, GET_PIN(A, 8) }, + { D20, GET_PIN(B, 15), "pwm1", -3 }, /* PWM */ + { D21, GET_PIN(B, 14), "pwm1", -2 }, /* PWM */ + { D22, GET_PIN(B, 13), "pwm1", -1 }, /* PWM */ + { D23, GET_PIN(B, 12) }, + { A0, GET_PIN(A, 0), "adc1", 0 }, /* ADC */ + { A1, GET_PIN(A, 1), "adc1", 1 }, /* ADC */ + { A2, GET_PIN(A, 4), "adc1", 4 }, /* ADC */ + { A3, GET_PIN(A, 5), "adc1", 5 }, /* ADC */ + { A4, GET_PIN(A, 6), "adc1", 6 }, /* ADC */ + { A5, GET_PIN(A, 7), "adc1", 7 }, /* ADC */ + { A6, GET_PIN(B, 0), "adc1", 8 }, /* ADC */ + { A7, GET_PIN(B, 1), "adc1", 9 }, /* ADC */ + { A8, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF }, /* ADC, On-Chip: internal reference voltage */ + { A9, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER }, /* ADC, On-Chip: internal temperature sensor */ }; diff --git a/bsp/stm32/stm32f411-weact-blackpill/applications/arduino_pinout/pins_arduino.h b/bsp/stm32/stm32f411-weact-blackpill/applications/arduino_pinout/pins_arduino.h index 68689fbf43bb..d2f20af55d72 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 13e390fec475..2ca4e8fca33d 100644 --- a/bsp/stm32/stm32f411-weact-blackpill/board/Kconfig +++ b/bsp/stm32/stm32f411-weact-blackpill/board/Kconfig @@ -24,12 +24,26 @@ menu "Onboard Peripheral Drivers" select BSP_USING_SPI1 select BSP_SPI1_TX_USING_DMA select BSP_SPI1_RX_USING_DMA - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C1 select RTDUINO_USING_SPI select RTDUINO_USING_WIRE imply RTDUINO_USING_SERVO default n + + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 18 if RT_USING_SOFT_I2C1 + endmenu menu "On-chip Peripheral Drivers" @@ -126,68 +140,25 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - comment "Notice: PB2 --> 18; PB10 --> 26" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 48 - default 26 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 48 - default 18 - endif - - menuconfig BSP_USING_PWM - bool "Enable PWM" - default n - select RT_USING_PWM - if BSP_USING_PWM - menuconfig BSP_USING_PWM1 - bool "Enable timer1 output PWM" + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" default n - if BSP_USING_PWM1 - config BSP_USING_PWM1_CH1 - bool "Enable PWM1 channel1" - default n - - config BSP_USING_PWM1_CH2 - bool "Enable PWM1 channel2" - default n - - config BSP_USING_PWM1_CH3 - bool "Enable PWM1 channel3" - default n - endif - - menuconfig BSP_USING_PWM4 - bool "Enable timer4 output PWM" - default n - if BSP_USING_PWM4 - config BSP_USING_PWM4_CH1 - bool "Enable PWM4 channel1" - default n - - config BSP_USING_PWM4_CH2 - bool "Enable PWM4 channel2" - default n - - config BSP_USING_PWM4_CH3 - bool "Enable PWM4 channel3" - default n - - config BSP_USING_PWM4_CH4 - bool "Enable PWM4 channel4" - default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 26 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 18 endif endif - menuconfig BSP_USING_SPI bool "Enable SPI BUS" default n @@ -240,4 +211,5 @@ menu "Board extended module Drivers" endmenu + endmenu diff --git a/bsp/stm32/stm32f412-st-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f412-st-nucleo/.ci/attachconfig/ci.attachconfig.yml index e4646070a994..12d7fdc2c90c 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 8af913a39266..94e548c97259 100644 --- a/bsp/stm32/stm32f412-st-nucleo/applications/arduino_pinout/pins_arduino.c +++ b/bsp/stm32/stm32f412-st-nucleo/applications/arduino_pinout/pins_arduino.c @@ -23,36 +23,35 @@ * Analog pins MUST give the device name and channel(ADC, PWM or DAC). * Arduino Pin must keep in sequence. */ -const pin_map_t pin_map_table[]= -{ - {D0, GET_PIN(G,9), "uart3"}, /* Serial-xx */ - {D1, GET_PIN(G,14), "uart3"}, /* Serial-xx */ - {D2, GET_PIN(F,15)}, - {D3, GET_PIN(E,13), "pwm1", 3}, /* PWM */ - {D4, GET_PIN(F,14)}, - {D5, GET_PIN(E,11), "pwm1", 2}, /* PWM */ - {D6, GET_PIN(E,9), "pwm1", 1}, /* PWM */ - {D7, GET_PIN(F,13)}, - {D8, GET_PIN(F,12)}, - {D9, GET_PIN(D,15), "pwm4", 4}, /* PWM */ - {D10, GET_PIN(D,14), "pwm4", 3}, /* PWM */ - {D11, GET_PIN(A,7), "pwm14", 1}, /* PWM */ - {D12, GET_PIN(A,6)}, - {D13, GET_PIN(A,5)}, - {D14, GET_PIN(B,9), "i2c1"}, /* I2C-SDA (Wire) */ - {D15, GET_PIN(B,8), "i2c1"}, /* I2C-SCL (Wire) */ - {D16, GET_PIN(C,13)}, /* USER KEY */ - {D17, GET_PIN(B,0)}, /* LED_BUILTIN, USER LED1 */ - {D18, GET_PIN(B,7)}, /* USER LED2 */ - {D19, GET_PIN(B,14)}, /* USER LED3 */ - {A0, GET_PIN(A,3), "adc1", 3}, /* ADC */ - {A1, GET_PIN(C,0), "adc1", 10}, /* ADC */ - {A2, GET_PIN(C,3), "adc1", 13}, /* ADC */ - {A3, GET_PIN(C,1), "adc1", 11}, /* ADC */ - {A4, GET_PIN(C,4), "adc1", 14}, /* ADC */ - {A5, GET_PIN(C,5), "adc1", 15}, /* ADC */ - {A6, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF}, /* ADC, On-Chip: internal reference voltage */ - {A7, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER}, /* ADC, On-Chip: internal temperature sensor */ +const pin_map_t pin_map_table[] = { + { D0, GET_PIN(G, 9), "uart3" }, /* Serial-xx */ + { D1, GET_PIN(G, 14), "uart3" }, /* Serial-xx */ + { D2, GET_PIN(F, 15) }, + { D3, GET_PIN(E, 13), "pwm1", 3 }, /* PWM */ + { D4, GET_PIN(F, 14) }, + { D5, GET_PIN(E, 11), "pwm1", 2 }, /* PWM */ + { D6, GET_PIN(E, 9), "pwm1", 1 }, /* PWM */ + { D7, GET_PIN(F, 13) }, + { D8, GET_PIN(F, 12) }, + { D9, GET_PIN(D, 15), "pwm4", 4 }, /* PWM */ + { D10, GET_PIN(D, 14), "pwm4", 3 }, /* PWM */ + { D11, GET_PIN(A, 7), "pwm14", 1 }, /* PWM */ + { D12, GET_PIN(A, 6) }, + { D13, GET_PIN(A, 5) }, + { D14, GET_PIN(B, 9), "swi2c1" }, /* I2C-SDA (Wire) */ + { D15, GET_PIN(B, 8), "swi2c1" }, /* I2C-SCL (Wire) */ + { D16, GET_PIN(C, 13) }, /* USER KEY */ + { D17, GET_PIN(B, 0) }, /* LED_BUILTIN, USER LED1 */ + { D18, GET_PIN(B, 7) }, /* USER LED2 */ + { D19, GET_PIN(B, 14) }, /* USER LED3 */ + { A0, GET_PIN(A, 3), "adc1", 3 }, /* ADC */ + { A1, GET_PIN(C, 0), "adc1", 10 }, /* ADC */ + { A2, GET_PIN(C, 3), "adc1", 13 }, /* ADC */ + { A3, GET_PIN(C, 1), "adc1", 11 }, /* ADC */ + { A4, GET_PIN(C, 4), "adc1", 14 }, /* ADC */ + { A5, GET_PIN(C, 5), "adc1", 15 }, /* ADC */ + { A6, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF }, /* ADC, On-Chip: internal reference voltage */ + { A7, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER }, /* ADC, On-Chip: internal temperature sensor */ }; #ifdef RTDUINO_USING_SPI diff --git a/bsp/stm32/stm32f412-st-nucleo/applications/arduino_pinout/pins_arduino.h b/bsp/stm32/stm32f412-st-nucleo/applications/arduino_pinout/pins_arduino.h index 9840fd7f9933..e5d09e226e99 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 28d5f0e19814..009de1c96da4 100644 --- a/bsp/stm32/stm32f412-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32f412-st-nucleo/board/Kconfig @@ -27,8 +27,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM4_CH4 select BSP_USING_PWM4_CH3 select BSP_USING_PWM14_CH1 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C1 select BSP_USING_SPI select BSP_USING_SPI1 select BSP_SPI1_TX_USING_DMA @@ -38,6 +39,19 @@ menu "Onboard Peripheral Drivers" imply RTDUINO_USING_SERVO default n + + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if RT_USING_SOFT_I2C1 + endmenu menu "On-chip Peripheral Drivers" @@ -190,30 +204,25 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 Bus (User I2C)" - default n - if BSP_USING_I2C1 - comment "Notice: PB9 --> 25; PB8 --> 24" - config BSP_I2C1_SCL_PIN - int "i2c1 SCL pin number" - range 1 176 - default 24 - config BSP_I2C1_SDA_PIN - int "i2c1 SDA pin number" - range 1 176 - default 25 - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 25 + endif endif - menuconfig BSP_USING_SPI bool "Enable SPI BUS" default n diff --git a/bsp/stm32/stm32f413-st-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f413-st-nucleo/.ci/attachconfig/ci.attachconfig.yml index 69dfd8a229dc..c18707048cfd 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 cd009d2fe297..784e4589f152 100644 --- a/bsp/stm32/stm32f413-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32f413-st-nucleo/board/Kconfig @@ -115,24 +115,25 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - comment "Notice: PB6 --> 136; PB9 --> 140" - config BSP_I2C1_SCL_PIN - int "I2C1 scl pin number" - range 1 144 - default 136 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 144 - default 140 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 136 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 140 + endif endif - menuconfig BSP_USING_TIM bool "Enable timer" default n @@ -216,4 +217,16 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 136 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 140 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/stm32/stm32f427-robomaster-a/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f427-robomaster-a/.ci/attachconfig/ci.attachconfig.yml index 2a7fcdfd2753..27ce57a8cf23 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 13b630f72e18..240072a0901a 100644 --- a/bsp/stm32/stm32f427-robomaster-a/applications/arduino_pinout/pins_arduino.c +++ b/bsp/stm32/stm32f427-robomaster-a/applications/arduino_pinout/pins_arduino.c @@ -19,52 +19,51 @@ * Analog pins MUST give the device name and channel(ADC, PWM or DAC). * Arduino Pin must keep in sequence. */ -const pin_map_t pin_map_table[]= -{ - {D0, GET_PIN(F,14)}, /* LED_BUILTIN */ - {D1, GET_PIN(D,9), "uart3"}, /* Serial-RX */ - {D2, GET_PIN(D,8), "uart3"}, /* Serial-TX */ - {D3, GET_PIN(G,9), "uart6"}, /* Serial-RX */ - {D4, GET_PIN(G,14), "uart6"}, /* Serial-TX */ - {D5, GET_PIN(E,0), "uart8"}, /* Serial-RX */ - {D6, GET_PIN(E,1), "uart8"}, /* Serial-TX */ - {D7, GET_PIN(E,7), "uart7"}, /* Serial-RX */ - {D8, GET_PIN(E,8), "uart7"}, /* Serial-TX */ - {D9, GET_PIN(H,6), "pwm12", 1}, /* BSP: Buzzer, PWM */ - {D10, GET_PIN(D,12), "pwm4", 1}, /* PWM */ - {D11, GET_PIN(D,13), "pwm4", 2}, /* PWM */ - {D12, GET_PIN(D,14), "pwm4", 3}, /* PWM */ - {D13, GET_PIN(D,15), "pwm4", 4}, /* PWM */ - {D14, GET_PIN(H,10), "pwm5", 1}, /* PWM */ - {D15, GET_PIN(H,11), "pwm5", 2}, /* PWM */ - {D16, GET_PIN(H,12), "pwm5", 3}, /* PWM */ - {D17, GET_PIN(I,0), "pwm5", 4}, /* PWM */ - {D18, GET_PIN(A,0), "pwm2", 1}, /* PWM */ - {D19, GET_PIN(A,1), "pwm2", 2}, /* PWM */ - {D20, GET_PIN(A,2), "pwm2", 3}, /* PWM */ - {D21, GET_PIN(A,3), "pwm2", 4}, /* PWM */ - {D22, GET_PIN(I,5), "pwm8", 1}, /* PWM */ - {D23, GET_PIN(I,6), "pwm8", 2}, /* PWM */ - {D24, GET_PIN(I,7), "pwm8", 3}, /* PWM */ - {D25, GET_PIN(I,2), "pwm8", 4}, /* PWM */ - {D26, GET_PIN(F,1)}, - {D27, GET_PIN(F,0)}, - {D28, GET_PIN(E,4), "i2c1"}, /* I2C-SCL (Wire) */ - {D29, GET_PIN(E,5), "i2c1"}, /* I2C-SDA (Wire) */ - {D30, GET_PIN(E,6)}, - {D31, GET_PIN(E,12)}, - {D32, GET_PIN(C,2)}, - {D33, GET_PIN(B,0)}, - {D34, GET_PIN(C,3)}, - {D35, GET_PIN(B,1)}, - {D36, GET_PIN(C,4)}, - {D37, GET_PIN(C,0)}, - {D38, GET_PIN(C,5)}, - {D39, GET_PIN(C,1)}, - {D40, GET_PIN(A,5)}, - {D41, GET_PIN(A,4)}, - {D42, GET_PIN(F,10)}, - {D43, GET_PIN(I,9)}, - {A0, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF}, /* ADC, On-Chip: internal temperature sensor */ - {A1, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER}, /* ADC, On-Chip: internal reference voltage */ +const pin_map_t pin_map_table[] = { + { D0, GET_PIN(F, 14) }, /* LED_BUILTIN */ + { D1, GET_PIN(D, 9), "uart3" }, /* Serial-RX */ + { D2, GET_PIN(D, 8), "uart3" }, /* Serial-TX */ + { D3, GET_PIN(G, 9), "uart6" }, /* Serial-RX */ + { D4, GET_PIN(G, 14), "uart6" }, /* Serial-TX */ + { D5, GET_PIN(E, 0), "uart8" }, /* Serial-RX */ + { D6, GET_PIN(E, 1), "uart8" }, /* Serial-TX */ + { D7, GET_PIN(E, 7), "uart7" }, /* Serial-RX */ + { D8, GET_PIN(E, 8), "uart7" }, /* Serial-TX */ + { D9, GET_PIN(H, 6), "pwm12", 1 }, /* BSP: Buzzer, PWM */ + { D10, GET_PIN(D, 12), "pwm4", 1 }, /* PWM */ + { D11, GET_PIN(D, 13), "pwm4", 2 }, /* PWM */ + { D12, GET_PIN(D, 14), "pwm4", 3 }, /* PWM */ + { D13, GET_PIN(D, 15), "pwm4", 4 }, /* PWM */ + { D14, GET_PIN(H, 10), "pwm5", 1 }, /* PWM */ + { D15, GET_PIN(H, 11), "pwm5", 2 }, /* PWM */ + { D16, GET_PIN(H, 12), "pwm5", 3 }, /* PWM */ + { D17, GET_PIN(I, 0), "pwm5", 4 }, /* PWM */ + { D18, GET_PIN(A, 0), "pwm2", 1 }, /* PWM */ + { D19, GET_PIN(A, 1), "pwm2", 2 }, /* PWM */ + { D20, GET_PIN(A, 2), "pwm2", 3 }, /* PWM */ + { D21, GET_PIN(A, 3), "pwm2", 4 }, /* PWM */ + { D22, GET_PIN(I, 5), "pwm8", 1 }, /* PWM */ + { D23, GET_PIN(I, 6), "pwm8", 2 }, /* PWM */ + { D24, GET_PIN(I, 7), "pwm8", 3 }, /* PWM */ + { D25, GET_PIN(I, 2), "pwm8", 4 }, /* PWM */ + { D26, GET_PIN(F, 1) }, + { D27, GET_PIN(F, 0) }, + { D28, GET_PIN(E, 4), "swi2c1" }, /* I2C-SCL (Wire) */ + { D29, GET_PIN(E, 5), "swi2c1" }, /* I2C-SDA (Wire) */ + { D30, GET_PIN(E, 6) }, + { D31, GET_PIN(E, 12) }, + { D32, GET_PIN(C, 2) }, + { D33, GET_PIN(B, 0) }, + { D34, GET_PIN(C, 3) }, + { D35, GET_PIN(B, 1) }, + { D36, GET_PIN(C, 4) }, + { D37, GET_PIN(C, 0) }, + { D38, GET_PIN(C, 5) }, + { D39, GET_PIN(C, 1) }, + { D40, GET_PIN(A, 5) }, + { D41, GET_PIN(A, 4) }, + { D42, GET_PIN(F, 10) }, + { D43, GET_PIN(I, 9) }, + { A0, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF }, /* ADC, On-Chip: internal temperature sensor */ + { A1, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER }, /* ADC, On-Chip: internal reference voltage */ }; diff --git a/bsp/stm32/stm32f427-robomaster-a/applications/arduino_pinout/pins_arduino.h b/bsp/stm32/stm32f427-robomaster-a/applications/arduino_pinout/pins_arduino.h index 261c0d46789b..082af4725d05 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 dbb3ea37b8b4..97e5b3f603c8 100644 --- a/bsp/stm32/stm32f427-robomaster-a/board/Kconfig +++ b/bsp/stm32/stm32f427-robomaster-a/board/Kconfig @@ -38,12 +38,26 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM8_CH4 select BSP_USING_PWM12 select BSP_USING_PWM12_CH1 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C1 select RTDUINO_USING_WIRE imply RTDUINO_USING_SERVO default n + + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 68 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 69 if RT_USING_SOFT_I2C1 + endmenu menu "On-chip Peripheral Drivers" @@ -258,30 +272,25 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 Bus (User I2C)" - default n - if BSP_USING_I2C1 - comment "Notice: PE4 --> 68; PE5 --> 69" - config BSP_I2C1_SCL_PIN - int "i2c1 SCL pin number" - range 1 176 - default 68 - config BSP_I2C1_SDA_PIN - int "i2c1 SDA pin number" - range 1 176 - default 69 - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 68 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 69 + endif endif - menuconfig BSP_USING_PWM bool "Enable PWM" default n diff --git a/bsp/stm32/stm32f429-armfly-v6/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f429-armfly-v6/.ci/attachconfig/ci.attachconfig.yml index 93697a09915e..39288ba9ee16 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 99b09d498de4..a46383872184 100644 --- a/bsp/stm32/stm32f429-armfly-v6/board/Kconfig +++ b/bsp/stm32/stm32f429-armfly-v6/board/Kconfig @@ -62,12 +62,26 @@ menu "Onboard Peripheral Drivers" default n config BSP_USING_MPU6050 - bool "Enable MPU6050(i2c1)" - select BSP_USING_I2C1 + bool "Enable MPU6050(swi2c1)" + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C1 select PKG_USING_MPU6XXX select PKG_USING_MPU6XXX_SAMPLE select PKG_USING_MPU6XXX_LATEST_VERSION default n + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if RT_USING_SOFT_I2C1 + endmenu menu "On-chip Peripheral Drivers" @@ -146,23 +160,25 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 25 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 25 + endif endif - menuconfig BSP_USING_TIM bool "Enable timer" default n @@ -249,4 +265,5 @@ menu "Board extended module Drivers" endmenu + endmenu diff --git a/bsp/stm32/stm32f429-atk-apollo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f429-atk-apollo/.ci/attachconfig/ci.attachconfig.yml index 69dfd8a229dc..5842675f0680 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 151792707e28..5b2ea2b395c4 100644 --- a/bsp/stm32/stm32f429-atk-apollo/board/Kconfig +++ b/bsp/stm32/stm32f429-atk-apollo/board/Kconfig @@ -34,8 +34,10 @@ menu "Onboard Peripheral Drivers" default n config BSP_USING_MPU9250 - bool "Enable MPU 9250 (i2c1)" - select BSP_USING_I2C1 + bool "Enable MPU 9250 (swi2c1)" + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C1 select PKG_USING_MPU6XXX default n @@ -44,7 +46,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_ETH bool "Enable Ethernet (Ethernet pin conflict with uart3)" - select BSP_USING_I2C1 + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C1 select PKG_USING_PCF8574 select RT_USING_LWIP select PHY_USING_LAN8720A @@ -59,7 +63,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_AUDIO bool "Enable AUDIO (WM8978)" - select BSP_USING_I2C1 + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C1 select RT_USING_AUDIO default n @@ -74,6 +80,18 @@ menu "Onboard Peripheral Drivers" default n endif + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 116 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 117 if RT_USING_SOFT_I2C1 + endmenu menu "On-chip Peripheral Drivers" @@ -257,24 +275,25 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - comment "Notice: PH4 --> 116; PH5 --> 117" - config BSP_I2C1_SCL_PIN - int "I2C1 scl pin number" - range 1 176 - default 116 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 176 - default 117 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 116 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 117 + endif endif - menuconfig BSP_USING_TIM bool "Enable timer" default n @@ -372,4 +391,5 @@ menu "Board extended module Drivers" endmenu + endmenu diff --git a/bsp/stm32/stm32f429-atk-apollo/board/ports/audio/drv_mic.c b/bsp/stm32/stm32f429-atk-apollo/board/ports/audio/drv_mic.c index 889c5b0dee79..25fe1e9d668b 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; @@ -303,11 +303,11 @@ static rt_err_t stm32_mic_init(struct rt_audio_device *audio) _stm32_audio_record.i2c_bus = (struct rt_i2c_bus_device *)rt_device_find(CODEC_I2C_NAME); if (_stm32_audio_record.i2c_bus != RT_NULL) { - LOG_D("Find device i2c1 success"); + LOG_D("Find device swi2c1 success"); } else { - LOG_E("Find device i2c1 error"); + LOG_E("Find device swi2c1 error"); return -RT_ERROR; } diff --git a/bsp/stm32/stm32f429-atk-apollo/board/ports/audio/drv_sound.c b/bsp/stm32/stm32f429-atk-apollo/board/ports/audio/drv_sound.c index f564cc1b847a..d8d962375aac 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 826f8c7ded1a..61c48f3d980a 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 69dfd8a229dc..bafb8dec3cda 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 c56a1b6a85fd..f0a4c4604b52 100644 --- a/bsp/stm32/stm32f429-fire-challenger/board/Kconfig +++ b/bsp/stm32/stm32f429-fire-challenger/board/Kconfig @@ -34,8 +34,10 @@ menu "Onboard Peripheral Drivers" default n config BSP_USING_MPU6050 - bool "Enable MPU6050 (i2c1)" - select BSP_USING_I2C1 + bool "Enable MPU6050 (swi2c1)" + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C1 select PKG_USING_MPU6XXX default n @@ -72,6 +74,18 @@ menu "Onboard Peripheral Drivers" select RT_USING_PIN default n + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + endmenu menu "On-chip Peripheral Drivers" @@ -234,24 +248,25 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - comment "Notice: PB6 --> 22; PB7 --> 23" - config BSP_I2C1_SCL_PIN - int "I2C1 scl pin number" - range 1 176 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 176 - default 23 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif endif - menuconfig BSP_USING_ONCHIP_RTC bool "Enable RTC" select RT_USING_RTC @@ -295,4 +310,5 @@ menu "Board extended module Drivers" endmenu + endmenu diff --git a/bsp/stm32/stm32f429-st-disco/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f429-st-disco/.ci/attachconfig/ci.attachconfig.yml index 69dfd8a229dc..12d7fdc2c90c 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 16195e5a1241..c3a705600eb6 100644 --- a/bsp/stm32/stm32f429-st-disco/board/Kconfig +++ b/bsp/stm32/stm32f429-st-disco/board/Kconfig @@ -94,23 +94,25 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "I2C1 scl pin number" - range 1 176 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 176 - default 25 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 25 + endif endif - menuconfig BSP_USING_SPI bool "Enable SPI BUS" select RT_USING_SPI @@ -165,4 +167,16 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/stm32/stm32f469-st-disco/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f469-st-disco/.ci/attachconfig/ci.attachconfig.yml index 69787e1e617f..08677bbd3cd5 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 2488e1872913..2703f8cc29ad 100644 --- a/bsp/stm32/stm32f469-st-disco/applications/arduino_pinout/pins_arduino.c +++ b/bsp/stm32/stm32f469-st-disco/applications/arduino_pinout/pins_arduino.c @@ -23,37 +23,36 @@ * Analog pins MUST give the device name and channel(ADC, PWM or DAC). * Arduino Pin must keep in sequence. */ -const pin_map_t pin_map_table[]= -{ - {D0, GET_PIN(G,9), "uart3"}, /* Serial-Rx */ - {D1, GET_PIN(G,14), "uart3"}, /* Serial-Tx */ - {D2, GET_PIN(G,13)}, - {D3, GET_PIN(A,1), "pwm2", 2}, /* PWM */ - {D4, GET_PIN(G,12)}, - {D5, GET_PIN(A,2), "pwm2", 3}, /* PWM */ - {D6, GET_PIN(A,6), "pwm3", 1}, /* PWM */ - {D7, GET_PIN(G,11)}, - {D8, GET_PIN(G,10)}, - {D9, GET_PIN(A,7), "pwm3", 2}, /* PWM */ - {D10, GET_PIN(H,6), "pwm12", 1}, /* PWM */ - {D11, GET_PIN(B,15), "pwm12", 2}, /* PWM */ - {D12, GET_PIN(B,14)}, - {D13, GET_PIN(D,3)}, /* LED_BUILTIN */ - {D14, GET_PIN(B,9), "i2c1"}, /* I2C-SDA (Wire) */ - {D15, GET_PIN(B,8), "i2c1"}, /* I2C-SCL (Wire) */ - {D16, GET_PIN(A,0)}, /* user button */ - {D17, GET_PIN(G,6)}, /* user LED */ - {D18, GET_PIN(D,4)}, /* user LED */ - {D19, GET_PIN(D,5)}, /* user LED */ - {D20, GET_PIN(K,3)}, /* user LED */ - {A0, GET_PIN(B,1), "adc1", 9}, /* ADC */ - {A1, GET_PIN(C,2), "adc1", 12}, /* ADC */ - {A2, GET_PIN(C,3), "adc1", 13}, /* ADC */ - {A3, GET_PIN(C,4), "adc1", 14}, /* ADC */ - {A4, GET_PIN(C,5), "adc1", 15}, /* ADC */ - {A5, GET_PIN(A,4), "adc1", 4}, /* ADC */ - {A6, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF}, /* ADC, On-Chip: internal reference voltage */ - {A7, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER}, /* ADC, On-Chip: internal temperature sensor */ +const pin_map_t pin_map_table[] = { + { D0, GET_PIN(G, 9), "uart3" }, /* Serial-Rx */ + { D1, GET_PIN(G, 14), "uart3" }, /* Serial-Tx */ + { D2, GET_PIN(G, 13) }, + { D3, GET_PIN(A, 1), "pwm2", 2 }, /* PWM */ + { D4, GET_PIN(G, 12) }, + { D5, GET_PIN(A, 2), "pwm2", 3 }, /* PWM */ + { D6, GET_PIN(A, 6), "pwm3", 1 }, /* PWM */ + { D7, GET_PIN(G, 11) }, + { D8, GET_PIN(G, 10) }, + { D9, GET_PIN(A, 7), "pwm3", 2 }, /* PWM */ + { D10, GET_PIN(H, 6), "pwm12", 1 }, /* PWM */ + { D11, GET_PIN(B, 15), "pwm12", 2 }, /* PWM */ + { D12, GET_PIN(B, 14) }, + { D13, GET_PIN(D, 3) }, /* LED_BUILTIN */ + { D14, GET_PIN(B, 9), "swi2c1" }, /* I2C-SDA (Wire) */ + { D15, GET_PIN(B, 8), "swi2c1" }, /* I2C-SCL (Wire) */ + { D16, GET_PIN(A, 0) }, /* user button */ + { D17, GET_PIN(G, 6) }, /* user LED */ + { D18, GET_PIN(D, 4) }, /* user LED */ + { D19, GET_PIN(D, 5) }, /* user LED */ + { D20, GET_PIN(K, 3) }, /* user LED */ + { A0, GET_PIN(B, 1), "adc1", 9 }, /* ADC */ + { A1, GET_PIN(C, 2), "adc1", 12 }, /* ADC */ + { A2, GET_PIN(C, 3), "adc1", 13 }, /* ADC */ + { A3, GET_PIN(C, 4), "adc1", 14 }, /* ADC */ + { A4, GET_PIN(C, 5), "adc1", 15 }, /* ADC */ + { A5, GET_PIN(A, 4), "adc1", 4 }, /* ADC */ + { A6, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF }, /* ADC, On-Chip: internal reference voltage */ + { A7, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER }, /* ADC, On-Chip: internal temperature sensor */ }; #ifdef RTDUINO_USING_SPI diff --git a/bsp/stm32/stm32f469-st-disco/applications/arduino_pinout/pins_arduino.h b/bsp/stm32/stm32f469-st-disco/applications/arduino_pinout/pins_arduino.h index 8dd4453fd466..4f63c0b5caac 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 88c6db1b2421..70300df7e5e0 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 93b561d47445..a486bb563e75 100644 --- a/bsp/stm32/stm32f469-st-disco/board/Kconfig +++ b/bsp/stm32/stm32f469-st-disco/board/Kconfig @@ -40,8 +40,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM12 select BSP_USING_PWM12_CH1 select BSP_USING_PWM12_CH2 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C1 select BSP_USING_SPI select BSP_USING_SPI2 select BSP_SPI2_TX_USING_DMA @@ -90,7 +91,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_TOUCH bool "Enable touch screen" select RT_USING_TOUCH - select BSP_USING_I2C1 + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C1 choice prompt "Touch IC type" @@ -116,6 +119,19 @@ menu "Onboard Peripheral Drivers" select BSP_USING_LTDC select BSP_USING_LCD_MIPI default n + + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if RT_USING_SOFT_I2C1 + endmenu menu "On-chip Peripheral Drivers" @@ -234,24 +250,25 @@ menu "On-chip Peripheral Drivers" endif endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n - if BSP_USING_I2C1 - comment "Notice: PB8 --> 24; PB9 --> 25" - config BSP_I2C1_SCL_PIN - int "I2C1 scl pin number" - range 1 176 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 176 - default 25 + select RT_USING_I2C + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 25 + endif endif - menuconfig BSP_USING_SPI bool "Enable SPI BUS" select RT_USING_SPI @@ -324,4 +341,5 @@ menu "Board extended module Drivers" endmenu + endmenu diff --git a/bsp/stm32/stm32f746-st-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f746-st-nucleo/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..d626be14a578 --- /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 224cd13c3c30..2ef9217b5615 100644 --- a/bsp/stm32/stm32f746-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32f746-st-nucleo/board/Kconfig @@ -163,23 +163,25 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 175 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 175 - default 23 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif endif - menuconfig BSP_USING_TIM bool "Enable timer" default n @@ -294,4 +296,16 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/stm32/stm32f767-atk-apollo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32f767-atk-apollo/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..e4699eab7c81 --- /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 0bb7894b0ca1..9f58c254963a 100644 --- a/bsp/stm32/stm32f767-atk-apollo/board/Kconfig +++ b/bsp/stm32/stm32f767-atk-apollo/board/Kconfig @@ -26,8 +26,10 @@ menu "Onboard Peripheral Drivers" default n config BSP_USING_MPU9250 - bool "Enable MPU 9250 (i2c2)" - select BSP_USING_I2C2 + bool "Enable MPU 9250 (swi2c2)" + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C2 select PKG_USING_MPU6XXX default n @@ -36,7 +38,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_ETH bool "Enable Ethernet" - select BSP_USING_I2C2 + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C2 select PKG_USING_PCF8574 select RT_USING_LWIP select PHY_USING_LAN8720A @@ -60,6 +64,18 @@ menu "Onboard Peripheral Drivers" select BSP_USING_SDRAM default n + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 116 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 117 if RT_USING_SOFT_I2C2 + endmenu menu "On-chip Peripheral Drivers" @@ -218,42 +234,38 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - comment "Notice: PB8 --> 24; PB9 --> 25" - config BSP_I2C1_SCL_PIN - int "I2C1 scl pin number" - range 1 176 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 176 - default 25 - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 25 + endif - menuconfig BSP_USING_I2C2 - bool "Enable I2C2 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C2 - comment "Notice: PH4 --> 116; PH5 --> 117" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 1 176 - default 116 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 1 176 - default 117 + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 116 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 117 + endif endif - menuconfig BSP_USING_ONCHIP_RTC bool "Enable RTC" select RT_USING_RTC @@ -309,4 +321,16 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/stm32/stm32f767-atk-apollo/board/ports/phy_reset.c b/bsp/stm32/stm32f767-atk-apollo/board/ports/phy_reset.c index 18bed5f8e424..c0dcce3b5153 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 000000000000..d626be14a578 --- /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 c55f45c72bde..474892dcf844 100644 --- a/bsp/stm32/stm32f767-fire-challenger-v1/board/Kconfig +++ b/bsp/stm32/stm32f767-fire-challenger-v1/board/Kconfig @@ -33,8 +33,10 @@ menu "Onboard Peripheral Drivers" default n config BSP_USING_MPU6050 - bool "Enable MPU6050 (i2c4)" - select BSP_USING_I2C4 + bool "Enable MPU6050 (swi2c4)" + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C4 select PKG_USING_MPU6XXX default n @@ -52,6 +54,18 @@ menu "Onboard Peripheral Drivers" select RT_USING_PIN default n + config RT_SOFT_I2C4_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C4 + + config RT_SOFT_I2C4_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C4 + + config RT_SOFT_I2C4_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C4 + endmenu menu "On-chip Peripheral Drivers" @@ -191,24 +205,38 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - comment "Notice: PB6 --> 22; PB7 --> 23" - config BSP_I2C1_SCL_PIN - int "I2C1 scl pin number" - range 1 176 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 176 - default 23 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C4 + bool "Enable software I2C4 Bus (swi2c4)" + default n + select RT_USING_SOFT_I2C4 + if BSP_USING_SOFT_I2C4 + config RT_SOFT_I2C4_SCL_PIN + int "swi2c4 SCL pin number" + default 22 + config RT_SOFT_I2C4_SDA_PIN + int "swi2c4 SDA pin number" + default 23 + endif endif - menuconfig BSP_USING_ONCHIP_RTC bool "Enable RTC" select RT_USING_RTC @@ -253,4 +281,16 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/stm32/stm32g070-st-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32g070-st-nucleo/.ci/attachconfig/ci.attachconfig.yml index e4646070a994..bafb8dec3cda 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 bbf6869bc498..61698e062281 100644 --- a/bsp/stm32/stm32g070-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32g070-st-nucleo/board/Kconfig @@ -203,22 +203,24 @@ menu "On-chip Peripheral Drivers" select BSP_SPI2_TX_USING_DMA default n endif - - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 63 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 63 - default 23 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif endif menuconfig BSP_USING_ADC @@ -264,4 +266,16 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/stm32/stm32g071-st-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32g071-st-nucleo/.ci/attachconfig/ci.attachconfig.yml index e4646070a994..bafb8dec3cda 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 899c308fb494..b153f23bf131 100644 --- a/bsp/stm32/stm32g071-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32g071-st-nucleo/board/Kconfig @@ -196,23 +196,25 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 47 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 47 - default 23 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif endif - menuconfig BSP_USING_ADC bool "Enable ADC" default n @@ -239,4 +241,16 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/stm32/stm32g474-st-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32g474-st-nucleo/.ci/attachconfig/ci.attachconfig.yml index 2a7fcdfd2753..a863524b0707 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 6239575e01c7..15d00c543d69 100644 --- a/bsp/stm32/stm32g474-st-nucleo/applications/arduino_pinout/pins_arduino.c +++ b/bsp/stm32/stm32g474-st-nucleo/applications/arduino_pinout/pins_arduino.c @@ -23,33 +23,32 @@ * Analog pins MUST give the device name and channel(ADC, PWM or DAC). * Arduino Pin must keep in sequence. */ -const pin_map_t pin_map_table[]= -{ - {D0, GET_PIN(C,5)}, - {D1, GET_PIN(C,4)}, - {D2, GET_PIN(A,10), "uart1"}, /* Serial2-RX */ - {D3, GET_PIN(B,3), "pwm2", 2}, /* PWM */ - {D4, GET_PIN(B,5)}, - {D5, GET_PIN(B,4), "pwm3", 1}, /* PWM */ - {D6, GET_PIN(B,10), "pwm2", 3}, /* PWM */ - {D7, GET_PIN(A,8)}, - {D8, GET_PIN(A,9), "uart1"}, /* Serial2-TX */ - {D9, GET_PIN(C,7), "pwm8", 2}, /* PWM */ - {D10, GET_PIN(B,6), "pwm4", 1}, /* PWM */ - {D11, GET_PIN(A,7), "pwm3", 2}, /* PWM */ - {D12, GET_PIN(A,6)}, - {D13, GET_PIN(A,5)}, /* LED_BUILTIN */ - {D14, GET_PIN(B,9), "i2c1"}, /* I2C-SDA (Wire) */ - {D15, GET_PIN(B,8), "i2c1"}, /* I2C-SCL (Wire) */ - {D16, GET_PIN(C,13)}, - {A0, GET_PIN(A,0), "adc1", 1}, /* ADC */ - {A1, GET_PIN(A,1), "adc1", 2}, /* ADC */ - {A2, GET_PIN(A,4), "adc2", 17}, /* ADC */ - {A3, GET_PIN(B,0), "adc1", 15}, /* ADC */ - {A4, GET_PIN(C,1), "adc1", 7}, /* ADC */ - {A5, GET_PIN(C,0), "adc1", 6}, /* ADC */ - {A6, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF}, /* ADC, On-Chip: internal reference voltage */ - {A7, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER}, /* ADC, On-Chip: internal temperature sensor */ +const pin_map_t pin_map_table[] = { + { D0, GET_PIN(C, 5) }, + { D1, GET_PIN(C, 4) }, + { D2, GET_PIN(A, 10), "uart1" }, /* Serial2-RX */ + { D3, GET_PIN(B, 3), "pwm2", 2 }, /* PWM */ + { D4, GET_PIN(B, 5) }, + { D5, GET_PIN(B, 4), "pwm3", 1 }, /* PWM */ + { D6, GET_PIN(B, 10), "pwm2", 3 }, /* PWM */ + { D7, GET_PIN(A, 8) }, + { D8, GET_PIN(A, 9), "uart1" }, /* Serial2-TX */ + { D9, GET_PIN(C, 7), "pwm8", 2 }, /* PWM */ + { D10, GET_PIN(B, 6), "pwm4", 1 }, /* PWM */ + { D11, GET_PIN(A, 7), "pwm3", 2 }, /* PWM */ + { D12, GET_PIN(A, 6) }, + { D13, GET_PIN(A, 5) }, /* LED_BUILTIN */ + { D14, GET_PIN(B, 9), "swi2c1" }, /* I2C-SDA (Wire) */ + { D15, GET_PIN(B, 8), "swi2c1" }, /* I2C-SCL (Wire) */ + { D16, GET_PIN(C, 13) }, + { A0, GET_PIN(A, 0), "adc1", 1 }, /* ADC */ + { A1, GET_PIN(A, 1), "adc1", 2 }, /* ADC */ + { A2, GET_PIN(A, 4), "adc2", 17 }, /* ADC */ + { A3, GET_PIN(B, 0), "adc1", 15 }, /* ADC */ + { A4, GET_PIN(C, 1), "adc1", 7 }, /* ADC */ + { A5, GET_PIN(C, 0), "adc1", 6 }, /* ADC */ + { A6, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF }, /* ADC, On-Chip: internal reference voltage */ + { A7, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER }, /* ADC, On-Chip: internal temperature sensor */ }; #ifdef RTDUINO_USING_SPI diff --git a/bsp/stm32/stm32g474-st-nucleo/applications/arduino_pinout/pins_arduino.h b/bsp/stm32/stm32g474-st-nucleo/applications/arduino_pinout/pins_arduino.h index aea3e8cf5256..dafcb516a59a 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 c43ecd91a8de..b21ec6057ac8 100644 --- a/bsp/stm32/stm32g474-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32g474-st-nucleo/board/Kconfig @@ -28,8 +28,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM4_CH1 select BSP_USING_PWM8 select BSP_USING_PWM8_CH2 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C1 select BSP_USING_SPI select BSP_USING_SPI1 # select BSP_SPI1_TX_USING_DMA @@ -38,6 +39,19 @@ menu "Onboard Peripheral Drivers" select RTDUINO_USING_SPI imply RTDUINO_USING_SERVO default n + + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if RT_USING_SOFT_I2C1 + endmenu menu "On-chip Peripheral Drivers" @@ -249,21 +263,25 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number (PB8)" - default 24 - config BSP_I2C1_SDA_PIN - int "i2c1 sda pin number (PB9)" - default 25 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 25 + endif endif - source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig" endmenu @@ -272,4 +290,5 @@ menu "Board extended module Drivers" endmenu + endmenu diff --git a/bsp/stm32/stm32g491-st-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32g491-st-nucleo/.ci/attachconfig/ci.attachconfig.yml index e4646070a994..e523d299c973 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 9f0dcc537382..af6c4eeab2ab 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 000000000000..d626be14a578 --- /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 1983a9545e72..cc109ef76172 100644 --- a/bsp/stm32/stm32h503-st-nucleo/applications/arduino_pinout/pins_arduino.c +++ b/bsp/stm32/stm32h503-st-nucleo/applications/arduino_pinout/pins_arduino.c @@ -18,28 +18,27 @@ * Analog pins MUST give the device name and channel(ADC, PWM or DAC). * Arduino Pin must keep in sequence. */ -const pin_map_t pin_map_table[]= -{ - {D0, GET_PIN(B, 15), "uart1"}, /* Serial-RX */ - {D1, GET_PIN(B, 14), "uart1"}, /* Serial-TX */ - {D2, GET_PIN(A, 10)}, - {D3, GET_PIN(B, 3)}, - {D4, GET_PIN(B, 5)}, - {D5, GET_PIN(B, 4), "pwm1", 2}, /* PWM */ - {D6, GET_PIN(B, 10), "pwm2", 3}, /* PWM */ - {D7, GET_PIN(A, 8)}, - {D8, GET_PIN(C, 7)}, - {D9, GET_PIN(C, 6), "pwm3", 1}, /* PWM */ - {D10, GET_PIN(C, 9), "pwm3", 4}, /* PWM */ - {D11, GET_PIN(A, 7), "pwm3", 2}, /* PWM */ - {D12, GET_PIN(A, 6)}, - {D13, GET_PIN(A, 5)}, - {D14, GET_PIN(B, 7), "i2c1"}, /* I2C-SDA (Wire) */ - {D15, GET_PIN(B, 6), "i2c1"}, /* I2C-SCL (Wire) */ - {A0, GET_PIN(A, 0), "adc1", 0}, /* ADC */ - {A1, GET_PIN(A, 1), "adc1", 1}, /* ADC */ - {A2, GET_PIN(A, 2), "adc1", 14}, /* ADC */ - {A3, GET_PIN(B, 0), "adc1", 9}, /* ADC */ - {A4, GET_PIN(C, 1), "adc1", 11}, /* ADC */ - {A5, GET_PIN(C, 0), "adc1", 10}, /* ADC */ +const pin_map_t pin_map_table[] = { + { D0, GET_PIN(B, 15), "uart1" }, /* Serial-RX */ + { D1, GET_PIN(B, 14), "uart1" }, /* Serial-TX */ + { D2, GET_PIN(A, 10) }, + { D3, GET_PIN(B, 3) }, + { D4, GET_PIN(B, 5) }, + { D5, GET_PIN(B, 4), "pwm1", 2 }, /* PWM */ + { D6, GET_PIN(B, 10), "pwm2", 3 }, /* PWM */ + { D7, GET_PIN(A, 8) }, + { D8, GET_PIN(C, 7) }, + { D9, GET_PIN(C, 6), "pwm3", 1 }, /* PWM */ + { D10, GET_PIN(C, 9), "pwm3", 4 }, /* PWM */ + { D11, GET_PIN(A, 7), "pwm3", 2 }, /* PWM */ + { D12, GET_PIN(A, 6) }, + { D13, GET_PIN(A, 5) }, + { D14, GET_PIN(B, 7), "swi2c1" }, /* I2C-SDA (Wire) */ + { D15, GET_PIN(B, 6), "swi2c1" }, /* I2C-SCL (Wire) */ + { A0, GET_PIN(A, 0), "adc1", 0 }, /* ADC */ + { A1, GET_PIN(A, 1), "adc1", 1 }, /* ADC */ + { A2, GET_PIN(A, 2), "adc1", 14 }, /* ADC */ + { A3, GET_PIN(B, 0), "adc1", 9 }, /* ADC */ + { A4, GET_PIN(C, 1), "adc1", 11 }, /* ADC */ + { A5, GET_PIN(C, 0), "adc1", 10 }, /* ADC */ }; diff --git a/bsp/stm32/stm32h503-st-nucleo/applications/arduino_pinout/pins_arduino.h b/bsp/stm32/stm32h503-st-nucleo/applications/arduino_pinout/pins_arduino.h index 54e749704c30..65652b590862 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 dca564fbdb2e..e5d9e4aed695 100644 --- a/bsp/stm32/stm32h503-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32h503-st-nucleo/board/Kconfig @@ -19,12 +19,26 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM3_CH1 select BSP_USING_PWM3_CH2 select BSP_USING_PWM3_CH4 - select BSP_USING_I2C - select BSP_USING_I2C2 + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C1 select RTDUINO_USING_WIRE imply RTDUINO_USING_SERVO default n + + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + endmenu menu "On-chip Peripheral Drivers" @@ -203,21 +217,25 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number (PB.6)" - default 22 - config BSP_I2C1_SDA_PIN - int "i2c1 sda pin number (PB.7)" - default 23 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif endif - source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig" endmenu @@ -226,4 +244,5 @@ menu "Board extended module Drivers" endmenu + endmenu diff --git a/bsp/stm32/stm32h563-st-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32h563-st-nucleo/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..08f15d590b4d --- /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 c392eb458caa..51ceb931ba91 100644 --- a/bsp/stm32/stm32h563-st-nucleo/applications/arduino_pinout/pins_arduino.c +++ b/bsp/stm32/stm32h563-st-nucleo/applications/arduino_pinout/pins_arduino.c @@ -18,28 +18,27 @@ * Analog pins MUST give the device name and channel(ADC, PWM or DAC). * Arduino Pin must keep in sequence. */ -const pin_map_t pin_map_table[]= -{ - {D0, GET_PIN(B, 7), "lpuart1"}, /* Serial-RX */ - {D1, GET_PIN(B, 6), "lpuart1"}, /* Serial-TX */ - {D2, GET_PIN(G, 14)}, - {D3, GET_PIN(E, 13), "pwm1", 3}, /* PWM */ - {D4, GET_PIN(E, 14)}, - {D5, GET_PIN(E, 11), "pwm1", 2}, /* PWM */ - {D6, GET_PIN(E, 9), "pwm1", 1}, /* PWM */ - {D7, GET_PIN(G, 12)}, - {D8, GET_PIN(F, 3)}, - {D9, GET_PIN(D, 15), "pwm4", 4}, /* PWM */ - {D10, GET_PIN(D, 14), "pwm4", 3}, /* PWM */ - {D11, GET_PIN(B, 5), "pwm3", 2}, /* PWM */ - {D12, GET_PIN(G, 9)}, - {D13, GET_PIN(A, 5)}, /* LED_BUILTIN */ - {D14, GET_PIN(B, 9), "i2c1"}, /* I2C-SDA (Wire) */ - {D15, GET_PIN(B, 8), "i2c1"}, /* I2C-SCL (Wire) */ - {A0, GET_PIN(A, 6), "adc2", 3}, /* ADC */ - {A1, GET_PIN(C, 0), "adc2", 10}, /* ADC */ - {A2, GET_PIN(C, 3), "adc2", 13}, /* ADC */ - {A3, GET_PIN(B, 1), "adc2", 5}, /* ADC */ - {A4, GET_PIN(C, 2), "adc2", 12}, /* ADC */ - {A5, GET_PIN(F, 11), "adc1", 2}, /* ADC */ +const pin_map_t pin_map_table[] = { + { D0, GET_PIN(B, 7), "lpuart1" }, /* Serial-RX */ + { D1, GET_PIN(B, 6), "lpuart1" }, /* Serial-TX */ + { D2, GET_PIN(G, 14) }, + { D3, GET_PIN(E, 13), "pwm1", 3 }, /* PWM */ + { D4, GET_PIN(E, 14) }, + { D5, GET_PIN(E, 11), "pwm1", 2 }, /* PWM */ + { D6, GET_PIN(E, 9), "pwm1", 1 }, /* PWM */ + { D7, GET_PIN(G, 12) }, + { D8, GET_PIN(F, 3) }, + { D9, GET_PIN(D, 15), "pwm4", 4 }, /* PWM */ + { D10, GET_PIN(D, 14), "pwm4", 3 }, /* PWM */ + { D11, GET_PIN(B, 5), "pwm3", 2 }, /* PWM */ + { D12, GET_PIN(G, 9) }, + { D13, GET_PIN(A, 5) }, /* LED_BUILTIN */ + { D14, GET_PIN(B, 9), "swi2c1" }, /* I2C-SDA (Wire) */ + { D15, GET_PIN(B, 8), "swi2c1" }, /* I2C-SCL (Wire) */ + { A0, GET_PIN(A, 6), "adc2", 3 }, /* ADC */ + { A1, GET_PIN(C, 0), "adc2", 10 }, /* ADC */ + { A2, GET_PIN(C, 3), "adc2", 13 }, /* ADC */ + { A3, GET_PIN(B, 1), "adc2", 5 }, /* ADC */ + { A4, GET_PIN(C, 2), "adc2", 12 }, /* ADC */ + { A5, GET_PIN(F, 11), "adc1", 2 }, /* ADC */ }; diff --git a/bsp/stm32/stm32h563-st-nucleo/applications/arduino_pinout/pins_arduino.h b/bsp/stm32/stm32h563-st-nucleo/applications/arduino_pinout/pins_arduino.h index 9fa57077f95d..e79c0750c64d 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 e718390a9f51..fb793b9e393b 100644 --- a/bsp/stm32/stm32h563-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32h563-st-nucleo/board/Kconfig @@ -21,12 +21,26 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM4 select BSP_USING_PWM4_CH3 select BSP_USING_PWM4_CH4 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C1 select RTDUINO_USING_WIRE imply RTDUINO_USING_SERVO default n + + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if RT_USING_SOFT_I2C1 + endmenu menu "On-chip Peripheral Drivers" @@ -211,21 +225,25 @@ menu "On-chip Peripheral Drivers" endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number (PB.8)" - default 24 - config BSP_I2C1_SDA_PIN - int "i2c1 sda pin number (PB.9)" - default 25 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 25 + endif endif - source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig" endmenu @@ -234,4 +252,5 @@ menu "Board extended module Drivers" endmenu + endmenu diff --git a/bsp/stm32/stm32h743-atk-apollo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32h743-atk-apollo/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..d389a541c505 --- /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 05d4e3c37e00..f40d47c69445 100644 --- a/bsp/stm32/stm32h743-atk-apollo/board/Kconfig +++ b/bsp/stm32/stm32h743-atk-apollo/board/Kconfig @@ -6,7 +6,9 @@ menu "Onboard Peripheral Drivers" bool "Enable COM2(485)" select BSP_USING_UART select BSP_USING_UART2 - select BSP_USING_I2C1 + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C1 select PKG_USING_PCF8574 default n @@ -37,10 +39,35 @@ menu "Onboard Peripheral Drivers" config BSP_USING_OV2640 bool "Enable camera (ov2640)" select BSP_USING_DCMI - select BSP_USING_I2C - select BSP_USING_I2C2 + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C2 default n + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 116 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 117 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 127 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 125 if RT_USING_SOFT_I2C2 + endmenu menu "On-chip Peripheral Drivers" @@ -141,44 +168,38 @@ menu "On-chip Peripheral Drivers" select RT_USING_SPI default n - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - default n - if BSP_USING_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" + default n + select RT_USING_I2C + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" default n - if BSP_USING_I2C1 - comment "Notice: PH4 --> 116; PH5 --> 117" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 176 + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" default 116 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 176 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" default 117 endif - menuconfig BSP_USING_I2C2 - bool "Enable I2C2 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" default n - if BSP_USING_I2C2 - comment "Notice: PH13 --> 125; PH15 --> 127" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 1 176 + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" default 127 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 1 176 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" default 125 endif - endif - + endif config BSP_USING_ON_CHIP_FLASH bool "Enable on-chip FLASH" default n @@ -238,4 +259,5 @@ menu "Board extended module Drivers" endmenu + endmenu diff --git a/bsp/stm32/stm32h743-atk-apollo/board/ports/drv_ov2640.c b/bsp/stm32/stm32h743-atk-apollo/board/ports/drv_ov2640.c index 80c554bbfa7e..37539fe8e5b5 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 000000000000..41fd8a8a94ea --- /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 8b97b556011d..770daf99f92f 100644 --- a/bsp/stm32/stm32h743-openmv-h7plus/board/Kconfig +++ b/bsp/stm32/stm32h743-openmv-h7plus/board/Kconfig @@ -107,6 +107,38 @@ menu "Hardware Drivers Config" source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" + default n + select RT_USING_I2C + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 25 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 26 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 27 + endif + endif endmenu menu "Onboard Peripheral Drivers" @@ -137,8 +169,9 @@ menu "Hardware Drivers Config" config BSP_USING_OV5640 bool "Enable camera (ov5640)" select BSP_USING_DCMI - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C1 select BSP_USING_PWM select BSP_USING_PWM1 select BSP_USING_PWM1_CH1 @@ -148,44 +181,6 @@ menu "Hardware Drivers Config" bool "Enable DCMI" default n - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - default n - if BSP_USING_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - if BSP_USING_I2C1 - comment "Notice: PB8 --> 24; PB9 --> 25" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 176 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 176 - default 25 - endif - - menuconfig BSP_USING_I2C2 - bool "Enable I2C2 BUS (software simulation)" - default n - if BSP_USING_I2C2 - comment "Notice: PB10 --> 26; PB11 --> 27" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 1 176 - default 26 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 1 176 - default 27 - endif - endif - menuconfig BSP_USING_PWM bool "Enable PWM" default n @@ -201,6 +196,30 @@ menu "Hardware Drivers Config" endif endif + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if RT_USING_SOFT_I2C1 + endmenu + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + endmenu diff --git a/bsp/stm32/stm32h743-openmv-h7plus/board/ports/drv_ov5640.c b/bsp/stm32/stm32h743-openmv-h7plus/board/ports/drv_ov5640.c index f420f658fafd..08ecde47b165 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 000000000000..f8eb7b46bc8f --- /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 8a223ef349ef..fa6136387c75 100644 --- a/bsp/stm32/stm32h750-armfly-h7-tool/board/Kconfig +++ b/bsp/stm32/stm32h750-armfly-h7-tool/board/Kconfig @@ -128,23 +128,25 @@ menu "On-chip Peripheral Drivers" bool "Enable QSPI DMA support" default n - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 135 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 95 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 135 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 95 + endif endif - menuconfig BSP_USING_PWM bool "Enable PWM" default n @@ -200,4 +202,16 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 135 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 95 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/stm32/stm32h750-artpi/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32h750-artpi/.ci/attachconfig/ci.attachconfig.yml index 6df31cf648f9..5e2d390d275b 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 26d0bc29881c..03f2465171fc 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 68b2ed588d85..8323c6bf5a36 100644 --- a/bsp/stm32/stm32h750-artpi/board/Kconfig +++ b/bsp/stm32/stm32h750-artpi/board/Kconfig @@ -34,9 +34,9 @@ menu "Board extended module" config MEDIA_IO_USING_TOUCH select RT_USING_I2C - select RT_USING_I2C_BITOPS - select BSP_USING_I2C - select BSP_USING_I2C2 + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C2 + select BSP_USING_SOFT_I2C3 select PKG_USING_FT6236 bool "Enable Touch" default y @@ -44,9 +44,6 @@ menu "Board extended module" config MEDIA_IO_USING_AUDIO select RT_USING_AUDIO select RT_USING_I2C - select RT_USING_I2C_BITOPS - select BSP_USING_I2C - select BSP_USING_I2C3 bool "Enable Audio" default y if MEDIA_IO_USING_AUDIO @@ -123,6 +120,30 @@ menu "Onboard Peripheral Drivers" select RT_USING_SAL default n + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 127 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 125 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C3_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SCL_PIN_DEFAULT + int + default 123 if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SDA_PIN_DEFAULT + int + default 124 if RT_USING_SOFT_I2C3 + endmenu menu "On-chip Peripheral Drivers" @@ -285,60 +306,51 @@ menu "On-chip Peripheral Drivers" select RT_USING_RTC default n - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n - if BSP_USING_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - comment "Notice: PB6 --> 22; PB7 --> 23" - config BSP_I2C1_SCL_PIN - int "I2C1 scl pin number" - range 0 175 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 175 - default 23 - endif - menuconfig BSP_USING_I2C2 - bool "Enable I2C2 BUS (software simulation)" - default n - if BSP_USING_I2C2 - comment "Notice: PH13 --> 125; PH15 --> 127" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 1 176 - default 127 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 175 - default 125 - endif - menuconfig BSP_USING_I2C3 - bool "Enable I2C3 BUS (software simulation)" - default n - if BSP_USING_I2C3 - comment "Notice: PH12 --> 124; PH11 --> 123" - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 175 - default 123 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 175 - default 124 - endif - endif + select RT_USING_I2C + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 127 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 125 + endif + menuconfig BSP_USING_SOFT_I2C3 + bool "Enable software I2C3 Bus (swi2c3)" + default n + select RT_USING_SOFT_I2C3 + if BSP_USING_SOFT_I2C3 + config RT_SOFT_I2C3_SCL_PIN + int "swi2c3 SCL pin number" + default 123 + config RT_SOFT_I2C3_SDA_PIN + int "swi2c3 SDA pin number" + default 124 + endif + endif config BSP_USING_SDRAM bool "Enable SDRAM" select RT_USING_MEMHEAP @@ -430,4 +442,16 @@ menu "External Libraries" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/stm32/stm32h750-fk750m1-vbt6/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32h750-fk750m1-vbt6/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..41fd8a8a94ea --- /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 bc0b917610b4..cc6a72169c1b 100644 --- a/bsp/stm32/stm32h750-fk750m1-vbt6/board/Kconfig +++ b/bsp/stm32/stm32h750-fk750m1-vbt6/board/Kconfig @@ -13,10 +13,23 @@ menu "Onboard Peripheral Drivers" config BSP_USING_OV2640 bool "Enable camera (ov2640)" select BSP_USING_DCMI - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C1 default n + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if RT_USING_SOFT_I2C1 + endmenu menu "On-chip Peripheral Drivers" @@ -95,44 +108,38 @@ menu "On-chip Peripheral Drivers" bool "Enable DCMI" default n - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n - if BSP_USING_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - if BSP_USING_I2C1 - comment "Notice: PB8 --> 24; PB9 --> 25" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 176 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 176 - default 25 - endif - - 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 + select RT_USING_I2C + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 25 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 26 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 27 + endif endif - menuconfig BSP_USING_ONCHIP_RTC bool "Enable RTC" select RT_USING_RTC @@ -150,4 +157,16 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + endmenu diff --git a/bsp/stm32/stm32h750-fk750m1-vbt6/board/port/camera/drv_ov2640.c b/bsp/stm32/stm32h750-fk750m1-vbt6/board/port/camera/drv_ov2640.c index e6ff82e8c816..f2373796d675 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 000000000000..f8eb7b46bc8f --- /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 cc302ec09713..2eb5f44a4855 100644 --- a/bsp/stm32/stm32h750-weact-ministm32h7xx/board/Kconfig +++ b/bsp/stm32/stm32h750-weact-ministm32h7xx/board/Kconfig @@ -118,23 +118,25 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 135 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 95 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 135 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 95 + endif endif - menuconfig BSP_USING_PWM bool "Enable pwm" default n @@ -206,4 +208,16 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 135 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 95 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/stm32/stm32h7r7-artpi2/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32h7r7-artpi2/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..6f3d6478a10d --- /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 7152f927ec78..0afbe3a650ed 100644 --- a/bsp/stm32/stm32h7r7-artpi2/board/Kconfig +++ b/bsp/stm32/stm32h7r7-artpi2/board/Kconfig @@ -192,60 +192,51 @@ menu "On-chip Peripheral Drivers" select RT_USING_RTC default n - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n - if BSP_USING_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - comment "Notice: PB6 --> 22; PB7 --> 23" - config BSP_I2C1_SCL_PIN - int "I2C1 scl pin number" - range 0 175 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 175 - default 23 - endif - menuconfig BSP_USING_I2C2 - bool "Enable I2C2 BUS (software simulation)" - default n - if BSP_USING_I2C2 - comment "Notice: PH13 --> 125; PH15 --> 127" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 1 176 - default 127 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 175 - default 125 - endif - menuconfig BSP_USING_I2C3 - bool "Enable I2C3 BUS (software simulation)" - default n - if BSP_USING_I2C3 - comment "Notice: PH12 --> 124; PH11 --> 123" - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 175 - default 123 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 175 - default 124 - endif - endif + select RT_USING_I2C + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 127 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 125 + endif + menuconfig BSP_USING_SOFT_I2C3 + bool "Enable software I2C3 Bus (swi2c3)" + default n + select RT_USING_SOFT_I2C3 + if BSP_USING_SOFT_I2C3 + config RT_SOFT_I2C3_SCL_PIN + int "swi2c3 SCL pin number" + default 123 + config RT_SOFT_I2C3_SDA_PIN + int "swi2c3 SDA pin number" + default 124 + endif + endif config BSP_USING_USBD bool "Enable USB Device" select RT_USING_USB_DEVICE @@ -275,4 +266,40 @@ menu "On-chip Peripheral Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 127 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 125 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C3_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SCL_PIN_DEFAULT + int + default 123 if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SDA_PIN_DEFAULT + int + default 124 if RT_USING_SOFT_I2C3 + endmenu diff --git a/bsp/stm32/stm32h7s7-st-disco/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32h7s7-st-disco/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..6f3d6478a10d --- /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 43ee16e95600..90e4c0b04050 100644 --- a/bsp/stm32/stm32h7s7-st-disco/board/Kconfig +++ b/bsp/stm32/stm32h7s7-st-disco/board/Kconfig @@ -179,60 +179,51 @@ menu "On-chip Peripheral Drivers" select RT_USING_RTC default n - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n - if BSP_USING_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - comment "Notice: PB6 --> 22; PB7 --> 23" - config BSP_I2C1_SCL_PIN - int "I2C1 scl pin number" - range 0 175 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 175 - default 23 - endif - menuconfig BSP_USING_I2C2 - bool "Enable I2C2 BUS (software simulation)" - default n - if BSP_USING_I2C2 - comment "Notice: PH13 --> 125; PH15 --> 127" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 1 176 - default 127 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 0 175 - default 125 - endif - menuconfig BSP_USING_I2C3 - bool "Enable I2C3 BUS (software simulation)" - default n - if BSP_USING_I2C3 - comment "Notice: PH12 --> 124; PH11 --> 123" - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 0 175 - default 123 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 0 175 - default 124 - endif - endif + select RT_USING_I2C + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 127 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 125 + endif + menuconfig BSP_USING_SOFT_I2C3 + bool "Enable software I2C3 Bus (swi2c3)" + default n + select RT_USING_SOFT_I2C3 + if BSP_USING_SOFT_I2C3 + config RT_SOFT_I2C3_SCL_PIN + int "swi2c3 SCL pin number" + default 123 + config RT_SOFT_I2C3_SDA_PIN + int "swi2c3 SDA pin number" + default 124 + endif + endif config BSP_USING_USBD bool "Enable USB Device" select RT_USING_USB_DEVICE @@ -262,4 +253,40 @@ menu "On-chip Peripheral Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 127 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 125 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C3_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SCL_PIN_DEFAULT + int + default 123 if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SDA_PIN_DEFAULT + int + default 124 if RT_USING_SOFT_I2C3 + endmenu diff --git a/bsp/stm32/stm32l431-BearPi/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32l431-BearPi/.ci/attachconfig/ci.attachconfig.yml index 2a7fcdfd2753..4fec7a3cf35a 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 b30477426989..107d2ccbf4ab 100644 --- a/bsp/stm32/stm32l431-BearPi/applications/arduino_pinout/pins_arduino.c +++ b/bsp/stm32/stm32l431-BearPi/applications/arduino_pinout/pins_arduino.c @@ -19,23 +19,22 @@ * Analog pins MUST give the device name and channel(ADC, PWM or DAC). * Arduino Pin must keep in sequence. */ -const pin_map_t pin_map_table[]= -{ - {D0, GET_PIN(A,1), "spi1"}, /* SPI-SCK */ - {D1, GET_PIN(A,4)}, /* SPI-SS */ - {D2, GET_PIN(A,0)}, - {D3, GET_PIN(B,9)}, - {D4, GET_PIN(B,8), "pwm16", 1}, /* PWM */ - {D5, GET_PIN(B,6), "i2c1"}, /* I2C-SCL (Wire) */ - {D6, GET_PIN(B,7), "i2c1"}, /* I2C-SDA (Wire) */ - {D7, GET_PIN(A,6), "spi1"}, /* SPI-MISO */ - {D8, GET_PIN(A,12), "spi1"}, /* SPI-MOSI */ - {D9, GET_PIN(C,9)}, - {D10, GET_PIN(C,4), "uart3"}, /* Serial2-Tx */ - {D11, GET_PIN(C,5), "uart3"}, /* Serial2-Rx */ - {D12, GET_PIN(A,8), "pwm1", 1}, /* PWM */ - {A0, GET_PIN(C,2), "adc1", 3}, /* ADC */ - {A1, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF}, /* ADC, On-Chip: internal reference voltage */ - {A2, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER}, /* ADC, On-Chip: internal temperature sensor */ - {DAC0, GET_PIN(A,5), "dac1", 2}, /* DAC */ +const pin_map_t pin_map_table[] = { + { D0, GET_PIN(A, 1), "spi1" }, /* SPI-SCK */ + { D1, GET_PIN(A, 4) }, /* SPI-SS */ + { D2, GET_PIN(A, 0) }, + { D3, GET_PIN(B, 9) }, + { D4, GET_PIN(B, 8), "pwm16", 1 }, /* PWM */ + { D5, GET_PIN(B, 6), "swi2c1" }, /* I2C-SCL (Wire) */ + { D6, GET_PIN(B, 7), "swi2c1" }, /* I2C-SDA (Wire) */ + { D7, GET_PIN(A, 6), "spi1" }, /* SPI-MISO */ + { D8, GET_PIN(A, 12), "spi1" }, /* SPI-MOSI */ + { D9, GET_PIN(C, 9) }, + { D10, GET_PIN(C, 4), "uart3" }, /* Serial2-Tx */ + { D11, GET_PIN(C, 5), "uart3" }, /* Serial2-Rx */ + { D12, GET_PIN(A, 8), "pwm1", 1 }, /* PWM */ + { A0, GET_PIN(C, 2), "adc1", 3 }, /* ADC */ + { A1, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF }, /* ADC, On-Chip: internal reference voltage */ + { A2, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER }, /* ADC, On-Chip: internal temperature sensor */ + { DAC0, GET_PIN(A, 5), "dac1", 2 }, /* DAC */ }; diff --git a/bsp/stm32/stm32l431-BearPi/applications/arduino_pinout/pins_arduino.h b/bsp/stm32/stm32l431-BearPi/applications/arduino_pinout/pins_arduino.h index 384373f737ee..0f15067c85d7 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 e1589dc2aad4..3f27720824a0 100644 --- a/bsp/stm32/stm32l431-BearPi/board/Kconfig +++ b/bsp/stm32/stm32l431-BearPi/board/Kconfig @@ -108,23 +108,25 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 143 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 143 - default 23 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif endif - menuconfig BSP_USING_PWM bool "Enable PWM" default n @@ -210,8 +212,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM16 select BSP_USING_PWM16_CH1 select BSP_USING_PWM1_CH1 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C1 select BSP_USING_SPI select BSP_USING_SPI1 select BSP_SPI1_TX_USING_DMA @@ -221,10 +224,23 @@ menu "Onboard Peripheral Drivers" imply RTDUINO_USING_SERVO default n + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + config BSP_USING_MPU6050 bool "Enable MPU6050 to read accel data" - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C1 select PKG_USING_MPU6XXX default n if BSP_USING_MPU6050 @@ -284,4 +300,5 @@ menu "Onboard Peripheral Drivers" endif endmenu + endmenu diff --git a/bsp/stm32/stm32l431-BearPi/board/ports/mpu6050_meas.c b/bsp/stm32/stm32l431-BearPi/board/ports/mpu6050_meas.c index 7d5a4d65a831..9271bab72fe0 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 000000000000..6304b7700beb --- /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 c5ef1f038329..1860c00749fb 100644 --- a/bsp/stm32/stm32l431-tencentos-tiny-EVB_MX+/board/Kconfig +++ b/bsp/stm32/stm32l431-tencentos-tiny-EVB_MX+/board/Kconfig @@ -192,23 +192,25 @@ menu "On-chip Peripheral Drivers" select BSP_USING_SDIO default n - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 25 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 25 + endif endif - source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig" endmenu @@ -217,4 +219,16 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/stm32/stm32l433-ali-startkit/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32l433-ali-startkit/.ci/attachconfig/ci.attachconfig.yml index e4646070a994..07fb2b45b570 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 d42f7465c51f..b57bba2cf0ae 100644 --- a/bsp/stm32/stm32l433-ali-startkit/board/Kconfig +++ b/bsp/stm32/stm32l433-ali-startkit/board/Kconfig @@ -145,56 +145,51 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - menuconfig BSP_USING_I2C2 - bool "Enable I2C2 BUS (software simulation)" - default n - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 1 176 - default 29 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 1 176 - default 30 - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 29 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 30 + endif - menuconfig BSP_USING_I2C3 - bool "Enable I2C3 BUS (software simulation)" - default n - if BSP_USING_I2C3 - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 1 176 - default 32 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 1 176 - default 33 - endif + menuconfig BSP_USING_SOFT_I2C3 + bool "Enable software I2C3 Bus (swi2c3)" + default n + select RT_USING_SOFT_I2C3 + if BSP_USING_SOFT_I2C3 + config RT_SOFT_I2C3_SCL_PIN + int "swi2c3 SCL pin number" + default 32 + config RT_SOFT_I2C3_SDA_PIN + int "swi2c3 SDA pin number" + default 33 + endif - menuconfig BSP_USING_I2C4 - bool "Enable I2C4 BUS (software simulation)" - default y - if BSP_USING_I2C4 - config BSP_I2C4_SCL_PIN - int "i2c4 scl pin number" - range 1 176 - default 60 - config BSP_I2C4_SDA_PIN - int "i2c4 sda pin number" - range 1 176 - default 61 - endif + menuconfig BSP_USING_SOFT_I2C4 + bool "Enable software I2C4 Bus (swi2c4)" + default n + select RT_USING_SOFT_I2C4 + if BSP_USING_SOFT_I2C4 + config RT_SOFT_I2C4_SCL_PIN + int "swi2c4 SCL pin number" + default 60 + config RT_SOFT_I2C4_SDA_PIN + int "swi2c4 SDA pin number" + default 61 + endif endif - config BSP_USING_SDIO bool "Enable sdio" select RT_USING_SDIO @@ -276,4 +271,40 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 29 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 30 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C3_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SCL_PIN_DEFAULT + int + default 32 if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SDA_PIN_DEFAULT + int + default 33 if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C4_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C4 + + config RT_SOFT_I2C4_SCL_PIN_DEFAULT + int + default 60 if RT_USING_SOFT_I2C4 + + config RT_SOFT_I2C4_SDA_PIN_DEFAULT + int + default 61 if RT_USING_SOFT_I2C4 + endmenu diff --git a/bsp/stm32/stm32l452-st-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32l452-st-nucleo/.ci/attachconfig/ci.attachconfig.yml index e4646070a994..38f5930b0fd2 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 f320a25f50e2..650bc67760a6 100644 --- a/bsp/stm32/stm32l452-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32l452-st-nucleo/board/Kconfig @@ -111,21 +111,24 @@ menu "On-chip Peripheral Drivers" config BSP_USING_ON_CHIP_FLASH bool "Enable on-chip FLASH" default n - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 176 - default 15 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 176 - default 16 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 15 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 16 + endif endif source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig" @@ -135,4 +138,16 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 15 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 16 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/stm32/stm32l475-atk-pandora/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32l475-atk-pandora/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..f1ffa2baad6a --- /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 d9b648b1c9df..9d7dfe332a98 100644 --- a/bsp/stm32/stm32l475-atk-pandora/applications/arduino_pinout/pins_arduino.c +++ b/bsp/stm32/stm32l475-atk-pandora/applications/arduino_pinout/pins_arduino.c @@ -20,51 +20,50 @@ * Analog pins MUST give the device name and channel(ADC, PWM or DAC). * Arduino Pin must keep in sequence. */ -const pin_map_t pin_map_table[]= -{ - {D0, GET_PIN(A,10), "uart1"}, /* Serial-Rx */ - {D1, GET_PIN(A,9), "uart1"}, /* Serial-Tx */ - {D2, GET_PIN(B,9)}, - {D3, GET_PIN(D,15), "pwm4", 4}, /* PWM */ - {D4, GET_PIN(A,8)}, - {D5, GET_PIN(D,14)}, - {D6, GET_PIN(B,11), "pwm2", 4}, /* PWM */ - {D7, GET_PIN(B,14)}, - {D8, GET_PIN(B,12)}, - {D9, GET_PIN(D,12), "pwm4", 1}, /* PWM */ - {D10, GET_PIN(B,10), "pwm2", 3}, /* PWM */ - {D11, GET_PIN(B,8), "pwm4", 3}, /* PWM */ - {D12, GET_PIN(B,15)}, - {D13, GET_PIN(B,13)}, - {D14, GET_PIN(A,1)}, /* BSP: MOTOR-A */ - {D15, GET_PIN(A,0)}, /* BSP: MOTOR-B */ - {D16, GET_PIN(B,2)}, /* BSP: BEEP */ - {D17, GET_PIN(D,10)}, /* BSP: KEY0 */ - {D18, GET_PIN(D,9)}, /* BSP: KEY1 */ - {D19, GET_PIN(D,8)}, /* BSP: KEY2 */ - {D20, GET_PIN(C,13)}, /* BSP: KEY-WKUP */ - {D21, GET_PIN(E,7)}, /* BSP: RED-LED */ - {D22, GET_PIN(E,8)}, /* LED_BUILTIN, BSP: GREEN-LED */ - {D23, GET_PIN(E,9), "pwm1", 1}, /* PWM, BSP: BLUE-LED */ - {D24, GET_PIN(B,0)}, /* BSP: INFRARED EMISSION */ - {D25, GET_PIN(B,1)}, /* BSP: INFRARED RECEPTION */ - {D26, GET_PIN(D,4)}, /* BSP: WIRELESS CE */ - {D27, GET_PIN(D,3)}, /* BSP: WIRELESS IRQ */ - {D28, GET_PIN(D,5)}, /* SPI-SS, BSP: WIRELESS CS */ - {D29, GET_PIN(B,13), "spi2"}, /* SPI-SCK */ - {D30, GET_PIN(B,14), "spi2"}, /* SPI-MISO */ - {D31, GET_PIN(B,15), "spi2"}, /* SPI-MOSI */ - {D32, GET_PIN(C,7), "i2c1"}, /* I2C-SDA (Wire) */ - {D33, GET_PIN(C,6), "i2c1"}, /* I2C-SCL (Wire) */ - {D34, GET_PIN(A,2), "uart2"}, /* Serial2-Tx */ - {D35, GET_PIN(A,3), "uart2"}, /* Serial2-Rx */ - {D36, GET_PIN(D,7)}, /* BSP: LCD CS */ - {D37, GET_PIN(B,6)}, /* BSP: LCD RESET */ - {D38, GET_PIN(B,4)}, /* BSP: LCD RW/DC (data or command) */ - {D39, GET_PIN(B,7), "pwm4", 2}, /* BSP: LCD POWER */ - {A0, GET_PIN(C,2), "adc1", 3}, /* ADC */ - {A1, GET_PIN(C,4), "adc1", 13}, /* ADC */ - {A2, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF}, /* ADC, On-Chip: internal reference voltage */ - {A3, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER}, /* ADC, On-Chip: internal temperature sensor */ - {DAC0, GET_PIN(A,4), "dac1", 1}, /* DAC */ +const pin_map_t pin_map_table[] = { + { D0, GET_PIN(A, 10), "uart1" }, /* Serial-Rx */ + { D1, GET_PIN(A, 9), "uart1" }, /* Serial-Tx */ + { D2, GET_PIN(B, 9) }, + { D3, GET_PIN(D, 15), "pwm4", 4 }, /* PWM */ + { D4, GET_PIN(A, 8) }, + { D5, GET_PIN(D, 14) }, + { D6, GET_PIN(B, 11), "pwm2", 4 }, /* PWM */ + { D7, GET_PIN(B, 14) }, + { D8, GET_PIN(B, 12) }, + { D9, GET_PIN(D, 12), "pwm4", 1 }, /* PWM */ + { D10, GET_PIN(B, 10), "pwm2", 3 }, /* PWM */ + { D11, GET_PIN(B, 8), "pwm4", 3 }, /* PWM */ + { D12, GET_PIN(B, 15) }, + { D13, GET_PIN(B, 13) }, + { D14, GET_PIN(A, 1) }, /* BSP: MOTOR-A */ + { D15, GET_PIN(A, 0) }, /* BSP: MOTOR-B */ + { D16, GET_PIN(B, 2) }, /* BSP: BEEP */ + { D17, GET_PIN(D, 10) }, /* BSP: KEY0 */ + { D18, GET_PIN(D, 9) }, /* BSP: KEY1 */ + { D19, GET_PIN(D, 8) }, /* BSP: KEY2 */ + { D20, GET_PIN(C, 13) }, /* BSP: KEY-WKUP */ + { D21, GET_PIN(E, 7) }, /* BSP: RED-LED */ + { D22, GET_PIN(E, 8) }, /* LED_BUILTIN, BSP: GREEN-LED */ + { D23, GET_PIN(E, 9), "pwm1", 1 }, /* PWM, BSP: BLUE-LED */ + { D24, GET_PIN(B, 0) }, /* BSP: INFRARED EMISSION */ + { D25, GET_PIN(B, 1) }, /* BSP: INFRARED RECEPTION */ + { D26, GET_PIN(D, 4) }, /* BSP: WIRELESS CE */ + { D27, GET_PIN(D, 3) }, /* BSP: WIRELESS IRQ */ + { D28, GET_PIN(D, 5) }, /* SPI-SS, BSP: WIRELESS CS */ + { D29, GET_PIN(B, 13), "spi2" }, /* SPI-SCK */ + { D30, GET_PIN(B, 14), "spi2" }, /* SPI-MISO */ + { D31, GET_PIN(B, 15), "spi2" }, /* SPI-MOSI */ + { D32, GET_PIN(C, 7), "swi2c1" }, /* I2C-SDA (Wire) */ + { D33, GET_PIN(C, 6), "swi2c1" }, /* I2C-SCL (Wire) */ + { D34, GET_PIN(A, 2), "uart2" }, /* Serial2-Tx */ + { D35, GET_PIN(A, 3), "uart2" }, /* Serial2-Rx */ + { D36, GET_PIN(D, 7) }, /* BSP: LCD CS */ + { D37, GET_PIN(B, 6) }, /* BSP: LCD RESET */ + { D38, GET_PIN(B, 4) }, /* BSP: LCD RW/DC (data or command) */ + { D39, GET_PIN(B, 7), "pwm4", 2 }, /* BSP: LCD POWER */ + { A0, GET_PIN(C, 2), "adc1", 3 }, /* ADC */ + { A1, GET_PIN(C, 4), "adc1", 13 }, /* ADC */ + { A2, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF }, /* ADC, On-Chip: internal reference voltage */ + { A3, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER }, /* ADC, On-Chip: internal temperature sensor */ + { DAC0, GET_PIN(A, 4), "dac1", 1 }, /* DAC */ }; diff --git a/bsp/stm32/stm32l475-atk-pandora/applications/arduino_pinout/pins_arduino.h b/bsp/stm32/stm32l475-atk-pandora/applications/arduino_pinout/pins_arduino.h index 79fe8c6ce495..3bd96a393225 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 de2fc8ce25fe..d68b675cabc8 100644 --- a/bsp/stm32/stm32l475-atk-pandora/board/Kconfig +++ b/bsp/stm32/stm32l475-atk-pandora/board/Kconfig @@ -27,8 +27,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM4_CH4 select BSP_USING_ADC select BSP_USING_ADC1 - select BSP_USING_I2C - select BSP_USING_I2C1 # PC7-SDA PC6-SCL (User I2C) + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select RT_USING_SOFT_I2C1 # PC7-SDA PC6-SCL (User I2C) select BSP_USING_DAC select BSP_USING_DAC1 select BSP_USING_SPI @@ -75,7 +76,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_ARDUINO_AHT10 bool "Enable Arduino AHT10 sensor library" - select BSP_USING_I2C4 + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C4 select PKG_USING_ARDUINO_ADAFRUIT_AHTX0 depends on !BSP_USING_AHT10 default n @@ -88,13 +91,17 @@ menu "Onboard Peripheral Drivers" config BSP_USING_ARDUINO_AP3216 bool - select BSP_USING_I2C3 + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C3 depends on !BSP_USING_AP3216C default n config BSP_USING_ARDUINO_ICM20608 bool - select BSP_USING_I2C3 + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C3 depends on !BSP_USING_ICM20608 default n endif @@ -175,25 +182,28 @@ menu "Onboard Peripheral Drivers" config BSP_USING_ICM20608 - bool "Enable ICM20608 (i2c3)" - select BSP_USING_I2C - select BSP_USING_I2C3 + bool "Enable ICM20608 (swi2c3)" + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C3 select PKG_USING_MPU6XXX select PKG_USING_MPU6XXX_LATEST_VERSION default n config BSP_USING_AHT10 - bool "Enable AHT10 (i2c4)" - select BSP_USING_I2C - select BSP_USING_I2C4 + bool "Enable AHT10 (swi2c4)" + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C4 select PKG_USING_AHT10 select AHT10_USING_SENSOR_DEVICE default n config BSP_USING_AP3216C - bool "Enable AP3216C (i2c3)" - select BSP_USING_I2C - select BSP_USING_I2C3 + bool "Enable AP3216C (swi2c3)" + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C3 select PKG_USING_AP3216C select AP3216C_USING_SENSOR_DEVICE default n @@ -201,8 +211,9 @@ menu "Onboard Peripheral Drivers" menuconfig BSP_USING_AUDIO bool "Enable Audio Device" select RT_USING_AUDIO - select BSP_USING_I2C - select BSP_USING_I2C3 + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C3 default n if BSP_USING_AUDIO @@ -273,6 +284,43 @@ menu "Onboard Peripheral Drivers" default y endif + + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 38 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 39 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C3_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SCL_PIN_DEFAULT + int + default 32 if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SDA_PIN_DEFAULT + int + default 33 if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C4_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C4 + + config RT_SOFT_I2C4_SCL_PIN_DEFAULT + int + default 54 if RT_USING_SOFT_I2C4 + + config RT_SOFT_I2C4_SDA_PIN_DEFAULT + int + default 33 if RT_USING_SOFT_I2C4 + endmenu menu "On-chip Peripheral Drivers" @@ -424,57 +472,51 @@ menu "On-chip Peripheral Drivers" bool "Enable QSPI DMA support" default n - menuconfig BSP_USING_I2C - bool "Enable I2C Bus" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 Bus (User I2C)" - default n - if BSP_USING_I2C1 - comment "Notice: PC7 --> 39; PC6 --> 38" - config BSP_I2C1_SCL_PIN - int "i2c1 SCL pin number" - range 1 176 - default 38 - config BSP_I2C1_SDA_PIN - int "i2c1 SDA pin number" - range 1 176 - default 39 - endif - - config BSP_USING_I2C3 - bool "Enable I2C3 Bus (AP3216C/ICM20608/ES8388)" - default n - - if BSP_USING_I2C3 - # Notice: PC0 --> 32; PC1 --> 33 - config BSP_I2C3_SCL_PIN - int - default 32 - config BSP_I2C3_SDA_PIN - int - default 33 - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 38 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 39 + endif - config BSP_USING_I2C4 - bool "Enable I2C4 Bus (AHT10)" - default n + menuconfig BSP_USING_SOFT_I2C3 + bool "Enable software I2C3 Bus (swi2c3)" + default n + select RT_USING_SOFT_I2C3 + if BSP_USING_SOFT_I2C3 + config RT_SOFT_I2C3_SCL_PIN + int "swi2c3 SCL pin number" + default 32 + config RT_SOFT_I2C3_SDA_PIN + int "swi2c3 SDA pin number" + default 33 + endif - if BSP_USING_I2C4 - # Notice: PC1 --> 33; PD6 --> 54 - config BSP_I2C4_SCL_PIN - int - default 54 - config BSP_I2C4_SDA_PIN - int - default 33 - endif + menuconfig BSP_USING_SOFT_I2C4 + bool "Enable software I2C4 Bus (swi2c4)" + default n + select RT_USING_SOFT_I2C4 + if BSP_USING_SOFT_I2C4 + config RT_SOFT_I2C4_SCL_PIN + int "swi2c4 SCL pin number" + default 54 + config RT_SOFT_I2C4_SDA_PIN + int "swi2c4 SDA pin number" + default 33 + endif endif - menuconfig BSP_USING_TIM bool "Enable timer" default n diff --git a/bsp/stm32/stm32l475-atk-pandora/board/ports/audio/drv_sound.c b/bsp/stm32/stm32l475-atk-pandora/board/ports/audio/drv_sound.c index b19d584d3d6f..e4b0e2af7216 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 2b3c3f584ffb..95455653fa5c 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 2a7fcdfd2753..3bceff88637b 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 a61610fcd67e..da7604056304 100644 --- a/bsp/stm32/stm32l476-st-nucleo/applications/arduino_pinout/pins_arduino.c +++ b/bsp/stm32/stm32l476-st-nucleo/applications/arduino_pinout/pins_arduino.c @@ -23,33 +23,32 @@ * Analog pins MUST give the device name and channel(ADC, PWM or DAC). * Arduino Pin must keep in sequence. */ -const pin_map_t pin_map_table[]= -{ - {D0, GET_PIN(A,3), "uart2"}, /* Serial-RX */ - {D1, GET_PIN(A,2), "uart2"}, /* Serial-TX */ - {D2, GET_PIN(A,10)}, - {D3, GET_PIN(B,3), "pwm2", 2}, /* PWM */ - {D4, GET_PIN(B,5)}, - {D5, GET_PIN(B,4), "pwm3", 1}, /* PWM */ - {D6, GET_PIN(B,10), "pwm2", 3}, /* PWM */ - {D7, GET_PIN(A,8)}, - {D8, GET_PIN(A,9)}, - {D9, GET_PIN(C,7), "pwm3", 2}, /* PWM */ - {D10, GET_PIN(B,6), "pwm4", 1}, /* PWM */ - {D11, GET_PIN(A,7), "pwm17", 1}, /* PWM */ - {D12, GET_PIN(A,6)}, - {D13, GET_PIN(A,5)}, - {D14, GET_PIN(B,9), "i2c1"}, /* I2C-SDA (Wire) */ - {D15, GET_PIN(B,8), "i2c1"}, /* I2C-SCL (Wire) */ - {D16, GET_PIN(A,5)}, - {A0, GET_PIN(A,0), "adc1", 5}, /* ADC */ - {A1, GET_PIN(A,1), "adc1", 6}, /* ADC */ - {A2, GET_PIN(A,4), "adc1", 9}, /* ADC */ - {A3, GET_PIN(B,0), "adc1", 15}, /* ADC */ - {A4, GET_PIN(C,1), "adc1", 2}, /* ADC */ - {A5, GET_PIN(C,0), "adc1", 1}, /* ADC */ - {A6, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF}, /* ADC, On-Chip: internal reference voltage */ - {A7, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER}, /* ADC, On-Chip: internal temperature sensor */ +const pin_map_t pin_map_table[] = { + { D0, GET_PIN(A, 3), "uart2" }, /* Serial-RX */ + { D1, GET_PIN(A, 2), "uart2" }, /* Serial-TX */ + { D2, GET_PIN(A, 10) }, + { D3, GET_PIN(B, 3), "pwm2", 2 }, /* PWM */ + { D4, GET_PIN(B, 5) }, + { D5, GET_PIN(B, 4), "pwm3", 1 }, /* PWM */ + { D6, GET_PIN(B, 10), "pwm2", 3 }, /* PWM */ + { D7, GET_PIN(A, 8) }, + { D8, GET_PIN(A, 9) }, + { D9, GET_PIN(C, 7), "pwm3", 2 }, /* PWM */ + { D10, GET_PIN(B, 6), "pwm4", 1 }, /* PWM */ + { D11, GET_PIN(A, 7), "pwm17", 1 }, /* PWM */ + { D12, GET_PIN(A, 6) }, + { D13, GET_PIN(A, 5) }, + { D14, GET_PIN(B, 9), "swi2c1" }, /* I2C-SDA (Wire) */ + { D15, GET_PIN(B, 8), "swi2c1" }, /* I2C-SCL (Wire) */ + { D16, GET_PIN(A, 5) }, + { A0, GET_PIN(A, 0), "adc1", 5 }, /* ADC */ + { A1, GET_PIN(A, 1), "adc1", 6 }, /* ADC */ + { A2, GET_PIN(A, 4), "adc1", 9 }, /* ADC */ + { A3, GET_PIN(B, 0), "adc1", 15 }, /* ADC */ + { A4, GET_PIN(C, 1), "adc1", 2 }, /* ADC */ + { A5, GET_PIN(C, 0), "adc1", 1 }, /* ADC */ + { A6, RT_NULL, "adc1", RT_ADC_INTERN_CH_VREF }, /* ADC, On-Chip: internal reference voltage */ + { A7, RT_NULL, "adc1", RT_ADC_INTERN_CH_TEMPER }, /* ADC, On-Chip: internal temperature sensor */ }; #ifdef RTDUINO_USING_SPI diff --git a/bsp/stm32/stm32l476-st-nucleo/applications/arduino_pinout/pins_arduino.h b/bsp/stm32/stm32l476-st-nucleo/applications/arduino_pinout/pins_arduino.h index 4c0042520320..ac688fe814fd 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 a8e9ee55f38b..47f4e1b6fd5d 100644 --- a/bsp/stm32/stm32l476-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32l476-st-nucleo/board/Kconfig @@ -28,8 +28,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM4_CH1 select BSP_USING_PWM17 select BSP_USING_PWM17_CH1 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C1 select BSP_USING_SPI select BSP_USING_SPI1 select BSP_SPI1_TX_USING_DMA @@ -39,6 +40,19 @@ menu "Onboard Peripheral Drivers" imply RTDUINO_USING_SERVO default n + + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if RT_USING_SOFT_I2C1 + endmenu menu "On-chip Peripheral Drivers" @@ -92,63 +106,51 @@ menu "On-chip Peripheral Drivers" endif endif - menuconfig BSP_USING_I2C - bool "Enable I2C (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - - if BSP_USING_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number (PB8)" - range 1 176 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" default 24 - - config BSP_I2C1_SDA_PIN - int "i2c1 sda pin number (PB9)" - range 1 176 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" default 25 endif - config BSP_USING_I2C2 - bool "Enable I2C2 BUS (software simulation)" - default n - - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 1 176 + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" default 26 - - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 1 176 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" default 27 endif - config BSP_USING_I2C3 - bool "Enable I2C3 BUS (software simulation)" - default n - - if BSP_USING_I2C3 - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 1 176 + menuconfig BSP_USING_SOFT_I2C3 + bool "Enable software I2C3 Bus (swi2c3)" + default n + select RT_USING_SOFT_I2C3 + if BSP_USING_SOFT_I2C3 + config RT_SOFT_I2C3_SCL_PIN + int "swi2c3 SCL pin number" default 32 - - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 1 176 + config RT_SOFT_I2C3_SDA_PIN + int "swi2c3 SDA pin number" default 33 endif endif - menuconfig BSP_USING_SPI bool "Enable SPI BUS" default n @@ -299,4 +301,28 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C3_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SCL_PIN_DEFAULT + int + default 32 if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SDA_PIN_DEFAULT + int + default 33 if RT_USING_SOFT_I2C3 + endmenu diff --git a/bsp/stm32/stm32l496-ali-developer/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32l496-ali-developer/.ci/attachconfig/ci.attachconfig.yml index e4646070a994..07fb2b45b570 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 56643f8cdd28..ae8cbeadc1f3 100644 --- a/bsp/stm32/stm32l496-ali-developer/board/Kconfig +++ b/bsp/stm32/stm32l496-ali-developer/board/Kconfig @@ -153,56 +153,51 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - menuconfig BSP_USING_I2C2 - bool "Enable I2C2 BUS (software simulation)" - default n - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 1 176 - default 29 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 1 176 - default 30 - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 29 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 30 + endif - menuconfig BSP_USING_I2C3 - bool "Enable I2C3 BUS (software simulation)" - default n - if BSP_USING_I2C3 - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 1 176 - default 32 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 1 176 - default 33 - endif + menuconfig BSP_USING_SOFT_I2C3 + bool "Enable software I2C3 Bus (swi2c3)" + default n + select RT_USING_SOFT_I2C3 + if BSP_USING_SOFT_I2C3 + config RT_SOFT_I2C3_SCL_PIN + int "swi2c3 SCL pin number" + default 32 + config RT_SOFT_I2C3_SDA_PIN + int "swi2c3 SDA pin number" + default 33 + endif - menuconfig BSP_USING_I2C4 - bool "Enable I2C4 BUS (software simulation)" - default y - if BSP_USING_I2C4 - config BSP_I2C4_SCL_PIN - int "i2c4 scl pin number" - range 1 176 - default 60 - config BSP_I2C4_SDA_PIN - int "i2c4 sda pin number" - range 1 176 - default 61 - endif + menuconfig BSP_USING_SOFT_I2C4 + bool "Enable software I2C4 Bus (swi2c4)" + default n + select RT_USING_SOFT_I2C4 + if BSP_USING_SOFT_I2C4 + config RT_SOFT_I2C4_SCL_PIN + int "swi2c4 SCL pin number" + default 60 + config RT_SOFT_I2C4_SDA_PIN + int "swi2c4 SDA pin number" + default 61 + endif endif - config BSP_USING_SDIO bool "Enable sdio" select RT_USING_SDIO @@ -284,4 +279,40 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 29 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 30 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C3_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SCL_PIN_DEFAULT + int + default 32 if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SDA_PIN_DEFAULT + int + default 33 if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C4_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C4 + + config RT_SOFT_I2C4_SCL_PIN_DEFAULT + int + default 60 if RT_USING_SOFT_I2C4 + + config RT_SOFT_I2C4_SDA_PIN_DEFAULT + int + default 61 if RT_USING_SOFT_I2C4 + endmenu diff --git a/bsp/stm32/stm32l496-st-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32l496-st-nucleo/.ci/attachconfig/ci.attachconfig.yml index 21dbe5769b52..1b4eaf569b92 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 f0c35b330a87..f0e4aee4bfb5 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 e4646070a994..8e718423d0c4 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 24bbfa435164..04c3073ae136 100644 --- a/bsp/stm32/stm32l4r5-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32l4r5-st-nucleo/board/Kconfig @@ -285,41 +285,38 @@ menu "Hardware Drivers Config" default n endif - menuconfig BSP_USING_I2C - bool "Enable using I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" + default n + select RT_USING_I2C + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" default n - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 144 - default 100 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 144 - default 101 - endif - menuconfig BSP_USING_I2C2 - bool "Enable I2C2 BUS (software simulation)" - default n - if BSP_USING_I2C2 - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 1 144 - default 10 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 1 144 - default 11 - endif + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 100 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 101 endif + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 10 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 11 + endif + endif menuconfig BSP_USING_TIM bool "Enable timer" default n @@ -365,4 +362,28 @@ menu "Hardware Drivers Config" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 100 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 101 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 10 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 11 if RT_USING_SOFT_I2C2 + endmenu diff --git a/bsp/stm32/stm32l4r9-st-eval/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32l4r9-st-eval/.ci/attachconfig/ci.attachconfig.yml index e4646070a994..5842675f0680 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 6a34d32811c3..e29ec26b817c 100644 --- a/bsp/stm32/stm32l4r9-st-eval/board/Kconfig +++ b/bsp/stm32/stm32l4r9-st-eval/board/Kconfig @@ -18,7 +18,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_TOUCH bool "Enable Touch drivers" - select BSP_USING_I2C1 + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C1 default n if BSP_USING_TOUCH config BSP_TOUCH_INT_PIN @@ -35,6 +37,18 @@ menu "Onboard Peripheral Drivers" default n endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 116 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 117 if RT_USING_SOFT_I2C1 + endmenu menu "On-chip Peripheral Drivers" @@ -93,23 +107,25 @@ menu "On-chip Peripheral Drivers" select BSP_USING_FMC default n - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 216 - default 116 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 216 - default 117 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 116 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 117 + endif endif - config BSP_USING_GFXMMU bool default n @@ -125,4 +141,5 @@ menu "Board extended module Drivers" endmenu + endmenu diff --git a/bsp/stm32/stm32mp157a-st-discovery/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32mp157a-st-discovery/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..3b17a1f4834b --- /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 05c61bf8b957..a5218ed67022 100644 --- a/bsp/stm32/stm32mp157a-st-discovery/board/Kconfig +++ b/bsp/stm32/stm32mp157a-st-discovery/board/Kconfig @@ -14,8 +14,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_PMIC bool "Enable PMIC" - select BSP_USING_I2C - select BSP_USING_I2C3 + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C3 default y config BSP_USING_PWR @@ -75,8 +76,9 @@ menu "Onboard Peripheral Drivers" select RT_USING_AUDIO select BSP_USING_PMIC select BSP_USING_SDMMC - select BSP_USING_I2C - select BSP_USING_I2C4 + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C4 default n if BSP_USING_AUDIO @@ -89,6 +91,30 @@ menu "Onboard Peripheral Drivers" default n endif + config RT_SOFT_I2C3_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SCL_PIN_DEFAULT + int + default 180 if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SDA_PIN_DEFAULT + int + default 181 if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C4_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C4 + + config RT_SOFT_I2C4_SCL_PIN_DEFAULT + int + default 60 if RT_USING_SOFT_I2C4 + + config RT_SOFT_I2C4_SDA_PIN_DEFAULT + int + default 95 if RT_USING_SOFT_I2C4 + endmenu menu "On-chip Peripheral Drivers" @@ -244,72 +270,64 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n - if BSP_USING_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - if BSP_USING_I2C1 - comment "Notice: PD7 --> 55; PG15 --> 111" - config BSP_I2C1_SCL_PIN - int "I2C1 scl pin number" - range 1 176 - default 55 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 176 - default 111 - endif - menuconfig BSP_USING_I2C2 - bool "Enable I2C2 BUS (software simulation)" - default n - if BSP_USING_I2C2 - comment "Notice: PH4 --> 116; PH5 --> 117" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 1 176 - default 116 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 1 176 - default 117 - endif - menuconfig BSP_USING_I2C3 - bool "Enable I2C3 BUS (software simulation)" - default n - if BSP_USING_I2C3 - comment "Notice: PZ4 --> 180; PZ5 --> 181" - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 1 191 - default 180 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 1 191 - default 181 - endif - menuconfig BSP_USING_I2C4 - bool "Enable I2C4 BUS (software simulation)" - default n - if BSP_USING_I2C4 - comment "Notice: PD12 --> 60; PF15 --> 95" - config BSP_I2C4_SCL_PIN - int "i2c4 scl pin number" - range 1 191 - default 60 - config BSP_I2C4_SDA_PIN - int "I2C4 sda pin number" - range 1 191 - default 95 - endif + select RT_USING_I2C + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 55 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 111 + endif - endif + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 116 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 117 + endif + + menuconfig BSP_USING_SOFT_I2C3 + bool "Enable software I2C3 Bus (swi2c3)" + default n + select RT_USING_SOFT_I2C3 + if BSP_USING_SOFT_I2C3 + config RT_SOFT_I2C3_SCL_PIN + int "swi2c3 SCL pin number" + default 180 + config RT_SOFT_I2C3_SDA_PIN + int "swi2c3 SDA pin number" + default 181 + endif + menuconfig BSP_USING_SOFT_I2C4 + bool "Enable software I2C4 Bus (swi2c4)" + default n + select RT_USING_SOFT_I2C4 + if BSP_USING_SOFT_I2C4 + config RT_SOFT_I2C4_SCL_PIN + int "swi2c4 SCL pin number" + default 60 + config RT_SOFT_I2C4_SDA_PIN + int "swi2c4 SDA pin number" + default 95 + endif + endif menuconfig BSP_USING_SPI bool "Enable SPI BUS" select RT_USING_SPI @@ -339,4 +357,28 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 55 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 111 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 116 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 117 if RT_USING_SOFT_I2C2 + endmenu diff --git a/bsp/stm32/stm32mp157a-st-discovery/board/ports/audio/drv_mic.c b/bsp/stm32/stm32mp157a-st-discovery/board/ports/audio/drv_mic.c index 9444fe872b40..d27d8e5e5581 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 349651e9b9bd..e2266cc9907e 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 2bf50623bc75..32db752c5ad9 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 000000000000..183e197301d5 --- /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 fb4c2cea1e34..bf8f0fc719f3 100644 --- a/bsp/stm32/stm32mp157a-st-ev1/board/Kconfig +++ b/bsp/stm32/stm32mp157a-st-ev1/board/Kconfig @@ -14,8 +14,9 @@ menu "Onboard Peripheral Drivers" config BSP_USING_PMIC bool "Enable PMIC" - select BSP_USING_I2C - select BSP_USING_I2C3 + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C3 default y config BSP_USING_PWR @@ -81,8 +82,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_SDMMC select BSP_USING_SDCARD select SD_USING_DFS - select BSP_USING_I2C - select BSP_USING_I2C2 + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C2 default n config BSP_USING_DCMI @@ -91,8 +93,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PMIC select BSP_USING_SDMMC select BSP_USING_SDCARD - select BSP_USING_I2C - select BSP_USING_I2C2 + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C2 default n config BSP_USING_MFX @@ -115,6 +118,30 @@ menu "Onboard Peripheral Drivers" endif + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 116 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 117 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C3_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SCL_PIN_DEFAULT + int + default 180 if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SDA_PIN_DEFAULT + int + default 181 if RT_USING_SOFT_I2C3 + endmenu menu "On-chip Peripheral Drivers" @@ -293,57 +320,51 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n - if BSP_USING_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default n - if BSP_USING_I2C1 - comment "Notice: PD7 --> 55; PG15 --> 111" - config BSP_I2C1_SCL_PIN - int "I2C1 scl pin number" - range 1 176 - default 55 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 176 - default 111 - endif - menuconfig BSP_USING_I2C2 - bool "Enable I2C2 BUS (software simulation)" - default n - if BSP_USING_I2C2 - comment "Notice: PH4 --> 116; PH5 --> 117" - config BSP_I2C2_SCL_PIN - int "i2c2 scl pin number" - range 1 176 - default 116 - config BSP_I2C2_SDA_PIN - int "I2C2 sda pin number" - range 1 176 - default 117 - endif - menuconfig BSP_USING_I2C3 - bool "Enable I2C3 BUS (software simulation)" - default n - if BSP_USING_I2C3 - comment "Notice: PZ4 --> 180; PZ5 --> 181" - config BSP_I2C3_SCL_PIN - int "i2c3 scl pin number" - range 1 191 - default 180 - config BSP_I2C3_SDA_PIN - int "I2C3 sda pin number" - range 1 191 - default 181 - endif - endif + select RT_USING_I2C + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 55 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 111 + endif + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 116 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 117 + endif + + menuconfig BSP_USING_SOFT_I2C3 + bool "Enable software I2C3 Bus (swi2c3)" + default n + select RT_USING_SOFT_I2C3 + if BSP_USING_SOFT_I2C3 + config RT_SOFT_I2C3_SCL_PIN + int "swi2c3 SCL pin number" + default 180 + config RT_SOFT_I2C3_SDA_PIN + int "swi2c3 SDA pin number" + default 181 + endif + endif menuconfig BSP_USING_SPI bool "Enable SPI BUS" select RT_USING_SPI @@ -372,4 +393,16 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 55 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 111 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_mfx.c b/bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_mfx.c index 924035e5e2ca..2f9ea6ad0e67 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 97a7721c60a5..1127b23fa7ee 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 78346365aa7b..6b5f41e2d1de 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 75c1110f154b..424bfbdac3b6 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 aea09b93fbe8..1627e2885b0d 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 000000000000..08f15d590b4d --- /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 df8791a72ed4..07dfdd4b1332 100644 --- a/bsp/stm32/stm32u575-st-nucleo/applications/arduino_pinout/pins_arduino.c +++ b/bsp/stm32/stm32u575-st-nucleo/applications/arduino_pinout/pins_arduino.c @@ -19,28 +19,27 @@ * Analog pins MUST give the device name and channel(ADC, PWM or DAC). * Arduino Pin must keep in sequence. */ -const pin_map_t pin_map_table[]= -{ - {D0, GET_PIN(G,8), "uart1"}, /* Serial-RX */ - {D1, GET_PIN(G,7), "uart1"}, /* Serial-TX */ - {D2, GET_PIN(F,15)}, - {D3, GET_PIN(E,13), "pwm1", 3}, /* PWM */ - {D4, GET_PIN(F,14)}, - {D5, GET_PIN(E,11), "pwm1", 2}, /* PWM */ - {D6, GET_PIN(E,9), "pwm1", 1}, /* PWM */ - {D7, GET_PIN(F,13)}, - {D8, GET_PIN(F,12)}, - {D9, GET_PIN(D,15), "pwm4", 4}, /* PWM */ - {D10, GET_PIN(D,14)}, - {D11, GET_PIN(A,7), "spi1"}, /* SPI-MOSI */ - {D12, GET_PIN(A,6), "spi1"}, /* SPI-MISO */ - {D13, GET_PIN(A,5), "spi1"}, /* SPI-SCK */ - {D14, GET_PIN(B,9), "i2c1"}, /* I2C-SDA (Wire) */ - {D15, GET_PIN(B,8), "i2c1"}, /* I2C-SCL (Wire) */ - {A0, GET_PIN(A,3), "adc1", 8}, /* ADC, On-Chip: internal reference voltage, ADC_CHANNEL_VREFINT */ - {A1, GET_PIN(A,2), "adc1", 7}, /* ADC, On-Chip: internal reference voltage, ADC_CHANNEL_VREFINT */ - {A2, GET_PIN(C,3), "adc1", 4}, /* ADC, On-Chip: internal reference voltage, ADC_CHANNEL_VREFINT */ - {A3, GET_PIN(B,0), "adc1", 15}, /* ADC, On-Chip: internal reference voltage, ADC_CHANNEL_VREFINT */ - {A4, GET_PIN(C,1), "adc1", 2}, /* ADC, On-Chip: internal reference voltage, ADC_CHANNEL_VREFINT */ - {A5, GET_PIN(C,0), "adc1", 1}, /* ADC, On-Chip: internal reference voltage, ADC_CHANNEL_VREFINT */ +const pin_map_t pin_map_table[] = { + { D0, GET_PIN(G, 8), "uart1" }, /* Serial-RX */ + { D1, GET_PIN(G, 7), "uart1" }, /* Serial-TX */ + { D2, GET_PIN(F, 15) }, + { D3, GET_PIN(E, 13), "pwm1", 3 }, /* PWM */ + { D4, GET_PIN(F, 14) }, + { D5, GET_PIN(E, 11), "pwm1", 2 }, /* PWM */ + { D6, GET_PIN(E, 9), "pwm1", 1 }, /* PWM */ + { D7, GET_PIN(F, 13) }, + { D8, GET_PIN(F, 12) }, + { D9, GET_PIN(D, 15), "pwm4", 4 }, /* PWM */ + { D10, GET_PIN(D, 14) }, + { D11, GET_PIN(A, 7), "spi1" }, /* SPI-MOSI */ + { D12, GET_PIN(A, 6), "spi1" }, /* SPI-MISO */ + { D13, GET_PIN(A, 5), "spi1" }, /* SPI-SCK */ + { D14, GET_PIN(B, 9), "swi2c1" }, /* I2C-SDA (Wire) */ + { D15, GET_PIN(B, 8), "swi2c1" }, /* I2C-SCL (Wire) */ + { A0, GET_PIN(A, 3), "adc1", 8 }, /* ADC, On-Chip: internal reference voltage, ADC_CHANNEL_VREFINT */ + { A1, GET_PIN(A, 2), "adc1", 7 }, /* ADC, On-Chip: internal reference voltage, ADC_CHANNEL_VREFINT */ + { A2, GET_PIN(C, 3), "adc1", 4 }, /* ADC, On-Chip: internal reference voltage, ADC_CHANNEL_VREFINT */ + { A3, GET_PIN(B, 0), "adc1", 15 }, /* ADC, On-Chip: internal reference voltage, ADC_CHANNEL_VREFINT */ + { A4, GET_PIN(C, 1), "adc1", 2 }, /* ADC, On-Chip: internal reference voltage, ADC_CHANNEL_VREFINT */ + { A5, GET_PIN(C, 0), "adc1", 1 }, /* ADC, On-Chip: internal reference voltage, ADC_CHANNEL_VREFINT */ }; diff --git a/bsp/stm32/stm32u575-st-nucleo/applications/arduino_pinout/pins_arduino.h b/bsp/stm32/stm32u575-st-nucleo/applications/arduino_pinout/pins_arduino.h index 0d460404f8c0..1b5986afca0f 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 659dcfa073d2..28f3529e724e 100644 --- a/bsp/stm32/stm32u575-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32u575-st-nucleo/board/Kconfig @@ -15,8 +15,9 @@ menu "Onboard Peripheral Drivers" select BSP_USING_PWM1_CH3 select BSP_USING_PWM4 select BSP_USING_PWM4_CH4 - select BSP_USING_I2C - select BSP_USING_I2C1 + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C1 select BSP_USING_SPI select BSP_USING_SPI1 select BSP_SPI1_TX_USING_DMA @@ -34,9 +35,10 @@ menu "Onboard Peripheral Drivers" default n config BSP_USING_MPU6XXX - bool "Enable mpu6xxx (i2c2)" - select BSP_USING_I2C - select BSP_USING_I2C2 + bool "Enable mpu6xxx (swi2c2)" + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C2 select PKG_USING_SENSORS_DRIVERS select PKG_USING_MPU6XXX select PKG_USING_MPU6XXX_LATEST_VERSION @@ -48,6 +50,31 @@ menu "Onboard Peripheral Drivers" select RT_USING_SFUD default n + + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 24 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 25 if RT_USING_SOFT_I2C2 + endmenu menu "On-chip Peripheral Drivers" @@ -222,29 +249,38 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default y - if BSP_USING_I2C1 - comment "Notice: PB8 --> 24; PB9 --> 25" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 176 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 176 - default 25 - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 25 + endif + + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 24 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 25 + endif endif - source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig" endmenu @@ -253,4 +289,5 @@ menu "Board extended module Drivers" endmenu + endmenu diff --git a/bsp/stm32/stm32wb55-st-nucleo/.ci/attachconfig/ci.attachconfig.yml b/bsp/stm32/stm32wb55-st-nucleo/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..7dc954e324fe --- /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 1351db706196..b57b92d646d2 100644 --- a/bsp/stm32/stm32wb55-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32wb55-st-nucleo/board/Kconfig @@ -75,44 +75,38 @@ menu "On-chip Peripheral Drivers" - menuconfig BSP_USING_I2C - bool "Enable I2C BUS" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default y - if BSP_USING_I2C1 - comment "Notice: PB8 --> 24; PB9 --> 25" - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 143 - default 24 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 143 - default 25 - endif - - 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 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 24 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 25 + endif + + menuconfig BSP_USING_SOFT_I2C3 + bool "Enable software I2C3 Bus (swi2c3)" + default n + select RT_USING_SOFT_I2C3 + if BSP_USING_SOFT_I2C3 + config RT_SOFT_I2C3_SCL_PIN + int "swi2c3 SCL pin number" + default 29 + config RT_SOFT_I2C3_SDA_PIN + int "swi2c3 SDA pin number" + default 30 + endif endif - menuconfig BSP_USING_TIM bool "Enable timer" default n @@ -163,4 +157,28 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 24 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 25 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C3_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SCL_PIN_DEFAULT + int + default 29 if RT_USING_SOFT_I2C3 + + config RT_SOFT_I2C3_SDA_PIN_DEFAULT + int + default 30 if RT_USING_SOFT_I2C3 + endmenu diff --git a/bsp/synwit/libraries/SWM320_drivers/SConscript b/bsp/synwit/libraries/SWM320_drivers/SConscript index c4beaaac5b03..3cca80755d51 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 ed9ceb7142c0..000000000000 --- 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 2dd382212498..000000000000 --- 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 26bef4ca2bce..bb7bb6d92702 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 f74715d03df0..000000000000 --- 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 60151d0e5091..000000000000 --- 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 000000000000..090bc5b70e7b --- /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 8a2c6875e16d..f024b60f6245 100644 --- a/bsp/synwit/swm320-mini/board/Kconfig +++ b/bsp/synwit/swm320-mini/board/Kconfig @@ -124,43 +124,38 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C0 - bool "Enable I2C0" - default n - if BSP_USING_I2C0 - comment "Notice: PC2 --> 28; PC3 --> 29" - config BSP_I2C0_SCL_PIN - int "I2C0 scl pin number" - range 0 99 - default 28 - config BSP_I2C0_SDA_PIN - int "I2C0 sda pin number" - range 0 99 - default 29 - endif - config BSP_USING_I2C1 - bool "Enable I2C1" - default n - if BSP_USING_I2C1 - comment "Notice: PC6 --> 32; PC7 --> 33" - config BSP_I2C1_SCL_PIN - int "I2C1 scl pin number" - range 0 99 - default 32 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 99 - default 33 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C0 + bool "Enable software I2C0 Bus (swi2c0)" + default n + select RT_USING_SOFT_I2C0 + if BSP_USING_SOFT_I2C0 + config RT_SOFT_I2C0_SCL_PIN + int "swi2c0 SCL pin number" + default 28 + config RT_SOFT_I2C0_SDA_PIN + int "swi2c0 SDA pin number" + default 29 + endif + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 32 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 33 + endif + endif menuconfig BSP_USING_PWM bool "Enable PWM" default n @@ -303,4 +298,28 @@ menu "Offboard Peripheral Drivers" endmenu + config RT_SOFT_I2C0_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C0 + + config RT_SOFT_I2C0_SCL_PIN_DEFAULT + int + default 28 if RT_USING_SOFT_I2C0 + + config RT_SOFT_I2C0_SDA_PIN_DEFAULT + int + default 29 if RT_USING_SOFT_I2C0 + + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 32 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 33 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/synwit/swm341-mini/.ci/attachconfig/ci.attachconfig.yml b/bsp/synwit/swm341-mini/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..e3a04a5ec139 --- /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 4d32b758e2bc..2cde418752cd 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 6e6564850d49..17bbcdfd84f4 100644 --- a/bsp/synwit/swm341-mini/board/Kconfig +++ b/bsp/synwit/swm341-mini/board/Kconfig @@ -184,41 +184,38 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C - bool "Enable I2C BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C - config BSP_USING_I2C0 - bool "Enable I2C0" - default n - if BSP_USING_I2C0 - config BSP_I2C0_SCL_PIN - int "I2C0 scl pin number" - range 0 111 - default 1 - config BSP_I2C0_SDA_PIN - int "I2C0 sda pin number" - range 0 111 - default 0 - endif - config BSP_USING_I2C1 - bool "Enable I2C1" - default n - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "I2C1 scl pin number" - range 0 111 - default 37 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 111 - default 36 - endif - endif + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C0 + bool "Enable software I2C0 Bus (swi2c0)" + default n + select RT_USING_SOFT_I2C0 + if BSP_USING_SOFT_I2C0 + config RT_SOFT_I2C0_SCL_PIN + int "swi2c0 SCL pin number" + default 1 + config RT_SOFT_I2C0_SDA_PIN + int "swi2c0 SDA pin number" + default 0 + endif + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 37 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 36 + endif + endif menuconfig BSP_USING_PWM bool "Enable PWM" default n @@ -366,11 +363,12 @@ menu "On-chip Peripheral Drivers" endif menuconfig BSP_USING_GT9147 - bool "Enable gt9147(use i2c0)" + bool "Enable gt9147(use swi2c0)" select RT_USING_TOUCH select RT_TOUCH_PIN_IRQ - select BSP_USING_I2C - select BSP_USING_I2C0 + select RT_USING_I2C + select BSP_USING_SOFT_I2C + select BSP_USING_SOFT_I2C0 select PKG_USING_GT9147 select PKG_USING_GT9147_LATEST_VERSION default n @@ -395,6 +393,18 @@ menu "On-chip Peripheral Drivers" default n endif + config RT_SOFT_I2C0_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C0 + + config RT_SOFT_I2C0_SCL_PIN_DEFAULT + int + default 1 if RT_USING_SOFT_I2C0 + + config RT_SOFT_I2C0_SDA_PIN_DEFAULT + int + default 0 if RT_USING_SOFT_I2C0 + endmenu menu "Onboard Peripheral Drivers" @@ -405,4 +415,16 @@ menu "Offboard Peripheral Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 37 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 36 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/tae32f5300/.ci/attachconfig/ci.attachconfig.yml b/bsp/tae32f5300/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..bf1a5ff75843 --- /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 29451af6c7fc..2ed057483722 100644 --- a/bsp/tae32f5300/drivers/Kconfig +++ b/bsp/tae32f5300/drivers/Kconfig @@ -51,23 +51,25 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" - default y + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" + default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 1 176 - default 51 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 1 176 - default 90 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 51 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 90 + endif endif - menuconfig BSP_USING_SPI bool "Enable SPI BUS" default n @@ -280,5 +282,17 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 51 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 90 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/tkm32F499/.ci/attachconfig/ci.attachconfig.yml b/bsp/tkm32F499/.ci/attachconfig/ci.attachconfig.yml new file mode 100644 index 000000000000..d626be14a578 --- /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 d856bc73ff4e..eff599ffc43d 100644 --- a/bsp/tkm32F499/drivers/Kconfig +++ b/bsp/tkm32F499/drivers/Kconfig @@ -67,23 +67,25 @@ menu "On-chip Peripheral Drivers" default n endif - menuconfig BSP_USING_I2C1 - bool "Enable I2C1 BUS (software simulation)" + menuconfig BSP_USING_SOFT_I2C + bool "Enable software I2C (swi2c)" default n select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN - if BSP_USING_I2C1 - config BSP_I2C1_SCL_PIN - int "i2c1 scl pin number" - range 0 175 - default 22 - config BSP_I2C1_SDA_PIN - int "I2C1 sda pin number" - range 0 175 - default 23 + select RT_USING_SOFT_I2C + if BSP_USING_SOFT_I2C + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 22 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 23 + endif endif - menuconfig BSP_USING_TIM bool "Enable timer" default n @@ -151,4 +153,16 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 22 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + endmenu diff --git a/bsp/w60x/drivers/Kconfig b/bsp/w60x/drivers/Kconfig index 5c2b5c6d82a1..73350248a21f 100644 --- a/bsp/w60x/drivers/Kconfig +++ b/bsp/w60x/drivers/Kconfig @@ -186,23 +186,37 @@ menu "On-chip Peripheral Drivers" endif menuconfig BSP_USING_SOFT_I2C - bool "Enable SOFT I2C" - select RT_USING_I2C - select RT_USING_I2C_BITOPS + bool "Enable software I2C (swi2c)" default n - + select RT_USING_I2C + select RT_USING_SOFT_I2C if BSP_USING_SOFT_I2C - config BSP_USING_SOFT_I2C1 - bool "Enabel SOFT I2C1" - default n - endif + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 23 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 24 + endif - if BSP_USING_SOFT_I2C - config BSP_USING_SOFT_I2C2 - bool "Enabel SOFT I2C2" - default n + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 25 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 24 + endif endif - menuconfig BSP_USING_SPI bool "Enable SPI" select RT_USING_SPI @@ -265,4 +279,28 @@ menu "External Libraries" bool "Using Oneshot Demo" default y endif + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 23 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 24 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 25 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 24 if RT_USING_SOFT_I2C2 + endmenu diff --git a/bsp/w60x/drivers/SConscript b/bsp/w60x/drivers/SConscript index 44dd0267b38a..5d985d937fc4 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 6cda890ec2e0..000000000000 --- 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 bd0cdc0431f3..000000000000 --- 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 537dd03f7288..c14c16e4086d 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 149d2efb62dd..000000000000 --- 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 b0d9912fa453..000000000000 --- 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 000000000000..258515f455e5 --- /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 1ef09bd521c7..5e41bb454da9 100644 --- a/bsp/wch/risc-v/ch32v208w-r0/board/Kconfig +++ b/bsp/wch/risc-v/ch32v208w-r0/board/Kconfig @@ -31,8 +31,6 @@ menu "Onboard Peripheral Drivers" select BSP_USING_TIM4_PWM_CH2 select BSP_USING_TIM4_PWM_CH3 select BSP_USING_TIM4_PWM_CH4 - select BSP_USING_SOFT_I2C - select BSP_USING_I2C1 select RTDUINO_USING_WIRE imply RTDUINO_USING_SERVO default n @@ -122,47 +120,37 @@ menu "On-chip Peripheral Drivers" endif menuconfig BSP_USING_SOFT_I2C - bool "Enable I2C Bus" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN + bool "Enable software I2C (swi2c)" default n - + select RT_USING_I2C + select RT_USING_SOFT_I2C if BSP_USING_SOFT_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 Bus (software simulation)" - default n - - if BSP_USING_I2C1 - comment "Notice: PC7 --> 39; PC6 --> 38" - - config BSP_I2C1_SCL_PIN - int "i2c1 SCL pin number" - range 0 79 - default 38 - config BSP_I2C1_SDA_PIN - int "i2c1 SDA pin number" - range 0 79 - default 39 - endif - - config BSP_USING_I2C2 - bool "Enable I2C2 Bus (software simulation)" - default n + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 38 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 39 + endif - if BSP_USING_I2C2 - comment "Notice: PC1 --> 33; PC0 --> 32" - config BSP_I2C2_SCL_PIN - int "i2c2 SCL pin number" - range 0 79 - default 32 - config BSP_I2C2_SDA_PIN - int "i2c2 SDA pin number" - range 0 79 - default 33 - endif + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 32 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 33 + endif endif - menuconfig BSP_USING_SPI bool "Enable SPI" select RT_USING_SOFT_SPI @@ -604,4 +592,28 @@ menu "Board extended module Drivers" endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 38 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 39 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 32 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 33 if RT_USING_SOFT_I2C2 + endmenu diff --git a/bsp/wch/risc-v/ch32v307v-r1/.ci/attachconfig/ci.attachconfig.yml b/bsp/wch/risc-v/ch32v307v-r1/.ci/attachconfig/ci.attachconfig.yml index 8f92bf90466a..9ca1fd6a376e 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 ececb91344df..9210ef342cd0 100644 --- a/bsp/wch/risc-v/ch32v307v-r1/board/Kconfig +++ b/bsp/wch/risc-v/ch32v307v-r1/board/Kconfig @@ -31,8 +31,6 @@ menu "Onboard Peripheral Drivers" select BSP_USING_TIM4_PWM_CH4 select BSP_USING_TIM6 select BSP_USING_TIM6_CLOCK_TIMER - select BSP_USING_SOFT_I2C - select BSP_USING_I2C1 select RTDUINO_USING_WIRE imply RTDUINO_USING_SERVO default n @@ -384,47 +382,37 @@ menu "On-chip Peripheral Drivers" endif menuconfig BSP_USING_SOFT_I2C - bool "Enable I2C Bus" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN + bool "Enable software I2C (swi2c)" default n - + select RT_USING_I2C + select RT_USING_SOFT_I2C if BSP_USING_SOFT_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 Bus (software simulation)" - default n - - if BSP_USING_I2C1 - comment "Notice: PB10 --> 26; PB11 --> 27" - - config BSP_I2C1_SCL_PIN - int "i2c1 SCL pin number" - range 0 79 - default 26 - config BSP_I2C1_SDA_PIN - int "i2c1 SDA pin number" - range 0 79 - default 27 - endif - - config BSP_USING_I2C2 - bool "Enable I2C2 Bus (software simulation)" - default n + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 26 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 27 + endif - if BSP_USING_I2C2 - comment "Notice: PC1 --> 33; PC0 --> 32" - config BSP_I2C2_SCL_PIN - int "i2c2 SCL pin number" - range 0 79 - default 32 - config BSP_I2C2_SDA_PIN - int "i2c2 SDA pin number" - range 0 79 - default 33 - endif + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 32 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 33 + endif endif - menuconfig BSP_USING_SPI bool "Enable SPI" select RT_USING_SPI @@ -856,5 +844,28 @@ menu "Board extended module Drivers" endmenu -endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 32 if RT_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 33 if RT_USING_SOFT_I2C2 + +endmenu diff --git a/bsp/wch/risc-v/yd-ch32v307vct6/.ci/attachconfig/ci.attachconfig.yml b/bsp/wch/risc-v/yd-ch32v307vct6/.ci/attachconfig/ci.attachconfig.yml index 8f92bf90466a..9ca1fd6a376e 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 dccae0c2bb4f..e449917990ab 100644 --- a/bsp/wch/risc-v/yd-ch32v307vct6/board/Kconfig +++ b/bsp/wch/risc-v/yd-ch32v307vct6/board/Kconfig @@ -93,47 +93,37 @@ menu "On-chip Peripheral Drivers" endif menuconfig BSP_USING_SOFT_I2C - bool "Enable I2C Bus" - select RT_USING_I2C - select RT_USING_I2C_BITOPS - select RT_USING_PIN + bool "Enable software I2C (swi2c)" default n - + select RT_USING_I2C + select RT_USING_SOFT_I2C if BSP_USING_SOFT_I2C - config BSP_USING_I2C1 - bool "Enable I2C1 Bus (software simulation)" - default n - - if BSP_USING_I2C1 - comment "Notice: PB10 --> 26; PB11 --> 27" - - config BSP_I2C1_SCL_PIN - int "i2c1 SCL pin number" - range 0 79 - default 26 - config BSP_I2C1_SDA_PIN - int "i2c1 SDA pin number" - range 0 79 - default 27 - endif - - config BSP_USING_I2C2 - bool "Enable I2C2 Bus (software simulation)" - default n + menuconfig BSP_USING_SOFT_I2C1 + bool "Enable software I2C1 Bus (swi2c1)" + default n + select RT_USING_SOFT_I2C1 + if BSP_USING_SOFT_I2C1 + config RT_SOFT_I2C1_SCL_PIN + int "swi2c1 SCL pin number" + default 26 + config RT_SOFT_I2C1_SDA_PIN + int "swi2c1 SDA pin number" + default 27 + endif - if BSP_USING_I2C2 - comment "Notice: PC1 --> 33; PC0 --> 32" - config BSP_I2C2_SCL_PIN - int "i2c2 SCL pin number" - range 0 79 - default 32 - config BSP_I2C2_SDA_PIN - int "i2c2 SDA pin number" - range 0 79 - default 33 - endif + menuconfig BSP_USING_SOFT_I2C2 + bool "Enable software I2C2 Bus (swi2c2)" + default n + select RT_USING_SOFT_I2C2 + if BSP_USING_SOFT_I2C2 + config RT_SOFT_I2C2_SCL_PIN + int "swi2c2 SCL pin number" + default 32 + config RT_SOFT_I2C2_SDA_PIN + int "swi2c2 SDA pin number" + default 33 + endif endif - menuconfig BSP_USING_SPI bool "Enable SPI" select RT_USING_SPI @@ -574,5 +564,28 @@ menu "Board extended module Drivers" endmenu -endmenu + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + default 26 if RT_USING_SOFT_I2C1 + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + default 27 if RT_USING_SOFT_I2C1 + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + default y if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + default 32 if RT_USING_SOFT_I2C2 + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + default 33 if RT_USING_SOFT_I2C2 + +endmenu diff --git a/components/drivers/i2c/Kconfig b/components/drivers/i2c/Kconfig index 79cc802428cf..be3598a29c25 100644 --- a/components/drivers/i2c/Kconfig +++ b/components/drivers/i2c/Kconfig @@ -18,22 +18,33 @@ if RT_USING_I2C endif menuconfig RT_USING_SOFT_I2C - bool "Use GPIO to soft simulate I2C" + bool "Use GPIO to simulate I2C (swi2c)" default n select RT_USING_PIN select RT_USING_I2C_BITOPS if RT_USING_SOFT_I2C + config RT_SOFT_I2C0_HAS_PIN_DEFAULT + bool + + config RT_SOFT_I2C0_SCL_PIN_DEFAULT + int + + config RT_SOFT_I2C0_SDA_PIN_DEFAULT + int + menuconfig RT_USING_SOFT_I2C0 - bool "Enable I2C0 Bus (software simulation)" - default y + bool "Enable software I2C0 Bus (swi2c0)" + default n if RT_USING_SOFT_I2C0 config RT_SOFT_I2C0_SCL_PIN int "SCL pin number" range 0 32767 + default RT_SOFT_I2C0_SCL_PIN_DEFAULT if RT_SOFT_I2C0_HAS_PIN_DEFAULT default 1 config RT_SOFT_I2C0_SDA_PIN int "SDA pin number" range 0 32767 + default RT_SOFT_I2C0_SDA_PIN_DEFAULT if RT_SOFT_I2C0_HAS_PIN_DEFAULT default 2 config RT_SOFT_I2C0_BUS_NAME string "Bus name" @@ -47,17 +58,28 @@ if RT_USING_I2C range 0 32767 default 10 endif + config RT_SOFT_I2C1_HAS_PIN_DEFAULT + bool + + config RT_SOFT_I2C1_SCL_PIN_DEFAULT + int + + config RT_SOFT_I2C1_SDA_PIN_DEFAULT + int + menuconfig RT_USING_SOFT_I2C1 - bool "Enable I2C1 Bus (software simulation)" - default y + bool "Enable software I2C1 Bus (swi2c1)" + default n if RT_USING_SOFT_I2C1 config RT_SOFT_I2C1_SCL_PIN int "SCL pin number" range 0 32767 + default RT_SOFT_I2C1_SCL_PIN_DEFAULT if RT_SOFT_I2C1_HAS_PIN_DEFAULT default 3 config RT_SOFT_I2C1_SDA_PIN int "SDA pin number" range 0 32767 + default RT_SOFT_I2C1_SDA_PIN_DEFAULT if RT_SOFT_I2C1_HAS_PIN_DEFAULT default 4 config RT_SOFT_I2C1_BUS_NAME string "Bus name" @@ -71,17 +93,28 @@ if RT_USING_I2C range 0 32767 default 10 endif + config RT_SOFT_I2C2_HAS_PIN_DEFAULT + bool + + config RT_SOFT_I2C2_SCL_PIN_DEFAULT + int + + config RT_SOFT_I2C2_SDA_PIN_DEFAULT + int + menuconfig RT_USING_SOFT_I2C2 - bool "Enable I2C2 Bus (software simulation)" + bool "Enable software I2C2 Bus (swi2c2)" default n if RT_USING_SOFT_I2C2 config RT_SOFT_I2C2_SCL_PIN int "SCL pin number" range 0 32767 + default RT_SOFT_I2C2_SCL_PIN_DEFAULT if RT_SOFT_I2C2_HAS_PIN_DEFAULT default 5 config RT_SOFT_I2C2_SDA_PIN int "SDA pin number" range 0 32767 + default RT_SOFT_I2C2_SDA_PIN_DEFAULT if RT_SOFT_I2C2_HAS_PIN_DEFAULT default 6 config RT_SOFT_I2C2_BUS_NAME string "Bus name" @@ -95,17 +128,28 @@ if RT_USING_I2C range 0 32767 default 10 endif + config RT_SOFT_I2C3_HAS_PIN_DEFAULT + bool + + config RT_SOFT_I2C3_SCL_PIN_DEFAULT + int + + config RT_SOFT_I2C3_SDA_PIN_DEFAULT + int + menuconfig RT_USING_SOFT_I2C3 - bool "Enable I2C3 Bus (software simulation)" + bool "Enable software I2C3 Bus (swi2c3)" default n if RT_USING_SOFT_I2C3 config RT_SOFT_I2C3_SCL_PIN int "SCL pin number" range 0 32767 + default RT_SOFT_I2C3_SCL_PIN_DEFAULT if RT_SOFT_I2C3_HAS_PIN_DEFAULT default 7 config RT_SOFT_I2C3_SDA_PIN int "SDA pin number" range 0 32767 + default RT_SOFT_I2C3_SDA_PIN_DEFAULT if RT_SOFT_I2C3_HAS_PIN_DEFAULT default 8 config RT_SOFT_I2C3_BUS_NAME string "Bus name" @@ -119,17 +163,28 @@ if RT_USING_I2C range 0 32767 default 10 endif + config RT_SOFT_I2C4_HAS_PIN_DEFAULT + bool + + config RT_SOFT_I2C4_SCL_PIN_DEFAULT + int + + config RT_SOFT_I2C4_SDA_PIN_DEFAULT + int + menuconfig RT_USING_SOFT_I2C4 - bool "Enable I2C4 Bus (software simulation)" + bool "Enable software I2C4 Bus (swi2c4)" default n if RT_USING_SOFT_I2C4 config RT_SOFT_I2C4_SCL_PIN int "SCL pin number" range 0 32767 + default RT_SOFT_I2C4_SCL_PIN_DEFAULT if RT_SOFT_I2C4_HAS_PIN_DEFAULT default 9 config RT_SOFT_I2C4_SDA_PIN int "SDA pin number" range 0 32767 + default RT_SOFT_I2C4_SDA_PIN_DEFAULT if RT_SOFT_I2C4_HAS_PIN_DEFAULT default 10 config RT_SOFT_I2C4_BUS_NAME string "Bus name" @@ -143,17 +198,28 @@ if RT_USING_I2C range 0 32767 default 10 endif + config RT_SOFT_I2C5_HAS_PIN_DEFAULT + bool + + config RT_SOFT_I2C5_SCL_PIN_DEFAULT + int + + config RT_SOFT_I2C5_SDA_PIN_DEFAULT + int + menuconfig RT_USING_SOFT_I2C5 - bool "Enable I2C5 Bus (software simulation)" + bool "Enable software I2C5 Bus (swi2c5)" default n if RT_USING_SOFT_I2C5 config RT_SOFT_I2C5_SCL_PIN int "SCL pin number" range 0 32767 + default RT_SOFT_I2C5_SCL_PIN_DEFAULT if RT_SOFT_I2C5_HAS_PIN_DEFAULT default 11 config RT_SOFT_I2C5_SDA_PIN int "SDA pin number" range 0 32767 + default RT_SOFT_I2C5_SDA_PIN_DEFAULT if RT_SOFT_I2C5_HAS_PIN_DEFAULT default 12 config RT_SOFT_I2C5_BUS_NAME string "Bus name" @@ -167,17 +233,28 @@ if RT_USING_I2C range 0 32767 default 10 endif + config RT_SOFT_I2C6_HAS_PIN_DEFAULT + bool + + config RT_SOFT_I2C6_SCL_PIN_DEFAULT + int + + config RT_SOFT_I2C6_SDA_PIN_DEFAULT + int + menuconfig RT_USING_SOFT_I2C6 - bool "Enable I2C6 Bus (software simulation)" + bool "Enable software I2C6 Bus (swi2c6)" default n if RT_USING_SOFT_I2C6 config RT_SOFT_I2C6_SCL_PIN int "SCL pin number" range 0 32767 + default RT_SOFT_I2C6_SCL_PIN_DEFAULT if RT_SOFT_I2C6_HAS_PIN_DEFAULT default 13 config RT_SOFT_I2C6_SDA_PIN int "SDA pin number" range 0 32767 + default RT_SOFT_I2C6_SDA_PIN_DEFAULT if RT_SOFT_I2C6_HAS_PIN_DEFAULT default 14 config RT_SOFT_I2C6_BUS_NAME string "Bus name" @@ -191,17 +268,28 @@ if RT_USING_I2C range 0 32767 default 10 endif + config RT_SOFT_I2C7_HAS_PIN_DEFAULT + bool + + config RT_SOFT_I2C7_SCL_PIN_DEFAULT + int + + config RT_SOFT_I2C7_SDA_PIN_DEFAULT + int + menuconfig RT_USING_SOFT_I2C7 - bool "Enable I2C7 Bus (software simulation)" + bool "Enable software I2C7 Bus (swi2c7)" default n if RT_USING_SOFT_I2C7 config RT_SOFT_I2C7_SCL_PIN int "SCL pin number" range 0 32767 + default RT_SOFT_I2C7_SCL_PIN_DEFAULT if RT_SOFT_I2C7_HAS_PIN_DEFAULT default 15 config RT_SOFT_I2C7_SDA_PIN int "SDA pin number" range 0 32767 + default RT_SOFT_I2C7_SDA_PIN_DEFAULT if RT_SOFT_I2C7_HAS_PIN_DEFAULT default 16 config RT_SOFT_I2C7_BUS_NAME string "Bus name" @@ -215,17 +303,28 @@ if RT_USING_I2C range 0 32767 default 10 endif + config RT_SOFT_I2C8_HAS_PIN_DEFAULT + bool + + config RT_SOFT_I2C8_SCL_PIN_DEFAULT + int + + config RT_SOFT_I2C8_SDA_PIN_DEFAULT + int + menuconfig RT_USING_SOFT_I2C8 - bool "Enable I2C8 Bus (software simulation)" + bool "Enable software I2C8 Bus (swi2c8)" default n if RT_USING_SOFT_I2C8 config RT_SOFT_I2C8_SCL_PIN int "SCL pin number" range 0 32767 + default RT_SOFT_I2C8_SCL_PIN_DEFAULT if RT_SOFT_I2C8_HAS_PIN_DEFAULT default 17 config RT_SOFT_I2C8_SDA_PIN int "SDA pin number" range 0 32767 + default RT_SOFT_I2C8_SDA_PIN_DEFAULT if RT_SOFT_I2C8_HAS_PIN_DEFAULT default 18 config RT_SOFT_I2C8_BUS_NAME string "Bus name"