SHT30是盛世瑞出品的低端低价温湿度传感器,利用I2C进行数据传输,具有两个可选地址,宽电源电压从2.4V到5.5V。

SHT30芯片有八个引脚:

Pin

Name

Comments

1

SDA

数据引脚,输入/输出

2

ADDR

地址引脚,输入

3

ALENT

报警引脚,输出;不使用时悬空

4

SCL

时钟引脚,输入/输出

5

VDD

电源引脚,输入

6

nRESET

复位引脚,低电平有效,输入

7

R

无用引脚,接地

8

VSS

接地引脚

重复性影响SHT30的测量时间,因此就是影响传感器的能量消耗。

通过改变选择ADDR引脚的电压,实现传感器的地址改变。默认地址是ADDR连接VSS时( 0X44),可以修改成0X45。(关于引脚,详情请看数据手册)。

SHT30有两中工作模式

1.单次数据采集模式

通过不同命令,在重复性(高,中,低)和时钟延伸(禁止,使能)方面不同,每个数据包含一个16位温度和一个16位湿度值(按此顺序)组成。

传输如下所示(具体传输过程以数据手册为准):

(1)STM32发出START,并发出I2C的地址(7位)+读(1)/写(0)标志位,然后等待SHT30的ACK

(2)发出命令高8位数据,等待SHT30的ACK

(3)发出命令低8位数据,等待SHT30的ACK

(4)STM32发送STOP停止通信。

(5)STM32发出START,并发出I2C的地址(7位)+读(1)/写(0)标志位,然后等待SHT30的ACK

(6)传感器将接收读头的接收,并发送两个字节的数据(温度),接着是一个字节的CRC校验另外

(7)传感器发送两个字节的数据(相对湿度),然后是一个字节的CRC校验和。

每发送8位必须接受到STM32回应的ACK条件传感器才会继续发送数据。如果传感器在任何字节的数据之后没有接收到ACK,它就不会继续发送数据。I2C主机可以中止读取传输任何数据字节后,发送NACK状态,如果不能在随后的数据感兴趣,例如CRC字节或第二测量结果,可以了节省时间。

有时钟延伸:

如果没有数据发送,传感器会发出一个ACK,并随后拉下SCL线。SCL线被拖到测量完成为止。一旦测量完成,传感器释放SCL线并发送测量结果。

无时钟延伸:

没有数据存在,传感器响发出一个NACK。

2.周期性数据采集模式

通过不同命令,在重复性(高,中,低)和数据采集频率((0.5, 1, 2, 4 & 10 mps )方面不同,每个数据包含一个16位温度和一个16位湿度值(按此顺序)组成。

测量数据的传输可以通过获取数据命令来启动。如果没有测量数据是I2C读取头报以一个NACK。在读出命令获取数据之后,数据存储器被清除,即没有测量数据存在。

代码如下(是我根据SHT30提供的代码修改):

//功能:开始I2C通信,并发送I2C地址和写标志

static etError SHT3X_StartWriteAccess(void)

{

etError error;//error code//write a start condition//I2c_StartCondition();

IIC_Start();//I2C开始通信需要的条件//write the sensor I2C address with the write flag

IIC_Send_Byte(_i2cAddress << 1);

error=(etError)IIC_Wait_Ack();returnerror;

}//-----------------------------------------------------------------------------

static etError SHT3X_StartReadAccess(void)

{

etError error;//error code//write a start condition//I2c_StartCondition();

IIC_Start();//write the sensor I2C address with the read flag

IIC_Send_Byte(_i2cAddress << 1 | 0x01);

error=(etError) IIC_Wait_Ack();//error = I2c_WriteByte(_i2cAddress << 1 | 0x01);

returnerror;

}//-----------------------------------------------------------------------------

static void SHT3X_StopAccess(void)

{//write a stop condition//I2c_StopCondition();

IIC_Stop();

}//-----------------------------------------------------------------------------

staticetError SHT3X_WriteCommand(etCommands command)

{

etError error;//error code//write the upper 8 bits of the command to the sensor

IIC_Send_Byte(command >> 8);

error=(etError) IIC_Wait_Ack();//write the lower 8 bits of the command to the sensor

IIC_Send_Byte(command & 0xFF);

error|=IIC_Wait_Ack();//error |= IIC_Send_Byte(command & 0xFF);

returnerror;

}//-----------------------------------------------------------------------------

static etError SHT3X_Read2BytesAndCrc(u16t*data, etI2cAck finaleAckNack,u8t timeout)

{

etError error;//error code

u8t bytes[2]; //read data array

u8t checksum; //checksum byte//read two data bytes and one checksum byte

bytes[0] =IIC_Read_Byte(ACK);

bytes[1] =IIC_Read_Byte(ACK);

checksum=IIC_Read_Byte(finaleAckNack);//verify checksum

error = SHT3X_CheckCrc(bytes, 2, checksum);//combine the two bytes to a 16-bit value

*data = (bytes[0] << 8) | bytes[1];returnerror;

}//-----------------------------------------------------------------------------

staticetError SHT3X_Write2BytesAndCrc(u16t data)

{

etError error;//error code

u8t bytes[2]; //read data array

u8t checksum; //checksum byte

bytes[0] = data >> 8;

bytes[1] = data & 0xFF;

checksum= SHT3X_CalcCrc(bytes, 2); //write two data bytes and one checksum byte

IIC_Send_Byte(bytes[0]);

error= (etError)IIC_Wait_Ack();//write data MSB

if(error ==NO_ERROR)

{

IIC_Send_Byte(bytes[1]); //write data LSB

error =(etError)IIC_Wait_Ack();

}if(error ==NO_ERROR)

{

IIC_Send_Byte(checksum);//write data LSB

error =(etError) IIC_Wait_Ack(); //write checksum

}returnerror;

}

sht30 linux示例代码,STM32------SHT30温湿传感器(示例代码)相关推荐

  1. MODBUS-RTU协议主机和从机代码STM32 包含2个程序代码,主机和从机

    MODBUS-RTU协议主机和从机代码STM32 包含2个程序代码,主机和从机(代码易懂) 基于温度传感器DS18B20的MODBUS-RTU从机 主机发送指令:01 03 20 00 00 01 8 ...

  2. 【STM32】光敏传感器示例

    00. 目录 文章目录 00. 目录 01. 光敏传感器简介 02. 硬件模块 03. 程序设计 04. 结果验证 05. 预留 06. 附录 07. 声明 01. 光敏传感器简介 光敏传感器是最常见 ...

  3. c# iot .net6 树莓派 i2c通讯 读取温湿传感器 芯片sht30代码实例

    这里用c# .net 6 树莓派 i2c通讯 读取温湿传感器 芯片sht30 实例 设备: 1.温湿度传感器sht30 2.树莓派 设备在某宝上可以选购得到 nuget下载引用: Iot.Device ...

  4. 香橙派orange pi c# iot .net 读取温湿传感器 芯片sht30 I2C 代码实例

    这里用c# .net 6 香橙派orange pi读取温湿传感器 芯片sht30 I2C 代码实例 设备: 1.温湿度传感器sht30 2.香橙派(记得开启 i2c,开启方法 见香橙派说明书) 设备在 ...

  5. GXHT30温湿度传感器——与SHT30 pin to pin 兼容的温湿度传感器

    GXHT30温湿度传感器--与SHT30 pin to pin 兼容的温湿度传感器 文章目录 目录 GXHT30温湿度传感器--与SHT30 pin to pin 兼容的温湿度传感器 文章目录 前言 ...

  6. linux一号进程和二号进程,Linux系统管理10——进程和计划任务管理(示例代码)

    Linux系统管理10--进程和计划任务管理 一.程序和进程的关系 1.程序 ·保存在硬盘.光盘等介质中的可执行代码和数据 ·静态保存的代码 2.进程 ·在CPU及内存中运行的程序代码 ·动态执行的代 ...

  7. 基于STM32的光敏传感器数据采集系统-嵌入式系统与设计课程设计

    目录 1 项目概述 1.1 项目介绍 1.2 项目开发环境 1.3 小组人员及分工 2 需求分析 2.1 系统需求分析 2.2 可行性分析 2.3 项目实施安排 3 系统硬件设计 3.1 系统整体硬件 ...

  8. linux下C++动态链接C++库示例详解

    注意其中使用函数返回基类指针的用法,因为Linux的动态链接库不能像MFC中那样直接导出类 一.介绍 如何使用dlopen API动态地加载C++函数和类,是Unix C++程序员经常碰到的问题. 事 ...

  9. (转)Thrift在Windows及Linux平台下的安装和使用示例

    转载自Thrift在Windows及Linux平台下的安装和使用示例 thrift介绍 Apache Thrift 是 Facebook 实现的一种高效的.支持多种编程语言的RPC(远程服务调用)框架 ...

最新文章

  1. relay.build调用关系
  2. 再放QQ微博邀请码(2)
  3. LaTeX入门第二集!LaTeX的几个示例!
  4. react表格无缝滚动_js实现表格无缝滚动效果
  5. Matlab中的算术运算和数学函数
  6. Python Django session存取值代码演示及jsonpickle序列化
  7. 面试准备——Struts2相关问题
  8. 深度学习(二十)——Ultra Deep Network, 图像超分辨率算法
  9. 教你十分钟快速搭建springBoot项目实战
  10. php扑克牌排序,PHP实现判断扑克牌5张连续
  11. Android开发中关于Fragments的内涵
  12. 哪种编程语言好?大神为你分析 Go、Java、C、C++ 等主流编程语言
  13. 大数据平台分布式搭建-Hadoop集群配置
  14. docker run --privileged参数(容器权限全开,不利于宿主机安全,宿主机容易重启)(与/usr/sbin/init共用)
  15. JdbcTempalte添加修改删除查询批量操作
  16. 论做空工具体验对比,股票下跌可选择 期权?涡轮?CFD差价合约?牛熊交易获利
  17. 【Unity3D】Unity 游戏画面帧更新 ( 游戏物体 GameObject 移动 | 借助 Time.deltaTime 进行匀速运动 )
  18. Python轻松抓取微信公众号文章
  19. bim 水利枢纽 运维_BIM水坝工程技术案例:那棱格勒河水利枢纽工程BIM应用汇报...
  20. 70-540 TS: Microsoft Windows Mobile 5.0 - Application Development 考试感言

热门文章

  1. SAP UI5 应用开发教程之四十九 - 如何在桌面电脑端调试运行在手机上的 SAP UI5 应用试读版
  2. 世界顶级音效公司_世界顶级游戏开发公司
  3. iis ftp服务器修改端口号,iis ftp服务器指定端口
  4. ant-bable实现表格输入数据
  5. void test();
  6. Vue后台--Ele组件表格根据数字展示数值
  7. 还不懂PID控制?精华都在这了!
  8. PHP云盘网盘系统源码+快速对接多家云存储+VIP付费下载功能
  9. 交换机-自动协商机制-auto-negotiation
  10. 2018/12/22