IIC及配置应用(SHT30读取温湿度)

1. IIC通信协议

1.1 IIC通信协议简介

1.1.1 什么是IIC?

串行通信协议的一种,属于串行通信协议中的半双工同步通信。

IIC是一种被定义好的标准,采用二线制,一条数据线,一条时钟线;

数据线传输数据,一位一位传输;时钟线控制传输速率。

1.1.2 有什么用?

IIC用于收发数据。

与串口比线用的更少,两条线可以控制N多设备(自动寻址方式);传输数据的正确率更高。缺点是传输距离近。

1.1.3 如何使用?

从时序图可以得到IIC由:起始信号—>八位数据(MSB:高位在前)—>应答信号(ACK)—>停止信号,组成。 

​​​​​​​1.2 IIC时序详解

SCL是时钟线,SDA是数据线。

在IIC规定了时钟线和数据线在空闲时一定是高电平。

​​​​​​​1.2.1 起始信号

在SCL高电平的时候,拉低SDA就是起始信号。

 

​​​​​​​1.2.2 停止信号

 

停止信号:SCL为高电平期间,SDA由低电平向高电平跳变。 

​​​​​​​1.2.3 应答信号

CPU(主机)给外设(从机)传输数据,CPU拉高SCL和SDA代表等待应答,外设会拉低SDA代表给出应答,如果没有拉低代表未应答。

 

CPU接收外设的数据:CPU拉低SCL然后拉低SDA,拉高SCL保持一段时间即可,这时候外设检测到这个低电平就代表得到了应答。 

什么时候应答??数据是8位的,第九位就是应答信号

​​​​​​​1.2.4 数据传输

在时钟线为高电平的时候不允许改变数据线,所以在发送数据的时候要拉低时钟线。

主机发从机收(out):所以对于IIC协议的设备来说(从机),它在检测到时钟线变低了就代表对面(主机)在放数据了,时钟线拉高了代表对面放完了,自己可以读取数据了。

 

从机发主机收:主机拉低时钟线代表可以放入数据了,主机拉高时钟线代表不允许再操作数据线了。所以主机拉低时钟线一段时间,再拉高时钟线就可以从数据线上读取到从机想传输给主机的数据了。

 

1.3SHT30读取温湿度

1.3.1SHT30怎么读取温湿度?

SHT30使用的是IIC通信协议传输数据,具体怎么读取的?

  

从图上可以知道,首先起始信号写指令(0x88),然后发送转换指令(0x2C06 高重复性测量),接着再来起始信号读指令(0x89),接下来就是十六位的温度+CRC读取,再然后就是十六位湿度+CRC读取。

​​​​​​​1.3.2 器件地址

 

上图可知器件地址有0x44和0x45,这个选择需要查看硬件连接方式,地址引脚ADDR接地使用的是0x44。

 

注意:地址应该是0x44才对,为什么使用的是0x88??因为在启动传输后,随后传输的 IIC 首字节包括 7 位的IIC 设备地址和一个 SDA方向位(读 R:‘1’,写 W:‘0’),所以地址需要向左移动一位为读/写位留出空间。​​​​​​​

1.3.3 温湿度转换

相对湿度转换

不论基于哪种分辨率,相对湿度 RH 都可以根据SDA 输出的相对湿度信号 SRH通过如下公式计算获得(结果以 %RH 表示)。

 

温度转换

不论基于哪种分辨率,温度 T 都可以通过将温度输出信号 ST代入到下面的公式计算得到(结果以温度°C 表示)。

 ​​​​​​​

​​​​​​​1.3.4 湿度转换应用

1)SHT30初始化

2)湿温度读取 

 

 

 

  • 4
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值