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


    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%
    # 
    

      

    进入Firefly开发者社区,可以下载demo

  • 相关阅读:
    node异步转同步(循环)
    三级省市区PCASClass.js插件
    微信公众号基础总结(待更新)
    ES6详解
    webpack配置
    高性能 CSS3 动画
    github上传口令
    纯css3 实现3D轮播图
    优美的js代码,拿去玩~
    关于列举属性用点还是用【】
  • 原文地址:https://www.cnblogs.com/TeeFirefly/p/10194684.html
Copyright © 2020-2023  润新知