你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【年中粉丝节】+SHT20传感器

[复制链接]
liuxingkeji 发布时间:2021-6-7 23:09
【年中粉丝节】+SHT20传感器
今天收到年中粉丝节的活动,看了看,对不起了日天兄,我得水个好几篇文章了。既然是分享ST开发板与传感器的文章。今天先来个SHT20温湿度传感器。
先贴下参数图。
1.png
首先通信接口是IIC总线方式。
2.png
这张是性能参数。可以两个湿度传感器精度可以达到12bit分辨率,温度是14bit分辨率。
3.png
到这里我们需要看到其发送数据的时序,逻辑,同时知道需要知道寄存器的地址。
4.png
在程序中对应。虽然地址配置的是0x40,其实是在发数据的适合地址进行了左移一位的操作。
  1. float SHT2x_MeasureHM(unsigned char cmd, unsigned short *pMeasurand)

  2. {

  3.       

  4.     char  checksum = 0;  //checksum

  5.     char  data[2];    //data array for checksum verification

  6.        unsigned char addr = 0;

  7.     unsigned short tmp = 0;

  8.     float t = 0;

  9.       

  10.     addr = SHT20_ADDRESS << 1;

  11.       

  12.        IIC_Start();

  13.       

  14.        IIC_SendByte(addr);

  15.        if(IIC_WaitAck(50000)) //等待应答

  16.               return 0.0;

  17.       

  18.        IIC_SendByte(cmd);

  19.        if(IIC_WaitAck(50000)) //等待应答

  20.               return 0.0;

  21.       

  22.        IIC_Start();

  23.       

  24.        IIC_SendByte(addr + 1);

  25.        while(IIC_WaitAck(50000)) //等待应答

  26.        {

  27.               IIC_Start();

  28.               IIC_SendByte(addr + 1);

  29.        }

  30.       

  31.        DelayXms(70);

  32.       

  33.        data[0] = IIC_RecvByte();

  34.        IIC_Ack();

  35.        data[1] = IIC_RecvByte();

  36.        IIC_Ack();

  37.       

  38.        checksum = IIC_RecvByte();

  39.        IIC_NAck();

  40.       

  41.        IIC_Stop();

  42.       

  43.        SHT2x_CheckCrc(data, 2, checksum);

  44.     tmp = (data[0] << 8) + data[1];

  45.     if(cmd == SHT20_Measurement_T_HM)

  46.     {

  47.         t = SHT2x_CalcTemperatureC(tmp);

  48.     }

  49.     else

  50.     {

  51.         t = SHT2x_CalcRH(tmp);

  52.     }

  53.       

  54.     if(pMeasurand)

  55.     {

  56.         *pMeasurand = (unsigned short)t;

  57.     }

  58.       

  59.     return t;

  60.       

  61. }
复制代码

上面就是对应的读取温湿度寄存器里面的值。
5.png
最后读取出来的需要进行转换。
6.png
7.png
如上图。
8.png
最终串口输出数据。
9.png
单片机使用的是STM32F103VET6。板子上还有其他传感器明天接着水。

收藏 评论2 发布时间:2021-6-7 23:09

举报

2个回答
STMCU-管管 回答时间:2021-6-8 09:28:26
响应快啊,给力
liuxingkeji 回答时间:2021-6-8 09:51:43

一晚给你水一篇

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版