目录
可能大家在学习SMBus协议之前,都对I2C协议有一定的了解。下面,我们通过对比来学习SMBus协议。
一.SMBus协议是I2C协议的子集吗?
网上有些资料说SMBuS是I2C协议的子集,其实,这是不正确的。
SMBus 并不是 I2C 的严格子集,而是基于 I2C 的扩展和增强版本。
1.1 兼容部分
1.物理层
SMBus 设备可以在 I2C 总线上运行(需满足电压和时序要求),反之则不一定(因 SMBus 有更严格的规范)。
2.协议框架相同
SMBus 沿用了 I2C 的核心机制,包括:
(1)双线制
SMBCLK 时钟线、SMBDAT 数据线。
(2)起始(START)和停止(STOP)条件。
(3)7 位地址寻址、ACK/NACK 确认机制。
(4)主从架构(Controller/Target)。
1.2 扩展部分
SMBus 在 I2C 基础上增加了系统管理专用功能和可靠性增强机制,使其成为 I2C 的超集而非子集。关键扩展包括:
序号 | 特性 | SMBus | I2C |
---|---|---|---|
1 | 超时机制 | 强制要求超时检测(如时钟低电平 不能超过25-35 ms) | 无超时机制,总线可能被挂起(即时钟保持低电平) |
2 | 包错误检查(PEC) | 支持 CRC-8 校验(可选但推荐) | 无强制错误检测 |
3 | 地址解析协议(ARP) | 地址解析协议(ARP) | 静态地址,依赖硬件设计解决冲突(如A0、A1引脚) |
4 | 电气规范 | 严格定义电压阈值和驱动能力 | 更宽泛的电气参数(如电压范围) |
5 | ACK/NACK 规则 | 目标设备必须响应地址(否则视为错误) | 目标设备必须响应地址(否则视为错误) |
1.3 不兼容的例子
由于SMBus的增强特性,某些情况下两者无法完全兼容: