14456|12

68

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

请教i2c没有应答的问题.. [复制链接]

调试I2C程序的时侯无应答,可我是严格按照时序来写的啊,地址也核对过了,没有出错,请问各位有经验的I2C高手们,还有哪些情况会导致无应答信号.谢谢了..

最新回复

时隔十三年,同样的错误还是那个   详情 回复 发表于 2023-3-22 21:50
点赞 关注

回复
举报

71

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
用示波器抓一下地址和数据线,然后逐一核对时序和数据内容。

调试这种东西时,不能只依靠软件的代码,一定要看实际的波形。比如电压是否足够?波形是否完整?等等
 
 

回复

49

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
引用 1 楼 leo_dengzx 的回复:
用示波器抓一下地址和数据线,然后逐一核对时序和数据内容。

调试这种东西时,不能只依靠软件的代码,一定要看实际的波形。比如电压是否足够?波形是否完整?等等

我抓了波形,期望的波形是这样的:在传输完地址后,有一个ACK位被拉低,说明有应答,ACK位后继续读取数据.可实际的波形,ACK为高,说明无应答信号,后面也没有读取到任何数据.
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

4
 
引用 2 楼 lhhs123 的回复:
引用 1 楼 leo_dengzx 的回复:
用示波器抓一下地址和数据线,然后逐一核对时序和数据内容。

调试这种东西时,不能只依靠软件的代码,一定要看实际的波形。比如电压是否足够?波形是否完整?等等

我抓了波形,期望的波形是这样的:在传输完地址后,有一个ACK位被拉低,说明有应答,ACK位后继续读取数据.可实际的波形,ACK为高,说明无应答信号,后面也没有读取到任何数据.

ACK应答时候为高,但是有没有比其他高电平稍微低一点? 如果有,说明其实有应答,但是线被你拉着了。
如果确实是高的,那就是从机没有接受到它认为有效的数据,所以不应答。
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

5
 
引用 3 楼 sherlock_lai 的回复:
ACK应答时候为高,但是有没有比其他高电平稍微低一点? 如果有,说明其实有应答,但是线被你拉着了。
如果确实是高的,那就是从机没有接受到它认为有效的数据,所以不应答

波形图里ACK是高电平,我在程序里设了断点运行的时侯,也显示无应答信号,所以确实是从机没有响应,从机无响应除了地址不对,时序不对,频率不对以外,还可能有其它情况吗?
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

6
 
正常的ACK应答,应该是低电平的。I2C总线标准规定:应答位为0 表示接收器应答;为1则表示非应答。发送器发送完LSB 之后,应当释放SDA 线(拉高SDA,输出晶体管截止),不能将其拉低,以等待接收器产生应答位。
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

7
 
莫非从机下拉的不够强力或者主机上拉强力过头,导致从机拉不下去?
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

8
 
或者主机复位时SDA,SCL有波动导致时序乱套了
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

9
 
之前也调I2C最后发现还是从机没有正常工作。
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

10
 
郁闷啊.今天又调试了半天,现在情况是有时侯有应答,有时侯无应答.可是我的程序是一样的,硬件也是一样的,都没动过,为什么一会儿,一会没有呢,希望大家帮帮忙啊..

 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

11
 
注:这个程序跟另一个I2C从机相连的时侯是有应答的,两个从机时序是一样的,就是地址不一样,我就把地址改了,可为什么无应答呢..
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

12
 
呵呵,问题找到了,是电压不够,电池没电了,只有2V,重新换了个电源,现在有应答了,谢谢各位的帮助
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

13
 
water0 发表于 2010-6-1 16:20 呵呵,问题找到了,是电压不够,电池没电了,只有2V,重新换了个电源,现在有应答了,谢谢各位的帮助

时隔十三年,同样的错误还是那个

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表