PMBus:电源管理总线,是系统管理总线(SMBus)的变体,旨在实现电源的数字管理,与SMBus一样,它是一种基于I2C的相对慢速的双线通信协议,与这两个标准中的任何一个不同,它定义了大量特定于域的命令,而不仅仅是说如何使用读者定义的命令进行通信。
背景:
PMBus规范于2005年发布,旨在帮助重新定义嵌入式系统中的电源管理
SMBus它是建立在I2C协议之上的,是作为管理智能电池和其他系统和电源管理设备的一种手段而创建的。SMBus与I2C一样成本低,但其功能和特性更为强大
由于PMBus是SMBus协议的扩展,因此它共享其大部分物理层及总线的运行方式,但是PMBus定义了电源控制和管理组件所需的一组特定命令和数据结构
数据格式:与I2C类似,PMBus是一个由8位数据字节组成的可变长度数据包。PMBus的基本数据包结构包括一个地址字节,该地址字节由一个7位地址组成,以1位读取或写入信号结尾,然后是一个8位命令字节,然后是一个或多个8位数据字节。(可选)也可能有一个8位PEC字节,每个字节都包含自己的接收方确认,并且每个事务都包含在主机的”启动“和”停止“位之间。
I2C Primer、SMBus和PMBus有何关系?
SMBus最初是为辅助电池管理系统而开发的,使用I2C硬件,但添加了第二级软件,最终允许器件热插拔,而无需重新启动系统。Pmbus扩展了SMBus,定义了一组专门用于管理电源转换器的器件命令,并公开了设备的测量电压、电流、温度和其他属性。通常,I2C Primer、SMBus和pmbus设备可以共享总线而不会出现重大问题。
PMBus在SMBus(System Management Bus)基础上增加了一套电源配置、控制和监控规范。SMBus最初是为电池智能管理而开发的一套标准,其基于I2C协议,并针对I2C协议的弱健壮性做了如下改进:
支持SMBALERT#中断;
支持错包检测(PEC);
支持包超时;
支持START/STOP保护;
支持Host Notify Protocol协议;
PMBus支持电压、电流、功率、温度和风扇等参数的上下限监控,支持warning和fault 2级告警级别(如上图所示)。
warning告警:表示监控参数异常,系统需引起关注,但可以继续运行,系统无需任何响应措施;
fault告警:比warning告警级别高,系统会根据异常对设备的危害情况,进行设备控制电路重启(restart)或输出切断(shutdown)等处理;
任何warning或fault告警一旦上报,只有通过如下几种方式可以取消清除:
PMBus设备接收到CLEAR_FAULTS命令;
PMBus设备RESET引脚生效;
PMBus设备通过CONTROL引脚或OPERATION命令关闭并重新打开;
断电;
如果异常一直存在,那么即使进行告警清除操作,告警会马上重新上报。
支持PEC(packet error checking)用于检查数据传输正确性,一般连同数据包在包尾发送。