Firefly开源社区

123
发表新贴
打印 上一主题 下一主题

[技术讨论] ROC-RK3308-CC开发实例总结--SHT30温湿度模块调试

274

积分

0

威望

0

贡献

技术达人

Rank: 2

积分
274

ROC-RK3308-CC开发实例总结--SHT30温湿度模块调试

发表于 2018-11-16 16:20:19      浏览:37109 | 回复:23        打印      只看该作者   [复制链接] 楼主
本帖最后由 YAo 于 2018-11-16 16:25 编辑

sht30是盛世瑞恩出产的一款温湿度传感器,去年小米发布的一款温湿度测量笔用的也是这款传感器。关于这款传感器的介绍在这里就不再赘述,主要聊一聊在roc-rk3308-cc上的调试过程。
sht30是基于i2c传输协议的,roc-rk3308-cc的板子上有三组i2c接口可供使用。打开kernel/arch/arm64/boot/dts/rockchip/rk3308-firefly.dtsi该设备树文件,可以看到已经注册了一组i2c1设备,因此我们可以直接调用。
  1. &i2c1 {
  2.     clock-frequency = <400000>;
  3.     status = "okay";

  4.     tas5731: tas5731@1a {
  5.         #sound-dai-cells = <0>;
  6.         compatible = "ti,tas5731";
  7.         reg = <0x1a>;
  8.         clocks = <&cru SCLK_I2S1_8CH_TX_OUT>;
  9.         clock-names = "mclk";
  10.         pinctrl-names = "default";
  11.         pinctrl-0 = <&i2s_8ch_1_m0_mclk>;
  12.         pdn-gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_LOW>;
  13.         reset-gpios = <&gpio1 RK_PA1 GPIO_ACTIVE_LOW>;
  14.     };
复制代码
调试过程发现,他的输出结果并不是标准的温度湿度数据,阅读datasheet后发现,需要通过数学公式转化,下面是代码实现过程:
  1. ST = buf[0];
  2. ST <<= 8;
  3. ST |= buf[1];

  4. SRH = buf[3];
  5. SRH <<= 8;
  6. SRH |= buf[4];
  7. tempC = -45.0 + (175.0 * ((float) ST / (float) 0xFFFF));   //摄氏度数据
  8. tempF =  tempC * 9 / 5 + 32;                                     //华氏度数据
  9. hum = 100.0 * ((float) SRH / (float) 0xFFFF);                    //湿度数据
复制代码
sht30使用crc校验,关于这种校验码可以上网查找,这里讲代码实现过程
  1. uint8_t crc8(const uint8_t *data, int len)
  2. {
  3.      const uint8_t POLYNOMIAL = 0x31;
  4.      uint8_t crc = 0xFF;
  5.      int j;
  6.      int i;
  7.   
  8.   for (j = len; j; --j ) {
  9.        crc ^= *data++;

  10.        for ( i = 8; i; --i ) {
  11.             crc = ( crc & 0x80 )? (crc << 1) ^ POLYNOMIAL: (crc << 1);
  12.        }
  13.   }
  14.   return crc;
  15. }
  16. //数据校验判断步骤
  17.     if ( buf[2] != crc8(buf, 2) || buf[5] != crc8(buf+3, 2))
  18.            return SHT30_CRC_CHECK_FAILED;
复制代码
笔者做了一份demo,编译后直接将可执行文件烧进板子,然后执行便可以得到当前环境的温湿度数据:
  1. # ./main p
  2. Temperature 27.65c - 81.76f
  3. Humidity 73.54%
  4. #
复制代码

sht30.tar.gz (284.12 KB, 下载次数: 114)



回复

使用道具 举报

130

积分

0

威望

0

贡献

技术小白

积分
130
QQ
发表于 2018-12-18 14:05:03        只看该作者  沙发
持续关注中!
回复

使用道具 举报

118

积分

0

威望

0

贡献

技术小白

积分
118
发表于 2018-12-18 17:20:53        只看该作者  板凳
可以可以
回复

使用道具 举报

1570

积分

3

威望

0

贡献

中级创客

Rank: 4

积分
1570

突出贡献

QQ
发表于 2018-12-24 16:09:38        只看该作者  地板
不错,,
回复

使用道具 举报

42

积分

0

威望

0

贡献

技术小白

积分
42
发表于 2019-1-11 15:53:04        只看该作者  5#
不错  谢谢学习了
回复

使用道具 举报

13

积分

0

威望

0

贡献

技术小白

积分
13
发表于 2019-3-13 17:58:57        只看该作者  6#
请问驱动给sht3x写指令报错是什么原因?
回复

使用道具 举报

9

积分

0

威望

0

贡献

技术小白

积分
9
发表于 2019-4-16 08:56:52        只看该作者  7#
为什么看不了啊
回复

使用道具 举报

16

积分

0

威望

0

贡献

技术小白

积分
16
发表于 2019-5-31 11:45:47        只看该作者  8#
我也看不到啊

回复

使用道具 举报

16

积分

0

威望

0

贡献

技术小白

积分
16
发表于 2019-5-31 13:47:06        只看该作者  9#
谢谢了,正需要
回复

使用道具 举报

48

积分

0

威望

0

贡献

技术小白

积分
48
发表于 2019-10-17 17:23:05        只看该作者  10#
正需要这块的资料,谢谢~!
回复

使用道具 举报

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

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表