基于STM32G0的USB PD协议学习(1)

本文介绍了USB-PD协议的基本概念,包括TYPE-C接口的定义、CC线的状态检测、以及PD协议的流程。特别关注了STM32平台在PD协议中的实现,如输出功率设置和通信流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 1、前言

 如果对PD协议不了解的可以去下方网站去下载PD协议的最新文档来查看学习 

Front Page | USB-IF

 我这边所做的是基于STM32平台去开发的,因此与STM32 PD相关的资料可以从下方链接去找

https://www.st.com/content/st_com/zh/ecosystems/stm32-usb-c.html

 2、USB-PD简介

在此之前还是以我个人的了解,简单介绍一下USB-PD协议,我也是刚接触不久,若叙述的有问题可在评论区提出。

 2.1、USB TYPE-C

目前市面上有很多的充电接口,五花八门,因此为了统一规范,欧盟就大力推行了TYPE-C作为设备的接口(图中右下),以前的Micro-B,Mini-B估计就要慢慢淘汰了,今年的iPhone15就由Lightning换为了TYPE-C。

TYPE-C接口的引脚定义有很多,但是数据线却分为了两种。

a) 第一种是TYPE-A to TYPE-C的。

这种数据线里面就只有4根线: D+、D-、VCC、GND,可以看到走不了PD协议的,因此该数据线都是走BC1.2协议,或者一些厂家的自定义协议,如APPLE协议,高通的QC协议、华为的SCP协议、vivo的VOOC协议,但是小米的这种数据线就很NB,魔改了一下这个数据线,使得这个数据线也可以支持PD协议。

b) 第二种是TYPE-C to TYPE-C。

对于PD协议,需要的是VCC、GND、CC1、CC2就可以了,为了支持第一种数据线的协议,还会加入D+和D-。目前智能设备的功能是越来越多了,投屏、数据高速传输等等,使得这种数据线中还可能会包含TX RX等数据线,就会导致数据线会较粗,如果是支持PD-EPR的协议的,会更粗,价格也更贵。

2.2、CC线

一个TYPE-C接口中有CC1和CC2,每个CC可以有4种不同的状态:Open、Ra、Rd、Rp,通过检测每个CC上的电压来确定当前CC的状态,最终确定目前接口的接入情况,如下图所示: 

手机的充电可以分为以下三个部分的物理连接,分别是:充电头、数据线、手机。

Rp电阻是只存在于SRC端,大部分是充电头、车载充电接口等;

Ra电阻是只存在于C to C的数据线中;

Rd电阻是只存在与SINK端,比如数码相机、部分手机等;

另外还有一个特殊的设备,那就是DRP设备,常见的就是手机、充电宝。DRP设备是既可以做SRC又可以做SINK,CC线上的状态是Rp和Rd以固定的周期在交替,最终体现出一个0V与3.3V的方波。

那么Rp、Ra、Rd、Open又是怎么区别的呢?

 Rp有可以分为三种状态:Default、Rp-1.5A、Rp-3.0A,这些可以体现Type-C口的输出功率是多少,因此需要提前定义产品的输出功率,我定义的产品输出功率是45W,因此选择的是Rp-3.0A,这个是在STM32CubeMx中需要配置的。

 Rd一般就是挂一个5.1K电阻就可以了

 下表是总结了根据CC线上的电压来判断当前CC所处的状态

a) 如果 CC电压 < 0.15V,表示SRC中的Rp电阻连接到了数据线中的Ra电阻,这个时候就需要把Vcon给打开了,给数据线中的emark芯片供电。

b) 如果 0.25V < CC电压 < 0.61V,表示SRC中的Rp-Default连接到了SNK设备中的Rd电阻

c) 如果 0.70V < CC电压 < 1.16V,表示SRC中的Rp-1.5A连接到了SNK设备中的Rd电阻

d) 如果 1.31V < CC电压 < 2.04V,表示SRC中的Rp-3.0A连接到了SNK设备中的Rd电阻

2.3、协议流程

只有当2.2小节中两个CC线处于红框中的状态时,才会进入PD协议的沟通流程

简单的PD请求电压的流程就几个,下图红框中所示:

STM32的软件框架和流程

下一章节更新!!!!!!!!!!!!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值