基于GUI软件配置UCD3138 数字电源PMBUS 命令
};
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。
图 7:UCD3138 接收信息流程图
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
UCD3138 数字电源 PMBus GUI 德州仪器 相关文章:
- UCD3138数字电源控制器实例讲解(独家)(08-12)
- 德州仪器推出新型数字电源控制器UCD3138(03-07)
- 数字电源控制器UCD3138的数字比较器与模数转换器的应用说明(02-06)
- 以数字方式管理电源的简便方法(11-30)
- 热插拨和数字电源监控常见问答(01-18)
- PMBus——数字电源开放标准协议(01-18)