主题中讨论的其他器件:UCD3028
您好,我最近在学习您们的《 UCD3028 数字电源软件设计说明》文档,有些问题不太懂,想向您们请教。
有疑惑的章节如下:μ A
"2.4 GUI 软件显示值的转换与实现
1、显示值算法如下:IO=IO×R15×331×(4096/2.5)×(0.25×K×1/216)×0.25,由此可计算出K =15711,因此有如下代码:
#define IOUT_ADC_TO_TO_TOICT_SCALER 标称值(15711)
2、函数的具体实现 μ A
在函数 PMBus_Read_Iout_handler ()中调用函数 unsigned_short_q_乘 法(),并完成数据格式的转换,
如下所示:μ A
临时= unsigned_short_q_乘 法(Iout >> 2、K);
PMBus_Number_of _Bytes = 2;
PMBus_buffer[1]=((临时& 0x700)>> 8)+ 0x F0;
PMBus_buffer[0]=临时& 0xff;
而函数 unsigned_short_q_乘 法()完成两个输入值的乘积计算并对结果进行转换,如下所示:
乘积=(unsigned int)乘法器)*(unsigned int)乘法器);
return (signed short)(((product + 0x8000)>> 16);//8000用于舍入"
问题如下:μ A
Q1:显示值算法如下:IO=IO×R15×331×(4096/2.5)×(0.25×K×1/216)×0.25,这个公式的前半部分“IO×R15×331×(4096/2.5)”我能理解,是和调理电路与采样量化有关,但公式的后半部分“ ×(0.25×K×1/216)×0.25,我就不懂了。不知道这些系数是怎么来的,与什么相关,0.25、1/216、0.25这些系数是怎么来的?
Q2:Temporary = unsigned_short_q_m倍增(Iout >> 2、K);
而函数 unsigned_short_q_乘 法()完成两个输入值的乘积计算并对结果进行转换,如下所示:
乘积=(unsigned int)乘法器)*(unsigned int)乘法器);
return (signed short)(((product + 0x8000)>> 16);//8000用于舍入"
那么,Temporary =(Iout/4*K+2e15)/2e16,是这样理解的吧?可是这个temporary 的值是什么意思,感觉和前面的公式对应不上。
这个GUI转换让我很糊涂,麻烦您们指点一二,谢谢!μ A