0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

输出电压读取READ_VOUT和输出电流读取READ_IOUT的十进制快速翻译方法

电子设计 来源:Wenhao Wu 作者:Wenhao Wu 2021-04-06 11:36 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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,用于定义和输出电压有关的寄存器值的格式和步进值。

o4YBAGBr1aqADJlJAAF4CqNPIbU049.png

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

pIYBAGBr1myAIIU6AAAInqjehpw656.png

例子: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,仅用于输出电压。

pIYBAGBr1cCAJC6CAACm6oDv5ws093.png

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

pIYBAGBr1niAPcNtAAANuogDPbU864.png

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

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

pIYBAGBr1eGAZEr7AACnPX_HS1Q769.png

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

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

o4YBAGBr1fGAQk9oAAAeJp8ZSbw740.png

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

o4YBAGBr1gaAJgdEAABXyUxVAO0971.png

输出电流

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

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

pIYBAGBr1iGASy0oAAF3r9NdVZg535.png

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

o4YBAGBr1jmAc6qcAADogA4xJDo296.png

计算方法为:

o4YBAGBr1kiAQic9AAANhjmXslk667.png

例子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类似。可以参考多相控制器补偿方式。

编辑:hfy

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 转换器
    +关注

    关注

    27

    文章

    9365

    浏览量

    155095
  • 控制器
    +关注

    关注

    114

    文章

    17638

    浏览量

    190207
  • 寄存器
    +关注

    关注

    31

    文章

    5588

    浏览量

    129047
  • 电源管理
    +关注

    关注

    117

    文章

    6548

    浏览量

    147526
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何从cyclone-FX读取十六进制文件?

    读取十六进制文件的方法,但我无法做到。 如果您知道如何从 cyclone-FX 读取十六进制文件,请告诉我。
    发表于 04-01 07:42

    原创:labview 读取补码表示的有符号16位数时,如何解析成负数

    值:4 294 964 157)将其转为位二进制数,先减去1,再将除符号位外的位数取反,得到的二进制数即为读取到的负数的原码,4 294 967296 3、将二进制原码,利用8421转
    发表于 02-21 22:12

    ADS1255 AIN输入负电压时,AIN1接地,读取输出电压值不正确是为什么?

    您好!AIN0、AIN1作为差分输入,1)当AIN0输入正电压时,AIN1接GND,读取输出电压值正确;2)当AIN输入负电压时,AIN
    发表于 02-14 07:22

    74HC390;74HCT390双十进制波纹计数器规格书

    电子发烧友网站提供《74HC390;74HCT390双十进制波纹计数器规格书.pdf》资料免费下载
    发表于 02-09 15:16 3次下载
    74HC390;74HCT390双<b class='flag-5'>十进制</b>波纹计数器规格书

    74HC42 BCD至十进制解码器规格书

    电子发烧友网站提供《74HC42 BCD至十进制解码器规格书.pdf》资料免费下载
    发表于 02-08 15:23 0次下载
    74HC42 BCD至<b class='flag-5'>十进制</b>解码器规格书

    火语言如何循环读取表格

    描述 从MySQL读取数据(包含列名:id,name,count,create_date)输出到表格类型变量dt,用For循环读取表格每行数据,通过dt.Rows[i]['id']取表格第i行列
    的头像 发表于 02-07 15:11 513次阅读
    火语言如何循环<b class='flag-5'>读取</b>表格

    DA2932用一路输出锯齿波(iout1),一路输出rom里存储的正弦波(iout2),为何iout2那路的信号叠加上了iout1的信号?

    DA2932是一款双路输出DA,我用一路输出锯齿波(iout1),一路输出rom里存储的正弦波(iout2),
    发表于 02-06 07:50

    DAC908数字输入与模拟输出不是datasheet上描述的二进制码?

    都为250mv左右,但是实际测试结果显然和datasheet上说的不对啊,好像实际测试,发送128时,/IOUT输出20mA电流IOUT输出
    发表于 01-21 08:01

    DAC7750输出端短路电流、开路电压,情况如何?

    开路均有可能。 我的问题是: (1)当负载电阻为零,即Iout短路时,此时的输出电流仍然是我设置的某个电流值吗?如0.5mA? (2)当负载电阻断开,即
    发表于 01-17 08:27

    AFE4400的CNTROL0寄存器的SPI_READ位设置成1才能读取寄存器的值,读完了想修改寄存器的值怎么办?

    AFE4400的CNTROL0寄存器的SPI_READ位设置成1才能读取寄存器的值,那读完了想修改寄存器的值怎么办呢,这个时候是read模式,无法 改变control0寄存器的值,难道只有reset才能将SPI_
    发表于 01-14 08:09

    DAC8760的IoutVout都有两个TVS防护,这两个各是什么作用?

    1、DAC8760的IoutVout都有两个TVS防护,这两个各是什么作用? 2、如果我只希望DAC8760输出0-5V和4-20mA,输出电路的两个TVS都要加么?
    发表于 12-30 06:49

    bcd与十进制之间的关系

    4位二进制数来表示1位十进制数中的0~9这10个数码,是一种二进制的数字编码形式。 表示方法 :在BCD码中,每一位十进制数都被编码为4位二
    的头像 发表于 12-20 17:15 3865次阅读

    XTR115电路测试时用数字万用表测量IOUT与地之间的电流,为什么没有电流输出

    采用的XTR115电路,测试时用数字万用表测量IOUT与地之间的电流,发现没有电流输出,请问是什么问题?
    发表于 12-16 07:23

    DAC904后接差分放大器后,Iout输出不准,误差20mv是怎么回事?

    如图,DAC904后接了差分放大器放大5倍,不过运放使用了opa690,依据DAC904数据手册上的公式算出电压,可实测时输出电压时,Iout 端比计算值高20mv左右,
    发表于 12-13 15:29

    ADS8681 SPI协议发送READ_HWORD指令,读取下一次CS为低时的数据总是错误的?

    ADS8681指令是READ_HWORD+地址+0x00+0x00。spi分四次发送。 下一帧时读取spi,存放在uint8_t read[4] 中。按理来说复位后数据全为零。但我独到的数据永远是错误的,杂乱的。这是为什么?请
    发表于 12-13 10:08