课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
线程总线是程序员在学习计算机编程开发技术的时候会接触到的一个硬件组成部分,而本文我们就通过案例分析来了解一下,线程总线应用与仲裁方法。
I2C(集成电路总线)是一种简单、双线双向的同步串行总线,它利用一根时钟线和一根数据线在连接总线的两个器件之间进行信息的传递,为设备之间数据交换提供了一种简单高效的方法。每个连接到总线上的器件都有的地址,任何器件既可以作为主机也可以作为从机,但同一时刻只允许有一个主机。
I2C标准是一个具有冲突检测机制和仲裁机制的真正意义上的多主机总线,它能在多个主机同时请求控制总线时利用仲裁机制避免数据冲突并保护数据。
I2C总线上的仲裁分为两个部分:SCL线上的同步和SDA线上的仲裁。
SCL线上的同步(时钟同步)
由于I2C总线具有线“与”的逻辑功能,SCL线上只要有一个节点发送低电平,总线上就表现低电平。当所有的节点都发送高电平时,总线才能表现为高电平。所以,时钟低电平的时间由时钟电平期长的器件决定,而时钟的高电平时间由时钟高电平期短的器件决定。
由于I2C这种特性,当多个主机同时发送时钟信号时,在总线上表示的是统一的时钟信号。如果从机希望主机降低传送速度可以通过将SCL主动拉低延长其低电平时间来通知主机,当主机在准备下一次传送时发现SCL的电平被拉低时进行等待,直到从机完成操作并释放SCL线的控制权。
SDA线上的仲裁
SDA线上的仲裁也是由于I2C总线具有线“与”的逻辑功能。主机在发送数据后,通过比较总线上的数据来决定是否退出竞争。丢失仲裁的主机立即切换到未被寻址的从机状态,以确保自身能被仲裁胜利的主机寻址到。仲裁失败的主机继续输出时钟脉冲(在SCL上),直到发送完当前的串行字节。通过这种原理可以保证I2C总线在多个主机企图控制总线时保证数据的不丢失。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。