diff --git a/software_i2c/bsp_soft_i2c.c b/software_i2c/bsp_soft_i2c.c index dd2e3ff..f8018eb 100644 --- a/software_i2c/bsp_soft_i2c.c +++ b/software_i2c/bsp_soft_i2c.c @@ -327,6 +327,7 @@ static soft_i2c_err_t soft_i2c_read_byte(P_SOFT_I2C_T p_i2c, uint8_t *p_data) { #endif soft_i2c_write_gpio(&p_i2c->sda, SOFT_I2C_LEVEL_HIGH); // 开启线与 for (loopCnt = 0; loopCnt < 8; loopCnt++) { + soft_i2c_delay_us(); *p_data <<= 1; soft_i2c_write_gpio(&p_i2c->scl, SOFT_I2C_LEVEL_HIGH); // 拉起SCL #if defined(__SOFT_I2C_CLOCK_STRECH_EN__) @@ -341,9 +342,9 @@ static soft_i2c_err_t soft_i2c_read_byte(P_SOFT_I2C_T p_i2c, uint8_t *p_data) { *p_data |= soft_i2c_read_gpio(&p_i2c->sda); // 读取数据 soft_i2c_delay_800ns(); soft_i2c_write_gpio(&p_i2c->scl, SOFT_I2C_LEVEL_LOW); // 拉低SCL - soft_i2c_delay_us(); } soft_i2c_write_gpio(&p_i2c->sda, SOFT_I2C_LEVEL_LOW); // 关闭线与 + soft_i2c_delay_800ns(); return SOFT_I2C_ERR_OK; } diff --git a/software_i2c/bsp_soft_i2c.h b/software_i2c/bsp_soft_i2c.h index f13d627..76db70c 100644 --- a/software_i2c/bsp_soft_i2c.h +++ b/software_i2c/bsp_soft_i2c.h @@ -21,7 +21,7 @@ #elif defined(STM32F10X_HD) || defined(STM32F10X_MD) || defined(STM32F10X_CL) #define SOFT_I2C_STM32F1_USED ///< 使用STM32F1芯片 #else -#error "Please select the target chip model!" +#error "Please define GD32F30X_XX or STM32F10X_XX" #endif #if defined(SOFT_I2C_GD32F3_USED) diff --git a/software_i2c/bsp_soft_i2c_private.h b/software_i2c/bsp_soft_i2c_private.h index 7efacbe..089bb18 100644 --- a/software_i2c/bsp_soft_i2c_private.h +++ b/software_i2c/bsp_soft_i2c_private.h @@ -17,6 +17,15 @@ #include +/* 根据不同的芯片包含不同的文件 */ +#if defined(GD32F30X_HD) || defined(GD32F30X_CL) || defined(GD32F30X_XD) +#define SOFT_I2C_GD32F3_USED ///< 使用GD32F3芯片 +#elif defined(STM32F10X_HD) || defined(STM32F10X_MD) || defined(STM32F10X_CL) +#define SOFT_I2C_STM32F1_USED ///< 使用STM32F1芯片 +#else +#error "Please define GD32F30X_XX or STM32F10X_XX" +#endif + /** * @brief 软件模拟 I2C 通用宏定义 * @addtogroup SOFT_I2C_COMM_DEF diff --git a/software_i2c/dsview/STM32F1_400K_O0.dsl b/software_i2c/dsview/GD32F303RE_400K_O0.dsl similarity index 86% rename from software_i2c/dsview/STM32F1_400K_O0.dsl rename to software_i2c/dsview/GD32F303RE_400K_O0.dsl index 7c497e9..42894e6 100644 Binary files a/software_i2c/dsview/STM32F1_400K_O0.dsl and b/software_i2c/dsview/GD32F303RE_400K_O0.dsl differ diff --git a/software_i2c/dsview/STM32F1_400K_O3.dsl b/software_i2c/dsview/GD32F303RE_400K_O1.dsl similarity index 86% rename from software_i2c/dsview/STM32F1_400K_O3.dsl rename to software_i2c/dsview/GD32F303RE_400K_O1.dsl index abb6fce..33606a3 100644 Binary files a/software_i2c/dsview/STM32F1_400K_O3.dsl and b/software_i2c/dsview/GD32F303RE_400K_O1.dsl differ diff --git a/software_i2c/dsview/GD32F303RE_400K_O2.dsl b/software_i2c/dsview/GD32F303RE_400K_O2.dsl new file mode 100644 index 0000000..8c651f5 Binary files /dev/null and b/software_i2c/dsview/GD32F303RE_400K_O2.dsl differ diff --git a/software_i2c/dsview/GD32F303RE_400K_O3.dsl b/software_i2c/dsview/GD32F303RE_400K_O3.dsl new file mode 100644 index 0000000..13aa5fd Binary files /dev/null and b/software_i2c/dsview/GD32F303RE_400K_O3.dsl differ diff --git a/software_i2c/dsview/STM32F1_400K_O1.dsl b/software_i2c/dsview/GD32F305ZE_400K_O0.dsl similarity index 84% rename from software_i2c/dsview/STM32F1_400K_O1.dsl rename to software_i2c/dsview/GD32F305ZE_400K_O0.dsl index e48f420..f0a01ba 100644 Binary files a/software_i2c/dsview/STM32F1_400K_O1.dsl and b/software_i2c/dsview/GD32F305ZE_400K_O0.dsl differ diff --git a/software_i2c/dsview/STM32F1_400K_O2.dsl b/software_i2c/dsview/GD32F305ZE_400K_O1.dsl similarity index 86% rename from software_i2c/dsview/STM32F1_400K_O2.dsl rename to software_i2c/dsview/GD32F305ZE_400K_O1.dsl index 1c0af24..d5307ef 100644 Binary files a/software_i2c/dsview/STM32F1_400K_O2.dsl and b/software_i2c/dsview/GD32F305ZE_400K_O1.dsl differ diff --git a/software_i2c/dsview/GD32F305ZE_400K_O2.dsl b/software_i2c/dsview/GD32F305ZE_400K_O2.dsl new file mode 100644 index 0000000..888fb8e Binary files /dev/null and b/software_i2c/dsview/GD32F305ZE_400K_O2.dsl differ diff --git a/software_i2c/dsview/GD32F305ZE_400K_O3.dsl b/software_i2c/dsview/GD32F305ZE_400K_O3.dsl new file mode 100644 index 0000000..3e5df09 Binary files /dev/null and b/software_i2c/dsview/GD32F305ZE_400K_O3.dsl differ diff --git a/software_i2c/dsview/GD32F3_400K_O0.dsl b/software_i2c/dsview/GD32F3_400K_O0.dsl deleted file mode 100644 index cb90d21..0000000 Binary files a/software_i2c/dsview/GD32F3_400K_O0.dsl and /dev/null differ diff --git a/software_i2c/dsview/GD32F3_400K_O1.dsl b/software_i2c/dsview/GD32F3_400K_O1.dsl deleted file mode 100644 index a5d2e36..0000000 Binary files a/software_i2c/dsview/GD32F3_400K_O1.dsl and /dev/null differ diff --git a/software_i2c/dsview/GD32F3_400K_O2.dsl b/software_i2c/dsview/GD32F3_400K_O2.dsl deleted file mode 100644 index 2d47e57..0000000 Binary files a/software_i2c/dsview/GD32F3_400K_O2.dsl and /dev/null differ diff --git a/software_i2c/dsview/GD32F3_400K_O3.dsl b/software_i2c/dsview/GD32F3_400K_O3.dsl deleted file mode 100644 index 7715b77..0000000 Binary files a/software_i2c/dsview/GD32F3_400K_O3.dsl and /dev/null differ diff --git a/software_i2c/dsview/STM32F103C8_400K_O0.dsl b/software_i2c/dsview/STM32F103C8_400K_O0.dsl new file mode 100644 index 0000000..5e61177 Binary files /dev/null and b/software_i2c/dsview/STM32F103C8_400K_O0.dsl differ diff --git a/software_i2c/dsview/STM32F103C8_400K_O1.dsl b/software_i2c/dsview/STM32F103C8_400K_O1.dsl new file mode 100644 index 0000000..c888a51 Binary files /dev/null and b/software_i2c/dsview/STM32F103C8_400K_O1.dsl differ diff --git a/software_i2c/dsview/STM32F103C8_400K_O2.dsl b/software_i2c/dsview/STM32F103C8_400K_O2.dsl new file mode 100644 index 0000000..b8e9d60 Binary files /dev/null and b/software_i2c/dsview/STM32F103C8_400K_O2.dsl differ diff --git a/software_i2c/dsview/STM32F103C8_400K_O3.dsl b/software_i2c/dsview/STM32F103C8_400K_O3.dsl new file mode 100644 index 0000000..ccde397 Binary files /dev/null and b/software_i2c/dsview/STM32F103C8_400K_O3.dsl differ