在线时间588 小时
UID3469866
注册时间2018-4-19
NXP金币2869
TA的每日心情 | 慵懒 2024-2-8 09:39 |
---|
签到天数: 217 天 [LV.7]常住居民III
版主
- 积分
- 7621
- 最后登录
- 2024-4-22
|
本文是基于LPC55S69的官方开发板去驱动SHT30采集温湿度,通过串口打印输出。
使用了FLEXCOMM7作为I2C接口,FLEXCOMM0作为Uart接口,通过MCUXpresso配置。
SHT最核心的一个命令就是数值查询。指令与时序如下图:
返回的数值是6个字节的数组
1.[温度高八位]
2.[温度第八位]
3.[温度crc校验]
4.[湿度高八位]
5.[湿度第八位]
6.[湿度crc校验]
温湿度转换,手册也给出了很详细的说明
I2C通信部分
- I2C_MasterStart(FLEXCOMM7_PERIPHERAL, 0x44, kI2C_Write);
- I2C_MasterWriteBlocking(FLEXCOMM7_PERIPHERAL, sht30_rxcmd, 2, kI2C_TransferNoStopFlag);
- I2C_MasterRepeatedStart(FLEXCOMM7_PERIPHERAL, 0x44, kI2C_Read);
- I2C_MasterReadBlocking(FLEXCOMM7_PERIPHERAL, sht30_buff, 6, kI2C_TransferDefaultFlag);
- I2C_MasterStop(FLEXCOMM7_PERIPHERAL);
复制代码 可以看到LPC55S69的I2C库封装比较简单,需要用户手动产生开始信号,停止信号,这里就仿着SHT30手册写。
温度湿度转换部分
- uint16_t tem = ((sht30_buff[0]<<8) | sht30_buff[1]);//温度拼接
- float Temperature= (175.0*(float)tem/65535.0-45.0) ;// T = -45 + 175 * tem / (2^16-1)/*转换实际温度*/
- uint16_t hum = ((sht30_buff[3]<<8) | sht30_buff[4]);//湿度拼接
- float Humidity= (100.0*(float)hum/65535.0);
复制代码
连线
运行效果:
最后附上工程。
template.zip
(1.66 MB, 下载次数: 10)
|
|