4.第二层——数据链路层4.1比特传输SMBus在总线上分别使用固定的电压来表示逻辑1和逻辑0。4.1.1.数据有效性图4-1数据有效性在时钟高电平阶段,SMBDAT上的数据必须保持稳定。当SMBCLK为低时,数据才可以变化。图4-1表明了这种关系。实际的规范请参考图3-1和表1。4.1.2开始和结束条件图4-2:开始和结束条件两种独特的总线状态定义了信息传输的开始和结束条件。1.在SMBCLK为高时,SMBDAT由高到低的跳变表示信息传输的开始条件2.在SMBCLK为高时,SMBDAT由低到高的跳变表示信息传输的开始条件。开始和结束条件并不总是由总线主器件产生的。在开始条件产生后,总线就被认为处于忙碌状态。当出现结束条件或SMBCLK和XMBDAT两条线维持在高电平的时间超过THIGH:MAX后,总线处于闲置状态。4.1.3.总线闲置条件总线闲置是一种在以下较小的那个时间内,SMBCLK和XMBDAT两条线都处于高电平而没有任何状态变化的状态。检测到上一个结束条件,经过TBUF(4.7μS)以后,或者THIGH:MAX(50μS)后一个时间参数考虑了如下的情况:一个主器件被动态地加到总线上,而且可能没有检测到SMBCLK和XMBDAT上状态的变化。这时,主器件必须等待足够长的时间来保证当前总线上没有数据传输。4.2SMBus上的数据传输图4-3:SMBus字节格式每个字节包含八个比特。在总线上每个字节传输完都必须紧跟一个确认比特。字节在传输时都都先传送最高位(MSB)下面的图,图4-4表明了确认脉冲(ZCK)和不确认脉冲(NACK)相对于其他数据的位置。图4-4:SMBus的ACK和NACK信号由主器件产生这个与确认信号有关的时钟。发送端(也就是主器件或者从器件)确认这个时钟周期释放SMBus数据线(SMBDAT为高)。为了确认一个字节,接收端必须在时钟脉冲的高电平阶段,根绝SMBus的时序规范,将SMBDAT拉到低。一个SMBus器件必须始终对它自身地址做出确认。SMBus利用这个信号来检测总线上可连接的设备是否存在。一个SMBus从器件在以下情况下可以不确认一个不是它自身地址的字节:这个从器件正忙于执行一个实时任务,或者请求的数据不可用。主器件根据检测到的NACK条件,必须产生一个停止条件来中断传输。注意还有另一种方法:从器件可以在这篇规范的限制内扩展时钟的低电平阶段,从而完成它的任务然后继续传输。从器件检测到不合理的命令或不合理的数据。在这种情况下,从器件必须部确认这个接收到的字节。主器件根据检测到的NACK条件必须产生一个停止条件,然后重新尝试通信。如果一个主器件接收端正在通信中,它必须在从器件时钟下的最后一个字节产生一个NACK,通过这种方法来像从器件示意数据传输的结束。从器件发送端必须释放数据线来允许主器件产生一个停止条件。这最后一个机制是器件检测从器件发送端是否执行数据包错误检测的一种方法。具体内容参考5.4节的数据包错误检测。4.3时钟产生与仲裁4.3.1.同步当不止一个主器件同时尝试在总线上放置时钟信号时会出现这种情况。结果总线上的信号是所有这些主器件产生的时钟信号的线与。在仲裁过程中,为每个参与其中的主器件一比特一比特地对时钟有一个清晰的定义,这对总线的完整性很重要。在SMBCLK线上一个高到低的跳变将引起所有关联的期间开始计时它们低电平的长度并且如果这个器件是主器件,它将驱使SMBCLK为低。只要一个器件完成它对低电平的计时,它将释放SMBCLK线。然而,如果其他主器件的低电平阶段较长的话将使SMBCLK保持为低,导致实际SMBCLK上的信号可能不变到高。在这种情况下,释放SMBCLK的主器件将进入SMBCLK高电平等待阶段。当所有的器件都完成了对它们低电平的计时,SMBCLK线将被释放并变为高。此时,所有有关联的器件将开始计时它们的高电平阶段。第一个完成对它的高电平计时的器件将把SMBCLK拉到低,然后下一个周期开始。图4-5:SMBus时钟同步在图4-5中,CLK1和CLK2的第一个下电平之间必须小于(TLOWMIN-TSU:DAT)。这样,所有器件就有了一个同步的时钟,SMBCLK低电平取决于最慢的那个器件,而SMBCLK高电平取决于最快的器件。4.3.2.仲裁仅当总线闲置时,主器件才可以开始传输数据。在最小保持时间THOLD:STA内可能有一个或多个器件产生开始条件,导致在总线上产生一个定义的开始条件。因为当器件产生开始条件时可能并不知道其他主器件也在竞争总线。在SMBCLK为高时,SMBDAT线上会发生仲裁。如果某个器件在SMBDAT上传送高电平,而其他器件在SMBDAT上传送低电平,则这个器件将在仲裁周期失去对总线的控制。在仲裁中失去对总线控制的主器件可能会继续提供时钟脉冲,直到这个仲裁周期结束。在两个主器件尝试与同一个器件通信的情况下,在地址字节之后,冲裁将继续。在这种情况下,在传输剩余的数据时,冲裁依然存在。在两个主器件之间需要做出仲裁,其中一个要在总线上放置重复开始信号,而另一个主器件要在总线上放置“0”数据比特时,前一个主器件必须认识到,它不能开始而将输掉仲裁。如果第一个主器件要在总线上放置一个重复开始信号,而第二个要早总线上放置“1”数据比特,第二个主器件会知道总线处于开始状态,而它自身输掉仲裁。如果两个主器件都在总线上相同的比特位放置重复开始信号,在每个数据比特都将持续发生仲裁。这种机制需要参与到仲裁周期的SMBus主器件在仲裁期间监控SMBDAT线的实际状态。如果这个主器件同时具有从器件的功能并且在仲裁周期地址阶段失去对总线的控制,它必须检查放在总线上的实际地址,,从而判断是否有另一个主器件在尝试与它通信。在这种情况下,在仲裁中失败的主器件必须立刻切换到它的从器件接收端模式,以便接受到剩下的信息。图4-6:SMBus仲裁在每一次总线通信时,主器件按需要能够识别总线上的重复开始条件。如果一个器件检测到一个不是它自己产生的重复开始条件,它必须退出传输。一旦一个主器件赢得了仲裁,则在总线闲置之前,不再有仲裁。4.3.3.时钟低电平扩展SMBus利用时钟同步机制使得不同速度的器件可以在总线上共存。时钟同步机制除了用于总线仲裁过程中,还可以用于一比特或一字节的传输,以便让速度较慢的从器件与酥度较快的主器件配合。在比特的层次上,器件可以通过周期性地扩展时钟的低电平阶段来减慢总线速度。器件在传输大小范围为一个至这篇文档所描述的AC规范的限制之间信息时,它们可以延展时钟。然而,为了保持SMBus的带宽,这些可以周期性延展时钟的器件必须保持10KHz的fSMB,MIN频率。图4-7:SMBus从器件的周期性时钟延展如果需要时钟低电平扩展,必须在SMBCLK下变平之后TLOW:MIN-TSU:DAT时间段内开始。被设计成可以扩展时钟低电平的器件在每一个比特传输时必须保持总线最小频率fSMB,MIN,也就是10KHz。一个从器件为了进行一个实时任务或者检查一个字节的有效性,可能会选择在某个特定的比特传输时扩展时钟。在这种情况下,这个从器件必须满足TTIMEOUT和TLOW:SEXT的规范。时钟低电平扩展在任意比特传输时都会发生,包括比ACK时钟脉冲优先级更高的时钟。从器件可能会在总线上的字节传输之间扩展时钟低电平,以便处理接收到的数据或者准备待传输的数据。此时,从器件会在接收完数据或者对一个字节确认后将时钟保持为低。同样,从器件必须不违背SMBus对于TLOW:SEXT的规范。在总线工作期间,主器件同样可以选择扩展时钟低电平,不论是在在传输字节之间或者在传输字节的任一时刻,包括字节传输之后和确认时钟之前的时钟低电平阶段。为了处理出具或者完成一个实时任务,主器件可能需要选择性地扩展时钟低电平阶段。同样,这个主器件必须不违背TLOW:SEXT的规范。图4-8:周期的和随机的时钟扩展为了保持总线带宽以及可以从恶劣的总线条件中恢复,主器件和从器件都必须满足SMBusTTIMEOUT的规范。4.4.数据传输格式SMBus数据传输满足如下图所示的格式。图4-9:SMBus上的数据传输在开始条件S之后,主器件在总线上放置它想与之通信的从器件的七比特地址。这个地址长度为七比特,紧接着的第八比特表示数据传输的方向(R/W#):一个0信号表示数据发送(写)而1信号表示数据请求(读)。一次数据传输总是由主器件产生的停止条件终止。规范的SMBus协议需要主器件产生一个重复开始条件,紧接着是从器件的地址,而不是首先产生一个停止条件。5.第三层——网络层5.1.用途模型系统管理总线规范涉及到三种器件。从器件是接收数据或者对命令响应的器件。主器件是发送命令,产生时钟,终止传输的器件。主机是一个特殊用途的主器件,它提供与系统CPU之间的主体接口。主机必须主从器件,而且必须支持SMBus主机通知协议。在一个系统中最多有一个主机。一个无主机系统的例子是一个简单的电池充电器。这个充电器可能塞在墙上,等待为电池充电。一个器件可能会被设计成始终是从器件而不会是主器件。一个器件大多数时候表现为从器件,但在一些特殊情况下,它可能变成主器件。同样,器件也能被设计成只是主器件。系统主机是一个大多数情况下表现为主机而偶尔作为从器件的例子。5.2.设备识别——从器件地址任意一个在系统管理总线上作为从器件的设备都有一个独一无二的地址,叫做从器件地址。作为参考,下面的地址是保留的,除非是这篇规范中详细讲到的其他情况,不然它们不可被SMBus从器件使用或者分配给从器件。表4:保留的SMBus地址所有其他其他地址都可以被动态地址设备以及/或混合设备用来分配地址。混合设备地址将在5.2.1.4中讨论。SMBus警报响应地址(0001100)等价于设备的主器件性能。详见附录。SMBus设备默认地址是被SMBus地址解决协议保留的,它允许动态地分配地址。详细内容请看5.6节。这里没有说明的,以及在附录中的地址都是留待将来使用的。所有的十比特从器件地址都被留作将来使用,因而不再此规范讨论的范围之内。主机的地址长度最短,所以发送给主机的信息对于总线仲裁有最高的优先级。5.2.1SMBus地址类型在实际系统中,几个SMBus设备可以同时使用。在设备地址竞争的情况下,设计者可在SMBus设备中使用可编程特征来解决这些竞争,或者使用在同一个系统中的多个SMBus分支来分散这些使用相同地址的设备。5.2.1.1.保留地址正如在表4中定义的,SMBus,Access总线以及I2C都为特殊的总线功能保留若干地址。5.2.1.2.目标分配地址这些地址是由SMBus工作组分配,用来区别设备的类型。分配了地址的每一种器件类型都必须有一个与之相关的SMBus规范。一些使用SMBus的系统认为假如一个设备是在一个功能分配地址上,那么它服从这个地址相关的规范。比如,智能电池中SMBus的应用假定,智能电池设备以及控制器都在它们的功能分配地址上。这样,那些不满足智能电池设备的功能分配地址规范的器件不可以在智能电池应用中被使用。其他SMBus应用不仅仅依赖设备地址去识别设备的功能。在这些应用中,设备可能使用与功能分配地址重复的地址。器件制造商。总之,除非希望设备满足相应地址的规范,否则应当避免功能分配地址。设备生产商应当咨询SMBusWG来获得关于功能分配地址的最新信息,以此作为判断是否他们的地址分配在某些SMBus应用中不允许的依据。5.2.1.3.原型地址表5:原型地址原型地址(10010XX)是为那些利用功能分配地址的试验中的设备保留的。它们不可以被分配到任一个器件。5.2.1.4.混合设备地址为了特殊的系统目的,生产商已经生产了并且可能继续生产兼容SMBus的设备,这些设备不需要执行所有的SMBus规范,或者他们不需要从操作系统得到直接的支持。这些设备可能是端口扩展器,D/A电路等等。SMBus网站()有一页,在这页面上,SBS-IF成员公司可以分享这些设备的地址信息。这个网页帮助生产商避免可能在同一个SMBus上共存的器