基于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++教程
評論