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](https://img2024.cnblogs.com/blog/3261801/202403/3261801-20240330161349114-230663151.png)
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使用建议: