硬件总线基础02:IIC总线(2)

说在开头:关于爱因斯坦-罗森桥(2)

不幸的是,爱因斯坦用黑洞代表电子的想法失败了,但是宇宙学家们却推测爱因斯坦-罗森桥可以充当两个宇宙之间的桥梁,我们可以在宇宙中自由穿行,直到有一天不幸掉进一个黑洞后突然被吸到这个洞里,并穿过这个洞(黑洞)出现在另外一侧(白洞)。对爱因斯坦来说,广义相对论方程的任何解,如果是从合理的出发点得出的,那都应与实际相符合;但是他并不担心有人掉进黑洞而进入另一个平行宇宙,因为黑洞中心的引力无穷大,任何掉进黑洞的人,组成身体的原子将会被重力场撕裂,而且虫洞虽然会打开,但又会很快被关闭,没有任何物体能及时通过它而到达另一侧;所以爱因斯坦认为,尽管虫洞有可能存在,但生物决不能通过它,更不可能像爱丽丝一样活着讲述这段离奇的经历。

1962年,罗伯特·富勒和约翰·惠勒发表论文证明:如果虫洞连接同一个宇宙的两个地方,那么这类虫洞是不稳定的。1963年,新西兰数学家罗伊·克尔提出假设,使得“虫洞”的存在重新获得了理论支持;恒星和人类一样也会经历生老病死的过程,克尔认为,如果恒星在接近死亡时能够保持旋转,就会形成我们在电影中看到的 “动态黑洞”。当我们像电影中那样沿着旋转轴心将物体发射进入后,若是能够突破黑洞中心的重力场极限,就会进入所谓的“镜像宇宙”。就如《星际穿越》中的宇航员库珀在黑洞中所处的“超维度”空间,其实就可以被看作是对“镜像宇宙”的一种解读,从宇宙进入“镜像宇宙”,本身就是一次“时空穿越”。

“银河系虫洞说”源自在暗物质研究上取得的突破  ,与“虫洞”不同的是,人们已经通过引力效应证实了宇宙中有大量暗物质存在。的里雅斯特国际高等研究院课题组在2013年绘制了一份非常详细的银河系暗物质分布图,将其与最新研究得出的宇宙大爆炸模型结合后,发现银河系中不仅具备存在“虫洞”的条件,甚至整个银河系可能就是个巨大的“虫洞”。 “虫洞说”目前仍是一种假设,但科学的进步离不开大胆的假设。人们一度认为物质的最小组成单位是原子,后来又发现了中子和质子。同样在长久以来,人类也曾认为宇宙是由物质构成的,但暗物质的存在推翻了这一结论。科学假设的意义,就在于摆脱现有束缚,通过不断地自我否定和怀疑,推进人类对宇宙的了解和自身的进步。正如萨鲁奇所言:“在任何情况下,我们都需要问自己,那到底是什么?”(参考自:加来道雄-平行宇宙,百度百科-虫洞)

2,标准IIC总线扩展

标准IIC总线规定数据传输速率最大可达100Kbit/s,以及支持7bit地址寻址。为了符合更高速度的要求以及制造更多可使用的从机器件地址数量,标准模式IIC 总线规范进行了不断的升级,进行了如下扩展:

1. 快速模式:速率高达400kbit/s;

2. 高速模式(Hs)模式:速率高达3.4Mbit/s;

3. 10 位寻址,允许使用高达1024 个额外的从机地址。

扩展IIC 总线规范主要有两个原因:

1. 随着器件之间大数据传输需求的增加,所需速率远远超过100kbit/s 标准模式或者400kbit/s 快速模式,目前IIC总线器件在Hs 模式下最高支持3.4Mbit/s的速率,而且接口电路的生产成本没有明显提高;

2. 7位寻址策略的大多数器件地址被分配,这样就要求更多器件地址来为新的器件分配从机地址的问题;采用10位寻址策略可以提供10倍于7位寻址策略的地址。

2.1 快速模式

IIC快速模式最大支持400Kbit/s速率,它相对于标准模式IIC总线规范的:协议、格式、逻辑电平和SDA/SCL线最大电容负载(400pF)等都没有修改。它最小要求:可以和400kbit/s 传输同步,可以延长SCL 信号的低电平周期来减慢传输。快速模式器件可以向下兼容:同标准模式器件在0~100kbit/s IIC 总线系统通讯;但标准模式器件不向上兼容,所以不能在快速模式IIC总线系统中工作(标准模式器件支持的速率不能达到这么高,从而会产生异常)。

快速模式IIC 总线规范与标准模式相比有如下特征:

1. 最大位速率增加到400kbit/s;

2. 调整了SDA(串行数据)和SCL(串行时钟) 信号的时序(取消了与其他总线系统,例如CBUS的兼容);

3. 快速模式器件的输入有抑制毛刺的功能:SDA 和SCL 信号输入结构有施密特触发器;

5. 快速模式器件增加了输出缓冲器:对SDA 和SCL 信号的下降沿有斜率控制功能;如下图所示;

——标准模式输出为MOS直接接GND,驱动能力非常大,所以下降沿速率非常快,高频分量大,所以在长链路和多负载时可能导致信号完整性的问题。

6. 快速模式器件的电源电压被关断,SDA 和SCL 的I/O 管脚为悬空,不会阻塞总线;

7. IIC总线的外部上拉电阻必须根据总线速率进行调整,以适应快速模式更小的最大允许上升时间,对于负载最大是200pF 的总线:每条总线的上拉可以是一个电阻;对于负载在200pF~400pF 之间的总线:上拉器件可以是一个电流源(最大3mA)或者是一个开关电阻电路。如下图所示。

2.2 高速(Hs)模式

高速模式器件最大的特点是最大可以工作在3.4Mbit/s 的速率下,而且保持完全向下兼容快速模式和标准模式模式器件。为了获得位速率高达3.4Mbit/s 的传输速率,对正常的IIC 总线规范要作出以下的改进:

1. 高速模式主机器件有一个SDAH 信号的开漏输出缓冲器和一个在SCLH 输出的开漏极下拉和电流源上拉电路;如下图所示;

——电流源电路缩短了SCLH 信号的上升时间;在任何时侯高速模式只有一个主机的电流源有效。

2. 在多主机的高速模式中, 不执行时钟同步和仲裁,以加速数据处理能力;

——仲裁一般在快速模式和标准模式传输主机码后结束。

3. 高速模式主机器件以高/低电平12产生一个串行时钟信号,解除了建立和保持时间的时序要求;

4. 高速模式从机器件与快速/标准 从机器件的唯一差别是它们工作的速度,高速模式从机在SCLH SDAH输出有开漏输出的缓冲器;

5. 高速模式器件的输出可以抑制毛刺,SDAH SCLH 输出有一个Schmitt 触发器;

6. 高速模式器件的输出缓冲器对SDAH SCLH 信号的下降沿有斜率控制功能。

高速模式的串行数据传输格式符合标准模式IIC 总线规范,高速模式只能在快速/标准模式下,通过如下主机码启动:

1. 起始条件S

2. 8 位的主机码00001XXX

3. 不响应位A

如下图所示,通过如上主机码可以实现两个功能:1,在快速/标准模式速度下各竞争主机之间进行仲裁和时钟同步,结果得到一个获胜的主机;2,标志高速模式传输的开始。高速模式主机码是保留的8位代码,它不用于从机寻址或其他目的;由于每个主机都有唯一的主机码,所以一条IIC总线上最多有8个高速模式主机(主机码由软件可编程,系统设计者决定)。

1. 主机码向其他器件表示开始高速 模式传输而且连接的器件必须符合高速模式规范;由于不允许器件响应主机码,主机码后面跟着NAK (不响应位);

2. NAK(不响应位)后而且SCLH 线被上拉到高电平,激活的主机切换到高速模式并使能SCLH信号的电流源上拉电路;

——当所有器件释放了SCLH 线而且SCLH 信号到达高电平时,激活的主机使能它的电流源上拉电路因此加速了SCLH 信号最后部分的上升时间,如下图所示,通过上拉电阻Rp的信号边沿刚开始由于驱动能力较强所以上升比较快速,随着电压接近上拉电源电压,驱动能力的减弱,边沿也开始变缓,所以在高速模式下的SCLH通过电流源驱动,使得上升沿一直保持较陡

3. 激活的主机发送一个重复起始条件(Sr),接着是7 位(或10 位)从机地址和R/W 位,并从选中的从机接收到一个响应位ACK,开始进行高速模式下的数据传输;

4. 在下一个重复起始条件(Sr)后,数据传输仍处于高速模式,只有当接收到停止条件(P)后才会返回快速/标准模式;为了减少主机码的额外开销,主机可能连接由重复起始条件(Sr)分隔的大量高速模式传输。

高速模式与快速/标准模式之间的切换、混合模式传输,整体切换和工作流程比较复杂,建议:不同工作模式或相同工作模式不同总线速率的情况,设计不同IIC总线物理通道;同时器件的IIC模式和速度配置一致。关于这部分混合工作的详细内容,请参考IIC协议。

——举个栗子,器件支持IIC标准/快速/高速模式,那么在设计标准模式总线速度时,就设置器件为标准/快速模式,而不要设置成高速模式。

2.3 10位寻址

10 位寻址和7 位寻址是兼容的,而且可以结合使用;10 位寻址采用了保留的1111XXX 作为起始条件(S)或重复起始条件(Sr)的后第一个字节的头7 位,10 位寻址不会影响已有的7 位寻址。7 位和10 位地址的器件都可以同时连接到相同的IIC 总线上,而且都能用于快速/标准模式和高速模式系统。

——虽然保留地址位1111XXX 8 个可能的组合,但只有4 个组合11110XX 用于10 位寻址,而剩下的4个组合11111XX 保留给以后增强的IIC 总线

10位寻址的格式如下:

1. 第一个字节的前7 位是11110XX 的组合,其中最后两位XX 10 位地址的两个最高位MSB,第一个字节的第8 位同样是R/W 位(决定了报文的方向:0表示写操作,1表示读操作);

——如果R/W 位是0 :第二个字节是10 位从机地址剩下的8 位;如果R/W 位是1 :下一个字节是从机发送给主机的数据。

2. 主机(发送器)将10 位从机地址数据发送到从机(接收器):

1,当起始条件(S)后发送10 位地址时,每个从机将从机地址第一个字节的头7 位(11110XX)与自己的地址比较,并测试看第8 位(R/W)方向位是否为0

——此时可能有多个从机发现地址相同,并产生一个响应:ACK

2,所有发现地址相同的从机将第二个字节数据同自己的地址做比较;

——此时只有一个从机发现地址相同,并产生一个响应:ACK

3,匹配的从机将保持被主机寻址直到接收到停止条件(P), 或访问不同从机地址的重复起始条件(Sr)。

3. 主机(接收器)用10 位从机地址从从机(发送器)读数据:

1,用10位寻址从机的过程与上述一致(直到上图A2);

2,从机检查Sr 后第一个字节的前7 位是否和起始条件(S)后的相同,并检查第8 R/W 是否为1,那么它认为是被作为发送器被寻址并产生响应ACK

3,从机(发送器)持续发送数据,直到接收到停止条件(P),或访问不同从机地址的重复起始条件(Sr)。

4. 组合模式:主机发送数据到从机,然后从相同的从机读数据;如下图所示,相同的主机始终占着总线,传输方向在第二个R/W后改变;

5. 组合模式:主机发送数据到一个从机,然后发送数据到另一个从机。如下图所示。

二,IIC总线电气规范

1,标准/快速模式器件

标准/快速模式IIC 总线器件的I/O 级、I/O 电流、毛刺抑制、输出斜率控制和管脚电容如下图所示。(具体设计,请参考IIC器件的规格书)

IIC总线时序定义如下图所示;SCL时钟最小高电平和低电平周期决定了最大的位传输速率,标准模式器件是100kbit/s,快速模式器件是400kbit/s ;标准模式和快速模式IIC 总线器件必须能在它们最大的位速率下发送或接收数据。(具体设计,请参考IIC器件的规格书)

2,IIC器件的电气连接

我们一般看到的IIC总线连接有如下两种方式;

1. 同一条IIC总线下的I/O电源电压相同,那么IIC总线(SDA/SCL)上拉电阻Rp上拉至它们共同的电源电压Vdd上;

——不同电源电压的IIC总线通过IIC双向电平转换器进行隔离,保证在同一条物理链路上的电源一致。

2. 虽然不同器件有多个不同的电源电压,如上右图所示,Vdd1 = 5VVdd2Vdd3又不相同,此时我们需要确定Vdd2Vdd3电源下器件的I/O管脚耐压是多少,其高低电平判断的门限是多少。

——举个栗子,有IIC总线下挂器件A+1.8VI/O电源,器件B+3.3VI/O电源,但其SCL/SDA管脚能够容忍最大+5.0V电压,那么IIC总线上Rp可以上拉至+3.3V电源上,不需要IIC双向电平转换器。

3,IIC总线器件电阻Rp和Rs的选择

对于标准模式IIC总线系统,电阻Rp RS 的值由如下参数决定:

1. 电源电压;

——电源电压限制了电阻Rp 的最小值:要求输出级在VOLmax=0.4V 时的最小下拉电流是3mA,即Rpmin = Vddmin – 0.4V/0.3;如左下图所示,VddRpmin的函数;而低电平要求的0.1*VDD 噪声容限限制了RS 的最大值,如右下图所示,RsmaxRp的函数。

2. 总线电容;

——总线电容是线路连接和管脚的总电容,由于上升时间的限制,这个电容限制了Rp 的最大值,即:Rpmax = T/0.874*C;其中:TIIC总线周期(速率为100K,那么T = 1us),C为总线的容性负载;如下左图所示,显示了在固定总线速率下Rpmax 是总线容性负载的函数。

3. 总线下挂器件数量。

——每个器件负载最大高电平输入电流的最大值是10μA ,由于高电平要求0.2*VDD 的噪声容限这个输入电流限制了Rp 的最大值,由VDD 决定;如上右图所示。

如下图所示,上拉电阻Rp起到了两个方面的作用:为低电平提供输出负载电流,为高电平提供输出驱动电流。

1. 考虑低电平:OD门驱动能力一般在2mA~4mA,如果Rp过小则灌入电流太大,导致输出低电平过高;

2. 考虑高电平:电源电流通过Rp对总线容性负载C充电,Rp过大则导致RC充电时间过长,上升边沿过缓;

3. 根据经验:Rp一般取1KΩ~10KΩ之间

4,IIC总线的问题以及解决

好,我们回到本文的开头:IIC总线并非是那么可靠的总线,但是由于它的简单、便宜、好用,成为了低速管理系统中的首选总线。那我们如何来解决这些问题呢?特别要在设计之初。

1. IIC总线超长导致信号完整性的问题;

1,对IIC总线进行合理的规划,尽量减小IIC总线长度;

——举个栗子:一般主控制器上有多条IIC总线,我们可以对这些IIC总线根据功能、IIC器件位置等等进行分类,一些非常重要的、访问频率很高的器件可以单独使用一条IIC总线;PCB上位置相近的和在布线比较顺的,可以挂在同一条IIC总线下;等等。

2,使用IIC MUX器件,通过该器件来选择不同的物理通道,实现不同器件之间的隔离;

——IIC MUX器件是物理通道的隔离,不同通道之间是不会相互影响的。

3,如果必须要用一条IIC总线,而且也不想增加成本(增加IIC MUX),那么建议走成一条长链(不要走成星型),在链路的不同位置(源端,中间,末端等)预留上拉电阻,IIC器件SDA管脚预留串阻,方便信号质量的调试。

2. IIC总线上使用的电平转换器件或则Buffer,导致输入/输出信号电平产生抬升从而总线通信失败;

1,做好电平匹配相关专题分析,有很多情况下是不需要电平转换器件或Buffer的;

2,做好IIC总线的拓扑设计,不要使用多级的电平转换器件或Buffer;

3,如果一定要使用多级的IIC电平转换器件或Buffer,那么需要计算好SDA/SCL上的串阻(Rs)导致的总线电平压降,尽量减小Rs电阻值。

——虽然大家都觉得IIC总线很简单,随便连一连都不会有问题,但是问题往往就出在“随便”二字上;IIC的问题从我刚工作到现在还在一直碰到。

3. IIC总线挂死问题,这是大概率会出现的(大批量应用的情况下)。

1,主机发现IIC总线挂死(访问失败)后,在SCL信号线上发送9个Clock信号,释放IIC总线;

——IIC总线挂死的主要原因是:SDA信号线被从机拉低;而SDA信号线被从机拉低的很大原因是其状态没释放(认为还在读操作过程中),所以需要SCL发送9个clock(一次操作时9bit:8bit+1ACK)来让从机SDA总线。

——SMBUS总线对IIC的这个问题做了优化,有一个超时释放总线的机制,可以避免SMBUS总线被拉死。

2,对挂死的从机复位或下电操作。

写在最后

IIC相对来说是比较简单的,也是容易出问题的总线。SMBUS总线在1995年由Intel提出,应用于移动PC和桌面PC系统中的低速率通讯,它大部分基于IIC总线规范,是IIC协议和信令的子集。SMBUS除了有超时机制外,它支持的总线速率范围(10KHz~100KHz)也与IIC总线有所不同。我们使用的Intel X86系列CPU上说明是SMBUS,我们在设计中可以连接一般的IIC器件,并能够进行正常读写操作。

同时SMBUS还含有网络层,并定义11种总线协议,用来实现报文传递,因此SMUBS在x86处理器系统中得到了大规模普及,其主要作用hi管理处理器系统的外设,并手机外设的运行信息,特别是与只能电源管理相关的;同时PCI和PCIe插槽上也预留了SMBUS接口,以便PCI/PCIe设备与处理器系统进行信息交互。ACPI(Advanced Configuration and Power Management Interface)接口也为SMBUS定义了一系列用于只能电池、电池充电器与处理器系统之间的通信。

本章部分相关内容和图片参考自:《IIC总线规范-V2.1》。下一章《SPI总线》。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值