I2C总线死锁之如何解锁
项目背景:GD303+ST陀螺仪芯片,通讯总线为I2C总线,应用中需要GD303多次复位。
问题:debug过程中,反复reset单片机,会出现从机不回应的现象,读不到从机的数据,SDA一直为低。
分析:主机发送数据,从机拉低数据线发送数据,然后等待下一个时钟,此时主机突然复位,没了时钟脉冲,而程序从新跑了,你的I2C接口肯定先判断总线是否繁忙再拉低拉高SCL进行通信,与此同时,从机一直占用着SDA线,等待主机的时钟线,所以主机判断总线繁忙,通讯异常,即使主机重新复位总线也不行。
按照通用方法:发送8
原创
2021-11-06 11:47:08 ·
1327 阅读 ·
0 评论