基于GUI软件配置UCD3138 数字电源PMBUS 命令
摘要
可与数字电源UCD3138 配套使用的Fusion Digital Power Designer 软件拥有Graphical User Interface (GUI) 界面,用户可在其上编辑数据并通过对应的PMBUS 命令与UCD3138 的软件交互。在GUI界面中,用户可以灵活的增加GUI软件支持的PMBUS 命令,亦可以删除,因此大幅提高了GUI 的灵活性。本文通过两个实例,详细分析了如何增加和删除GUI 软件可以支持的PMBUS 命令。
1数字电源GUI软件及其配置功能
数字电源GUI 软件运行于用户计算机,可以借助PMBUS 总线与UCD3138 数字电源通信,完成配置、设计和监控等功能。用户可以灵活的在界面中添加PMBUS 命令支持的信息,亦可以在其中删除。
1.1数字电源GUI软件
图1 所示的是与UCD3138 数字电源芯片配套使用,可用来对基于UCD3138 数字电源进行配置,设计及监控的GUI 软件:Fusion Digital Power。该软件安装并运行于用户的计算机上,通过PMBUS 总线与UCD3138 的软件进行交互。
图1:数字电源GUI软件
该软件主要包含以下功能:
1)配置:通过PMBUS 命令对数字电源的参数进行配置,如输入电压的欠压保护点(对应的PMBUS 命令为VIN_ON 和VIN_OFF),输出电流的过流保护(对应的PMBUS 命令为IOUT_OC_FAULT_LIMIT)。
2)设计:主要是对数字电源的环路参数进行设计和模拟。
3)监控:可以实时监控输入电压,输入电流和温度等诸多信息。
4)状态:可以显示电源板输入和输出等状态,告知用户当前是否存在故障。
1.2 GUI软件的配置功能
图1 所示的是GUI 的配置界面,其显示的每一条信息都对应一条PMBUS 命令,可以在用户计算机与UCD3138 之间传递。例如制造商的位置信息( MFR_LOCATION ) , 对应的便是PMBUS 命令MFR_LOCATION (0x9C),借助PMBUS 总线GUI 软件可以将UCD3138 中存贮的信息读取并显示出来。用户也可以自行重新编辑该信息,新信息会传递到UCD3138 芯片中并进行存储。
在实际应用中,不同的用户会关注不同的参数信息。为提高灵活性,GUI 软件支持用户添加和删除PMBUS 命令支持的参数信息。下面将详细介绍如何在GUI 中进行相关操作。
2增加输出过流保护点信息
输出过流保护点对应的PMBUS 命令为IOUT_OC_FAULT_LIMIT,可以用来配置系统的输出过流保护点。本节详细介绍如何在GUI 中添加信息栏来接收用户的输入,同时修改UCD3138 的软件来对用户的输入信息进行处理并最终调整相应模拟比较器的阈值电压。
2.1解除对PMBUS命令的屏蔽
在UCD3138 软件中,定义了CMD_DCDC_NONPAGED 变量,保存了每一个PMBUS 命令的状态:用0和1 表征屏蔽还是未屏蔽, 如下代码所示。而“ 输出过流保护点” 对应的PMBUS 命令是IOUT_OC_FAULT_LIMIT (0x46),需要首先在UCD3138 的软件中去掉对该命令的屏蔽。
#define CMD_DCDC_NONPAGED
{0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x02, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0xFE,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x40,
0x3D, 0x00,
0x00, 0x14
}
Fusion Digital Designer 提供了Bitmask tool,用来快速生成新的CMD_DCDC_NONPAGED 变量。具体操作如下。
1)如图2,在菜单“Tools”中点击Isolated GUI Bitmask Generator Tool;
图2:运行Isolated GUI Bitmask Generator
2) 如图3,在随后打开的界面中,勾选“PMBUS_CMD_IOUT_OC_FAULT_LIMIT”,即使能命令IOUT_OC_FAULT_LIMIT。此时界面右侧的数据会有变化,该PMBUS 对应的位由0 变为了1。
图3:勾选相应PMBUS命令并复制输数据
3) 将图3 右侧红色图内的数据复制到UCD3138 的软件中,覆盖原来的CMD_DCDC_NONPAGED 变量。
2.2 GUI中增加新的信息栏
将上述新生成的软件编译后烧录到UCD3138 中,此时通过Fusion Digital Designer 与UCD3138 建立连接后,会发现,GUI 中新增了一条信息输入栏,见图
4中的红色框。
该信息栏的名称为“IOUT_OC_FAULT_LIMIT”,代码为0x46,上述为固定信息,是由GUI 软件自身设定,用户无法修改。后面的“Value/Edit”值则用来输入用户设定的过流保护点。
图4:GUI出现新增信息输入栏
2.3 UCD3138软件中的数据处理
截止到上节,用户可以在GUI 中新增一条信息栏并输入数据,然后通过对应的PMBUS 命令,将该数据传输到UCD3138 中。但为了使UCD3138 接收该数据并调整相应的模拟比较器阈值,还需要修改UCD3138 的软件。
(1)、定义变量和结构体
如下代码,定义了新的结构体变量PMBUS_DCDC_CONFIG,包含成员iout_oc_fault_limit 和reserved。随后定义了该结构体类型的外部变量pmbus_dcdc_config 和pmbus_dcdc_config_translated,分别用于接收和保存GUI 传输到UCD3138 的数据和格式转换后的数据。
typedef struct
{
Uint16 iout_oc_fault_limit;
Uint16 reserved;
}PMBUS_DCDC_CONFIG; //must be even number of int16
EXTERN PMBUS_DCDC_CONFIG pmbus_dcdc_config[1];
EXTERN PMBUS_DCDC_CONFIG pmbus_dcdc_config_translated[1];
(2)、创建新的PMBUS读与写函数
由于从GUI 传输过来的数据的首个字节是对应的PMBUS 命令的代码, 如0x46, 并会存放在pmbus_buffer[0]中。因此,可以在函数 pmbus_write_message()中创建新的case 语句,并返回一个新创建的函数pmbus_write_iout_oc_fault_limit(),该新函数用来处理接收到的数据。这样就实现了一旦UCD3138 接收到新的数据后,且该数据是用户重新编辑的“输出过流保护点”信息,则就会调用pmbus_write_iout_oc_fault_limit()函数进行处理。
switch (pmbus_buffer[0])
{
case 0x46:
return pmbus_write_iout_oc_fault_limit();
}
同时, 也需要在函数pmbus_read_message() 中创建新的case 语句, 并返回一个新创建的函数pmbus_read_iout_oc_fault_limit(),用来返回接收到的信息到GUI 中,以确保信息传输正确。这种读取后再返回验证的操作是PMBUS 协议的规定。
switch (pmbus_buffer[0])
{
case 0x46:
return pmbus_read_iout_oc_fault_limit();
}
(3)、数据处理函数的设计
c++相关文章:c++教程
评论