基于GUI软件配置UCD3138数字电源PMBUS命令
器中的浮点型数据格式
◎ 定义结构体和联合体
如下, 定义了结构体FLOAT_ELEMENTS , 用以保存上文提到的浮点型数据。还定义了联合体FLOAT_OPEN,成员包括浮点型数据"all"和结构体类型数据"bit",用以保存转换完毕的浮点型数据。
struct FLOAT_ELEMENTS {
Uint32 SIGN:1;
Uint32 EXPONENT:8;
Uint32 MANTISSA:23;
};
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 软件添加或删除相应处理函数等两大部分。
GUI软件 UCD3138 PMBus 数字电源 相关文章:
- 选择数字电源集成电路(IC)的秘诀(07-03)
- 数字电源控制器UCD3138的Single Frame和前馈功能说明(10-20)
- 数字电源控制器UCD3138的逐周期保护功能说明(10-22)
- 如何挑选数字电源集成电路?(08-05)
- 电源管理 IC 以数字方式监视和控制 8 个电源(03-05)
- 新功能简化高可靠性电源设计(05-18)