SMBus 应用于移动PC和桌面PC系统中的低速率通讯。它主要是希望通过一条廉价并且功能强大的总线(由两条线组成),来控制主板上的设备并收集相应的信息。SMBus 为系统和电源管理这样的任务提供了一条控制总线,使用 SMBus 的系统,设备之间发送和接收消息都是通过 SMBus,而不是使用单独的控制线,这样可以节省设备的管脚数。使用 SMBus,设备还可以提供它的生产信息,告诉系统它的型号,部件号等,针对挂起事件保存它的状态,报告不同类别的错误,接收控制参数,并返回它的状态等。SMBus器件存在现有7层OSI网络模型中的前3层,即物理层,数据链路层和网络层。
SMBus 应用于移动PC和桌面PC系统中的低速率通讯。它主要是希望通过一条廉价并且功能强大的总线(由两条线组成),来控制主板上的设备并收集相应的信息。SMBus 为系统和电源管理这样的任务提供了一条控制总线,使用 SMBus 的系统,设备之间发送和接收消息都是通过 SMBus,而不是使用单独的控制线,这样可以节省设备的管脚数。使用 SMBus,设备还可以提供它的生产信息,告诉系统它的型号,部件号等,针对挂起事件保存它的状态,报告不同类别的错误,接收控制参数,并返回它的状态等。 SMBus器件存在现有7层OSI网络模型中的前3层,即物理层,数据链路层和网络层。
SMBus最初的目的是为智能电池,充电电池和与其他系统通信的微控制器之间的通信链路而定义的。SMBus也被用来连接各种设备,包括电源相关设备,系统传感器,EEPROM通讯设备等等。 SMBus 最适用于笔记本电脑上,检测各元件状态并更新硬件设置引脚 (pull-high 或 pull-low)。例如,将不存在的 DIMM 时钟关闭,或检测电池低电压状态。 SMBus 的数据传输率只有 100Kbit/s;这允许单一主机与 CPU 和多个主从硬盘通讯并收发数据。SMBus 也可用于免跳线设计的主板上。
系统管理总线(SMBus)是一个两线接口。通过它,各设备之间以及设备与系统的其他部分之间可以互相通信。它基于I2C操作原理。SMBus为系统和电源管理相关的任务提供一条控制总线。一个系统利用SMBus可以和多个设备互传信息,而不需使用独立的控制线路。
系统管理总线(SMBus)标准涉及三类设备。从设备,接收或响应命令的设备。主设备,用来发布命令,产生时钟和终止发送的设备。主机,是一种专用的主设备,它提供与系统CPU的主接口。主机必须具有主-从机功能,并且必须支持SMBus通报协议。在一个系统里只允许有一个主机。
2条线的总线协议(1个时钟,1个数据) + 可选的SMBus提醒线
主-从通信,主设备提供时钟
多主机功能
SMBus数据格式类似于I2C的7位地址格式
下表为SMBus和I2C的不同点。
SMBus与I2C的比较
SMBus | I2C |
最大传输速度 100kHz | 最大传输速度400kHz |
最小传输速度 10kHz | 无最小传输速度 |
35ms时钟低超时 | 无时钟超时 |
固定的逻辑电平 | 逻辑电平由VDD决定 |
不同的地址类型(保留、动态等) 7位、 10位和广播呼叫从地址类型 | 不同的总线协议(快速命令、 处理呼叫等) 无总线协议 |
4、SMBus应用用途
利用系统管理总线,设备可提供制造商信息,告诉系统它的型号/部件号,保存暂停事件的状态,报告不同类型的错误,接收控制参数,和返回它的状态。SMBus为系统和电源管理相关的任务提供控制总线。
5、设备标识
在系统管理总线上,任何一个作为从模式的设备都有一个唯一的地址,叫做从地址。保留的从地址表请参考2.0版的SMBus规范
6、总线协议
SMBus技术规范支持9个总线协议。有关这些协议的详细资料和SMBus地址类型,请参考2.0版的SMBus规范)。这些协议由用户的软件来执行。
7、地址解析协议(ARP)
SMBus从地址冲突可以通过给每个从设备动态分配一个新的唯一地址来解决。ARP有以下的属性:
地址分配利用标准SMBus物理层仲裁机制
当设备维持供电期间,分配的地址仍保持不变,允许设备在断电时保留其地址。
在地址分配后,没有额外的SMBus的打包开销(也就是说访问分配地址的设备与访问固定地址的设备所用时间是一样的)。
任何一个SMBus主设备可以遍历总线。
8、唯一的设备标识符(UDID)
为了提供一种为进行地址分配目的而区分每个设备的机制,每个设备必须拥有一个唯一的设备标识符。
关于在ARP上128位的UDID细节的信息,参考2.0版的SMBus规范
9、SMBus提醒模式
SMBus提醒是一个带中断线的可选信号,用于那些希望扩展他们的控制能力而牺牲一个引脚的设备。SMBalert和SCL和SDA信号一样,是一种线与信号。SMBalert通常和SMBus广播呼叫地址一起使用。与SMBus有关的消息为2字节。单一的从设备可以通过SMBalert发信号给主机表示它希望进行通信,这可通过设置I2C_CR1寄存器上的alert位实现。主机处理该中断并通过提醒响应地址ARA(alert Response Address,地址值为0001100x)访问所有SMBalert设备。只有那些将SMBalert拉低的设备能应答ARA。此状态是由I2C_SR1寄存器中的SMBalert状态标记来标识的。主机执行一个修改过的接收字节操作。由从发送设备提供的7位设备地址被放在字节的7个最高位上,第八个位可以是0或1。如果多个设备把SMBalert拉低,最高优先级设备(最小的地址)将在地址传输期间通过标准仲裁赢得通信权。在确认从地址后,此设备不得再拉低它的SMBalert,如果当信息传输完成后,主机仍看到SMBalert低,就知道需要再次读ARA。没有执行SMBalert信号的主机可以定期访问ARA。有关SMBus提醒模式的更多详细资料,请参考2.0版的SMBus规范
10、超时错误
在定时规范上I2C和SMBus之间有很多差别。SMBus定义一个时钟低超时,35ms的超时。SMBus规定TLOW:SEXT为从设备的累积时钟低扩展时间。SMBus规定TLOW:MEXT为主设备的累积时钟低扩展时间。更多超时细节请参考2.0版的SMBus规范I2C_SR1中的状态标志Timeout或Tlow错误表明了这个特征的状态。
11、如何使用SMBus模式的接口
为了从I2C模式切换到SMBus模式,应该执行下列步骤:
设置I2C_CR1寄存器中的SMBus位
按应用要求配置I2C_CR1寄存器中的SMBTYPE和ENARP位。
如果你想把设备配置成主设备,产生起始条件的步骤见15.4.2 I2C主模式。否则,参见15.4.1I2C从模式。
软件程序必须处理多种SMBus协议。
如果ENARP=1且SMBTYPE=0,使用SMB设备默认地址。
如果ENARP=1且SMBTYPE=1,使用SMB主设备头字段。
如果SMBalert=1,使用SMB提醒响应地址。