基于IIC和SPI协议的温湿度采集
一、前言
结合上次实验,我们学习了定时器的相关操作,进行了定时器的通过定时器的方式实现时间的精准控制,定时完成了点灯和PWM脉冲调制,接下来我们将介绍深入的第一个实验就是使用外设(外部传感器)进行利用简单的温度传感器采集温度,以及利用LED显示屏进行显示。具体实现进行一下实验:
- 使用STM32F103完成基于I2C协议的AHT20温湿度传感器的数据采集,并将采集的温度-湿度值通过串口输出。
二、I2C总线通信协议
1、I2C介绍
IIC(Inter-Integrated Circuit)总线是一种由NXP(原PHILIPS)公司开发的两线式串行总线,用于连接微控制器及其外围设备。多用于主控制器和从器件间的主从通信,在小数据量场合使用,传输距离短,任意时刻只能有一个主机等特性。
在CPU与被控IC之间、IC与IC之间进行双向传送,高速IIC总线一般可达400kbps 以上。
注意IIC是为了与低速设备通信而发明的,所以IIC的传输速率比不上SPI
I²C最重要的功能包括:
- 只需要两条总线;
- 没有严格的波特率要求,例如使用RS232,主设备生成总线时钟;
- 所有组件之间都存在简单的主/从关系,连接到总线的每个设备均可通过唯一地址进行软件寻址;
- I²C是真正的多主设备总线,可提供仲裁和冲突检测;
- 传输速度;
(1)标准模式:Standard Mode = 100 Kbps
(2)快速模式:Fast Mode = 400 Kbps
(3)高速模式: High speed mode = 3.4 Mbps
(4)超快速模式: Ultra fast mode = 5 Mbps - 最大主设备数:无限制;
- 最大从机数:理论上是127。
2、I2C的物理层
I2C 总线在物理连接上非常简单,分别由SDA(串行数据线)和SCL(串行时钟线)及上拉电阻组成。通信原理是通过对SCL和SDA线高低电平时序的控制,来产生I2C总线协议所需要的信号进行数据的传递。在总线空闲状态时,SCL和SDA被上拉电