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

embedded/2025/1/17 12:01:34/

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

转载:

输出电压读取READ_VOUT和输出电流读取READ_IOUT的十进制快速翻译方法-电子发烧友网


http://www.ppmy.cn/embedded/154649.html

相关文章

Cursor 学习计划

我的 Cursor 学习计划 在当今这个科技飞速发展的时代,各种新兴的开发工具不断涌现,为我们的编程之旅带来了更多的便利和可能性。而 Cursor 作为一款备受瞩目的代码编辑器,以其强大的 AI 辅助编程功能吸引了众多开发者的目光。为了能够更好地…

戴尔电脑开机出现MBR和GPT处理

Windows无法安装到这个磁盘,选中的磁盘采用gpt分区形式解决方法。 方法二:转换磁盘格式为MBR,但是会清除所有磁盘分区 我们在这个错误提示的时候,不要重启电脑,直接在键盘上按下“ShiftF10”组合键,这时就会弹出CMD命…

AXIOS的引入和封装

Axios 是一个用于在浏览器和 Node.js 中进行 HTTP 请求的流行库。以下是 Axios 的基本使用说明,包括安装和定义。 一、安装 pnpm add axios 二、使用 import axios from axios; axios.get(http://139.186.166.35:3001/api/testGet).then(response > {console…

如何实现工作流自动化?实用案例分享

一、CI/CD 与自动化运维概述 (一)CI/CD 概念解析 在软件开发领域,CI/CD 是两个极为重要的实践,分别代表持续集成(Continuous Integration)和持续交付 / 持续部署(Continuous Delivery/Continuou…

Golang——包的循环引用问题(import cycle not allowed)和匿名导入

本文详细介绍Golang中包的循环引用问题(import cycle not allowed)和匿名导入问题。 文章目录 循环引用问题优势设计原因解决方法 明确导入的包必须使用匿名导入 补充不允许隐式类型转换 循环引用问题 Go 的设计哲学是避免复杂的循环依赖,从而强制开发者更清晰地思…

标准Android开发jdk和gradle和gradle AGP和AndroidStudio对应版本

还在为用什么gradle版本烦恼吗?编译不过IDE不开始下载第三方库吗?是时候匹配下你的gradle编译版本了: 1.Gradle 各版本支持的 JDK 版本范围如下: Gradle 版本最低支持 JDK最高支持 JDK7.0 - 7.6JDK 8JDK 178.0 - 8.2JDK 11JDK 1…

基于单片机的智能输液系统

研究智能输液系统具有深远的意义。首先,从患者角度来看,智能输液系统能够确保输液过程的稳定性和安全性,减少了因人为操作失误而引发的医疗事故,从而提升了患者的治疗效果和满意度。其次,从医护人员角度来看&#xff0…

shell练习(3)

源码编译安装httpd 2.4,提供系统服务管理脚本并测试 (建议两种方法实现) 下载链接:https://dlcdn.apache.org/httpd/httpd-2.4.62.tar.gz 先装C 和 C 编程中常用的工具 [rootopenEuler-22 ~]# yum install gcc gcc-c make -y再查看…