参考文档:System Management Bus (SMBus) Specification Version 3.0.pdf
简介:
SMBus(System Management Bus)于1995年被 Intel 提出,应用于低速率通信,是一种二线制串行总线,该总线大部分基于 IIC 总线规范,为 IIC 总线的扩展。
一般特性:
设备可能由总线 VDD 供电或通过其他电源 Vbus 供电,只要他们符合 SMBus 电气规范。
第一层 - 物理层
SMBus 通用 AC 规范:
高功率和低功率的 SMBus 设备共享一个通用的 AC 规范:
高低功率 DC 规格:
第二层:数据链路层
数据有效性:
起始和停止条件:
时钟低延展
SMBus 提供了一种时钟同步机制来允许不同速率的设备在总线上共存。除了总线仲裁程序,此种时钟同步机制可以在位传输或字节传输期间使用,使得较慢速度的从设备可以应付速度较快的主设备。
在位级,设备可通过周期性地延展时钟低间隔来降低总线速度。
设备可以在一条信息的的过程中在 AC 规范的最大范围内来延展时钟。尽管如此,设计用于周期性地延展每个时钟周期的设备必须保持最小频率为10khz(1/fSMB,MIN=100µs),以维持 SMBus 的带宽。
时钟低延展必须在 SMBCLK 的高到低的下降跳变后才开始,并限制在时钟信号低电平时间最低值到数据设置时间的范围(tLOW:MIN - tSU:DAT)内。
第三层:网络层
主设备(Master devices)、从设备(Slave devices)、主机(Host)
主设备:
主设备发出命令、生成时钟并且终止传输。
从设备:
用于接收或响应命令。
主机:
为 CPU 或系统管理处理器提供了主要接口。主机必须是主从主机,并且必须支持 SMBus 主机通知协议。
总线通信协议
1. 快速命令协议(开关/使能控制)【Quick Command Protocol】
从机地址的 R/W 位表示该命令。R/W 位可用于简单地打开或关闭设备功能,或启用/禁用低功耗待机模式。该命令适用于对 SMBus 规范支持有限的非常小的设备,它还限制了简单设备总线上的数据。
2. 发送字节协议【Send Byte Protocol】
一个简单的设备可以识别它自身的从地址并且接收跟在地址后面的一个字节,多至256种组合的编码命令 。
3. 接收字节协议【Receive Byte Protocol】
接收字节协议与发送字节协议类似,唯一的区别在于数据传输的方向。一个简单的设备可能包含主机需要的信息,因此需要使用此协议。同一设备同时具有接收字节和发送字节协议。在读传输结尾需要 NACK (“1”在 ACK 位)。
4 写字节/字协议【Write Byte/Word Protocol】
写字节/字协议的第一个字节是访问命令代码。接下来的一或两个字节,依次是将要写入的数据。
主设备发送带写位的从设备地址,从设备发出响应,主设备传递命令代码,从设备在主设备发送数据字节或数据字(先发低字节)之前再次响应,从设备响应每个字节的传输,最后整个操作随着停止位结束。
5 读字节/字【Read Byte/Word】
读数据比写数据稍为复杂。
首先主机(host)必须对从设备写命令代码,然后紧跟命令代码发送重复开始位(Repeated START)来表明开始从从设备读数据,然后从设备返回一个或者两个字节数据。
注意,在重复开始位前没有停止位,NACK表示读传输结束。
6 过程调用协议【Process Call】
过程调用协议就是发送一些命令数据,等待从设备返回基于数据的值。
7 块写协议【Block Write】
块写最多允许传输 255 字节数据。
8 块读协议【Block Read】
块读最多允许传输 255 字节数据。
9 块写-块读过程调用【Block Write-Block Read Process Call】
10 SMBus 主机通知协议【SMBus Host Notify Protocol】
当一个 SMBus 主设备要和 SMBus 主机(作为从设备)通信时必须用这个协议。
11 写32位协议【Write 32 Protocol】
此协议用来对从设备发送最多32位(4字节)的数据。
12 读32位协议【Read 32 Protocol】
此协议用来对从设备读取最多32位(4字节)的数据。
13 写64位协议【Write 64 Protocol】
14 读64位协议【Read 64 Protocol】