通信协议——IIC通信协议

一、IIC 协议简介

IIC 协议是属于同步串行半双工的有线通信协议,支持一主多从(就是一个主机接多个从机设备),IIC 一共两根线,一根 SCL 叫时钟线,就是只产生时钟信号的如上图 SCL,还有一根是 SDA 数据线,就是传输 IIC 数据的。

二、IIC 协议应用

IIC 总线由于结构简单、引脚占用少、支持多从设备,广泛应用于嵌入式系统中主控芯片与低速外设之间的通信。典型应用场景包括连接各类传感器(如温湿度、气压、加速度传感器)、非易失性存储器(如 EEPROM)、实时时钟(RTC)、IO 扩展器、OLED/LCD 显示屏、电源管理芯片(PMIC)、电池管理芯片、触摸屏控制器以及音频/视频控制设备等。在这些场合中,IIC 通常用于配置设备或周期性读取状态数据,尤其适用于短距离、低速、低功耗的板内通信,是资源受限系统中连接外设的理想选择。

三、IIC 协议特点

IIC 是一种常用的串行通信协议,具有结构简单、只需两根通信线(SCL 和 SDA)的显著特点。它采用主从式架构,支持多主多从设备,通过地址区分各个从设备,通信过程由主机控制。IIC 是同步、半双工的通信方式,使用开放漏极输出结构,需外接上拉电阻,便于多个设备挂载和总线仲裁。

IIC 的优点在于其节省引脚资源,硬件实现简单,能够轻松实现多个从设备的连接,具有一定程度的通信可靠性,并适用于功耗敏感的场景。标准应用中常见于 EEPROM、RTC、传感器等设备的连接,尤其适合短距离、低速率通信。

IIC 也存在一些缺点。由于协议中存在地址帧和应答机制,其传输效率低于 SPI,且最大通信速率相对较低(标准模式 100kbps,快速模式 400kbps)。此外,通信距离有限,通常不超过 1 米,多个设备连接时对总线容量要求较高。时序控制相对复杂,特别是在多主或热插拔的系统中更难调试。因此,IIC 更适用于板内低速外设通信,不适合高速或远距离的数据传输场合。

四、IIC 协议帧格式

(一) 起始信号(START)

SCL为高时,SDA从高到低的跳变产生开始信号

(二) 停止信号(STOP)

SCL为高时,SDA从低到高的跳变产生结束信号

(三) 读写信号(Read/Write)

0:主机写入数据

1:主机读取数据

(四) 应答信号(ACK/NACK)

SDA 总线上为高电平 0 表示 ACK (Acknowledge)

SDA 总线上为低电平 1 表示 NACK(Not Acknowledge)

主机发送数据,从机接收时,ACK 信号由从机发出

从机发送数据,主机读取数据时,ACK信号由主机给出。主机响应 ACK 表示还需要再接收数据,而当主机接收完想要的数据后,通过发送 NACK 告诉从机读取数据结束、释放总线。随后主机发送停止信号,将总线释放,结束读操作。

(五) 主机读取数据流程

  1. 主机发起 START
  2. 主机发送 7bit 从机设备地址位 + 1bit 写模式位,等待从机 ACK
  3. 从机发送 ACK
  4. 主机发送 8bit 寄存器地址,等待从机 ACK
  5. 从机发送 ACK
  6. 主机发起 START
  7. 主机发送 7bit 从机设备地址位 + 1bit 读模式位,等待从机发送数据
  8. 从机发送 8bit 数据,即寄存器里的值,等待主机 ACK
  9. 主机发送 ACK 表示继续接收,主机发送 NACK 表示停止接收
  10. 主机发起 STOP(主机发送 NACK 后)

(六) 主机写入数据流程

  1. 主机发起 START
  2. 主机发送 7bit 从机设备地址位 + 1bit 写模式位,等待从机 ACK
  3. 从机发送 ACK
  4. 主机发送 8bit 寄存器地址,等待从机 ACK
  5. 从机发送 ACK
  6. 主机发送 8bit 数据,即要写入寄存器中的数据,等待从机 ACK
  7. 从机发送 ACK
  8. 主机发起 STOP

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值