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

    文章

    8204

    浏览量

    141760
  • 控制器
    +关注

    关注

    112

    文章

    15217

    浏览量

    171156
  • 寄存器
    +关注

    关注

    30

    文章

    5028

    浏览量

    117712
  • 电源管理
    +关注

    关注

    112

    文章

    6013

    浏览量

    141101
收藏 人收藏

    评论

    相关推荐

    快速判断LDO VOUT的变化方向

    我们知道,在LDO或者开关变换器里,VIN(输入电压)以及i(负载电流)的突变会引起VOUT输出电压)的瞬态变化,引起overshoot(
    的头像 发表于 11-07 17:29 373次阅读
    <b class='flag-5'>快速</b>判断LDO <b class='flag-5'>VOUT</b>的变化方向

    DS1302写数据写BCD码还是十进制吗?

    ); //写入13年,2013 write1302(0x8a0x03); //写入星期三 write1302(0x8e0x80); } 以下是一段读取DS1302数据的程序,返回的m值是不是就是十进制数值呢
    发表于 10-26 06:35

    如何使用Python和pandas库读取、写入文件

    = pd.read_excel(' data .xlsx') 此代码中,我们首先导入 pandas 库并将其重命名为 pd。使用 pd.read_excel() 函数读取 'data.xlsx' 文件并将其存储
    的头像 发表于 09-11 17:52 784次阅读

    分析电流检测运放电路,输入电流I和输出电压Vout的关系

    分析电流检测运放电路,输入电流I和输出电压Vout的关系
    发表于 08-21 22:01

    READ2303G 数据表

    READ2303G 数据表
    发表于 07-04 20:29 0次下载
    <b class='flag-5'>READ</b>2303G 数据表

    READ2304G 数据表

    READ2304G 数据表
    发表于 07-04 20:29 0次下载
    <b class='flag-5'>READ</b>2304G 数据表

    READ2354J 数据表

    READ2354J 数据表
    发表于 06-30 20:36 0次下载
    <b class='flag-5'>READ</b>2354J 数据表

    READ2353J 数据表

    READ2353J 数据表
    发表于 06-30 20:36 0次下载
    <b class='flag-5'>READ</b>2353J 数据表

    READ4354J 数据表

    READ4354J 数据表
    发表于 06-30 19:28 0次下载
    <b class='flag-5'>READ</b>4354J 数据表

    READ4353J 数据表

    READ4353J 数据表
    发表于 06-30 19:27 0次下载
    <b class='flag-5'>READ</b>4353J 数据表

    READ4304G 数据表

    READ4304G 数据表
    发表于 06-30 19:27 0次下载
    <b class='flag-5'>READ</b>4304G 数据表

    READ4303G 数据表

    READ4303G 数据表
    发表于 06-30 19:27 0次下载
    <b class='flag-5'>READ</b>4303G 数据表

    ZMOD4410 编程手册-Read Me

    ZMOD4410 编程手册 - Read Me
    发表于 06-30 19:02 0次下载
    ZMOD4410 编程手册-<b class='flag-5'>Read</b> Me

    python文件的读取

    文件读取的步骤: 打开文本文件对象 写入数据 文件的读取一般使用如下三个方法read([size]) : 从文件中读取 size 个字符
    的头像 发表于 06-21 17:23 1005次阅读
    python文件的<b class='flag-5'>读取</b>

    请教下rt_device_read()函数的问题?

    rt_size_t rt_device_read(rt_device_t dev, rt_off_t pos, void buffer, rt_size_t size);描述:pos 读取数据偏移量
    发表于 05-12 15:34