我在使用X033的I2C做主设备, 跟从设备通讯时, 经常出现卡死在
while(I2C_GetFlagStatus(I2C1, I2C_FLAG_BUSY));
经过初步诊断, 时钟配置和I2C配置顺序没有问题, 测量发现I2C的SDA不知为何被拉低了,
我看数据手册中的说明, 通过置位I2C外设的SWRST位, 可以复位I2C模块:
I2C_SoftwareResetCmd(I2C_TypeDef *I2Cx, FunctionalState NewState);
这个软件复位的函数应该何时调用呢? 调用这个函数可以解决SDA被拉低的问题么?
热门产品 :
CH32V317: 互联型青稞RISC-V MCU