打印
[其他ST产品]

USB Type-C 和 USB PD 简介

[复制链接]
675|33
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
g36xcv|  楼主 | 2024-12-28 23:52 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
USB Type-C 和 USB PD 简介
1.1 USB Type-C 特性
通用连接器:支持正反插。
高功率传输:通过 USB PD,支持高达 100W 的功率传输(20V, 5A)。
数据传输:支持 USB 2.0、USB 3.x、DisplayPort 和 Thunderbolt 协议。


USB PD 功能
USB PD 通过 CC(Configuration Channel)引脚实现动态电压、电流协商,允许设备以不同的电压等级(5V, 9V, 15V, 20V)供电。

STM32 MCU 和 MPU 可以通过嵌入式 USB PD 控制器或外部 USB PD 控制器(如 STUSB4500)支持这些功能。






使用特权

评论回复
沙发
g36xcv|  楼主 | 2024-12-28 23:52 | 只看该作者
USB Type-C 和 USB PD 的硬件设计
2.1 硬件组件
USB Type-C 连接器:

VBUS:电源线。
CC 引脚:用于电缆插入检测和 USB PD 协商。
STM32 MCU/MPU:

使用内置 USB PD 控制器的芯片(如 STM32G0、STM32G4 和 STM32U5)。
或通过 I2C/SPI 与外部 USB PD 控制器通信。
外部保护元件:

ESD 保护器件(如 TVS 二极管)。
过流/过压保护器件(如电子熔断器)。
电源路径控制:

N-MOSFET 或专用电源开关 IC,用于控制 VBUS 的电源方向。

使用特权

评论回复
板凳
g36xcv|  楼主 | 2024-12-28 23:52 | 只看该作者
典型硬件设计框图

2190867701ec3351a9.png (17.88 KB )

2190867701ec3351a9.png

使用特权

评论回复
地板
g36xcv|  楼主 | 2024-12-28 23:52 | 只看该作者
关键设计要点
VBUS 功率路径:

使用 N-MOSFET 和高效 DC/DC 转换器。
提供动态电压调整能力(5V 至 20V)。

使用特权

评论回复
5
g36xcv|  楼主 | 2024-12-28 23:52 | 只看该作者
CC 引脚的配置:

添加 5.1kΩ 或 56kΩ 电阻(根据设备角色选择 Source 或 Sink)。
确保信号完整性和抗干扰性。

使用特权

评论回复
6
g36xcv|  楼主 | 2024-12-28 23:53 | 只看该作者
ESD 保护:

在 CC 和 VBUS 引脚上增加 TVS 二极管(如 USBLC6-2SC6)。

使用特权

评论回复
7
g36xcv|  楼主 | 2024-12-28 23:53 | 只看该作者
过流和过压保护:

使用快速电子熔断器(如 STEF01)或热敏电阻。

使用特权

评论回复
8
g36xcv|  楼主 | 2024-12-28 23:53 | 只看该作者
软件实现
STM32 提供了 USB PD 中间件(USB Power Delivery Stack),用于实现 USB PD 的通信和供电控制。

3.1 软件架构
USB PD 中间件:

提供支持 USB PD 2.0 和 3.0 的协议栈。
实现 PD 消息解析、功率协商和供电控制。
HAL/LL 驱动:

提供低级别硬件访问接口,控制 GPIO、I2C/SPI、定时器等。
应用层:

定义设备角色(Source、Sink 或 DRP)。
处理供电逻辑(如启动/关闭 VBUS、调整电压)。

使用特权

评论回复
9
g36xcv|  楼主 | 2024-12-28 23:53 | 只看该作者
配置步骤(使用 STM32CubeMX)
启动项目:

创建一个新项目,选择支持 USB PD 的 STM32 MCU(如 STM32G4)。
启用 USB Type-C/PD 中间件。

使用特权

评论回复
10
g36xcv|  楼主 | 2024-12-28 23:53 | 只看该作者
配置 USB PD:

在 CubeMX 的 Middleware 页面,启用 USB PD Stack。
配置设备角色(Source、Sink 或 DRP)。
设置 PDO(Power Data Object)以定义支持的电压/电流。

使用特权

评论回复
11
g36xcv|  楼主 | 2024-12-28 23:53 | 只看该作者
生成代码:

生成代码后,基于 usbpd_dpm_user.c 文件实现应用逻辑。

使用特权

评论回复
12
g36xcv|  楼主 | 2024-12-28 23:53 | 只看该作者
代码示例
配置 PDO
c
复制代码
/* 定义支持的电源选项 */
uint32_t PDO_List[] =
{
    USBPD_PDO_FIXED(5000, 3000, 0),  /* 5V, 3A */
    USBPD_PDO_FIXED(9000, 3000, 0),  /* 9V, 3A */
    USBPD_PDO_FIXED(15000, 3000, 0), /* 15V, 3A */
    USBPD_PDO_FIXED(20000, 3000, 0)  /* 20V, 3A */
};
USBPD_PWR_Port_SetProfile(0, PDO_List, sizeof(PDO_List) / sizeof(PDO_List[0]));

使用特权

评论回复
13
g36xcv|  楼主 | 2024-12-28 23:54 | 只看该作者
处理电源协商事件
c
复制代码
void USBPD_DPM_UserCableDetection(uint8_t PortNum, USBPD_CAD_EVENT State)
{
    switch(State)
    {
        case USBPD_CAD_EVENT_ATTEMPT:
            /* 设备连接,准备供电 */
            HAL_GPIO_WritePin(VBUS_EN_GPIO_Port, VBUS_EN_Pin, GPIO_PIN_SET);
            break;

        case USBPD_CAD_EVENT_DETACHED :
            /* 设备断开,停止供电 */
            HAL_GPIO_WritePin(VBUS_EN_GPIO_Port, VBUS_EN_Pin, GPIO_PIN_RESET);
            break;

        default:
            break;
    }
}

使用特权

评论回复
14
g36xcv|  楼主 | 2024-12-28 23:54 | 只看该作者
案例 1:USB PD Source
设备角色:供电设备(Source)。
配置:
PDO 支持 5V/9V/15V/20V。
动态调整 VBUS 电压,基于接收端需求。

使用特权

评论回复
15
g36xcv|  楼主 | 2024-12-28 23:54 | 只看该作者
案例 2:USB PD Sink
设备角色:受电设备(Sink)。
配置:
请求 9V/15V 的供电以匹配内部负载需求。

使用特权

评论回复
16
g36xcv|  楼主 | 2024-12-28 23:54 | 只看该作者
案例 3:双角色设备(DRP)
设备角色:动态切换 Source 和 Sink。
配置:
使用 USB PD 协商决定角色。
确保硬件支持双向电流控制。

使用特权

评论回复
17
g36xcv|  楼主 | 2024-12-28 23:54 | 只看该作者
测试和验证
硬件验证:

使用示波器测量 CC 和 VBUS 的信号质量。
测试 ESD 抗扰性(IEC 61000-4-2)。

使用特权

评论回复
18
g36xcv|  楼主 | 2024-12-28 23:54 | 只看该作者
功能验证:

使用 USB PD 分析仪(如 Total Phase PD Analyzer)监测协议交互。
验证设备在不同供电模式下的功能。

使用特权

评论回复
19
g36xcv|  楼主 | 2024-12-28 23:55 | 只看该作者
功率验证:

测量实际供电能力,验证是否达到设计目标。

使用特权

评论回复
20
g36xcv|  楼主 | 2024-12-28 23:55 | 只看该作者
通过 AN5225 的指导,结合 STM32 的 USB PD 中间件和硬件支持,可以实现多种 USB Type-C 和 USB PD 应用,包括电源适配器、移动设备充电管理以及智能供电系统。设计时需重点关注硬件保护和软件堆栈的正确实现,以满足 USB PD 的功能和可靠性要求。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

29

主题

313

帖子

0

粉丝