打印

gd32 的i2c问题

[复制链接]
41|1
跳转到指定楼层
楼主
我发现好多说i2c卡死的问题。
发现gd32,包括stm32都有一个问题,就是busy位的逻辑错误,属于硬件设计的问题,之前知道stm32有这bug,不幸的是gd32也有这毛病。
具体问题就是,按照i2c标准来说,一次完整的i2c总线操作必须由start位开始,stop位结束。如果大家都遵守这个规则,也就没问题了。但是实际应用中往往有外部设备不遵守这个规则,比如有的i2c主设备发出start位后,由于其它原因,导致传输中断,又没有发出stop信号,这种情况下就会导致gd32的i2c控制器的busy位一直为1.还有外部信号干扰,误出发产生了start信号,也会导致busy位出现。
gd32中,busy的产生条件就是捕捉到start信号就置位,即使设置的是i2c从设备,并且地址不匹配,它也会置位。
复位busy位可以通过调用i2c_software_reset_config(I2Cx, I2C_SRESET_SET)函数来复位。
但是在实际编写软件中,要怎么才能去实时监控这个busy什么时候是真正的超时呢。
各位大侠有没有解决办法。
沙发
| 2019-4-1 08:25 | 只看该作者
我也想知道的啊! 同求啊!
扫描二维码,随时随地手机跟帖
*滑动验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

快速回复 返回顶部 返回列表