ESP32介绍

esp32 是乐鑫出品的双核处理器,自带wifi和蓝牙,用于IOT领域,更多详情参考乐鑫官网

SHT20介绍

sht20 是一款温湿度传感器,广泛用于物联网行业,使用I2C通信协议

I2C介绍

2C 通讯协议(Inter-Integrated Circuit)是由 Phiilps公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要 USART、CAN 等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路(IC)间的通讯。下面我们分别对 I2C协议的物理层及协议层进行讲解。

ESP32带硬件I2C,只要调用相关API即可,用起来非常简单。

问题

按照正常的协议进行调试,一直在读数据上出问题,使用了多种方式都不行

仔细检查SHT20的ds,发现如下说明:

进行数据测量的时候,未准备好的时候,没有ACK返回,这个时候就会失败。知道原因后处理就方便多了,这块等待直到读取到数据为止

/**
 * @brief read data
 * @param 
 *      sensor
 *      tp
 *      rh
 * @retval
 *      ESP_OK:
 *      ESP_ERR:
 */
esp_err_t iot_sht20_get_data(sht20_handle_t sensor, float* tp, float* rh)
{
    uint8_t data[3];
    sht20_dev_t* sens = (sht20_dev_t*) sensor;
    i2c_cmd_handle_t cmd = i2c_cmd_link_create();
    uint16_t tmp;
    i2c_master_start(cmd);
    i2c_master_write_byte(cmd, (sens->dev_addr << 1) | WRITE_BIT, ACK_CHECK_EN);
     if (tp)
        i2c_master_write_byte(cmd, TEMP_MASUREMENT, ACK_CHECK_EN);
    if (rh)
        i2c_master_write_byte(cmd, HUMI_MASUREMENT, ACK_CHECK_EN);
    i2c_master_stop(cmd);
    int ret = iot_i2c_bus_cmd_begin(sens->bus, cmd, 1000 / portTICK_RATE_MS);
    i2c_cmd_link_delete(cmd);
    if (ret == ESP_FAIL) {
        ESP_LOGE(TAG, "SNED WRITE ERROR\n");
        return ESP_FAIL;
    }
    do {
        // ets_delay_us(200 * 1000);
        vTaskDelay(100 / portTICK_PERIOD_MS);
        cmd = i2c_cmd_link_create();
       
        i2c_master_start(cmd);
        i2c_master_write_byte(cmd, (sens->dev_addr << 1) | READ_BIT, ACK_CHECK_EN);
    
        i2c_master_read(cmd, data, 2, ACK_VAL);
        i2c_master_read_byte(cmd, &data[2], NACK_VAL);
        i2c_master_stop(cmd);
        ret = iot_i2c_bus_cmd_begin(sens->bus, cmd, 1000 / portTICK_RATE_MS);
        i2c_cmd_link_delete(cmd);
         if (ret == ESP_FAIL) {
            ESP_LOGE(TAG, "SEND READ ERROR \n");
         }
    }while (ret != ESP_OK);

tmp = (data[0] << 8) | (data[1]<<0);
    tmp &= ~0x0003;
    if (rh) {
        *rh = ((float)tmp * 0.00190735)-6;
    }
    if (tp) {
        *tp =  ((float)tmp * 0.00268127)-46.85;
    }
    return ESP_OK;
}

ESP32 调试SHT20踩的坑相关推荐

  1. 程序员,Mybatis 你踩过坑吗?

    大多数开发者应该都使用过Hibernate或者Mybatis的框架,或多或少都踩过一些坑! 如在MyBatis/Ibatis中#和$的区别,#方式能够很大程度防止sql注入,$方式无法防止Sql注入. ...

  2. map mybatis 的字段返回0_Mybatis 你踩过坑吗?

    (给ImportNew加星标,提高Java技能) 作者:似水的流年 yq.aliyun.com/roundtable/49835 大多数开发者应该都使用过Hibernate或者Mybatis的框架,或 ...

  3. mybatis 查询的时间不对_程序员,Mybatis 你踩过坑吗?

    点击上方"Java基基",选择"设为星标" 做积极的人,而不是积极废人! 源码精品专栏 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 ...

  4. 全中!七大初学者易踩的坑!

    [CSDN 编者按]作为初学者,你是否有犯过不知道有现成的API,而自己重复造轮子呢?本文作者详解七大新人程序员容易犯的错,让大家吸取教训,不要重复掉入这些坑. 作者 | Daan 译者 | 弯月,责 ...

  5. 大话 AliPay踩的坑

    大话 AliPay踩的坑 传送门->大话微信支付踩的坑 做三方集成的时候按照官方的步骤进行集成基本不会出现太多问题.最近在做App集成支付,主要就是微信支付.支付宝.在集成支付宝支付的时候还是遇 ...

  6. 【Go入门可能会踩的坑-02】

    Go语言是一门简单有趣的编程语言,与其他语言一样,在使用时不免会遇到很多坑,不过它们大多不是Go本身的设计缺陷.如果你刚从其他语言转到Go,那这篇文章可能会帮到你.旨在帮助你跳过这些坑,能减少大量调试 ...

  7. 深思数盾使用脚本加密(加壳)踩的坑

    深思数盾使用脚本加密(加壳)踩的坑 商业化软件要盈利离不开加密,目前项目上选择的加密软件是深思数盾. 一般来说加密都是由实施人员来做的,但是本项目又个特殊的地方,需要和二次开发者写作开发,这样就需要将 ...

  8. 2021年Java面试题目最新总结【90%面试会踩的坑】

    学会java技术之后大家面临的最多的问题就是面试这关,求职面试java岗位是否能够成功是直接影响我们的工作机会的,所以对于Java程序员面试你准备好了吗?今天小编汇总了一下关于Java程序员面试,90 ...

  9. celery开发中踩的坑

    celery开发中踩的坑 celery连接redis 当使用redis做broker,redis连接需要密码时: BROKER_URL='redis://:xxxxx@127.0.0.1:6379/0 ...

  10. Spring Boot 从1.0 升级到 2.0 所踩的坑

    先给大家晒一下云收藏的几个数据,作为一个 Spring Boot 的开源项目(https://github.com/cloudfavorites/favorites-web)目前在 Github 上面 ...

最新文章

  1. 修改 Idea 终端 Terminal 为 GitBash 或 Cmder
  2. Redhat5虚拟系统安装VmwareTools
  3. uPC1677射频信号放大芯片
  4. 认识实时动态测量技术
  5. 【UVA - 10037】Bridge(过河问题,经典贪心)
  6. Linux Shell脚本入门教程系列之(十五) Shell函数简介
  7. oracle字段规则,Oracle的基本操作+Oracle字段类型(zz)
  8. k8s的Pod状态和生命周期管理
  9. 想买个这样的笔记本电脑
  10. java访问kudu,KUDU的java操作
  11. 今天,霍金没有提AI威胁论,他的新目标是带领人类移民外星球(附霍金姚期智Pete演讲实录+PPT)
  12. CloudSim源码分析之DatacenterBroker--processEvent()
  13. D - Power Tower欧拉降幂公式
  14. 云智慧全智能计算机,东方所推出INV3062T型云智慧采集系统
  15. vue 调起浏览器打印
  16. 国家开放大学计算机基础应用型题一,国家开放大学(电大)《计算机应用基础》上机网考常考操作题及步骤...
  17. DEEP COMPRESSION: COMPRESSING DEEP NEURAL NETWORKS WITH PRUNING, TRAINED QUANTIZATION AND HUFFMAN
  18. 学习笔记15--机器人操作系统
  19. 张凤莲:换城市工作就一定要转移社保吗?
  20. 文本生成 | 一篇带风格的标题生成的经典工作

热门文章

  1. 经典.net混淆器 Confuser EX 2.0 使用介绍及配置 2022
  2. j2sdkversion-doc.zip下载地址
  3. webRTC初探:如何实现音视频的录制
  4. Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(1):基础知识
  5. 理解Memory Barrier(内存屏障)
  6. php 查看linux硬盘序列号,LINUX获取硬盘序列号
  7. 通用数据权限设计方案
  8. OSG正二十面体均分球面
  9. 【转】Xposed+JustTrustMe关闭SSL证书验证解决无法抓取https包问题
  10. 程序员方式原生表白网页