Appearance
实验的概述
- 通过IIC总线从Si7006温湿度传感器元件中读取温度和湿度
- 传感器文档:Si7006官方文档
电路图分析

- 通过FSMP1A扩展板和转接板的原理图(FSMP1A文档):
- SI7006 的接到 GPIO 的接口
I2C1_SDA数据线对应PF15I2C1_SCL数据线对应`PF14
- Stm32mp157aaa 对 IIC协议 的实现是通过 GPIO 高低电平的输出进行模拟的
功能框图分析

传感器芯片内部框图

传感器芯片命令码

- 根据芯片的手册,指令码其实就是协议中寄存器的地址
- 可以从该地址读取到对应的数据
- 温度,保持主机模式是
0xE3或者0xE0(从已经读取的湿度中读取) - 湿度,保持主机模式是
0xE5 - 写用户寄存器是
0xE6 - 读用户寄存器是
0xE7 - 这两个寄存器可以配置传感器的一些设置
保持主机模式的通信协议

- Measure Cmd 是上表的代码
- 从机 ACK 后需要一点时钟的转换事件
- 接收的数据,需要高8位+低8位保存(先忽略校验)
- 接收的数据不是直接的温度和湿度,需要公式转换
转换公式
- RH_CODD 是 relative humidity 即湿度传感器中获取的代码:

- 通过上述公式,转换到了实际值

- 同理,上面是温度转换公式
初始化值

- 通过用户寄存器,可以设置几个初始化的值
- 第 7 位设置传感器获取的精度
- 第 6 位设置电源状态
- 5 ~ 3,1 位被保留
- 第 2 位设置加热片使能