0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何创建 USB-PD 接收设备(中)

麦辣鸡腿堡 来源:村田制作所 作者:村田制作所 2023-01-31 16:05 次阅读

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。其余保持默认。

poYBAGPYy9eAPq47AAEVgBuFdGs078.png

在引脚布局视图中,左键单击 PA2 和 PA3 以将它们重新映射到LPUART1_TX和LPUART1_RX。

pYYBAGPYy9iAUMozAADv_wJIMWU441.png

DMA 配置选项卡下,添加对LPUART1_TX的请求。使用DMA1 通道 3。

poYBAGPYy9iAX92PAAAuyXQDUVY814.png

最后,在NVIC 设置选项卡下,启用 LPUART1 全局中断。

pYYBAGPYy9mAWsjlAAAzf2Fllxk506.png

2.7.2配置嵌入式tracer ↑

在Utilities部分,选择TRACER_EMB并使用LPUART1作为跟踪源。

poYBAGPYy9mARMMLAABqoei-3ew715.png

然后,返回USBPD中间件配置并选中 Tracer Source 复选框。

pYYBAGPYy9qAHHQPAABA7iGpoWw512.png

2.7.3配置UCPD监控固件响应器调试↑

如果需要与 USB-PD 堆栈交互,可以使用 UCPD 监控工具STM32CubeMonUCPD激活固件交互式堆栈响应器。在“实用程序”部分,启用 GUI_INTERFACE,然后输入自由文本来描述电路板。

poYBAGPYy9qAVM3qAABnPp2h03E255.png

3配置项目

40px-Clock.png

5min

在Project Manager主选项卡下,将Project选项卡下的最小堆栈大小配置为0xC00。这是第一个值,以后可以根据应用需要进行调整。

pYYBAGPYy92AL13WAAClLV1QLXo455.png

Advanced Settings选项卡下,将 LPUART 驱动程序更改为 LL。

poYBAGPYy96AbucWAACLHJiI0lM022.png

4生成代码

40px-Clock.png

5分钟

使用 Ctrl+S 保存文件,并在出现提示时选择生成代码。您还可以通过单击项目/生成代码或按 Alt+K 从 STM32CubeIDE 菜单生成代码。

pYYBAGPYy96AVyeOAAAvxx-Cqwo902.png

出现一条警告,通知未定义正确的 HAL 时基。使用专用定时器作为 HAL 时基源更安全。

对于此演示,可以通过单击是忽略以下警告。

poYBAGPYy9-AKALPAAA_ongVZyc927.png

25px-Info_white.png

信息

这成为在即将发布的固件包交付中推荐的标准工作方式,尤其是在使用 CMSIS OS V2 时,它将 Systick 定义为 FreeRTOS™ 时基。

对于此演示,可以通过单击是忽略警告。

5简单的USB-PD应用

现在外设已由 STM32CubeMX 初始化,需要添加一些最低级别的应用程序:

ADC 需要校准,转换需要开始。

中断处理程序需要完成,以唤醒 UCPD 外设。

BSP_USBPD_PWR_VBUSGetVoltage函数需要根据 VBUS 分压桥使用正确的系数来完成。

需要完成USBPD_DPM_SNK_EvaluateCapabilities函数以回答一个源能力消息。

需要禁用 TCPP01‑M12 没电电池引脚并将 GPIO 驱动为高电平以查看源 Rp,或者必须在屏蔽上设置跳线。

25px-Warning_white.png

警告

此应用程序是一个非常基本的示例,它请求第一个默认 5V PDO。如果要从源请求特定电压,则需要添加一些与接收器和源 PDO 匹配的用户代码。完成此基本示例后,请参阅高级 USB-PD 应用部分以获得更完整的应用。

5.1 main.c中的修改↑

25px-Info_white.png

信息

您可以双击代码区域将其全部选中,然后使用 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
    usb
    +关注

    关注

    60

    文章

    7945

    浏览量

    264601
  • STM32
    +关注

    关注

    2270

    文章

    10900

    浏览量

    355930
  • PD
    PD
    +关注

    关注

    4

    文章

    473

    浏览量

    43988
收藏 人收藏

    评论

    相关推荐

    USB-PD适配器中常见的拓扑

    本文首先回顾了USB-PD适配器的发展,并和大家聊一聊USB-PD适配器中常见的拓扑。接着着重介绍ST在快充领域的最新产品和技术路线。最后我们会以demo板为例,跟大家探讨一下USB-PD适配器的技术细节和设计时的注意事项。
    发表于 08-18 14:18 2911次阅读

    应用指南—如何使用DSLogic分析USB-PD信号?

    ,两设备协商后 VBUS 的电压会有所改变。 VBUS 电压是 USB 总线上的电源电压,通常为5V。在 USB-PD ,它可以在5V、9V、12V、15V或20V之间变化,以提供不
    的头像 发表于 09-04 14:42 1363次阅读
    应用指南—如何使用DSLogic分析<b class='flag-5'>USB-PD</b>信号?

    USB-PD实现中大功率USB充电应用

    伏特VBus电源线,提高支援电压等级至12或20伏特。 无庸置疑,USB-PD产品能否问世的关键,就在于负责电源讯号通讯的USB VBus设计。新控制方案须达到够高的频率,以免影响传统USB
    发表于 06-04 05:00

    PD 快充是什么?一篇文章带你了解USB-PD快充协议

    前言  说起 USB-PD 协议,全名 USB Power Delivery ,可能对于很多人来说还很陌生,但是目前越来越多的手机已经开始支持这一协议并用来做为设备快速充电的功能。  稍有了解的人
    发表于 08-27 09:50

    目前主流的快充协议USB-PD介绍

    USB-PD 是由 USB-IF 组织制定的一种快速充电规范,是目前主流的快充协议之一。 USB-PD 快充协议是以 Type-C 接口输出的,但不能说有 Type-C 接口就一定支持 USB
    发表于 10-28 08:55

    基于USB Type-C的一种电源供电标准USB-PD

    USB-PD(Power Delivery)是基于USB Type-C的一种电源供电标准,最大供电功率可达100瓦(W);随着USB Type-C的普及,越来越多的设备(手机、平板、显
    发表于 09-14 07:24

    请问从USB-PD端口请求更高电压最简单最快的方法是什么

    你好,我正在将 STM32G0B1RE 处理器用作 USB-PD SINK。请问从USB-PD端口请求更高电压(例如9V或12V)最简单最快的方法是什么(最好使用CubeMX)?任何人都可以分享最简单的代码来从 USB-PD
    发表于 12-23 06:45

    致远电子发布USB-PD快充测试方案

    USB-PD(Power Delivery)是基于USB Type-C的供电标准,最大功率可达100W。
    发表于 05-17 09:47 16次下载

    致远电子发布 USB-PD 快充测试方案

    USB-PD(Power Delivery)是基于USB Type-C的供电标准,最大功率可达100W。虽然USB-PD快充越来越热,但行业内并没有针对快充的测试工具,ZLG致远电子正式发布U
    发表于 05-17 18:10 4526次阅读
    致远电子发布 <b class='flag-5'>USB-PD</b> 快充测试方案

    什么是USB-PD?

    10P0R,VIVONEX 3S等新出的机型,快充应用迎来爆发。如果您还不熟悉这项技术,并且想了解更多信息,请阅读以下的使用信息 什么是USB-PD?USB-PDUSB部分代表通用串行总线。您应该熟悉它,因为它定义了相同的技术
    的头像 发表于 10-11 09:40 3.6w次阅读
    什么是<b class='flag-5'>USB-PD</b>?

    AN5418_使用STM32CubeMX构建一个简单的USB-PD接收器应用程序

    AN5418_使用STM32CubeMX构建一个简单的USB-PD接收器应用程序
    发表于 11-21 08:11 1次下载
    AN5418_使用STM32CubeMX构建一个简单的<b class='flag-5'>USB-PD</b><b class='flag-5'>接收</b>器应用程序

    如何使用STM32CubeMX构建简单的USB-PD接收器应用程序

    如何使用STM32CubeMX构建简单的USB-PD接收器应用程序
    发表于 11-21 17:07 8次下载
    如何使用STM32CubeMX构建简单的<b class='flag-5'>USB-PD</b><b class='flag-5'>接收</b>器应用程序

    如何创建 USB-PD 接收设备(上)

    。将其他字段保留为默认值,然后单击“完成”。 2配置系统 15分钟 此时,您的项目已创建,您只剩下 STM32CubeMX 视图。在接下来的步骤,我们配置项目所需的外围设备和选项。 2.1配置UCPD
    的头像 发表于 01-31 16:02 2455次阅读
    如何<b class='flag-5'>创建</b> <b class='flag-5'>USB-PD</b> <b class='flag-5'>接收</b><b class='flag-5'>设备</b>(上)

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

    一文档介绍本文将一步步介绍如何使用DSLogic逻辑分析仪采集和分析USB-PD信号。此次将演示使用快充充电器给一台安卓手机充电。二需要测量哪几个信号逻辑分析仪需要测量CC1信号,两设备协商后
    的头像 发表于 01-12 14:09 1151次阅读
    如何使用DSLogic分析<b class='flag-5'>USB-PD</b>信号?

    USB Type-C与USB-PD技术对比

    本篇文章主要详述 24P、16P 与 6P USB-TypeC接口的引脚定义,以及USB-PDUSB接口类型,以便广大读者在进行硬件设计时提供参考依据。
    发表于 01-26 12:23 2789次阅读
    <b class='flag-5'>USB</b> Type-C与<b class='flag-5'>USB-PD</b>技术对比