ADI 技术
直播中

刘京

7年用户 207经验值
私信 关注
[问答]

ADT7420读取异常

目前在一项目中使用ADT7420作为温度传感器获取环境温度,但是在使用中发现读取ADT7420的寄存器的返回值始终为0x0D、0x0E或0x0F,同样一套代码与I2C总线上的其他设备通信则无异常,断开总线上的其他设备仅保留ADT7420也无法正常读取数据,请问下可能是哪方面的原因导致的这个问题,谢谢~

回帖(6)

卢兰凤

2018-11-16 09:13:56
首先从硬件上,您需要检查是否I2C的两个管脚上接了10K的上拉电阻;其次确定A1和A0管脚的值是多少?是否根据A0和A1的值,正确的写入了器件地址?是否有ACK相应?如果这些都确认没有问题的话,您可以将您的I2C波形上传,我们帮您查看一下。
举报

刘京

2018-11-16 09:21:09
引用: yweyerwq 发表于 2018-11-16 09:08
首先从硬件上,您需要检查是否I2C的两个管脚上接了10K的上拉电阻;其次确定A1和A0管脚的值是多少?是否根据A0和A1的值,正确的写入了器件地址?是否有ACK相应?如果这些都确认没有问题的话,您可以将您的I2C波形上传,我们帮您查看一下。 ...

很抱歉这么久才再次登录,之前在测试的时候发现使用10k电阻上拉波形时序稍微有些不满足datasheet的时序要求,现在把上拉电阻换成4.7k的才满足时序要求,但是不论使用的是哪种阻值的电阻,返回的数据均不正常,而且根据配置的不同的A0、A1地址已经对代码中的目标地址进行了更改,抓波形的话都能够抓到相应的ACK数据,有没有办法判断是不是焊接问题造成的异常呢?
举报

卢兰凤

2018-11-16 09:26:39
引用: 邓刚1234 发表于 2018-11-16 09:15
很抱歉这么久才再次登录,之前在测试的时候发现使用10k电阻上拉波形时序稍微有些不满足datasheet的时序要求,现在把上拉电阻换成4.7k的才满足时序要求,但是不论使用的是哪种阻值的电阻,返回的数据均不正常,而且根据配置的不同的A0、A1地址已经对代码中的目标地址进行了更改,抓波形的话都能够抓到相应的ACK数据,有没有 ...

在硬件上就是注意EP PAD floating或者与地连接。还有I2C管脚的上拉电阻为10Kohm的时候,是具体哪里不正确?
还是希望您能上传一个完整的I2C读时序,我们可以帮您分析一下。
举报

郎渐海

2018-11-16 09:39:33
引用: yweyerwq 发表于 2018-11-16 09:20
在硬件上就是注意EP PAD floating或者与地连接。还有I2C管脚的上拉电阻为10Kohm的时候,是具体哪里不正确?
还是希望您能上传一个完整的I2C读时序,我们可以帮您分析一下。

您好,我也遇到了同样的问题。读取寄存器输出总是0x0F或0x10.以下是i2c的时序图。A1,A0设为11。发送设备地址后芯片有ACK,再发送要读取寄存器的地址后,ACK为总高,与datasheet不符。硬件电路应该没有问题。
 
时序图中第一栏为输出值,第二栏为状态机循环编码,第三栏为SCL(100kHz),第四栏为SDA,第五栏为SDA的输入输出控制(1为主设备输出,0为从设备输出)。读取寄存器地址为0x0B(ID register),应该输出0xCB。
 
不知道问题出在哪里?谢谢!!!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分