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 防護(hù)罩的 USB Type-C? 插座。屏幕可能如下所示:
上圖顯示了 STM32G0 與右側(cè)面板上的供電電源之間的通信。可以驗證正確的順序以達(dá)成明確的合同:
功能由源發(fā)送(IN 綠色消息)。
請求由STM32G0發(fā)送(OUT橙色信息)。
ACCEPT和PS_RDY由源發(fā)送(IN 綠色消息)。
合同協(xié)商以POWER_EXPLICIT_CONTRACT通知(藍(lán)色消息)結(jié)束。
有關(guān)如何使用此工具的更多詳細(xì)信息,請參閱UM2468。有關(guān)協(xié)議的更多詳細(xì)信息,請參閱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”的文件(請注意文件名中的點字符)并用以下代碼填充它:
[項目文件] 標(biāo)頭路徑= [其他] 定義= 哈爾模塊= [團(tuán)體] USBPD=USBPD/usbpd_user_services.c
9.3 usbpd_dpm_user.c中修改↑
在/* USER CODE BEGIN-END Includes */標(biāo)簽之間添加以下代碼:
/* 用戶代碼開始包括 */ #include “usbpd_user_services.h” /* 用戶代碼結(jié)束包括 */
在開關(guān)中的/* USER CODE BEGIN-END USBPD_DPM_SetDataInfo */標(biāo)簽 之間添加以下代碼:
/* 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 */標(biāo)簽之間添加以下代碼(替換之前添加的代碼):
/* 用戶代碼開始 USBPD_DPM_SNK_EvaluateCapabilities */ USBPD_USER_SERV_EvaluateCapa ( PortNum , PtrRequestData , PtrPowerObjectType ); /* 用戶代碼結(jié)束 USBPD_DPM_SNK_EvaluateCapabilities */
您現(xiàn)在可以重新生成代碼,構(gòu)建并運行它。您的應(yīng)用要求匹配 PDO 的最高電壓(源和吸收支持的電壓/電流)。
您可以進(jìn)一步修改此用戶代碼,例如選擇最高功率的 PDO 而不是最高電壓。
-
usb
+關(guān)注
關(guān)注
60文章
8179瀏覽量
272739 -
STM32
+關(guān)注
關(guān)注
2293文章
11031瀏覽量
364689 -
PD
+關(guān)注
關(guān)注
4文章
514瀏覽量
44908
發(fā)布評論請先 登錄
USB-PD適配器中常見的拓?fù)?/a>
應(yīng)用指南—如何使用DSLogic分析USB-PD信號?

為什么 USB-PD 需要 TDS 保護(hù)
USB-PD實現(xiàn)中大功率USB充電應(yīng)用
PD 快充是什么?一篇文章帶你了解USB-PD快充協(xié)議
目前主流的快充協(xié)議USB-PD介紹
基于USB Type-C的一種電源供電標(biāo)準(zhǔn)USB-PD
致遠(yuǎn)電子發(fā)布USB-PD快充測試方案
致遠(yuǎn)電子發(fā)布 USB-PD 快充測試方案

什么是USB-PD?

AN5418_使用STM32CubeMX構(gòu)建一個簡單的USB-PD接收器應(yīng)用程序

如何使用STM32CubeMX構(gòu)建簡單的USB-PD接收器應(yīng)用程序

如何創(chuàng)建 USB-PD 接收設(shè)備(上)

如何使用DSLogic分析USB-PD信號?

USB Type-C與USB-PD技術(shù)對比

評論