I2C总线是一种由飞利浦公司(Philips® Corporation)开发的双线串行接口,被广泛应用于微电子机械系统(MEMS)和集成电路(IC)之间的通信。它由两个基本的线组成:串行时钟线(SCL)和串行数据线(SDA),提供双向通信。为了确保数据的可靠传输和接收,I2C接口采用了一套完整的协议。 I2C总线的基本原理是“线与”(wire-and)功能,即多个设备共用这两根线,并通过主动低电平、被动高电平的方式来进行数据传输。这确保了多个设备可以挂载在同一总线上,而不会因为输出驱动电平的不同而相互干扰。 I2C总线的传输速度支持标准模式下最高100Kbps的速率,在快速模式(fast mode)下可达400Kbps,而在高速模式(high-speed mode)下甚至能达到3.4Mbps。在I2C通信协议中,一个设备为主设备(master),它负责发起数据传输并生成时钟信号以允许数据传输;而其它设备作为从设备(slave),它们等待主设备的地址匹配并进行通信。 总线上每个设备都有一个独特的地址。当主设备想要与某个从设备通信时,首先发送的是目标从设备的地址。总线上的所有设备都会“监听”以检查是否在呼叫它们的地址。在这个地址中,还有一个特殊位来指示主设备是想要从从设备读取数据还是向从设备写入数据。为了执行“线与”功能,连接到总线的设备的输出级(SCL或SDA)必须是开漏(open-drain)或开集(open-collector)输出。外部上拉电阻被用来确保在没有设备拉低线路时线路保持高电平。 I2C总线在没有数据传输的空闲时间里,SCL和SDA线都处于高电平。当主设备想要控制总线时,它必须先产生一个起始条件(START condition)。起始条件定义为SDA线在SCL线高电平时从高电平向低电平的转变。当主设备完成了所有数据传输并希望放弃总线控制权时,它产生一个停止条件(STOP condition)。停止条件定义为SDA线在SCL线高电平时从低电平向高电平的转变。因为起始和停止条件被定义为SCL线高电平时SDA线的状态转变,所以在实际数据传输期间,只有在SCL线为低电平时SDA线才能改变。 I2C规范中有两种地址格式:7位和10位地址格式。7位地址格式是最简单的,拥有7位地址和一个读/写(R/W)位。在7位地址格式中,主设备首先发送设备的7位地址,并附上一个读/写位,指示主设备想要对从设备进行读或写操作。然后从设备将响应主设备的请求,如果地址匹配的话,通信便可以开始。 I2C总线通信之所以被广泛采用,主要是因为它的简单性、稳定性以及在连接多个设备时不需要为每对设备分别布线的特性。它在低速、低成本设备中尤其受欢迎,因为它只需要两根线,且可连接多个主设备和从设备。这些特性使得I2C总线成为许多传感器、存储设备、微控制器以及其他外围设备的理想通信方式。
- 粉丝: 0
- 资源: 10
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- js基础但是这个烂怂东西要求标题不能少于10个字才能上传然后我其实还没有写完之后再修订吧.md
- electron-tabs-master
- Unity3D 布朗运动算法插件 Brownian Motion
- 鼎微R16中控升级包R16-4.5.10-20170221及强制升级方法
- 鼎微R16中控升级包公版UI 2015及强制升级方法,救砖包
- 基于CSS与JavaScript的积分系统设计源码
- 生物化学作业_1_生物化学作业资料.pdf
- 基于libgdx引擎的Java开发连连看游戏设计源码
- 基于MobileNetV3的SSD目标检测算法PyTorch实现设计源码
- 基于Java JDK的全面框架设计源码学习项目