系列一:I2C协议详解——从时序到读写过程 第一篇协议原理偏理论帮助读者理解 I2C 本质。目录1. 引言2. 基本概念3. 时序介绍4. 器件地址5. 存储器地址6. 写时序7. 读时序8. 总结1. 引言I2C 是嵌入式系统中最常见的通信协议之一广泛应用于传感器、存储器、显示屏等设备。它硬件简单只需两根线却能支持多主多从设备通信。2. 基本概念两根线SCL时钟、SDA数据。支持多主机、多从机。设备地址唯一用于区分不同器件。速率模式100kbit/s标准、400kbit/s快速、3.4Mbit/s高速。应答机制接收方返回 ACK 确认数据正确接收CAN协议也是一样谁接收了给个ACK形成闭环。3. 时序介绍空闲状态SDA、SCL 高电平。备注波形是用DSview工具查看起始位SCL 高电平时 SDA 下降沿。停止位SCL 高电平时 SDA 上升沿。数据传输高电平采样低电平改变数据。当SCL 处于低电平时发送方可以改变 SDA 上的数据。当SCL 处于高电平时数据必须保持稳定接收方在此时采样 SDA 的电平得到有效的数据 位。 这样可以保证数据在时钟的高电平期间被可靠采样避免抖动或错误。应答位 (ACK/NACK) 每传输完一个字节8 位数据接收方需要在第 9 个时钟周期给出应答位。ACK接收方在SCL 高电平期间将 SDA 拉低表示数据接收成功。NACK接收方在SCL 高电平期间保持 SDA 高电平表示数据接收失败或不再需要数据。 主机在这个时钟周期采样 SDA 的状态从而判断是否继续传输。4. 器件地址固定地址出厂设定。可配置地址通过 A0/A1/A2 等引脚决定。通信过程主机发送地址匹配的从机返回 ACK。控制字节最低位为读写位0写1读。5. 存储器地址器件内部寄存器或存储单元需要通过存储器地址访问。地址长度可能是 1 字节或 2 字节这个一定要对! 。6. 写时序单字节写起始 → 器件地址写 → ACK →存储器地址→ ACK → 数据 → ACK → 停止。页写连续写多个字节部分器件支持。7. 读时序单字节读起始 → 器件地址写 → ACK → 存储器地址 → ACK → 再次起始 → 器件地址读 → ACK → 数据 → NACK → 停止。页读连续读取多个字节。8. 总结I2C 协议结构简单、应用广泛是嵌入式开发的必备基础。掌握协议原理和时序是后续驱动开发的前提。