I2C 中的 ACK 与 NACK
一句话解释
ACK = Acknowledge(应答),接收方拉低 SDA 表示"收到了"。
NACK = Not Acknowledge(非应答),接收方释放 SDA(保持高电平)表示"没收到"或"不要再发了"。
物理层表现
I2C 每传输8 bit 数据后,第 9 个时钟周期由接收方控制 SDA:
数据传输: 8 个时钟 = 1 字节 ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐ SCL ─────┘ └──┘ └──┘ └──┘ └──┘ └──┘ └──┘ └──┘ └── ... D7 D6 D5 D4 D3 D2 D1 D0 应答位: 第 9 个时钟 ┌──┐ SCL ────────────┘ └─── ... ACK: ┌───────── 接收方拉低 SDA = "收到了" SDA ────────┘ NACK: 接收方保持高电平 = "没收到 / 不要了" SDA ──────────────────────