OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 12331|回复: 17

关于IIC读取AM2320温湿度传感器无应答

[复制链接]

4

主题

32

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
207
金钱
207
注册时间
2015-9-21
在线时间
44 小时
发表于 2016-3-27 11:10:26 | 显示全部楼层 |阅读模式
5金钱
本帖最后由 SmilePeng 于 2016-3-27 11:12 编辑

同志们,遇到一个很棘手的问题,现在用IIC读取AM2320温湿度模块  发现发送起始信号的时候总是无应答  导致数据总是读不出来  搞了两天了  都不知道什么原因  贴上我的程序和资料  已经用逻辑分析仪测出波形了  帮忙看看吧  谢谢了
正确的波形图

正确的起始信号

正确的起始信号

正确的发送指令

正确的发送指令

正确的读取返回值

正确的读取返回值


错误的波形图

错误的起始信号

错误的起始信号

错误的发送指令

错误的发送指令

错误的读取返回值

错误的读取返回值



AM2320.rar (3.96 MB, 下载次数: 2170)

最佳答案

查看完整内容[请看2#楼]

关于AM2330这款传感器IIC通讯,这个帖子是我15年9月发的,现在是16年12月底了,这一年多的时间有很多的网友QQ和邮箱联系到我,问我的解决没有,相信很多人现在一直也被困扰了,我想在此说明一下,不建议大家在使用这款传感器了:半年前一位网友联系到我问AM2320的IIC搞定没有,我当时确实没有搞定,不过后来通过各种方法确实搞定了,我确实用IIC的方式读出了AM2320的数据,然而发给那位网友他却怎么也读不出来,同样的程序同样的电 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

32

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
207
金钱
207
注册时间
2015-9-21
在线时间
44 小时
 楼主| 发表于 2016-3-27 11:10:27 | 显示全部楼层
关于AM2330这款传感器IIC通讯,这个帖子是我15年9月发的,现在是16年12月底了,这一年多的时间有很多的网友QQ和邮箱联系到我,问我的解决没有,相信很多人现在一直也被困扰了,我想在此说明一下,不建议大家在使用这款传感器了:半年前一位网友联系到我问AM2320的IIC搞定没有,我当时确实没有搞定,不过后来通过各种方法确实搞定了,我确实用IIC的方式读出了AM2320的数据,然而发给那位网友他却怎么也读不出来,同样的程序同样的电路,我的读出来他的读不出来。昨天又有一位朋友联系到我,我昨晚又把它拿出来测试了一下,奇迹般的我的也读不出来了。单总线方式的也死掉了,且不说我这个传感器坏没坏,我发这个帖子的时候IIC没有搞定,但是单总线搞定了,然而单总线是我通过逻辑分析仪分析出来的,读出来的数据位统一往右移一位,CRC校验一直不通过,后来用函数处理一下就好了,过来大半个月再上电做东西却又出现CRC校验失败,把移位处理函数去掉又能读出来了,我靠!!!!!恶心至极的东西
      真心建议大家放弃这款非常不稳定的传感器     我已经被他浪费太多时间了   下边我附上我当初测试过正常的,现在又不正常的IIC和DQ程序,你们测试一下正常就用,不正常别碰我吧,我当初真的正常过

IIC&DQ.rar

5.4 MB, 下载次数: 1641

回复

使用道具 举报

4

主题

32

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
207
金钱
207
注册时间
2015-9-21
在线时间
44 小时
 楼主| 发表于 2016-3-27 16:28:58 | 显示全部楼层
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-3-29 21:59:54 | 显示全部楼层
帮顶
回复

使用道具 举报

14

主题

82

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
375
金钱
375
注册时间
2014-12-11
在线时间
64 小时
发表于 2016-3-30 11:15:27 | 显示全部楼层
IIC_Send_Byte里延时时间为什么那么长,我觉得scl置低后sda应该配置成输入模式 时间那么长万一最后输的是1  接收器ack又是0  不会烧吗
回复

使用道具 举报

14

主题

82

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
375
金钱
375
注册时间
2014-12-11
在线时间
64 小时
发表于 2016-3-30 11:16:47 | 显示全部楼层
如果外面有上拉电阻 sda可以配置成OD输出 ,读引脚电平时输出1就行
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-4-1 23:08:02 | 显示全部楼层
lujiashun1 发表于 2016-3-30 11:16
如果外面有上拉电阻 sda可以配置成OD输出 ,读引脚电平时输出1就行

弩哥的头像,帅。...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2016-4-11
在线时间
4 小时
发表于 2016-4-11 10:18:56 | 显示全部楼层
本帖最后由 leech42 于 2016-4-11 10:25 编辑

不知这位朋友,这个问题解决了没,前两三我也在用这个片子。STM32模拟I2C总线访问,OD输出,上拉4.7K,电源3.3V。
用我以前访问AT24C16的代码访问也是一直没有ACK应答。
想想无非是SCL跟SDA的时序配合上出问题了,用示波器测SCL、SDA的上升沿信号,发现从0 -> 1居然有2us多,然后我把代码中改变输出电平时都延时10us。然后各步骤延时按手册写。就可以正常读出来了。
当初碰到问题上网搜,有个帖子说这个片子很容易焊坏,其实我觉得还是他没弄对,我现在用烙铁随便咋焊都没事,而且我还用的是400度的。
唤醒后停止信号前等待时间设为2ms
发送读指令后等待时间设为4ms
读返回数据等待时间设为35us
如果你还没解决的话,希望能帮上你,有问题可以 交流啊。
网上发现好多类似的问问题的帖子,楼主解决了都不发个解决方法,真不好啊!

回复

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2015-12-6
在线时间
2 小时
发表于 2016-4-17 22:10:43 | 显示全部楼层
上周也在弄AM2321温湿度模块,数据是读出来了,但是三次数据中一次是错的,发现错误的这次没有ACK,其他两次正常的都有ACK,周期性的出现。读取数据的间隔时间也达到了6秒……明天借鉴下楼上的经验,继续查找问题。
相互学习,共同进步!
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2016-6-9
在线时间
5 小时
发表于 2016-6-27 21:46:07 | 显示全部楼层
上面的时序图都不正确。请仔细看元器件Datasheet第十三页步骤一,在唤醒时应注意什么。另外程序中但凡遇到if(!IIC_Write_Ack())的地方,要把叹号去掉。还有就是十六进制转十进制程序编写错误。把上面的压缩包里的程序按照这个思路改改,就能用了。我已经这样改好,实测正常了。
回复

使用道具 举报

4

主题

32

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
207
金钱
207
注册时间
2015-9-21
在线时间
44 小时
 楼主| 发表于 2016-7-2 09:24:04 | 显示全部楼层
wanyanyuya 发表于 2016-6-27 21:46
上面的时序图都不正确。请仔细看元器件Datasheet第十三页步骤一,在唤醒时应注意什么。另外程序中但凡遇到i ...

真是郁闷,为啥还是不响应,现在也不知道到底是不是硬件的问题,自己写了个单总线的能读出来,难道SCL引脚出了问题?能不能把你改好的发给我看看,790403042@qq.com,谢谢了
回复

使用道具 举报

17

主题

132

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
367
金钱
367
注册时间
2016-9-27
在线时间
53 小时
发表于 2016-11-18 20:24:18 | 显示全部楼层
楼主,问题解决没有,最近遇到和你相同的问题,错误都一样,请问你的最后是怎么解决的,能分享一下吗。谢谢了!592537282@qq.com
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2016-11-19
在线时间
0 小时
发表于 2016-11-19 16:04:34 | 显示全部楼层
今天弄了一天,你的是因为模拟i2c的时序问题

AM2320.rar

3.93 MB, 下载次数: 1802

回复

使用道具 举报

17

主题

132

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
367
金钱
367
注册时间
2016-9-27
在线时间
53 小时
发表于 2016-11-20 13:28:41 | 显示全部楼层
wet01 发表于 2016-11-19 16:04
今天弄了一天,你的是因为模拟i2c的时序问题

你这个是正确的吗?
回复

使用道具 举报

17

主题

132

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
367
金钱
367
注册时间
2016-9-27
在线时间
53 小时
发表于 2016-11-20 17:21:52 | 显示全部楼层
muk子夜 发表于 2016-11-20 13:28
你这个是正确的吗?

                                                                        
回复

使用道具 举报

17

主题

132

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
367
金钱
367
注册时间
2016-9-27
在线时间
53 小时
发表于 2016-11-20 17:23:17 | 显示全部楼层
wet01 发表于 2016-11-19 16:04
今天弄了一天,你的是因为模拟i2c的时序问题

SI7005的温湿度传感器应该怎么搞?
回复

使用道具 举报

3

主题

8

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2017-6-21
在线时间
8 小时
发表于 2017-6-21 15:04:07 | 显示全部楼层
wet01 发表于 2016-11-19 16:04
**** 作者被禁止或删除 内容自动屏蔽 ****

这个可以用,已经调试通过
回复

使用道具 举报

15

主题

184

帖子

0

精华

高级会员

Rank: 4

积分
647
金钱
647
注册时间
2014-4-29
在线时间
299 小时
发表于 2018-4-24 15:55:44 | 显示全部楼层
帮顶。

我这几天也在测am2320这个传感器。楼主说的没错,这就是个大坑,但是坑的比较明显,不用就好了,不至于伤到人。
我遇到的问题是唤醒后主机收不到从设备的ack,(不是唤醒时,是唤醒后。唤醒时主机生成了ack的时钟,但是要忽略ack的结果)。

时序是没问题的,示波器看主机信号波形正常,io延时从1us试到50us,读写延时试了各种参数,包括手册上推荐的和网友提供的其他参数。上电的电平也是按手册要求的。
也没有焊接问题,是直接插到连接器插槽上的。
测试的现象看起来好像是器件没有成功进入iic模式,当然也没有进入单总线模式,因为用这个上电电平时读单总线数据我也没读出来正常的数。原因也可能是批次的问题吧。

其实最开始打算用DHT11这个传感器的,也测试过,能正常测量。DHT11也是奥松做的,和am2320是一家的, 只支持单总线接口。因为程序要用rtos,所以没法用单总线接口,就想用AM2320。现在已经放弃治疗了。
刚测完DHT12,也是他家的,也是iic和单总线复用,数据帧格式更简单,测试可以正常读出测量值。但是不太敢用他家的东西了,而且DHT12在官网上已经下架了,不知道是不是停产了,只能当个备用的。

现在准备测SHT20和SHT30了,这个是只用iic接口的,Sensirion做的,稍微贵点,质量可能靠谱一些。




回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 04:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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