完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 724807280 于 2016-3-31 13:28 编辑 在做一个项目时用到了一个温湿度传感器SHT20,这颗芯片有着非常高的精度0.3%,业界普遍认同它。 因为之前单片机开发用到过SHT11,所以一想原理差不多,都是基于I2C通讯,如果使用软件I2C移植就相对简单,不如利用PSOC的特性,直接使用它的I2C组件来完成。 之前没有使用过I2C的组件,所以找到了PCreator 中的SCB_I2CCommMaster的里程,其中两个收发函数: WriteCommandPacket(); ReadStatusPacket(); 我们可以再发送函数中找到: (void) I2CM_I2CMasterWriteBuf(0x40, 0xE5, 1, I2CM_I2C_MODE_COMPLETE_XFER); 其中我们把第一个从设备地址修改为SHT20手册上标注的0x40,第二个参数是发送的数据,后面跟着长度,和设置模式(默认即可) 我们通过手册可以看到我们要向读取数据需要发送两个字节的数据,第一个是7位的从设备地址和1位的读写命令。当然当你调用 I2CM_I2CMasterWriteBuf这个函数时就默认先发送 第一个字节的数据,所以我们只要发送后面的11100101即0XE5。函数调用之后我们就可以准备调用接收函数进行读取数据啦 (void) I2CM_I2CMasterReadBuf(0x40, buffer, 3, I2CM_I2C_MODE_COMPLETE_XFER); 同样的我们可以成功读取到三个字节的数据,我们只需要按照手册拿到画红线的数据即可,这个就是湿度的原始数据。然后我们带入给的公式: 对应解析的代码是: float SHT2x_CalcRH(uint16 u16sRH) //============================================================================== { uint16 humidityRH; // variable for result u16sRH &= ~0x0003; // clear bits [1..0] (status bits) //-- calculate relative humidity [%RH] -- humidityRH = -6.0 + 125.0/65536 * (uint16)u16sRH; // RH= -6 + 125 * SRH/2^16 return humidityRH; } 这样我们运行程序可以从调试模式中看到数据: 转化为10进制就是32,那么相对湿度就是32%。 测温度的话只需要把发送的命令改为测试温度的即可0xE3,然后用如下程序进行解析: float SHT2x_CalcTemperatureC(uint16 u16sT) //============================================================================== { float temperatureC; // variable for result u16sT &= ~0x0003; // clear bits [1..0] (status bits) //-- calculate temperature [°C] -- temperatureC= -46.85 + 175.72/65536 *(float)u16sT; //T= -46.85 + 175.72 * ST/2^16 return temperatureC; } |
|
相关推荐
6 个讨论
|
|
我也想要一下源代码,我也用到了sht20来检测温湿度
|
|
|
|
|
|
楼主给一份源代码,谢谢!哈哈
|
|
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
754个成员聚集在这个小组
加入小组2105 浏览 1 评论
1851 浏览 1 评论
3669 浏览 1 评论
请问可以直接使用来自FX2LP固件的端点向主机FIFO写入数据吗?
1786 浏览 6 评论
1536 浏览 1 评论
CY8C4025LQI在程序中调用函数,通过示波器观察SCL引脚波形,无法将pin0.4(SCL)下拉是什么原因导致?
569浏览 2评论
CYUSB3065焊接到USB3.0 TYPE-B口的焊接触点就无法使用是什么原因导致的?
423浏览 2评论
CX3连接Camera修改分辨率之后,播放器无法播出camera的画面怎么解决?
437浏览 2评论
383浏览 2评论
使用stm32+cyw43438 wifi驱动whd,WHD驱动固件加载失败的原因?
915浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 16:09 , Processed in 1.135785 second(s), Total 64, Slave 52 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号