网上有不少ESP32用硬件IIC读取SHT30温湿度计的数据的文章,大多缺少解释,不太看得明白,我通过波形查看标注了一下说明,有不对的地方望帮助指出,谢谢
直接上代码吧:

#include <Wire.h>//IIC管脚为GPIO 21(SDA)、GPIO 22(SCL)
//如果要使用其他管脚,在使库函数时,只需调用:Wire.begin(SDA, SCL);
//OLED的地址是 0X3c(7位)
//时间发生器PCF8563T 地址是0X51//温度SHT30 地址是0x44 不需要乘2这个概念!!!!!!!//温度sht30 地址0x44byte temp[6];  //6个数据:温度高位,温度低位,温度CRC,湿度高位,湿度低位,湿度CRC
int wendu, shidu;void setup(){Serial.begin(115200); Wire.begin();
}void loop(){Wire.beginTransmission(0x44);     //发开启传输Start + 地址0x44(7位) + 写入Bit(1位)Wire.write(0x2C);                 //写入命令 0x2C:开启Clock stretching   0x24:关闭Clock stretching (开启的时候会在没有转换完之前拉低时钟信号,迫使IIC等待转换 大概 9.2ms)Wire.write(0x06);                 //写入命令 0x06 重复率高,慢,重复率越高,转换持续的时间越长,功耗越高,但是转换精度越高。Wire.endTransmission();           //停止Stop//    Wire.requestFrom(0x44, 0x06, false);  //将输据读出到缓存 地址 6个字节 结束后Stop;false和true在波形上看不到区别Wire.requestFrom(0x44, 0x06, true);  //将输据读出到缓存 地址 6个字节 结束后Stop;temp[0] = Wire.read();            // 接收并读取从机发来的一个字节的数据temp[1] = Wire.read();            // 接收并读取从机发来的一个字节的数据temp[2] = Wire.read();            // 接收并读取从机发来的一个字节的数据temp[3] = Wire.read();            // 接收并读取从机发来的一个字节的数据temp[4] = Wire.read();            // 接收并读取从机发来的一个字节的数据temp[5] = Wire.read();            // 接收并读取从机发来的一个字节的数据//Wire.endTransmission();         //发完后自动会发Stop,不需要这句话wendu = temp[0]<<8 | temp[1];     //高位左移8位 并上低位shidu = temp[3]<<8 | temp[4];     //高位左移8位 并上低位float wendufloat = (float)wendu / 65535 * 175 - 45;   //公式就是这样float shidufloat = ((float)shidu / 65535) * 100 ;     //公式就是这样Serial.printf("wendu = %02X %02X  ; shidu = %02X %02X ;\r\n",temp[0],temp[1],temp[3],temp[4]);Serial.printf("wendu = %04X ; shidu = %04X;\r\n",wendu, shidu);Serial.printf("wendu = %f ; shidu = %f;\r\n",wendufloat, shidufloat);//  Serial.println("The iic device list!");  //用于检测在线的IIC设备地址// for(int i=0x01;i<127;i++)// {//   Wire.beginTransmission(i);//   if(Wire.endTransmission()==0)//   {//     Serial.print("0x");//     Serial.println(i,HEX);//   }// }delay(1000);}

波形如下:

中间等待9.2ms


写命令2C 06 再读温湿度数据 等待9.2ms

读到6字节数据。

ESP32用Arduino硬件IIC读取SHT30温湿度计的数据相关推荐

  1. 模拟IIC读取SHT30温湿度传感器数据

    文章目录 1 i2c.c 2 i2c.h 3 crc.c 4 crc.h 1 i2c.c /*** @brief SHT30温湿度传感器相关,使用模拟IIC进行数据的读取*/#include < ...

  2. STM32F103使用硬件IIC驱动SHT30温湿度传感器

    文章目录 前言 一.SHT30温湿度传感器原理图 二.代码部分 1.SHT30.c文件 2.SHT30.h文件 总结 前言 SHT30是一种常见的温湿度传感器,该传感器广泛应用于各种场景,小米的温湿度 ...

  3. STM32单片机硬件I2C读取AHT10温湿度传感器数据

    STM32使用硬件IIC读取AHT10温湿度传感器的数据并显示在0.96寸OLED屏上. 我用的单片机是STM32F103C8T6,程序用的是ST标准库写的. STM32使用硬件I2C读取SHTC3温 ...

  4. nRF52笔记(8) IIC读取sht30温湿度传感器

    1.平台的条件 1.1 软件平台:sdk14.2 1.2 硬件平台: nrf52832 2 说明: 只是介绍代码怎么使用,直接点 QQ: 1297311998 ,如果有什么问题,请高手不吝赐教 2.n ...

  5. 用arduino uno的IIC读取JY901角度传感器的数据

    1 介绍 大家从标题中来看呢,大家可能会有些困惑,MPU9250只输出加速度.陀螺仪.没有角度.这个也是我今天想和大家说的.最近我做了一个倾角项目.老板基于成本考虑希望我能用MPU9250去算出来角度 ...

  6. stm32读取目标芯片_STM32通过IIC读取MPU6050陀螺仪芯片数据核心程序

    1  简 介 最近,想学角度融合算法在网上买一个JY61的模块.他们家的模块用起来还不错.模块分为串口通讯和IIC通讯的.串口读取数据他们家有例程,我就不说了.想分享给大家这个模块的IIC是怎么去读取 ...

  7. 【STM32】HAL库 STM32CubeMX教程十二---IIC(读取AT24C02 )

    前言: 本系列教程将HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 在之前的标准库中,STM32的硬件IIC非常复杂,更重要的是它并不稳定,所以都不推荐使用. 但是 ...

  8. GD32F303调试小记(三)之IIC(硬件IIC+PCF8563实时时钟)

    前言 前面的文章介绍了在单片机中常用的两种通信协议(USART和SPI),并给出了GD32F303对应的配置流程.这次介绍第三种常见的通信协议IIC.这此使用GD32的硬件IIC通信PCF8563实时 ...

  9. 使用STM32+硬件IIC+DMA驱动GT系列触摸屏(GT911)

    使用STM32+硬件IIC+DMA驱动GT系列触摸屏(GT911) 初始化代码 /** @brief GT911 初始化程序* @param None* @retval None*/ void GT9 ...

最新文章

  1. Linux基本C编程fork、signal、time以及用printf在终端打印一个GUI窗口 - 使用cygwin
  2. 在执行Dockerfile时出现Get https://registry-1.docker.io/v2/错误的解决方案
  3. 《黑客大曝光:移动应用安全揭秘及防护措施》一2.2 攻击与对策
  4. 高级数据结构---优先队列
  5. 桶排序/Bucket Sort
  6. 火星浏览器_Facebook Libra 测试网区块浏览器上线,测试网已被重置2次
  7. 【实例解析】某集团BI决策系统建设方案分享
  8. [转]WINDOW进程通信的几种方式
  9. 仅需5道题轻松掌握Python命令行相关标准库 | Python技能树征题
  10. vscode插件之常用插件
  11. 文献解读:结构方程模型SEM基础,小白看这个就基本够了
  12. ISO14000标准与ISO9000标准异同(转载)
  13. Word vba之遍历段落、识别固定段头、设置样式
  14. BarTender对单个二维码/文本添加多个域(数据库字段)/嵌入的数据,并对数据添加后缀等处理;扩展更多域
  15. win32实现两个透明窗口联动
  16. 免苹果开发者账号申请iOS上架及证书打包ipa测试(2022最新详解)
  17. 面试分享:专科半年经验面试阿里前端P6+总结
  18. 高德地图使用自定义地图无效问题
  19. Intellij IDEA使用技巧
  20. [CF1129E]Legendary Tree

热门文章

  1. JDK下载安装及环境配置
  2. 依靠砸钱占领市场份额,一旦资金链断裂就是满盘皆输
  3. Pytorch线性回归
  4. JAVA将数值转化为以亿为单位_java将数字格式化为万或者以亿为单位
  5. 《Linux内核驱动模块编程指南》
  6. 如何进行Java重载?
  7. Java中方法的重载详解
  8. web无序列表去掉点_html无序列表怎么写?无序列表怎么去掉点?
  9. 空中网发布全新战舰手游 持续布局军武游戏市场
  10. 做好这四件小事,让移动支付安全无忧!