2.7 [可選] 配置 Tracer 進行調試↑
2.7.1配置LPUART ↑
在STM32G0 Nucleo-64板子上,連接ST-LINK的Virtual COM口是LPUART1。
必須更改 LPUART1 使用的默認 STM32CubeMX 引腳以匹配 STM32G0 Nucleo-64 硬件:
TX 的 PA2
用于接收的 PA3。
在Connectivity部分,在 Asynchronous 模式下啟用LPUART1,波特率為921600 bauds。其余保持默認。
在引腳布局視圖中,左鍵單擊 PA2 和 PA3 以將它們重新映射到LPUART1_TX和LPUART1_RX。
在DMA 配置選項卡下,添加對LPUART1_TX的請求。使用DMA1 通道 3。
最后,在NVIC 設置選項卡下,啟用 LPUART1 全局中斷。
2.7.2配置嵌入式tracer ↑
在Utilities部分,選擇TRACER_EMB并使用LPUART1作為跟蹤源。
然后,返回USBPD中間件配置并選中 Tracer Source 復選框。
2.7.3配置UCPD監控固件響應器調試↑
如果需要與 USB-PD 堆棧交互,可以使用 UCPD 監控工具STM32CubeMonUCPD激活固件交互式堆棧響應器。在“實用程序”部分,啟用 GUI_INTERFACE,然后輸入自由文本來描述電路板。
3配置項目
5min
在Project Manager主選項卡下,將Project選項卡下的最小堆棧大小配置為0xC00。這是第一個值,以后可以根據應用需要進行調整。
在Advanced Settings選項卡下,將 LPUART 驅動程序更改為 LL。
4生成代碼
5分鐘
使用 Ctrl+S 保存文件,并在出現提示時選擇生成代碼。您還可以通過單擊項目/生成代碼或按 Alt+K 從 STM32CubeIDE 菜單生成代碼。
出現一條警告,通知未定義正確的 HAL 時基。使用專用定時器作為 HAL 時基源更安全。
對于此演示,可以通過單擊是忽略以下警告。
這成為在即將發布的固件包交付中推薦的標準工作方式,尤其是在使用 CMSIS OS V2 時,它將 Systick 定義為 FreeRTOS? 時基。
對于此演示,可以通過單擊是忽略警告。
5簡單的USB-PD應用
現在外設已由 STM32CubeMX 初始化,需要添加一些最低級別的應用程序:
ADC 需要校準,轉換需要開始。
中斷處理程序需要完成,以喚醒 UCPD 外設。
BSP_USBPD_PWR_VBUSGetVoltage函數需要根據 VBUS 分壓橋使用正確的系數來完成。
需要完成USBPD_DPM_SNK_EvaluateCapabilities函數以回答一個源能力消息。
需要禁用 TCPP01?M12 沒電電池引腳并將 GPIO 驅動為高電平以查看源 Rp,或者必須在屏蔽上設置跳線。
警告
此應用程序是一個非常基本的示例,它請求第一個默認 5V PDO。如果要從源請求特定電壓,則需要添加一些與接收器和源 PDO 匹配的用戶代碼。完成此基本示例后,請參閱高級 USB-PD 應用部分以獲得更完整的應用。
5.1 main.c中的修改↑
信息
您可以雙擊代碼區域將其全部選中,然后使用 Ctrl+C 進行復制。
在/* USER CODE BEGIN-END ADC1_Init 2 */標簽之間添加以下代碼:
/* 用戶代碼開始 ADC1_Init 2 */ HAL_ADCEx_Calibration_Start ( & hadc1 ); HAL_ADC_Start ( & hadc1 ); /* 用戶代碼結束 ADC1_Init 2 */
5.2 usbpd_dpm_user.c中的修改↑
在USBPD_DPM_GetDataInfo函數中添加如下代碼:
case USBPD_CORE_DATATYPE_SNK_PDO : /*!《 端口 Sink PDO 的處理,由 get sink capa 請求*/ USBPD_PWR_IF_GetPortPDOs ( PortNum , DataId , Ptr , Size ); *大小 *= 4 ; 打破;
在/* USER CODE BEGIN-END USBPD_DPM_SNK_EvaluateCapabilities */標簽 之間添加以下代碼:
/* 用戶代碼開始 USBPD_DPM_SNK_EvaluateCapabilities */ USBPD_SNKRDO_TypeDef rdo ; /* 初始化 RDO */ rdo 。 d32 = 0 ; /* 準備請求的 pdo */ rdo 。 固定變量 RDO 。對象位置 = 1 ; rdo 。固定變量 RDO 。OperatingCurrentIn10mAunits = 50 ; rdo 。固定變量 RDO 。MaxOperatingCurrent10mAunits = 50 ; rdo 。固定變量 RDO 。能力不匹配 = 0 ; * PtrPowerObjectType = USBPD_CORE_PDO_TYPE_FIXED ; * PtrRequestData = rdo 。d32 ; /* 用戶代碼結束 USBPD_DPM_SNK_EvaluateCapabilities */
5.3 usbpd_pwr_user.c中的修改↑
在/* USER CODE BEGIN-END include */標簽之間添加以下代碼:
/* 用戶代碼開始包括 */ #include “main.h” /* 用戶代碼結束包括 */
在/* USER CODE BEGIN-END BSP_USBPD_PWR_VBUSGetVoltage */標簽之間添加以下代碼:
/* USER CODE BEGIN BSP_USBPD_PWR_VBUSGetVoltage */ /* 檢查實例是否有效 */ int32_t ret = BSP_ERROR_NONE ; if (( Instance 》= USBPD_PWR_INSTANCES_NBR ) || ( NULL == pVoltage )) { ret = BSP_ERROR_WRONG_PARAM ; * p電壓 = 0 ; } else { uint32_t val ; val = __LL_ADC_CALC_DATA_TO_VOLTAGE ( VDDA_APPLI , LL_ADC_REG_ReadConversionData12( ADC1 ), LL_ADC_RESOLUTION_12B ); /* mV */ /* 使用 X-NUCLEO-USBPDM 板 */ /* 值乘以 5.97(VSENSE 的分壓器 R6/R7 (40.2K/200K))*/ val *= 597 ; val /= 100 ; * pVoltage = val ; } 返回 ret ; /* 用戶代碼結束 BSP_USBPD_PWR_VBUSGetVoltage */
-
usb
+關注
關注
60文章
7952瀏覽量
264935 -
STM32
+關注
關注
2270文章
10904瀏覽量
356414 -
PD
+關注
關注
4文章
475瀏覽量
44012
發布評論請先 登錄
相關推薦
評論