I2C中的一些概念理解

1. 什么叫自己的地址和广播呼叫地址?

在这里插入图片描述
关于I2C地址机制,图中内容可理解为:

  1. 自己的地址(专属身份标识)
  • 每个I2C从设备拥有唯一地址(7位/10位),如同身份证号
  • 主设备通过发送该地址"点名"指定从机
  • 实现精准点对点通信,避免总线冲突
  • 典型应用:主控芯片访问特定传感器(如地址0x68的MPU6050)
  1. 广播呼叫地址(群发通道)
  • 特殊地址0x00(7位模式)作为公共广播频道
  • 主设备发送该地址时,所有启用广播识别的从机都会响应
  • 支持软件开关(通过配置寄存器实现)
  • 典型应用:批量设备复位/同步校准/全局参数配置

区别对比:

特性专属地址广播地址
地址范围0x01-0x7F(7位)0x00(7位模式)
响应范围单设备多设备
配置权限硬件固定软件可关闭
典型场景精准读写批量操作

2. 如何理解数据传输协议?

在这里插入图片描述


1. 传输单位与格式

  • 8位/字节传输:所有数据(含地址)均以**字节(8bit)**为单位打包传输,例如:
    7位地址模式:0x68 → 二进制 1101000 → 填充为8位字节 1101000 + R/W位(如0)
    
  • 高位优先(MSB First):每个字节从最高位(第7位)开始传输,例如二进制10101010的传输顺序为:
    1 → 0 → 1 → 0 → 1 → 0 → 1 → 0
    

2. 地址传输机制

  • 地址结构

    地址模式字节数数据帧示例(二进制)说明
    7位地址1字节1101000 0低7位为地址,末位为读写位
    10位地址2字节11110xx1xxxxxxxx 0首字节高5位固定为11110
  • 主设备专用仅在主模式下发送地址(即由主控芯片发起通信时),发送流程:

    1. 主设备发出起始条件(START)
    2. 连续发送1或2个地址字节
    3. 从设备匹配地址后回复ACK信号

3. 实际应用对照

  • 7位地址设备(如OLED屏幕SSD1306):
    主设备发送单字节地址0x3C(二进制00111100),末位0表示写操作。
  • 10位地址设备(如某些EEPROM芯片):
    主设备先发首字节11110xx1xx为地址高2位),再发次字节xxxxxxxx 0(低8位地址 + 读写位)。

▶ 关键差异对比

参数7位地址模式10位地址模式
地址容量128个设备1024个设备
传输效率单字节寻址,速度快双字节寻址,略慢
典型场景传感器、简单外设大容量存储设备

通过这种分层传输机制,I2C协议在设备寻址效率和总线资源占用之间实现了平衡。

3. 头段序列 和地址 以及它们之间的匹配如何理解?

在这里插入图片描述
结合图像内容,I2C协议中头段序列地址匹配机制的对应关系可拆解如下:


一、核心概念分层解析

1. 头段序列(Header Sequence)
  • 作用:10位地址模式下的通信起始标识符
  • 格式11110xx0(二进制,固定前导码)
    • xx:10位地址的高2位(如地址0x1A3对应xx=01
    • 末位0:表示主设备正在写入(W/R位)
  • 触发条件:仅在10位地址模式下生效,用于通知从机进入扩展地址接收状态
2. 地址匹配规则
  • 地址结构
    10位地址 = 头段中的xx(高2位) + 后续8位地址(低8位)
    
  • 匹配流程
    1. 头段验证:从机检测头段是否满足11110xx0格式
    2. ACK应答:若头段合法,发送ACK脉冲(SDA线拉低)
    3. 完整地址比对:接收后续8位地址,与OAR1/OAR2寄存器中的地址对比
      • 若匹配:置位ADDR标志,触发中断(若使能)
      • 若不匹配:静默等待下一帧起始信号

二、关键匹配场景对比

场景处理逻辑硬件动作
头段不匹配忽略后续数据,等待新起始条件SCL持续工作,SDA保持高阻抗
头段匹配但地址不匹配丢弃当前数据包不发送ACK,ADDR标志不置位
完全匹配触发地址确认流程发送ACK,置位ADDR标志,触发中断

三、模式切换与双地址机制

1. 主从模式切换
  • 触发条件:当从机检测到11110xx1头段(末位1表示主设备读取
  • 动作
    • 从机由接收模式切换至发送模式
    • 响应主设备的数据请求(如发送传感器数据)
2. 双地址模式(ENDUAL=1)
  • 配置方法:通过寄存器设置OAR1和OAR2两个地址
  • 匹配流程
    1. 接收头段和地址后,硬件自动比较两个地址
    2. 若任一地址匹配,置位DUALF标志标识响应的是OAR1/OAR2
  • 应用场景:一主多从架构中,单个从机支持多个逻辑地址(如多功能传感器)

四、实际应用示例(10位地址模式)

以地址0x1A3(二进制01 10100011)为例:

  1. 主设备发送头段11110 01 0 → 标识高2位为01
  2. 从机响应ACK:确认头段有效
  3. 主设备发送低8位地址10100011 0(末位0为写操作)
  4. 从机验证完整地址:若OAR1/OAR2为0x1A3,则触发ADDR中断

▶ 总结:匹配机制的意义

通过头段过滤二次地址校验,I2C协议在10位模式下实现了:

  1. 抗干扰:避免误响应非目标设备
  2. 灵活性:支持双地址配置和主从角色动态切换
  3. 可靠性:ADDR标志和中断机制确保MCU及时响应通信事件
    这一机制在复杂总线拓扑(如工业传感器网络)中尤为重要。

4. ADDR位是什么,ITEVFEN是什么,ENDUAL是什么 DUALF是什么?

在这里插入图片描述
以下是针对I²C从模式中关键参数的解析,按技术规范与实际应用结合的方式说明:


1. ADDR位(地址匹配标志位)

  • 本质:硬件自动置位的状态标志(只读)
  • 触发条件
    • 总线地址与OAR1/OAR2(双地址模式时)匹配 ACK=1(应答使能)
    • 广播呼叫地址匹配(需ENGSC=1使能)
  • 行为
    • 标志置1时表示地址匹配成功
    • ITEVFEN=1,同时触发中断(通知CPU处理数据收发)
  • 复位条件:读取SR1寄存器后自动清零

典型应用

// 轮询检测地址匹配
if (I2C1->SR1 & I2C_SR1_ADDR) {
    // 执行数据读写操作
}

2. ITEVFEN(事件中断使能位)

  • 寄存器位置CR2控制寄存器
  • 作用:全局开关I²C事件中断
  • 配置逻辑
    行为
    0禁止所有事件中断(ADDR/RXNE/TXE等)
    1允许事件中断(需结合其他位精细控制)

配置示例

I2C1->CR2 |= I2C_CR2_ITEVFEN;  // 开启事件中断

3. ENDUAL(双地址模式使能位)

  • 寄存器位置OAR2寄存器高位
  • 功能模式
    模式地址响应范围
    0单地址仅响应OAR1地址
    1双地址同时响应OAR1OAR2地址

启用条件

  • OAR1OAR2需提前写入有效地址
  • 需配合DUALF标志判断实际响应地址

4. DUALF(双地址响应标志位)

  • 寄存器位置SR2状态寄存器
  • 响应逻辑
    含义
    0当前响应的是OAR1地址
    1当前响应的是OAR2地址

操作流程

  1. 检测到ADDR=1时,读取SR2获取DUALF
  2. 根据标志位选择处理逻辑分支
if (I2C1->SR2 & I2C_SR2_DUALF) {
    // 处理OAR2地址对应任务
} else {
    // 处理OAR1地址对应任务
}

关键联动关系

参数依赖条件典型应用场景
ADDRACK=1 + 地址匹配检测通信启动
ITEVFEN需全局中断使能事件驱动型通信(非阻塞式)
ENDUALOAR1/OAR2已配置多角色设备分时复用
DUALFENDUAL=1 + 地址匹配区分双地址业务逻辑

实际开发注意事项

  1. 中断冲突:同时启用ITEVFEN和DMA时,需协调资源占用
  2. 时序要求ADDR标志读取后需尽快处理数据寄存器(避免超时)
  3. 地址过滤:广播呼叫地址需通过ENGSC位独立控制
  4. 模式切换:修改ENDUAL需在总线空闲状态(BUSY=0

此机制广泛用于多传感器管理、设备冗余备份等场景(如温控系统中的主/备传感器切换)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值