Other Parts Discussed in Post: TPS546D24A, TPS546D24, TPS543B20, TPS53688

作者:Wenhao Wu

PMBusTM是很多大电流电源管理芯片会用到的通用电源管理接口,其借用了SMBusTM的时序和命令格式,进行了电源常用命令的标准化。其中输出电压读取READ_VOUT(8Bh) 和输出电流读取READ_IOUT(8Ch) 是最常用的两个命令,但是命令返回值都是二进制,且并没有注明单位,从而给命令返回值的翻译带来了难度。另外,很多电源工程师不熟悉数字逻辑,不了解PMBus的命令格式,这进一步加大了使用带PMBus设备的困难。本文借助业界比较成功的40A可并联,带PMBus的DCDC转换器TPS546D24A,阐述输出电压读取READ_VOUT和输出电流读取READ_IOUT从返回值到十进制快速翻译方法。

输出电压READ_VOUT

TPS546D24A的输出电压是通过READ_VOUT寄存器中的值转化得来。其格式为ULINEAR16。要将寄存器中的值转化为十进制,可以分三步走。

1. 读取VOUT_MODE的值,VOUT_MODE在PMBUS的定义中,是一个1字节的寄存器,地址为20h,用于定义和输出电压有关的寄存器值的格式和步进值。

Bit[7]定义数据是相对值还是绝对值(影响过压和欠压保护相关值的定义),Bit[6:5]定义数据格式,TPS546D24只支持Linear格式,Bit[4:0]定义步进值指数N。步进值计算方法如下,注意Bit[4:0]为补码形式,转化为十进制时需要先转化为原码。

例子:VOUT_MODE=0x97。二进制为:1 00 10111,数据格式为相对值,Linear格式,步进值指数补码为10111,首位为1,该值为负数,负数的原码是补码取反再+1,为01001,十进制为-9,则步进值为2-9,为0.001953125V,1.953mV。

2. 读取READ_VOUT的值,READ_VOUT是一个2字节的寄存器,地址为8Bh,格式为Linear16,仅用于输出电压。

从前一步获得步进值之后,从READ_VOUT寄存器中转化得到十进制值,输出电压的计算方法为:

例子:READ_VOUT=0x01FD。二进制为:0000 0001 1111 1101,转化为十进制为509,则输出电压为509*1.953mV=994mV。

3. 看ADC所处的位置,如下图,内部ADC取值是从内部R1,R2分压电路中取电压采样,而输出电压由VOSNS和GOSNS/SLAVE两个引脚进行采样。

TPS546D24内部会将ADC的值进行处理,自动乘以(R1+R2)/R2进行换算。人工不需要任何处理。READ_VOUT的结果就是实际的输出电压。

另一种特殊的情况是,如果VOSNS和GOSNS/SLAVE引脚是处于外部的一个分压网络中,则READ_VOUT的值不能反应真实的输出电压值,需要人工换算,如TPS543B20这种输出电压采样结构。这种情况下真实的输出电压为:

其中R1和R2分别是下分压和上分压电阻,VOUT输出电压计算值,READ_VOUT测量的是经过分压之后R1两端的电压。

输出电流

TPS546D24的输出电流是通过READ_IOUT寄存器中的值转化而来。其格式为SLINEAR11,要将寄存器中的值转化为十进制,需要分两步走。

1. 读取CAPABILITY的值,在PMBUS的定义中,是一个1字节的寄存器,地址为19h,用于定义该设备具有的PMBUS功能。影响READ_IOUT取值的,是Bit[3],TPS546D24A仅支持LINEAR格式。

2. 读取READ_IOUT的值,READ_IOUT是一个2字节的寄存器,地址为8Ch。Bit[15:11]是指数N,Bit[10:0]为尾数A,均为补码表示(Two’s complement翻译为补码)。由于输出电流有可能为负值,A有可能为负数。

计算方法为:

例子1:READ_IOUT=0xD3F1。二进制为:11010 01111110001,则N为-6,A为1009,则输出电流为:1009*2^(-6),为15.766A。

例子2:READ_IOUT=0xD7F1。二进制为:11010 11111110001,则N为-6,A为-15,则输出电流为-0.234A。

3. 当输出电流读取不准时,可以补偿,需要通过IOUT_CAL_GAIN和IOUT_CAL_OFFSET进行补偿。可单独处理一相,也可全部一起处理,处理方法和TPS53688类似。可以参考多相控制器补偿方式。

参考文献

[1] TPS546D24A Datasheet, ZHCSMI5A, Texas Instruments.

Anonymous