SMBus协议

资料来源:韦东山第三期
 
SMBus: System Management Bus,系统管理总线。
SMBus最初的目的是为智能电池、充电电池、其他微控制器之间的通信链路而定义的。
SMBus也被用来连接各种设备,包括电源相关设备,系统传感器,EEPROM通讯设备等等。
SMBus 为系统和电源管理这样的任务提供了一条控制总线,使用 SMBus 的系统,设备之间发送和接收消息都是通过 SMBus,而不是使用单独的控制线,这样可以节省设备的管脚数。
SMBus是基于I2C协议的,SMBus要求更严格,SMBus是I2C协议的子集。
 
SMBus有哪些更严格的要求?跟一般的I2C协议有哪些差别?
  • VDD的极限值不一样
    • I2C协议:范围很广,甚至讨论了高达12V的情况
    • SMBus:1.8V~5V
  • 最小时钟频率、最大的
Clock Stretching
    • Clock Stretching含义:某个设备需要更多时间进行内部的处理时,它可以把SCL拉低占住I2C总线
    • I2C协议:时钟频率最小值无限制,Clock Stretching时长也没有限制,时钟延长,从设备处理自身事务,就会拉低SCL
    • SMBus:时钟频率最小值是10KHz,Clock Stretching的最大时间值也有限制
  • 地址回应(Address Acknowledge)
    • 一个I2C设备接收到它的设备地址后,是否必须发出回应信号?
    • I2C协议:没有强制要求必须发出回应信号
    • SMBus:强制要求必须发出回应信号,这样对方才知道该设备的状态:busy,failed,或是被移除了
  • SMBus协议明确了数据的传输格式
    • I2C协议:它只定义了怎么传输数据,但是并没有定义数据的格式,这完全由设备来定义
    • SMBus:定义了几种数据格式(后面分析)
REPEATED START Condition(重复发出S信号)
  • 比如读EEPROM时,涉及2个操作:
    • 把存储地址发给设备
    • 读数据
SMBus协议在写、读之间,可以不发出P信号,而是直接发出S信号:这个S信号就是REPEATED START,可以省略了一个P信号
0
SMBus的用途:
1、SMBus Quick Command
2、SMBus Receive Byte
3、SMBus Read Byte
4、SMBus Send Byte
5、SMBus Read Word
6、SMBus Write Byte
7、SMBus Write Word
8、SMBus Block Read
9、SMBus Block Write
10、SMBus Block Write -Block Read Process Call

 11、Packet Error Checking(PEC)

 

SMBus和IIC使用建议:

1、因为很多设备都实现了SMBus,而不是更宽泛的I2C协议,所以优先使用SMBus。

2、即使I2C控制器没有实现SMBus,软件方面也是可以使用I2C协议来模拟SMBus。

所以:Linux建议优先使用SMBus

 
posted @ 2024-03-30 16:14  lethe1203  阅读(95)  评论(0编辑  收藏  举报