GD32_IIC协议解读

📅 2026/8/4 2:14:31
GD32_IIC协议解读
IIC总线协议IIC 用两根线SCL、SDA挂多个设备主机发起通信用“地址”选中某一个从机再按字节读写数据。SCL为时钟线SDA为数据线一般是 开漏 上拉电阻所以课件强调开漏空闲时 SCL、SDA 都被上拉拉成高电平二、一次通信长什么样最重要① 起始 START ② 发送「从机地址 读/写位」 ③ 从机 ACK应答 ④ 发送/接收数据字节每字节后都有 ACK/NACK ⑤ 停止 STOP 简化版1. 起始 / 停止靠 SDA 在 SCL 高电平时的变化STARTSCL 为高时SDA 高→低 STOP SCL 为高时SDA 低→高普通传数据时SCL 低电平时才允许改 SDA避免被误判成 START/STOP。2. 地址字节选中谁、读还是写常见 7 位地址[ 7位从机地址 ][ R/W ] R/W 0 写主机→从机 R/W 1 读从机→主机例EEPROM 地址0x50写发出(0x501) | 0读发出 (0x501) | 13. ACK / NACK每传完 8 位第 9 个时钟是应答接收方把 SDA 拉低 ACK我收到了拉高 NACK没收到 / 主机读完了要结束三、两种最常见操作写主机写数据到从机如写 EEPROMSTART → 地址写 → ACK → 寄存器地址/内存地址 → ACK → 数据字节 → ACK → STOP读主机读从机如读传感器、读 EEPROM常见要 先写地址再重复起始去读START → 地址写 → ACK → 要读的寄存器地址 → ACK → 重复 START → 地址读 → ACK → 读出数据 → NACK最后一个字节 → STOP很多芯片不是“连上就能读数据”而是 先告诉它读哪个寄存器再读数据。四、重点1.两根线SCL 时钟SDA 数据开漏上拉 2.一主多从靠地址区分 3.主机发起START → 通信 → STOP 4.地址字节里带 R/W 5.每字节后有 ACK 6.读传感器/EEPROM 常常是先写寄存器地址再读数据五、总结IIC 是带时钟的双线总线主机发起始和地址选中从机按字节写或读每字节对方 ACK最后发停止多设备靠地址区分读内部寄存器通常要先写地址再读。