IIC死在应答位

[复制链接]
 楼主| flyman613 发表于 2014-11-8 13:20 | 显示全部楼层 |阅读模式
用的是PIC32MX与24C512进行通讯,采用库函数进行读写IIC,1.5秒左右读一次IIC,跑半小时到一小时左右就会出现SDA为低,只有重新上电才能恢复正常。各位有什么好的方法解决吗?
xiaodao35 发表于 2014-11-8 15:28 | 显示全部楼层
可能是从设备缩死总线了,重新初始化一下主设备,另外看看时序!
 楼主| flyman613 发表于 2014-11-8 16:10 | 显示全部楼层
xiaodao35 发表于 2014-11-8 15:28
可能是从设备缩死总线了,重新初始化一下主设备,另外看看时序!

我给单片机复位了,都不行,就是IIC芯片锁死了,只能断电在上电才行。你有遇到过吗?
xiaodao35 发表于 2014-11-8 16:12 | 显示全部楼层
降低点速度看看,从设备死了,CPU复位没用的
 楼主| flyman613 发表于 2014-11-9 11:36 | 显示全部楼层
xiaodao35 发表于 2014-11-8 16:12
降低点速度看看,从设备死了,CPU复位没用的

100K 200K 400K 都试过,我在试试50K会不会
Ryanhsiung 发表于 2014-11-11 11:06 | 显示全部楼层
flyman613 发表于 2014-11-8 16:10
我给单片机复位了,都不行,就是IIC芯片锁死了,只能断电在上电才行。你有遇到过吗? ...

使用I2C 复位时序复位从机。
   好像是拉低SCL 发送10个SDA脉冲
yewuyi 发表于 2014-11-12 10:59 | 显示全部楼层
最白菜的做法:可以在启动总线前,先连续发9个CLK给从机,通知从机强行释放SDA
 楼主| flyman613 发表于 2014-11-25 11:44 | 显示全部楼层
yewuyi 发表于 2014-11-12 10:59
最白菜的做法:可以在启动总线前,先连续发9个CLK给从机,通知从机强行释放SDA ...

用的是硬件IIC,就一些初始化和发、写数据函数,怎么进行发送9个CLK呢?谢谢!
 楼主| flyman613 发表于 2014-11-25 11:46 | 显示全部楼层
yewuyi 发表于 2014-11-12 10:59
最白菜的做法:可以在启动总线前,先连续发9个CLK给从机,通知从机强行释放SDA ...

试过检测到IIC死后,将IIC口置为普通IO口,SCL、SDA口无法置成低电平,被IIC芯片锁死了。
 楼主| flyman613 发表于 2014-12-9 21:47 | 显示全部楼层
Ryanhsiung 发表于 2014-11-11 11:06
使用I2C 复位时序复位从机。
   好像是拉低SCL 发送10个SDA脉冲

用的是硬件IIC,就一些初始化和发、写数据函数,怎么进行发送9个CLK呢?能详细点吗?谢谢!
Ryanhsiung 发表于 2014-12-10 08:12 | 显示全部楼层
flyman613 发表于 2014-12-9 21:47
用的是硬件IIC,就一些初始化和发、写数据函数,怎么进行发送9个CLK呢?能详细点吗?谢谢! ...

复位时  就至成手动的I2C就好了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

19

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

5

主题

19

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部