cortex-A7核IIC实验--STM32MP157AAA

实验目的:采集温湿度传感器值

一,IIC概念

1.同步串行半双工总线,主要用于链接整体电路,硬件结构简单,接口连接方便,成本较低

2.两线制,只有两根双向信号线,数据线SDA,时钟线SCL

3.IIC传输速率:1)低速:100k ,2)400k,全速:3.4M

4.总线外接两个上拉电阻:在总线处于空闲状态时,默认处于高电平状态

二,硬件连接

1.支持多主机多从机模式,但同一时刻,只能一个主机和一个从机通讯,大多数情况使用单主机多从机模式

2.每个挂接到 IIC总线上的从机设备,都有自己唯一的7位从机地址

3.发送数据----发送器,接收数据----接收器

 主动发起数据----主机,被动接收数据-----从机

4.时钟信号由主机产生,作用给从机完成数据收发同步

三,内部框图

 cortex-A7核IIC实验--STM32MP157AAA_第1张图片

四,时序

1.总线时序,时序的拼接才是协议

2.SCL高电平,可以发送起始信号和终止信号

SCL低电平,可以发送数据传输信号

3.发送完8位数据位后必须发一个应答位,只有应答后才能发送结束信号

4.从机地址必须写在起始信号后面,这样

1.起始信号

cortex-A7核IIC实验--STM32MP157AAA_第2张图片

1、起始信号和停止信号都由主机产生

2、起始信号产生之后,代表总线开始传输数据

3、起始信号:在SCL为高电平期间,数据线从高到低的变化(下降沿)

4、起始信号产生之后,总线处于占用状态

2.停止信号

1,停止信号产生之后,代表总线传输数据结束

2,停止信号:在SCL为高电平期间,数据线从低到高的变化(上升沿)

3,停止信号产生之后,总线处于空闲状态

3.数据传输信号

cortex-A7核IIC实验--STM32MP157AAA_第3张图片

在SCL为低电平期间,数据线上数据允许发生变化,发送器向数据线上写入数据

在SCL为高电平期间,要求数据线上数据保持稳定,不允许发生变化,接收器从数据线上读取数据

4.应答信号

cortex-A7核IIC实验--STM32MP157AAA_第4张图片

1、每一个被传输的数据,必须保证8位长度 ==> 先发送高位,在发送低位

2、每传送完8位数据位之后,必须跟随一个应答位, 一帧数据 = 8位数据位+1位应答位=9位

3、发送器向数据线写入8位数据,接收器在第9个时钟周期,向数据线写入应答信号/非应答信号

发送器在第9个时钟周期,从数据线上读取数据

        读0:接收器返回的是应答信号

        读1:接收器返回的是非应答信号

5.寻址信号

cortex-A7核IIC实验--STM32MP157AAA_第5张图片

1、IIC总线传输数据是广义,既可以传输8位数据,也可以传输7位从机地址+读/写位

2、写位用0表示,读位用1表示

3、从总线上读取数据:7位从机地址 + 读(1)

4、向总线上写入数据:7位从机地址 + 写(0)

5、从机地址必须写在起始信号后面,这样这8位才代表寻址过程

五,IIC协议

1.主机发送一个字节给从机

2.主机发送多个字节给从机

3.从机发送一个字节给主机

4.从机发送一个字节给主机

 六,分析si7006芯片

1、si7006从机地址 ===> 0x40

2、si7006内部框图

3、芯片如何进行初始化(地址/值) ===> 0xE6 0x3A

4、如何采集温度和湿度的地址

5、查找si7006芯片手册的采集协议

6、如何将数据量转换为模拟量 ===> 公式

1,内部框图

cortex-A7核IIC实验--STM32MP157AAA_第6张图片

 cortex-A7核IIC实验--STM32MP157AAA_第7张图片 

 2,从机地址

:0x40 

从机地址+读:0x40 << 1 | 1

从机地址+写:0x40 << 1 | 0

3,读取温湿度命令码

cortex-A7核IIC实验--STM32MP157AAA_第8张图片

 测量相关湿度,保持主机模式:0xE5

 测量相关湿度,不保持主机模式:0xF5

 测量相关温度,保持主机模式:0xE3

 测量相关温度,不保持主机模式:0xF3

从之前测量湿度中,读取温度的值:0xE0

写用户寄存器1 :0xE6

读用户寄存器1:0xE7

七,起始信号

cortex-A7核IIC实验--STM32MP157AAA_第9张图片

起始信号===从机地址+写===ACK===命令码===ACK===起始信号===从机地址+读===ACK===延时函数===========高八位===ACK===第八位NACK===停止信号

八,转换公式

因为测出来的时模拟量,需要使用ADC转为数字量

湿度转换公式 H = %RH - 125*RH_Code / 65536 -6

温度转换公式  T = 175.72*Temp_Code / 65536 - 46.85 

九,初始化值

cortex-A7核IIC实验--STM32MP157AAA_第10张图片

寄存器初始化值:0011 1010   ======  0x3A

 [7][0] == 00:测量精度

[6] == 0:电源状态 : 0 = 高电平 ,1 = 低电平

你可能感兴趣的:(ARM,单片机,嵌入式硬件,stm32,ARM,arm开发)