STM32 使用HTU21D温湿度传感器(结合逻辑分析仪深入分析IIC总线)

目录

1、介绍:

2、信号:

3、使用的平台:

4、实物接线

5、实验

5.1、读写地址

5.2、软件复位

6、主程序读取温湿度


1、介绍:

1、IIC总线为半双工通讯,有两条线,时钟信号线SCL和数据线SDA,主从模式,每个从设备可以通过,从机地址进行区分。

2、其数据传输速率位于串口和SPI之间。

3、上拉电阻一般在4.7k~10k之间,通过上拉电阻接正电源。当总线空闲的时候,两根线均为高电平。

4、一般用于同一板卡上芯片之间的通信

5、允许有多个master多个slave,并且每个master都可以与所有的slaves通信(master之间不可通过I2C通信,并且每个master只能轮流使用I2C总线),多主机会产生总线裁决问题。

6、IIC设备(绝大多数)里有个固化的地址,只有在两条线上传输的值等于IIC设备的固化地址时,其才会作出响应。基本上谁控制时钟线(即控制SCL的电平高低变换)谁就是主设备。(之前面试前有准备或几个常见总线的异同,贴一下给大家参考一下,见下图:)

STM32 使用HTU21D温湿度传感器(结合逻辑分析仪深入分析IIC总线)_第1张图片

2、信号:

开始信号:SCL 为高电平时,SDA 由高电平向低电平跳变,开始传送数据。

结束信号:SCL 为高电平时,SDA 由低电平向高电平跳变,结束传送数据。

应答信号:接收数据的 IC 在接收到 8bit 数据后,向发送数据的 IC 发出特定的低电平脉冲(把SDA拉低),表示已收到数据。

数据位的有效性规定:SCL为高电平期间,SDA上的数据必须保持稳定

                                   只有在SCL线上的信号为低电平的期间,SDA线上的电平才允许变化

                                   数据传送的时候,先传传送的高位 , 每个字节传送均是高位在前面MSB

3、使用的平台:

使用的平台/硬件:正点原子的STM32F767的开发板(大同小异),温湿度传感器SHT201D(购买自某宝)

接线:温湿度传感器SHT201D 的四根线 电源3.3V的正负两根 ,另外两根就是IIC的SCL和SDA。接到了开发板的PH4/PH5(和板载的24C02共用一路IIC)

逻辑分析仪购买自某宝

STM32 使用HTU21D温湿度传感器(结合逻辑分析仪深入分析IIC总线)_第2张图片

STM32 使用HTU21D温湿度传感器(结合逻辑分析仪深入分析IIC总线)_第3张图片

4、实物接线

STM32 使用HTU21D温湿度传感器(结合逻辑分析仪深入分析IIC总线)_第4张图片 STM32F767开发板

 

STM32 使用HTU21D温湿度传感器(结合逻辑分析仪深入分析IIC总线)_第5张图片

 某宝上买的温湿度模块

5、实验

接下来我们来看一下我自己写的一个代码:

此博客主要是为了分析IIC的波形,那我们就研究一下SHT201D模块的一个启动就可以了

通过查阅SHT201D 的手册,得知

5.1、读写地址

STM32 使用HTU21D温湿度传感器(结合逻辑分析仪深入分析IIC总线)_第6张图片

他的写地址是0x80,还有一些命令就不一一列写了

5.2、软件复位

STM32 使用HTU21D温湿度传感器(结合逻辑分析仪深入分析IIC总线)_第7张图片

首先我们先使用这款芯片的时候,需要对他进行一个初始化的软件复位,我们就用逻辑分析仪分析这段波形;下图捕捉的这段波形就是上图手册中的一个时序的表达。

STM32 使用HTU21D温湿度传感器(结合逻辑分析仪深入分析IIC总线)_第8张图片

STM32 使用HTU21D温湿度传感器(结合逻辑分析仪深入分析IIC总线)_第9张图片

 

STM32 使用HTU21D温湿度传感器(结合逻辑分析仪深入分析IIC总线)_第10张图片

上图中的波形对应的的代码是:

IIC_Start();

IIC_Send_Byte(I2C_ADR_W);

err = IIC_Wait_Ack();

STM32 使用HTU21D温湿度传感器(结合逻辑分析仪深入分析IIC总线)_第11张图片

STM32 使用HTU21D温湿度传感器(结合逻辑分析仪深入分析IIC总线)_第12张图片

STM32 使用HTU21D温湿度传感器(结合逻辑分析仪深入分析IIC总线)_第13张图片

接下来我们来细看一下逻辑分析仪的电平:

STM32 使用HTU21D温湿度传感器(结合逻辑分析仪深入分析IIC总线)_第14张图片

6、主程序读取温湿度

主函数中获取温度,其中那个公式是手册中给出的:

STM32 使用HTU21D温湿度传感器(结合逻辑分析仪深入分析IIC总线)_第15张图片

主函数中获取湿度:

STM32 使用HTU21D温湿度传感器(结合逻辑分析仪深入分析IIC总线)_第16张图片

通过串口输出的数据,也就打印了温湿度的一个数据,中间对着传感器哈了一次气,可以看到湿度的响应还是比较快和敏感的

STM32 使用HTU21D温湿度传感器(结合逻辑分析仪深入分析IIC总线)_第17张图片

 

你可能感兴趣的:(stm32,HTU21D,温湿度传感器,IIC总线)