基于GUI軟件配置UCD3138 數(shù)字電源PMBUS 命令
摘 要
可與數(shù)字電源UCD3138 配套使用的Fusion Digital Power Designer 軟件擁有Graphical User Interface (GUI) 界面,用戶(hù)可在其上編輯數(shù)據(jù)并通過(guò)對(duì)應(yīng)的PMBUS 命令與UCD3138 的軟件交互。在GUI 界面中,用戶(hù)可以靈活的增加GUI 軟件支持的PMBUS 命令,亦可以刪除,因此大幅提高了GUI 的靈活性。本文通過(guò)兩個(gè)實(shí)例,詳細(xì)分析了如何增加和刪除GUI 軟件可以支持的PMBUS 命令。
1 數(shù)字電源GUI 軟件及其配置功能
數(shù)字電源GUI 軟件運(yùn)行于用戶(hù)計(jì)算機(jī),可以借助PMBUS 總線(xiàn)與UCD3138 數(shù)字電源通信,完成配置、設(shè)計(jì)和監(jiān)控等功能。用戶(hù)可以靈活的在界面中添加PMBUS 命令支持的信息,亦可以在其中刪除。
1.1 數(shù)字電源GUI 軟件
圖1 所示的是與UCD3138 數(shù)字電源芯片配套使用,可用來(lái)對(duì)基于UCD3138 數(shù)字電源進(jìn)行配置,設(shè)計(jì)及監(jiān)控的GUI 軟件:Fusion Digital Power。該軟件安裝并運(yùn)行于用戶(hù)的計(jì)算機(jī)上,通過(guò)PMBUS 總線(xiàn)與UCD3138 的軟件進(jìn)行交互。
圖 1:數(shù)字電源GUI 軟件
該軟件主要包含以下功能:
1)配置:通過(guò)PMBUS 命令對(duì)數(shù)字電源的參數(shù)進(jìn)行配置,如輸入電壓的欠壓保護(hù)點(diǎn)(對(duì)應(yīng)的PMBUS 命令為VIN_ON 和VIN_OFF),輸出電流的過(guò)流保護(hù)(對(duì)應(yīng)的PMBUS 命令為IOUT_OC_FAULT_LIMIT)。
2)設(shè)計(jì):主要是對(duì)數(shù)字電源的環(huán)路參數(shù)進(jìn)行設(shè)計(jì)和模擬。
3)監(jiān)控:可以實(shí)時(shí)監(jiān)控輸入電壓,輸入電流和溫度等諸多信息。
4)狀態(tài):可以顯示電源板輸入和輸出等狀態(tài),告知用戶(hù)當(dāng)前是否存在故障。
1.2 GUI 軟件的配置功能
圖1 所示的是GUI 的配置界面,其顯示的每一條信息都對(duì)應(yīng)一條PMBUS 命令,可以在用戶(hù)計(jì)算機(jī)與UCD3138 之間傳遞。例如制造商的位置信息( MFR_LOCATION ) , 對(duì)應(yīng)的便是PMBUS 命令MFR_LOCATION (0x9C),借助PMBUS 總線(xiàn)GUI 軟件可以將UCD3138 中存貯的信息讀取并顯示出來(lái)。用戶(hù)也可以自行重新編輯該信息,新信息會(huì)傳遞到UCD3138 芯片中并進(jìn)行存儲(chǔ)。
在實(shí)際應(yīng)用中,不同的用戶(hù)會(huì)關(guān)注不同的參數(shù)信息。為提高靈活性,GUI 軟件支持用戶(hù)添加和刪除PMBUS 命令支持的參數(shù)信息。下面將詳細(xì)介紹如何在GUI 中進(jìn)行相關(guān)操作。
2 增加輸出過(guò)流保護(hù)點(diǎn)信息
輸出過(guò)流保護(hù)點(diǎn)對(duì)應(yīng)的PMBUS 命令為IOUT_OC_FAULT_LIMIT,可以用來(lái)配置系統(tǒng)的輸出過(guò)流保護(hù)點(diǎn)。本節(jié)詳細(xì)介紹如何在GUI 中添加信息欄來(lái)接收用戶(hù)的輸入,同時(shí)修改UCD3138 的軟件來(lái)對(duì)用戶(hù)的輸入信息進(jìn)行處理并最終調(diào)整相應(yīng)模擬比較器的閾值電壓。
2.1 解除對(duì)PMBUS 命令的屏蔽
在UCD3138 軟件中,定義了CMD_DCDC_NONPAGED 變量,保存了每一個(gè)PMBUS 命令的狀態(tài):用0和1 表征屏蔽還是未屏蔽, 如下代碼所示。而“ 輸出過(guò)流保護(hù)點(diǎn)” 對(duì)應(yīng)的PMBUS 命令是IOUT_OC_FAULT_LIMIT (0x46),需要首先在UCD3138 的軟件中去掉對(duì)該命令的屏蔽。
#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,用來(lái)快速生成新的CMD_DCDC_NONPAGED 變量。具體操作如下。
1)如圖2,在菜單“Tools”中點(diǎn)擊Isolated GUI Bitmask Generator Tool;
圖 2:運(yùn)行Isolated GUI Bitmask Generator
2) 如圖3,在隨后打開(kāi)的界面中,勾選“PMBUS_CMD_IOUT_OC_FAULT_LIMIT”,即使能命令I(lǐng)OUT_OC_FAULT_LIMIT。此時(shí)界面右側(cè)的數(shù)據(jù)會(huì)有變化,該P(yáng)MBUS 對(duì)應(yīng)的位由0 變?yōu)榱?。
圖 3:勾選相應(yīng)PMBUS 命令并復(fù)制輸數(shù)據(jù)
3) 將圖3 右側(cè)紅色圖內(nèi)的數(shù)據(jù)復(fù)制到UCD3138 的軟件中,覆蓋原來(lái)的CMD_DCDC_NONPAGED 變量。
2.2 GUI 中增加新的信息欄
將上述新生成的軟件編譯后燒錄到UCD3138 中,此時(shí)通過(guò)Fusion Digital Designer 與UCD3138 建立連接后,會(huì)發(fā)現(xiàn),GUI 中新增了一條信息輸入欄,見(jiàn)圖
4中的紅色框。
該信息欄的名稱(chēng)為“IOUT_OC_FAULT_LIMIT”,代碼為0x46,上述為固定信息,是由GUI 軟件自身設(shè)定,用戶(hù)無(wú)法修改。后面的“Value/Edit”值則用來(lái)輸入用戶(hù)設(shè)定的過(guò)流保護(hù)點(diǎn)。
圖 4:GUI 出現(xiàn)新增信息輸入欄
2.3 UCD3138 軟件中的數(shù)據(jù)處理
截止到上節(jié),用戶(hù)可以在GUI 中新增一條信息欄并輸入數(shù)據(jù),然后通過(guò)對(duì)應(yīng)的PMBUS 命令,將該數(shù)據(jù)傳輸?shù)経CD3138 中。但為了使UCD3138 接收該數(shù)據(jù)并調(diào)整相應(yīng)的模擬比較器閾值,還需要修改UCD3138 的軟件。
(1)、定義變量和結(jié)構(gòu)體
如下代碼,定義了新的結(jié)構(gòu)體變量PMBUS_DCDC_CONFIG,包含成員iout_oc_fault_limit 和reserved。隨后定義了該結(jié)構(gòu)體類(lèi)型的外部變量pmbus_dcdc_config 和pmbus_dcdc_config_translated,分別用于接收和保存GUI 傳輸?shù)経CD3138 的數(shù)據(jù)和格式轉(zhuǎn)換后的數(shù)據(jù)。
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)、創(chuàng)建新的PMBUS 讀與寫(xiě)函數(shù)
由于從GUI 傳輸過(guò)來(lái)的數(shù)據(jù)的首個(gè)字節(jié)是對(duì)應(yīng)的PMBUS 命令的代碼, 如0x46, 并會(huì)存放在pmbus_buffer[0]中。因此,可以在函數(shù) pmbus_write_message()中創(chuàng)建新的case 語(yǔ)句,并返回一個(gè)新創(chuàng)建的函數(shù)pmbus_write_iout_oc_fault_limit(),該新函數(shù)用來(lái)處理接收到的數(shù)據(jù)。這樣就實(shí)現(xiàn)了一旦UCD3138 接收到新的數(shù)據(jù)后,且該數(shù)據(jù)是用戶(hù)重新編輯的“輸出過(guò)流保護(hù)點(diǎn)”信息,則就會(huì)調(diào)用pmbus_write_iout_oc_fault_limit()函數(shù)進(jìn)行處理。
switch (pmbus_buffer[0])
{
case 0x46:
return pmbus_write_iout_oc_fault_limit();
}
同時(shí), 也需要在函數(shù)pmbus_read_message() 中創(chuàng)建新的case 語(yǔ)句, 并返回一個(gè)新創(chuàng)建的函數(shù)pmbus_read_iout_oc_fault_limit(),用來(lái)返回接收到的信息到GUI 中,以確保信息傳輸正確。這種讀取后再返回驗(yàn)證的操作是PMBUS 協(xié)議的規(guī)定。
switch (pmbus_buffer[0])
{
case 0x46:
return pmbus_read_iout_oc_fault_limit();
}
(3)、數(shù)據(jù)處理函數(shù)的設(shè)計(jì)
c++相關(guān)文章:c++教程
評(píng)論