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

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

3天内不再提示

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

麦辣鸡腿堡 来源:意法半导体 作者:意法半导体 2023-01-31 16:02 次阅读

1创建项目

打开 STM32CubeIDE 并创建一个新的 STM32 项目。作为目标选择,从MCU/MPU 选择器选项卡中选择 STM32G071RB

单击“下一步”,然后输入您的项目名称。将其他字段保留为默认值,然后单击“完成”。

pYYBAGPYywGAD7ptAABXLr3jQBc055.png

2配置系统

40px-Clock.png

15分钟

此时,您的项目已创建,您只剩下 STM32CubeMX 视图。在接下来的步骤中,我们配置项目所需的外围设备和选项。

2.1配置UCPD外设↑

在Connectivity选项卡中,选择UCPD1外设并在接收模式下启用它。在NVIC 设置选项卡下,启用 UCPD 全局中断。

25px-Info_white.png

信息

您不需要在配置中包含“Dead Battery Signals”,因为它由 X-NUCLEO-SNK1M1 扩展板上的 TCPP01 保护设备管理。

poYBAGPYywKAQhPpAACI8Yb14SM247.png

DMA 设置选项卡下,添加 UCPD1_RX 和 UCPD1_TX DMA 请求。

pYYBAGPYywOALFv-AAA6tlKSVBg124.png

2.2配置FreeRTOS中间件↑

在中间件部分,使用CMSIS_V1接口启用FreeRTOS 。在Config Parameters选项卡下,将“TOTAL_HEAP_SIZE”更改为 7000 字节。

poYBAGPYywOAA_5wAADA-5dUZ1U449.png

然后,在Include Parameters选项卡下,启用eTaskGetState包含定义。

pYYBAGPYywSAfh8FAACDekGm-8Y743.png

25px-Info_white.png

信息

如果G0 使用STM32G4 ,则需要将 LIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 设置为 3而不是 STM32CubeMX 的默认值 5。在某些情况下,使用 STM32G4,将其设置为 5 会使代码执行卡在 vPortValidateInterruptPriority 函数中。

2.3配置USBPD中间件↑

在中间件部分,使用以下配置 启用USBPD :

端口配置:端口 0:UCPD1

堆栈配置:PD3 全栈

定时器服务来源:TIM1

在PDO General Definitions选项卡下,验证以下配置:

端口 0 的接收器 PDO 数量:1

Port 0 Sink PDO 10x26019096(对应一个5V/1.5A,双重角色数据sink)

pYYBAGPYywWAUi1-AACg9Bh-9EU236.png

下表摘自USB 供电规范,表 6-14 固定电源 PDO - 接收器。该项目的使用值和相关解码已添加到表中。

位描述使用价值解码

B31..30固定供应00b固定的

B29双重角色权力0b不

B28更高的能力0b不

B27不受约束的权力0b不

B26USB 通信能力0b不

B25双重角色数据1b是的

B24..23快速角色交换支持00b不

B22..20保留 - 必须设置为零0b不

B19..10以 50mV 为单位的电压0001100100b5V

B9..0以 10mA 为单位的最大电流0010010110b1.5A

2.4配置ADC外设↑

为使供电堆栈正常工作,必须监控 VBUS。为此,需要配置一个 ADC 来测量 VBUS 电压。

模拟部分,启用ADC1外设通道 9(连接到引脚 PB1)。使用以下配置配置 ADC:

时钟预分频器:同步/4

连续转换模式:启用

溢出行为:溢出数据被覆盖

采样时间公共 1 和 2:160.5 个周期

poYBAGPYywWAKGWiAAEDzOLZeu8490.png

然后,在GPIO 设置选项卡下,将 PB1 引脚重命名为VSENSE,这是该引脚的更具描述性的名称,用于 VBUS 监控:

poYBAGPYywaAC2LFAABfOnPscXg097.png

在User Constants选项卡下,添加名为VDDA_APPLI且值为3300的常量。

pYYBAGPYywaARO4OAABDkpzpZD0584.png

2.5配置GPIOs↑

对于 X-NUCLEO-SNK1M1 shield,需要两个额外的 GPIO 设置(在 X-NUCLEO-USBPDM1 中没有,因为设置是通过跳线强制设置的)。

PB6(DB_OUT用于禁用电池没电)GPIO 输出为高电平

PC10(为 TCPP01‑M12 供电的VCC_OUT引脚)GPIO 输出为高电平

要设置此配置,请在 Pinout视图中左键单击 PB6 和 PC10引脚,然后将引脚设置为GPIO_Output。在System Core部分的GPIO下,将两个引脚的 GPIO 输出电平更改为高电平,并为 PB6设置用户标签 DB_OUT ,为PC10设置 VCC_OUT。

pYYBAGPYyweAJ_QtAAEfi299a3Q600.png

对于实际应用,这些 GPIO 设置必须在 UCPD 初始化之后执行。

2.6配置时钟↑

在Clock Configuration主选项卡下,将系统时钟 mux 更改为PLLCLK。它将HCLK时钟设置为 64 MHz。

poYBAGPYywiAZcnGAAF3b8y-gYk081.png

25px-Info_white.png

信息

简单 USB-PD 接收器应用程序的强制设置已完成。

强烈建议使用以下部分进行调试

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • usb
    usb
    +关注

    关注

    60

    文章

    7802

    浏览量

    262594
  • STM32
    +关注

    关注

    2260

    文章

    10831

    浏览量

    352753
  • PD
    PD
    +关注

    关注

    4

    文章

    437

    浏览量

    43706
收藏 人收藏

    评论

    相关推荐

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

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

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

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

    USB-Pd Type-C连接器是改变游戏规则的吗?

    随着今年早些时候推出USB-Pd规范,它已经扩展了USB电缆的功能,现在可以为各种设备提供高功率。提供5W~10W功率的现有解决方案现在可以利用这项技术进行扩展,最高可提供100W功率。这使OEM
    发表于 10-12 08:52

    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 4445次阅读
    致远电子发布 <b class='flag-5'>USB-PD</b> 快充测试方案

    什么是USB-PD?

    文章来源于:线缆小编TypeC情报中心 我们可以通过多种方式为手机充电,USB-PD是其中之一。实际,目前所有高端的Android手机都开始使用这种快速充电技术,最近华为的MATE30系列和小米
    的头像 发表于 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 0次下载
    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>器应用程序

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

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

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

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