OpenEdv-开源电子网

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

GY39温湿度模块IIC代码调试心得和疑问

[复制链接]

2

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2019-9-5
在线时间
27 小时
发表于 2019-12-29 14:31:39 | 显示全部楼层 |阅读模式
GY39模块是一个温度、湿度、大气压力、海拔、光照度的复合模块,支持串口和IIC接口访问。
最近做个小玩意,想用GY39模块通过IIC总线读取温湿度数据,并用Usart1输出至电脑串口。
IIC总线挂在PA6,PA7上。模块上手以后先按厂家的例程写进F103C8T6最小系统板上,写完重启后发现输出的各项参数都为0。
于是乎,开始分析程序和电路连接。一开始以为端口初始化为开漏输出,IIC总线缺少上拉电阻,配了两个4K7的电阻后依然没有数据。
忙活了一晚上后决定老老实实把程序中各个函数过一遍。由于手上又没有逻辑分析仪。只好在各个功能函数的返回值前加了一条printf语句,用于输出返回值,
看看到底是哪个函数模块出了问题。重新烧录后奇迹发生了,GY39居然有输出了,函数内的printf语句输出的也都是一切正常。试着把printf语句注释掉,结果又没输出了。
多番烧脑分析(瞎猫碰着死老鼠)后认为,估计是原程序中所给的延时不足,造成模块来不及响应,加上printf语句后相当于额外加了延时,抱着这个思路提高了延时时间,原延时5us的,改为10us。
模块就有输出了。
串口监视.png

串口1.png

串口2.png

不过还是有疑问,希望各位高手能否给解答一下:
1、厂家例程里面一再强调IIC总线时钟频率要低于40KHZ,但是例程里面使用的应该是软件模拟IIC读写,这个频率是如何计算得出??如何才能保证低于40KHZ??
2、虽然GY39模块有数据输出,但是海拔高度是错误的且基本不变,显示值为65515m上下跳动,我研究了GY39的IIC数据格式,发现海拔数据位于数据串的最后两个字节,会不会是因为主机读数据过程中
时序有少许偏差,前面的数据能读对,到最后两个字节的时候,因为时序偏差的原因导致数据出错了????


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2021-12-22
在线时间
0 小时
发表于 2021-12-23 16:30:20 | 显示全部楼层
我用的是STM32F103ZET6也没有返回值,不知道为啥
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-18 09:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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