10.IIC和BH1750
目录
IIC
常见的通信接口
IIC(I2C)的初识
IIC 通信的结构图
IIC 的时序基本单元
开始信号
结束信号
发送一个字节 -- 主机-->从机
接收一个字节 -- 从机-->主机
发送应答 -- 收到数据,可以发送下个数据了
接收应答 -- 主机检测从机是否发送应答,用来判断从机是否收到数据
注意的细节
IIC 的写完整时序 STM32-->从设备
发送 1 个字节
发送 2 个字节
IIC 的读完整时序 -- 先写在读
IIC 器件地址如何确定
STM32 上如何实现 IIC 时序
光照传感器的讲解
常见的 IIC 接口的设备
IIC 和光照传感器的关系
光照传感器
光照传感器和开发板的连接
光照传感器
光照测量步骤
指令集合
器件地址确定
数据的处理
STM32 中硬件 IIC 的讲解
硬件 IIC
STM32F103ZET6 的硬件 IIC 资源
STM32 的 IIC 特点
STM32 的框图
STM32 的硬件 IIC 的 IO 口配置
主发送器传送序列图
主接收器传送序列图
IIC
常见的通信接口
常见的数字通信接口:UART SPI 单总线 IIC CAN 485
常见的模拟通信接口:电压型 电流型 – 通过 ADC 采集
IIC(I2C)的初识
IIC 历史
I2C(Inter IC Bus)是由 Philips 公司开发的一种通用数据总线
IIC 的通信线
SCL -- 时钟引脚 -- 时钟引脚一般由主机控制
SDA-- 数据引脚 -- 数据引脚可由主机或从机控制
IIC 的通信特点
单端同步串行半双工通信 主从通信
IIC 的速率
IIC 总线的传输速率可以分为三种模式:
标准模式(S 模式):最大传输速率为 100Kbps,即12.5KByte/s。
快速模式(F 模式):最大传输速率为400Kbps,即50KByte/s。
高速模式(HS 模式):最大传输速率为3.4Mbps,即435KByte/s。
IIC 通信的结构图
所有 I2C 设备的 SCL 连在一起,SDA 连在一起
设备的 SCL 和 SDA 均要配置成开漏输出模式
开漏输出:只能输出低电平,不能输出高电平,结合上拉电阻使用
推挽模式也可以,但是需要输入输出模式切换,比较麻烦
SCL 和 SDA 各添加一个上拉电阻,阻值一般为 4.7KΩ/10KΩ 左右具有”线与”特性,当没有设备拉低这跟线的时候,这根线就是高电平,所以 SCL 和 SDA 空闲是高电平。
IIC 的时序基本单元
开始信号
SCL 高电平期间,SDA 从高电平切换到低电平
开始信号谁发起:主机发起
结束信号
SCL 高电平期间,SDA 从低电平切换到高电平
结束信号谁发起:主机发起
发送一个字节 -- 主机-->从机
SCL 低电平期间,主机将数据位依次放到 SDA 线上(高位先行),然后主机释放 SCL,从机将在 SCL 高电平期间读取数据位,所以 SCL 高电平期间 SDA 不允许有数据变化,依次循环上述过程 8 次,即可发送一个字节
接收一个字节 -- 从机-->主机
接收一个字节:SCL 低电平期间,从机将数据位依次放到 SDA 线上(高位先行),然后主机释放 SCL,主机将在 SCL 高电平期间读取数据位,所以 SCL 高电平期间 SDA 不允许有数据变化,依次循环上述过程 8次,即可接收一个字节(主机在接收之前,需要释放 SDA)
发送应答 -- 收到数据,可以发送下个数据了
发送应答:主机在接收完一个字节之后,在下一个时钟发送一位数据,数据 0 表示应答,数据 1 表示非应答
主机接收到 1 个字节之后,还需要接收后续的内容,主机发送应答(SDA 低电平)
主机接收到 1 个字节之后,不需要接收后续的内容,主机发送非应答(SDA 高电平)
SCL 高电平的时候,SDA 的电平决定是应答还是非应答,高电平非应答,低电平应答
接收应答 -- 主机检测从机是否发送应答,用来判断从机是否收到数据
接收应答:主机在发送完一个字节之后,在下一个时钟接收一位数据,判断从机是否应答,数据 0 表示应答,数据 1 表示非应答(主机在接收之前,需要释放 SDA)
从机接收到 1 个字节之后,从机会发送应答,表示接收成功。
注意:为什么以低电平作为应答?
注意的细节
IIC 的写完整时序 STM32-->从设备
读写位:写 0 读 1
发送 1 个字节
发送 2 个字节
IIC 的读完整时序 -- 先写在读
注意:读时序,一般先写再读,因为要通过写的过程告诉从机,主机想要什么数据或者干什么。
IIC 器件地址如何确定
器件地址要从从设备手册确定,一般为 7 位的地址,也有 10 位的。
STM32 上如何实现 IIC 时序
模拟(软件)IIC
封装出来,起始信号,结束信号,发送 1 个字节,接收 1 个字节,发送应答,接收应答。然后再按照协议,拼积木拼起来只需要接在普通的 GPIO 口上就可以。
硬件 IIC
需要确定单片机的 IIC 资源,必须接在有 IIC 功能的引脚上。
光照传感器的讲解
常见的 IIC 接口的设备
IIC 是一种通信接口,下面列的是常见 IIC 接口器件
EEPROM(AT24C02) OLED MPU6050 光照传感器
IIC 和光照传感器的关系
IIC 是一种重要的通信接口,可以和 IIC 接口的设备进行通信.
光照传感器(BH1750)它的接口就是 IIC,所以选择 IIC 和它通信.
光照传感器
光照传感器和开发板的连接
GND: 接 GND
ADDR 或者 ADO: 内部直接接 GND,不需要接:器件地址 0100011
SDA: 单片机 PB7
SCL: 单片机 PB6
VCC: 接 3.3V
注意:ADO/ADDR 可以用来改变器件地址。
光照传感器相对于光敏电阻可以反应真实的光照强度
光照传感器
光照测量步骤
指令集合
器件地址确定
根据 ADO/ADDR 引脚的电平,决定器件地址
数据的处理
STM32 中硬件 IIC 的讲解
硬件 IIC
串口 SPI 单总线 IIC PWM 都可以通过 IO 口模拟实现,模拟实现的称为软件
STM32 自带的有硬件串口、PWM、IIC、SPI
STM32F103ZET6 的硬件 IIC 资源
两个 IIC 接口
如果使用硬件 IIC,IIC 接口的设备,必须接在有 IIC 功能的引脚上。
如果使用模拟 IIC,任意两个 GPIO 口就可以。
STM32 的 IIC 特点
I2C 主设备功能
支持不同的通讯速度
STM32 的框图
STM32 的硬件 IIC 的 IO 口配置
主发送器传送序列图
主接收器传送序列图