微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 模拟电路设计 > 基于GUI软件配置UCD3138 数字电源PMBUS 命令

基于GUI软件配置UCD3138 数字电源PMBUS 命令

时间:05-25 来源:Neil Li, Sundy Xu China Telecom Application Team 点击:

};

union FLOAT_OPEN {

float all;

struct FLOAT_ELEMENTS bit;

Uint32 word;

};

◎ 转换函数linear11_to_float()

该函数完成将来自GUI 的Linear Data Format 格式的数据转换为浮点型数据,并作为返回值返回。包含的关键代码如下。

定义变量,包括整型"mantissa"和"exponent"及结构体变量"final"。

int16 mantissa, exponent;

union FLOAT_OPEN final;

下面代码完成对输入参数的分析,并扩展到16 位。如果输入参数的尾数是负值,前5 位补1;如果是正值,前5 位补0。

if(linear11 & 0x0400)// if mantissa is negative

{ mantissa = linear11 | 0xfc00; //put it in there at minimum mantissa }

else

{ mantissa = linear11 & 0x07FF; }

下面代码首先是将mantissa 左移16 位(16+16=32),以使其数据长度符合单精度浮点型数据的长度,然后exponent 减去16,保证了原始数据的大小没有变化。

final.all = ((int32)mantissa) << 16; //set it up for minimum exponent.

exponent = (linear11 >> 11) - 16; //get exponent to match shifted value

下面代码首先判断单精度浮点型的指数是否为负。如果是负,则改写其为零,原因是对应的"输出过流保护点"不会出现负值;如果是正,则将指数信息放置在单精度浮点型数据的指数位置。

if((final.bit.EXPONENT + exponent) < 0)//if it's so low it will wrap

{ final.bit.EXPONENT = 0; }

else

{ final.bit.EXPONENT = final.bit.EXPONENT + exponent; }

上述操作完毕后,final.all 中就保存了转换后的浮点型数据,因此可以作为返回值返回。

return final.all;

2.4 操作流程图

上述所有操作的流程图见图7。

7UCD3138 接收信息流程图

3 删除GUI 信息栏

8:删除GUI 中的信息栏

此时重新编译软件并下载到UCD3138 后,GUI 中将不再会出现该信息栏,见图4。但UCD3138 软件中依然保留有对该PMBUS 命令的接收、转换和处理等函数,亦需要删除,在此不再赘述。

4 小结

通过上文两个实例的分析可知,用户在GUI 软件中可以灵活的添加或删除PMBUS 命令对应的信息栏,提高了GUI 的灵活性。该操作主要包括PMBUS 命令的使能或屏蔽及UCD3138 软件添加或删除相应处理函数等两大部分。

5 参考文献

1. UCD3138 datasheet, Texas Instruments Inc., 2011

2. PMBus_Specification_Part_I_Rev_1, 2007

3. PMBus_Specification_Part_II_Rev_1, 2010

4. ARM Optimizing C/C++ Compiler, v4.9, User's Guide, Texas Instruments, 2011

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top