资料来源:韦东山第三期 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含义:某个设备需要更多时间进行内部的处理时,它可以把SCL拉低占住I2C总线
- I2C协议:时钟频率最小值无限制,Clock Stretching时长也没有限制,时钟延长,从设备处理自身事务,就会拉低SCL
- SMBus:时钟频率最小值是10KHz,Clock Stretching的最大时间值也有限制
- 地址回应(Address Acknowledge)
- 一个I2C设备接收到它的设备地址后,是否必须发出回应信号?
- I2C协议:没有强制要求必须发出回应信号
- SMBus:强制要求必须发出回应信号,这样对方才知道该设备的状态:busy,failed,或是被移除了
- SMBus协议明确了数据的传输格式
- I2C协议:它只定义了怎么传输数据,但是并没有定义数据的格式,这完全由设备来定义
- SMBus:定义了几种数据格式(后面分析)
- 比如读EEPROM时,涉及2个操作:
- 把存储地址发给设备
- 读数据
11、Packet Error Checking(PEC)
SMBus和IIC使用建议:
1、因为很多设备都实现了SMBus,而不是更宽泛的I2C协议,所以优先使用SMBus。
2、即使I2C控制器没有实现SMBus,软件方面也是可以使用I2C协议来模拟SMBus。
所以:Linux建议优先使用SMBus。
标签:协议,I2C,信号,Byte,SMBus,设备 From: https://www.cnblogs.com/lethe1203/p/18105650