Firefly开源社区
标题:
ROC-RK3308-CC开发实例总结--SHT30温湿度模块调试
[打印本页]
作者:
Yzh
时间:
2018-11-16 16:20
标题:
ROC-RK3308-CC开发实例总结--SHT30温湿度模块调试
本帖最后由 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设备,因此我们可以直接调用。
&i2c1 {
clock-frequency = <400000>;
status = "okay";
tas5731: tas5731@1a {
#sound-dai-cells = <0>;
compatible = "ti,tas5731";
reg = <0x1a>;
clocks = <&cru SCLK_I2S1_8CH_TX_OUT>;
clock-names = "mclk";
pinctrl-names = "default";
pinctrl-0 = <&i2s_8ch_1_m0_mclk>;
pdn-gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_LOW>;
reset-gpios = <&gpio1 RK_PA1 GPIO_ACTIVE_LOW>;
};
复制代码
调试过程发现,他的输出结果并不是标准的温度湿度数据,阅读datasheet后发现,需要通过数学公式转化,下面是代码实现过程:
ST = buf[0];
ST <<= 8;
ST |= buf[1];
SRH = buf[3];
SRH <<= 8;
SRH |= buf[4];
tempC = -45.0 + (175.0 * ((float) ST / (float) 0xFFFF)); //摄氏度数据
tempF = tempC * 9 / 5 + 32; //华氏度数据
hum = 100.0 * ((float) SRH / (float) 0xFFFF); //湿度数据
复制代码
sht30使用crc校验,关于这种校验码可以上网查找,这里讲代码实现过程
uint8_t crc8(const uint8_t *data, int len)
{
const uint8_t POLYNOMIAL = 0x31;
uint8_t crc = 0xFF;
int j;
int i;
for (j = len; j; --j ) {
crc ^= *data++;
for ( i = 8; i; --i ) {
crc = ( crc & 0x80 )? (crc << 1) ^ POLYNOMIAL: (crc << 1);
}
}
return crc;
}
//数据校验判断步骤
if ( buf[2] != crc8(buf, 2) || buf[5] != crc8(buf+3, 2))
return SHT30_CRC_CHECK_FAILED;
复制代码
笔者做了一份demo,编译后直接将可执行文件烧进板子,然后执行便可以得到当前环境的温湿度数据:
# ./main p
Temperature 27.65c - 81.76f
Humidity 73.54%
#
复制代码
sht30.tar.gz
(284.12 KB, 下载次数: 115)
2018-11-16 15:55 上传
点击文件名下载附件
下载积分: 灯泡 -1 , 经验 -1
作者:
zhangyunqing
时间:
2018-12-18 14:05
持续关注中!
作者:
wx_Mr.Lee_g8Ao8
时间:
2018-12-18 17:20
可以可以
作者:
loading
时间:
2018-12-24 16:09
不错,,
作者:
jjaacckk123
时间:
2019-1-11 15:53
不错 谢谢学习了
作者:
jason12345
时间:
2019-3-13 17:58
请问驱动给sht3x写指令报错是什么原因?
作者:
978651195
时间:
2019-4-16 08:56
为什么看不了啊
作者:
hanson1986
时间:
2019-5-31 11:45
我也看不到啊
作者:
hanson1986
时间:
2019-5-31 13:47
谢谢了,正需要
作者:
kiswih
时间:
2019-10-17 17:23
正需要这块的资料,谢谢~!
作者:
coolperl
时间:
2020-7-11 12:12
正好需要这个资料,再做I2C的开发
作者:
coolperl
时间:
2020-7-11 15:41
需要这块代码,正在开发
作者:
coolperl
时间:
2020-7-12 19:26
有没有源码啊
作者:
fany
时间:
2020-8-10 11:14
正好需要·····
作者:
fany
时间:
2020-8-14 10:50
`````````````````````````````````````
作者:
Kulenc
时间:
2020-10-8 16:55
学习一下
作者:
eaglelan
时间:
2021-5-17 18:20
非常好的资料,赞!
作者:
18256966515
时间:
2021-9-13 17:00
关注学习
作者:
xingqijun
时间:
2021-10-18 17:53
好东西,谢谢分享
作者:
kenanhcf
时间:
2021-11-2 20:10
谢谢分享!!
作者:
kenanhcf
时间:
2021-11-2 21:03
正需要这块的资料,谢谢~!
作者:
fjptcym
时间:
2022-3-27 17:14
谢谢
作者:
fjptcym
时间:
2022-3-27 17:40
感谢
作者:
code_noob
时间:
2022-3-31 15:34
学习一下
欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/)
Powered by Discuz! X3.1