1、介绍
系统管理总线(SMBus)是一个两线接口。通过它,各设备之间以及设备与系统的其他部分之间可以互相通信。它基于I2C操作原理。SMBus为系统和电源管理相关的任务提供一条控制总线。一个系统利用SMBus可以和多个设备互传信息,而不需使用独立的控制线路。
系统管理总线(SMBus)标准涉及三类设备。从设备,接收或响应命令的设备。主设备,用来发布命令,产生时钟和终止发送的设备。主机,是一种专用的主设备,它提供与系统CPU的主接口。主机必须具有主-从机功能,并且必须支持SMBus通报协议。在一个系统里只允许有一个主机。
2、SMBus和I2C之间的相似点
2条线的总线协议(1个时钟,1个数据) + 可选的SMBus提醒线
主-从通信,主设备提供时钟
多主机功能
SMBus数据格式类似于I2C的7位地址格式
3、SMBus和I2C之间的不同点
下表为SMBus和I2C的不同点。
SMBus与I2C的比较
SMBus I2C
最大传输速度 100kHz 最大传输速度400kHz
最小传输速度 10kHz 无最小传输速度
35ms时钟低超时 无时钟超时
固定的逻辑电平 逻辑电平由VDD决定
不同的地址类型(保留、动态等) 7位、10位和广播呼叫从地址类型
不同的总线协议(快速命令、处理呼叫等) 无总线协议
4、SMBus应用用途
利用系统管理总线,设备可提供制造商信息,告诉系统它的型号/部件号,保存暂停事件的状态,报告不同类型的错误,接收控制参数,和返回它的状态。SMBus为系统和电源管理相关的任务提供控制总线。
5、设备标识
在系统管理总线上,任何一个作为从模式的设备都有一个唯一的地址,叫做从地址。保留的从地址表请参考2.0版的SMBus规范(http://smbus.org/specs/)。
6、总线协议
SMBus技术规范支持9个总线协议。有关这些协议的详细资料和SMBus地址类型,请参考2.0版的SMBus规范(http://smbus.org/specs/)。这些协议由用户的软件来执行。
7、地址解析协议(ARP)
SMBus从地址冲突可以通过给每个从设备动态分配一个新的唯一地址来解决。ARP有以下的属性:
地址分配利用标准SMBus物理层仲裁机制
当设备维持供电期间,分配的地址仍保持不变,允许设备在断电时保留其地址。
在地址分配后,没有额外的SMBus的打包开销(也就是说访问分配地址的设备与访问固定地址的设备所用时间是一样的)。
任何一个SMBus主设备可以遍历总线。
8、唯一的设备标识符(UDID)
为了提供一种为进行地址分配目的而区分每个设备的机制,每个设备必须拥有一个唯一的设备标识符。
关于在ARP上128位的UDID细节的信息,参考2.0版的SMBus规范(http://smbus.org/specs/)。
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规范(http://smbus.org/specs/)。
10、超时错误
在定时规范上I2C和SMBus之间有很多差别。SMBus定义一个时钟低超时,35ms的超时。SMBus规定TLOW:SEXT为从设备的累积时钟低扩展时间。SMBus规定TLOW:MEXT为主设备的累积时钟低扩展时间。更多超时细节请参考2.0版的SMBus规范(http://smbus.org/specs/)。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提醒响应地址。