当前位置: 首页 > news >正文

SMBus协议(二):与I2C协议的对比

        可能大家在学习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的扩展
序号特性SMBusI2C
1超时机制强制要求超时检测(如时钟低电平 不能超过25-35 ms)无超时机制,总线可能被挂起(即时钟保持低电平)
2包错误检查(PEC)支持 CRC-8 校验(可选但推荐)无强制错误检测
3地址解析协议(ARP)地址解析协议(ARP)静态地址,依赖硬件设计解决冲突(如A0、A1引脚)
4电气规范严格定义电压阈值和驱动能力更宽泛的电气参数(如电压范围)
5ACK/NACK 规则目标设备必须响应地址(否则视为错误)目标设备必须响应地址(否则视为错误)

1.3 不兼容的例子

        由于SMBus的增强特性,某些情况下两者无法完全兼容:

SMBus与I2C不兼容的例子
序号示例描述
1超时机制I2C 主控可能不支持 SMBus 的超时检测,导致 SMBus 设备在长时间时钟拉伸时被误判为故障。
2PEC 校验SMBus 设备发送的 PEC 字节可能被 I2C 设备视为无效数据
3地址冲突I2C 无法处理 SMBus 的动态地址分配(ARP),可能导致地址冲突

1.4 实际应用

1.SMBus 设备可在 I2C 总线上运行情况
        若 SMBus 设备不依赖超时、PEC 或 ARP 功能,且满足 I2C 电气规范,则可兼容。

2.I2C 设备在 SMBus 总线上可能受限
        I2C 设备若不符合 SMBus 的严格规范(如必须响应地址),可能被 SMBus 主控视为故障。

二.基于OSI模型对比

        SMBus 和I2C都遵循 OSI 模型设计,下面以OSI模型的角度对两者比较。

2.1 物理层

2.1.1 相同点

1.物理接口
        两者均使用双线制(SCL时钟线 + SDA数据线)的同步串行通信。

2.总线拓扑
        支持多主从架构,所有设备通过总线并联连接。

2.1.2 区别

SMBus与I2C在物理层的差异
序号不同点SMBusI2C
1电压范围通常3.3V(兼容1.8V-5V设备)更宽泛(1.8V-5V,具体由设备决定)
2上拉电阻严格规定(例如1kΩ-10kΩ)无严格限制,根据总线电容调整
3总线电容限制≤400pF(更严格)无明确限制(通常≤400pF)

2.1.3 小结

       SMBus在物理层对电压和电气特性提出了更严格的规范,以增强系统稳定性;I2C则更灵活,适配性更广。

2.2 数据链路层

2.2.1 相同点

1.帧结构
        均采用相同的帧格式:

起始位(Start Bit)+ 地址位(7/10位)+ 读写位 + 数据 + 停止位(Stop Bit)

2.仲裁机制

        支持多主设备通过总线仲裁实现冲突避免。

2.2.2 区别

SMBusy与I2C在数据链路层的区别
序号不同点SMBusI2C
1时序规范严格(如SCL低电平35ms超时)较宽松,依赖具体实现
2错误检测支持CRC校验(PEC模式)无原生校验机制
3超时机制强制总线空闲超时复位无强制超时要求
4时钟速率

(1)标准模式:10 kHz - 100 kHz

(2)快速模式:支持400 kHz(SMBus 3.0+)

(3)高速模式:支持1 MHz(SMBus 3.3+)

(4)超低功耗模式:可选低功耗设计(如10 kHz以下)

(1)标准模式:100 kHz

(2)快速模式:400 kHz(Fast Mode)

(3)高速模式:3.4 MHz(Fast Mode)

(4)超低功耗模式:无专用低功耗模式

2.2.3 小结

        SMBus在数据链路层引入了超时复位、CRC校验等增强功能,提升了可靠性和鲁棒性;I2C则更注重传输速率的灵活性。   

2.3 Layer3~6

        两者均为总线型协议,直接通过地址寻址通信,无需网络层(路由)、传输层(端到端控制)、会话层(对话管理)或表示层(数据格式转换)。

2.4 应用层

        I2C 协议本身不定义应用层,具体功能由设备实现。
        而SMBus定义了应用层协议,如下表所示:

SMBus应用层协议
序号协议作用应用场景
1Quick Command发送单字节命令(无数据)设备复位命令
2Send/Receive Byte发送或接收单字节数据读取设备状态寄存器
3Write/Read Word读写 16 位数据配置传感器阈值
4Block Write/Read读写可变长度数据块(≤255 字节)批量写入 EEPROM 数据
5Process Call写命令后读取响应(原子操作)触发传感器采样并读取结果
6Host Notify设备通过 SMBALERT# 信号主动通知主机电池电量不足告警

 三.总结

        

I2C 与 SMBus 的对比
序号不同点I2CSMBus
1设计目标通用低速外设通信系统管理(电源、电池、传感器)
2超时机制强制检测(如 25-35 ms 超时)
3错误检测可选 ACK/NACK强制 PEC(CRC-8)
4地址管理静态地址,冲突需硬件解决动态地址解析(ARP)
5电压容差宽松(0.8V - 5.5V)严格(如 VIH=1.35V)
6典型应用EEPROM、显示屏智能电池、温度监控、电源管理

相关文章:

  • 5、linux c 线程 - 上
  • 基于STM32的两路电压测量仿真设计Proteus仿真+程序设计+设计报告+讲解视频
  • 使用LVS的 NAT 模式实现 3 台RS的轮询访问
  • (学习总结30)Linux 进程优先级、进程切换和环境变量
  • 使用LLM 构建MCP服务端和客户端
  • 信息安全和病毒防护——防火墙的作用
  • SFT和RLHF是什么意思?
  • Axure项目实战:智慧城市APP(四)医疗信息(动态面板、选中交互应用)
  • Jboss中间件漏洞攻略
  • java学习笔记6
  • 【云馨AI-大模型】大模型的开发和应用中,Python、PyTorch和vLLM关系概括
  • 从扩展黎曼泽塔函数构造物质和时空的结构-1
  • netty框架概述
  • 蓝桥云客 合并数列
  • 01、聊天与语言模型
  • [python]IsaacGym安装
  • 多线程编程
  • Android应用退出后不在任务栏显示
  • 如何做好需求管理培训
  • Rk3588,Opencv读取Gmsl相机,Rga yuv422转换rgb (降低CPU使用率)
  • 北斗系统全面进入11个国际组织的标准体系
  • 蔡建忠已任昆山市副市长、市公安局局长
  • 广西壮族自治区政府主席蓝天立任上被查
  • 李成钢:近期个别经济体实施所谓“对等关税”,严重违反世贸组织规则
  • 吉利汽车一季度净利润大增264%,称整合极氪后实现整体效益超5%
  • 今年有望投产里程已近3000公里,高铁冲刺谁在“狂飙”?