打印
[STM32WB]

【STM32WB09KE测评】WB0 I2C驱动AHT30温度传感器

[复制链接]
387|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dvacos|  楼主 | 2024-11-15 18:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
I2C驱动AHT30

一、WB0 I2C引脚确认



参照上图找到Arduino的D14 D15 找到对应的Arduino接口图。WB0实际对应的IO是PB6 PB7

找到D14 D15接口,甚至非常贴心的放上了电源 和 地。

二、温度传感器

1、简介
AHT30是一款全新的温湿度传感器,具有功耗低、精度高的优点,它嵌入了适于回流焊的双列扁平无引脚SMD封装,拥有坚固的外壳和微小的尺寸。
AHT30配有一个全新优化的ASIC专用芯片、一个经过改进的MEMS半导体电容式湿度传感元件和一个标准的片上温度传感元件,其性能已获得显著的提升,即使在恶劣的环境下也能保持稳定性能。

● 完全标定
● 数字输出,I 2C接口
● 优异的长期稳定性
● 响应迅速、抗干扰能力强
● 宽电压支持2.2-5.5 VDC


2、驱动编写要点

该传感器使用标准I2C,不需要魔改,所以直接使用默认的I2C即可。

参考规格书 与 WB0本身的I2C速率,选择I2C速率为100KHz。PCBA上的建议传感器周围镂空就没办法了,因为是购买成品模块


这个传感器的驱动流程比较简单,但是流程图画的特别坑,容易让人误解。

上图的0X70 与 0X71是传感器的写、读地址,而0xAC是写的目标寄存器,0x33,0x00则是要写入的数据。

读取到值后要转化为实际的温度又有坑,按照规格书给的公式,代码运行后都是0,所以要该乘除的顺序。



综上驱动传感器的流程是:

①地址0X70 寄存器0xAC 写0x33,0x00
②等待80ms
③地址0X71 读7字节
④取处温度值,温度值是由第5字节、4字节、3的低四位字节,组成
⑤按照公式换算出实际温度

三、Cube MX 配置 I2C

选择I2C引脚


使能I2C接口,使用默认的100KHz即可


以上就完成初始化了。

四、实验

1、验证I2C波形

先不接传感器直接驱动WB0发出I2C的写命令,但是由于没有接传感器,肯定是NACK的,但是能证明I2C初始化成功了。


2、编写驱动

按照之前的逻辑编写实际的驱动后的逻辑分析仪捕捉的数据




采集的原始数据 与 转化的温度


GIF


总结
AHT30这个传感器不错,但是规格书很多小坑 或 模糊的点 需要花时间去排错。

使用特权

评论回复
沙发
21mengnan| | 2024-11-28 17:24 | 只看该作者
STM32的I2C非常好用,提供的库函数直接就用

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

112

帖子

2

粉丝