6配置屏蔽的跳線
如圖所示,將跳線放在 X-NUCLEO-SNK1M1 屏蔽上。
如果您改用 X-NUCLEO-USBPDM1 擴展板,請遵循以下配置:
7編譯并運行應(yīng)用程序
編譯必須在沒有錯誤或警告的情況下執(zhí)行。
通過單擊
按鈕(或選擇Project/Build Project)來構(gòu)建應(yīng)用程序。
通過單擊
按鈕運行應(yīng)用程序(或選擇運行/運行)
8建立第一個顯性契約
在電路板上運行您的應(yīng)用程序后,啟動 STM32CubeMonitor-UCPD 應(yīng)用程序。點擊“Refresh list of connected boards”時,用戶的板子必須出現(xiàn)在列表中,所以雙擊相應(yīng)的行(或單擊“NEXT”)。
注意:ComPort 可能不同。這取決于計算機上安裝的板卡數(shù)量。 然后雙擊所需的 UCPD 端口,此處為端口 0,或選擇它并單擊“下一步”。
單擊右下角的TRACES按鈕以獲取協(xié)議跟蹤。然后,您可以將供電電源插入 X-NUCLEO-SKN1M1 防護罩的 USB Type-C? 插座。屏幕可能如下所示:
上圖顯示了 STM32G0 與右側(cè)面板上的供電電源之間的通信。可以驗證正確的順序以達成明確的合同:
功能由源發(fā)送(IN 綠色消息)。
請求由STM32G0發(fā)送(OUT橙色信息)。
ACCEPT和PS_RDY由源發(fā)送(IN 綠色消息)。
合同協(xié)商以POWER_EXPLICIT_CONTRACT通知(藍色消息)結(jié)束。
有關(guān)如何使用此工具的更多詳細信息,請參閱UM2468。有關(guān)協(xié)議的更多詳細信息,請參閱UM2552。請注意,此跟蹤對于調(diào)試和應(yīng)用程序開發(fā)非常有幫助。
9 [可選] 高級 USB-PD 應(yīng)用程序
警告
此部分是可選的,針對想要從源中選擇特定 PDO 的用戶。在參考本節(jié)之前,需要先完成 wiki 的第一部分。
從這一點開始,您構(gòu)建了最簡單的接收器,它不處理接收器和源 PDO 的匹配。這必須通過用戶代碼來完成。這是在 USBPD_DPM_SNK_EvaluateCapabilities 函數(shù)中完成的。目前,這個函數(shù)只是請求第一個可用的源 PDO,即 5V。
要選擇特定的 PDO(例如 9V),您必須選擇相應(yīng)的源 PDO 編號。這可以通過與先前在 STM32CubeMX 中定義的接收器 PDO 以及相應(yīng)的可用源 PDO 相匹配的用戶代碼來完成。
本節(jié)提供了該系統(tǒng)可能實現(xiàn)的代碼。
你需要:
在STM32CubeMX中添加所有你想支持的sink PDO
在您的應(yīng)用程序中添加下面提供的用戶代碼
9.1添加支持的sink PDO ↑
重新打開 STM32CubeMX 視圖。在Middleware部分,對于USBPD中間件,在PDO General Definitions選項卡下,添加您希望接收器支持的 PDO 數(shù)量。對于此示例,我們定義了 3PDO,對應(yīng)于 5V/1.5A、9V/1.5A 和 15V/1.5A 的簡單灌電流配置。這是通過將 PDO 設(shè)置為:
0x00019096(固定 PDO:5V 1.5A)
0x0002D096(固定 PDO:9V 1.5A)
0x0004B096(固定 PDO:15V 1.5A)
9.2在GitHub上獲取usbpd_user_services.c/h文件↑
通過訪問以下鏈接在 GitHub 上獲取 usbpd_user_services.c/h 文件:
- usbpd_user_services.c
- usbpd_user_services.h
將 usbpd_user_services.c/h 文件復(fù)制到您的應(yīng)用程序 USBPD 文件夾中。
然后,為了告訴 STM32CubeMX 在代碼生成時包含這些文件,在項目的根文件夾中創(chuàng)建一個名為“.extSettings”的文件(請注意文件名中的點字符)并用以下代碼填充它:
[項目文件] 標頭路徑= [其他] 定義= 哈爾模塊= [團體] USBPD=USBPD/usbpd_user_services.c
9.3 usbpd_dpm_user.c中修改↑
在/* USER CODE BEGIN-END Includes */標簽之間添加以下代碼:
/* 用戶代碼開始包括 */ #include “usbpd_user_services.h” /* 用戶代碼結(jié)束包括 */
在開關(guān)中的/* USER CODE BEGIN-END USBPD_DPM_SetDataInfo */標簽 之間添加以下代碼:
/* Case Received Source PDO values 數(shù)據(jù)信息 : */ case USBPD_CORE_DATATYPE_RCV_SRC_PDO : /*!《 Storage of Received Source PDO values */ USBPD_USER_SERV_StoreSRCPDO ( PortNum , Ptr , Size ); 打破;
在/* USER CODE BEGIN-END USBPD_DPM_SNK_EvaluateCapabilities */標簽之間添加以下代碼(替換之前添加的代碼):
/* 用戶代碼開始 USBPD_DPM_SNK_EvaluateCapabilities */ USBPD_USER_SERV_EvaluateCapa ( PortNum , PtrRequestData , PtrPowerObjectType ); /* 用戶代碼結(jié)束 USBPD_DPM_SNK_EvaluateCapabilities */
您現(xiàn)在可以重新生成代碼,構(gòu)建并運行它。您的應(yīng)用要求匹配 PDO 的最高電壓(源和吸收支持的電壓/電流)。
您可以進一步修改此用戶代碼,例如選擇最高功率的 PDO 而不是最高電壓。
-
usb
+關(guān)注
關(guān)注
60文章
7879瀏覽量
263728 -
STM32
+關(guān)注
關(guān)注
2264文章
10854瀏覽量
354307 -
PD
+關(guān)注
關(guān)注
4文章
458瀏覽量
43889
發(fā)布評論請先 登錄
相關(guān)推薦
評論