[附源码]支持30种烟雾检测,最强ADPD188BI烟雾检测器(I2C接口)
一、IIC篇
先记录I2C的基础知识和注意事项等。
1.I2C是一个半双工的串行通信协议,通讯依靠时钟线来同步数据的发送和接收,在SDA传输数据的过程中,都要有一个时钟信号配合,所以时序就非常重要。
时序包含起止信号跳变,数据有效性
以及在没发送一个字节数据后的应答信号有效性判断
一条完整的数据帧格式如下
I2C特点:
- 标准模式(Standard Mode):100 Kbps
- 快速模式(Fast Mode):400 Kbps
- 高速模式(High speed mode):3.4 Mbps
- 超快速模式(Ultra fast mode):5 Mbps
- 最大主设备数:无限制;
- 最大从机数:理论上,1008个从节点,寻址模式的最大节点数为2的7次方或2的10次方,但有16个地址保留用于特殊用途
- 一个 SCL 时钟脉冲传输一个数据位,传输一个字节带有一个应答位
- 从机设备具有唯一的寻址地址
- 总线进入空闲状态, SCL 和 SDA 都为高电平
- I2C通讯支持:7 位寻址和10 位寻址两种模式
- 如果总线上从机接收数据,在第 9 个时钟周期不响应主机,从机必须发送 NACK。如果总线上主机接收数据,第 9 个周期发送 NACK,从机接收到 NACK,从机停止发送数据
- 发送停止条件释放总线 ;
- 发送重新开始条件开始一个新的通信
12.每传输一个字节,后面跟随一个应答位。通过将 SDA 线拉低,来允许接收端回应发送端。ACK 为 一个低电平信号,当时钟信号为高时, SDA 保持低电平则表明接收端已成功接收到发送端的数据。当主机作为发送器件时,如果从机上产生无响应信号(NACK) ,主机可以产生停止信号来退出数据传输,或者产生重复起始信号开始新一轮的数据传输。当主机作为接收器件时,发生无响应信号(NACK) ,从机释放 SDA 线,使主机产生停止信号或重复起始信号
13、总线仲裁
硬件I2C和软件I2C的区别:
I2C软件示例:
1.基于裸机版的I2C
/*******************************