void I2C_init(uint32_t I2Cx){ GPIO_Configuration_I2C(I2Cx); i2c_clock_config(I2Cx, 400000, I2C_DTCY_2); /* I2C address configure */ i2c_mode_addr_config(I2Cx, I2C_I2CMODE_ENABLE, I2C_ADDFORMAT_7BITS, 0); /* enable acknowledge */ i2c_ack_config(I2Cx, I2C_ACK_DISABLE); /...
void check_bus_status(void) { while(i2c_flag_get(I2C0,I2C_FLAG_I2CBSY)) { if(--time_out == 0){ i2c_bus_reset(); } } } 方法二:将SCL配置为推挽输出,强制输出9个clk 在I2C主机中增加一个I2C总线恢复程序,在每次I2C主设备复位后,如果检测到SDA数据线被拉低,就控制I2C中的SCL时钟线产生9个...
void I2C_init(uint32_t I2Cx) { GPIO_Configuration_I2C(I2Cx); i2c_clock_config(I2Cx, 400000, I2C_DTCY_2); /* I2C address configure */ i2c_mode_addr_config(I2Cx, I2C_I2CMODE_ENABLE, I2C_ADDFORMAT_7BITS, 0); /* enable acknowledge */ i2c_ack_config(I2Cx, I2C_ACK_DISABLE); /...
while(i2c_flag_get(I2C0,I2C_FLAG_I2CBSY)) { if(–time_out == 0){ i2c_bus_reset(); } } } (2)将SCL配置为推挽输出,强制输出9个clk 在I2C 主机中增加 I2C 总线恢复程序。每次 I2C 主设备复位后,如果检测到 SDA 数据线被拉低,则控制 I2C 中的 SCL 时钟线产生 9 个时钟脉冲(针对 8 位数据...
i2c_enable(I2Cx); } 时钟及 GPIO 引脚配置 时钟及GPIO引脚配置如代码清单I2C时钟及GPIO引脚配置所示,在例程中PB6、PB7引脚需要配置为复用开漏模式。 void GPIO_Configuration_I2C(uint32_t I2Cx) { uint32_t GPIO_SDA; uint32_t GPIO_SCL; uint32_t GPIO_Pin_SDA,GPIO_Pin_SCL; ...
while(i2c_flag_get(I2C0,I2C_FLAG_I2CBSY)) { if(--time_out == 0){ i2c_bus_reset(); } } } (2)将SCL配置为推挽输出,强制输出9个clk 在I2C 主机中增加 I2C 总线恢复程序。每次 I2C 主设备复位后,如果检测到 SDA 数据线被拉低,则控制 I2C 中的 SCL 时钟线产生 9 个时钟脉冲(针对 8 位数据...
while(i2c_flag_get(I2C0,I2C_FLAG_I2CBSY)) { if(--time_out == 0){ i2c_bus_reset(); } } } (2)将SCL配置为推挽输出,强制输出9个clk 在I2C 主机中增加 I2C 总线恢复程序。每次 I2C 主设备复位后,如果检测到 SDA 数据线被拉低,则控制 I2C 中的 SCL 时钟线产生 9 个时钟脉冲(针对 8 位数据...
void I2C_init(uint32_t I2Cx){ GPIO_Configuration_I2C(I2Cx);i2c_clock_config(I2Cx, 400000, ...
《嵌入式 – GD32开发实战指南》第21章 I2C,I2C总线是PHLIPS公司推出的一种双线式半双工串行总线,是具备多主机系统所需的总线裁决
while(i2c_flag_get(I2C0,I2C_FLAG_I2CBSY)){ if(--time_out == 0){ i2c_bus_reset();} }...