【IIC通信协议】【面试】IIC总线仲裁机制

1 篇文章 0 订阅
1 篇文章 0 订阅

IIC总线仲裁机制

应用场合:同一总线上有多个Master同时访问Slaver

为什么需要总线仲裁?

  • 避免总线冲突:多个主设备尝试驱动总线时,如果没有仲裁机制,总线可能会出现冲突,导致数据传输错误或者设备损坏

  • 数据完整性:两个主设备同时传输数据时,接收设备可能会收到混乱的数据包。仲裁机制确保总线使用权明确,保证数据完整、可靠。

  • 优先级处理:在一些应用场景中,不同主设备有不同的优先级,仲裁机制可以实现优先级管理,使得高优先级任务可以优先获得总线使用权。

如何实现仲裁?

仲裁方法:SDA数据线(OC与OD)线与结构

在这里插入图片描述

总线空闲状态检测:主机在发送数据前先检测总线是否空闲(SCL/SDA均为高电平)

  • 起始信号的发送:多个主机可能同时检测到总线空闲,并同时发送起始信号,

IIC的起始信号:SCL为高电平时,SDA由高电平变为低电平
  • 仲裁开始:主机只能在SCL为低电平时拉低总线,而不能在SCL为高电平时改变SDA的状态。

    SDA数据线线与结构

在这里插入图片描述
DATA1表示主机Master1的数据SDA线

DATA2表示主机Master2的数据SDA线

SDA表示线与DATA1与DATA2后 IIC总线上的SDA线

SCL表示IIC总线上的SCL线

  • 利用时钟同步的SCL上升沿对SDA进行采样并进行数据比较,

    在传输过程中,每个主机在每个时钟周期都会监控SDA线的数据,如果发送的数据和监控到的数据不一致,则意味着有一个主机会失去仲裁,停止发送数据并释放总线。

    如果DATA1和DATA2全程保持和SDA上一致,则双Master都能正常访问同一从设备

    如果DATA1先和SDA不一致,则DATA2的Master获取主动权,且继续完成相关操作DATA1的Master丢失总线SDA控制,且关闭DATA1的输出。

  • 继续仲裁或进行数据传输

    多个Master仲裁过程中,Slave不参与,由master完成

    仲裁按照每个SDA数据bit逐步执行

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值