IIC通信协议

IIC通信协议

IIC 集成电路总线,多用于主控制器和从器件间的主从通信,在小数据量场景下使用,传输距离短,任意时刻只能有一个主机

物理层面

只有两条线,一条是串行时钟线SCL和一条串行数据线SDA

空闲状态

IIC空闲状态下 SDA 和SCL 都为高电平
一般加两颗上拉电阻
在这里插入图片描述

数据传输状态

  1. 当时钟信号为高电平时,数据线上的数据必须稳定

  2. 当时钟信号为低电平时,数据线上的数据允许变化
    在这里插入图片描述

起始信号

时钟线SCL为高电平期间,数据线SDA由高电平向低电平变化
在这里插入图片描述

终止信号

时钟线SCL为高电平期间,数据线SDA由低电平向高电平变化
在这里插入图片描述

应答信号

发送器每发送一个字节(8bit),就在第 9个时钟脉冲期间释放数据线,由接收器反馈一个应答信号。

  1. 应答位为低电平(Low Level)时,规定为有效应答位 (ACK)
  2. 应答位为高电平(High Level)时,规定为无效应答位(nACK)

写工作流程

  1. 发送起始信号 (SCL高电平,SDA下降沿)
  2. 发送7Bit 从机地址 + 1bit 写数据位 (为1)
  3. 等待从机应答ACK
  4. 发送Data,等待从机ACK,依次循环
  5. 发送终止信号 (SCL高电平,SDA上升沿)
    在这里插入图片描述

读工作流程

  1. 发送起始信号(SCL高电平,SDA上升沿)
  2. 发送7Bit从机地址 + 1 Bit 读数据位 (为0)
  3. 等待从机应答ACK
  4. 从机发送Data,主机反馈ACK,依次循环
  5. 终止读数据时候发送NACK
  6. 主机发送终止信号
    在这里插入图片描述

IIC 通信模式

IIC通信模式分为 标准模式和快速模式
100KHZ 以及400KHZ

IIC 错误处理和恢复机制

主机检测到错误时,可以发送一个NACK信号,选择重试或终止信号

IIC总线仲裁

当主机发送一个起始信号时候,其他主机接收到会自动释放控制权避免冲突
多主机下通信 只能有一个主机拥有控制权

### IIC通信协议概述 IIC(Inter-Integrated Circuit),即内部集成电路总线,是一种同步串行通信协议,由Philips公司开发。该协议允许多个器件通过两条信号线进行全双工通信:一条用于发送时钟脉冲(SCL),另一条负责数据传输(SDA)。这种设计简化了硬件连接并减少了所需的引脚数量[^1]。 #### 协议工作原理 在IIC通信过程中,主机控制着整个会话流程,包括启动条件、停止条件以及设置时钟频率等操作。当需要发起一次新的通讯时,主机会先发出起始位通知从机准备接收命令;接着传送地址信息指明目标节点身份;随后依据具体需求执行读写动作直至结束标志的到来表示此次交互完成[^2]。 对于每字节的数据交换,在第9个周期内还需要附加确认应答机制来确保双方已经成功接收到消息内容。如果接收方能够正常处理,则拉低SDA电平作为回应;反之则保持高阻态不变以告知对方存在错误情况发生[^3]。 ```cpp // C++代码示例展示简单的IIC写入函数 void iic_write(uint8_t deviceAddress, uint8_t registerAddress, uint8_t data){ start_condition(); // 发送开始条件 send_byte(deviceAddress << 1 | WRITE); // 发送设备地址加上写指令 wait_for_acknowledge(); // 等待ACK响应 send_byte(registerAddress); // 发送寄存器地址 wait_for_acknowledge(); send_byte(data); // 发送要写入的数据 wait_for_acknowledge(); stop_condition(); // 结束本次通信 } ``` #### 应用场景分析 得益于其简洁性和灵活性特点,IIC广泛存在于各类电子产品之中: - **传感器模块**:如温度湿度计、加速度陀螺仪组合单元等; - **存储装置**:EEPROM、Flash Memory等非易失性记忆体组件; - **实时时钟RTC电路板卡**:提供精准的时间基准服务给其他外围设施使用; - **显示驱动屏控制器**:LCD/OLED显示屏背后的逻辑运算核心部分往往也采用此方式实现与MCU之间的联系。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值