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文章
7945浏览量
264601 -
STM32
+关注
关注
2270文章
10900浏览量
355930 -
PD
+关注
关注
4文章
473浏览量
43988
发布评论请先 登录
相关推荐
评论