USB PD快充协议_pd快充协议文件

USB PD快充协议_pd快充协议文件USBPD快充协议

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

1 USB Type-C
1.1 电气参数
Rd: 5.1kΩ
Ra: 1.0kΩ
Rfrswap: 5Ω,for PD 3.0 FR_Swap
4b5b bit rate: 300kbps
BMC bit rate: 600kbps
Rp: Reference to the Figure 1-1

Figure 1-1 USB Type-C pull-up resistors

USB PD快充协议_pd快充协议文件

1.2 DELL USB PD
DELL笔记本USB PD充电适配器Type-C金属头外壳对地有一只1KΩ的电阻。

2 USB PD基本概念
2.1 4种PDO类型
Fixed Supply: CV(恒压)
Battery Supply: CP(恒功率)
Variable Supply: CC(恒流)
Augmented Programmale Power Supply: PPS (APDO)

APDO: Reference to ‘Table 6-22 Programmable Request Data Object’;电压步长20mV,电流步长50mA。
譬如请求6V @ 2A,那么Request消息的B19…9的值为300,而B6…0的值为40。
PPS模式时,需要Sink每隔10秒左右发送一个Request到Src,重新协商PPS电压电流对(参看Figure 2-3)。

USB PD充电选取不同的电压后,三段式AC充电器会调整开关电源的PWM占空比实现调节变压器次级绕组的输出电压。

Figure 2-1 APDO包格式
USB PD快充协议_pd快充协议文件
2.2 PD SNK RDY状态时,SNK请求改变充电电压电流
Reference to USB_PD_R2_0 V1.3 ‘p358, 8.3.2.8.4.1 Sink Gets Source Capabilities’
接着双方重新协商发送消息对,如下所示:
– Get_Source_Cap
– Request(Request对象索引Object Position从1开始,而且该索引位置必定是5V Fixed PDO)
– Accept
– PS_RDY

PR_Swap时,PD双方的Rp和Rd也要交换,其他message不依赖Rp和Rd。

2.3 FR_Swap消息序列
1) Source (Hub) shorts Rp to ground for ~100 us to signal Sink that is needs to supply power immediately.
2) Sink (Mobile Device) supplies 5V.
3) Rp/Rd are not changed at this stage as in a normal PR_Swap.
4) Mobile device then sends an FR_Swap message to resynchronize the power system.
5) Mobile device renegotiates the power contract as needed.

2.4 USB PD PDO协商流程
Type-C SS MUX切换时间:
– 识别到Rp或者Rd连接的时候
– VDM消息进入特定模式时

Figure 2-2 USB PD Message Sequence

USB PD快充协议_pd快充协议文件

Figure 2-3 QC4+充电器

USB PD快充协议_pd快充协议文件
2.5 SOP_P和SOP_PP控制器
远端SOP_PP控制器的存在与否,不是靠检测出来的,而是通过先与SOP_P的通信来获知SOP_PP的控制器是否存在,如果存在,VCONN Source设备才会继续发SOP_PP的报文类型与SOP_PP控制通信。

2.6 iPhone USB PD
使用的芯片是CYPD2104和BQ25890的组合,iPhone X整体PD快充的电源管理策略如下:
1)关机状态下不进行PD沟通,APPLE 2.4A协议生效。非APPLE 2.4A协议开机会慢一点;
2)开机后进行PD协商,依然选取PDO2,前面50%会以较高功率充电(最大不超过15W且视温度及电量自动调控功率);
3)充至50%-55%左右会降至9-11W(视温度及电量自动调控功率);
4)当温度达到一定时,iPhone X会强制降至极低的功率。待手机温度下降后以5W的功率进行后续充电;
5)充电至80%左右,选取PDO1降至5V。请注意此时依然是PD充电,只是选了5V档位减低手机端压降损耗;
6)充电至88%左右,开始进入CV段直到充满。

3 高通平台USB PD
3.1 SDM660的充电器探测流程
– PMIC首先做CC线探测,如果探测到PMIC as UFP,PMIC与此同时再探测CC线是否与VBUS短接,如果VBUS和CC短接,说明插入的是legacy cable(一般指USB-A to USB-C的cable),这个时候直接禁止USB PD和QC(由于CC和VBUS短接,大电流充电会导致电流灌到CC线而可能烧毁PMIC,所以代码默认是禁止QC的);
– 上一步成立的情况下(也就是PMIC as UFP)接着做APSD探测,这里充电器类型探测结果有如下2种状况:
1)如果探测到充电器类型是DCP,接着做USB PD(包括QC4 PPS)探测,假如不支持USB PD,接着rerun_apsd()做QC3 & QC2探测,倘若QC3 & QC2探测失败,说明该电源适配器既不支持USB PD (包括QC4 PPS) 也不支持QC3 & QC2,维持在DCP正常充电状态;
2)如果充电器类型不是DCP,直接做USB PD探测。

3.2 驱动代码
高通Type-C、APSD(BC1.2)和QC的驱动代码在drivers/power下;而USB PD的代码在drivers/usb/pd下面,所以你如果把drivers/usb/pd下的代码通过Makefile屏蔽掉,发现Type-C、APSD(BC1.2)和QC3和QC2充电器还是可以工作的;而此时用USB线连接手机和PC,会发现USB不枚举,原因是extcon的代码是集成在drivers/usb/pd下的,所以如果你既要禁止USB PD,又要让USB可以枚举,那么需要把drivers/usb/pd下的extcon代码移植到drivers/power下面。

3.3 PD消息收发何时触发中断
中断机制是Interrupt on GoodCRC(IoG),如Figure 3-1所示。
Figure 3-1 USB PD中断产生

USB PD快充协议_pd快充协议文件

3.4 充电器类型是DCP时代码逻辑
以下是用户外接一个电源适配器到手机后,Type-C、APSD(BC1.2)、USB PD (包括QC4 PPS) 和QC3和QC2的代码逻辑。

一个投票箱有多个投票client,并且对这些client制定规则。
Figure 3-2 Ballot Box Rules

USB PD快充协议_pd快充协议文件

Figure 3-3 USB PD Ballot Box

USB PD快充协议_pd快充协议文件
4 USB PD芯片介绍
4.1 STM32软件实施USB PD协议
USB PD通讯使用的是双相标记码(Bi-phase Mark Code,BMC,300KHz,bit rate 600kbps),此码是一种单线通信编码,数据1的传输需要有一次高/低电平之间的切换过程,数据0的传输则是固定的高电平或低电平。

TX:SPI1从模式MISO当作TX,SPI1 CLK通过配置TIM14产生,工作在600KHz(对应BMC 600kbps),ARR = 72Mhz / 600kbps,PSC = 0,72MHz频率输入,每计数12个(= 72MHz / 600kbps)触发产生一个SPI1从clk时钟。
SPI传输数据过程中总是先发送或接收高字节数据,每个时钟周期接收器或发送器左移一位数据。对于小于16位的数据,在发送前必须左对齐,如果接收的数据小于16位,则采用软件将无效的数据位屏蔽。

RX:TIM1 CH1输入捕获模式并用DMA接收数据。
输入捕获模式下:当捕获单元捕获到外来有效信号边沿事件(通过TIM1 CH1 Capture Compare Enable Register = 0xB设置上升沿和下降沿捕获,STM32库使用宏TIM_ICPolarity_BothEdge = 0x000A配置双边沿触发捕获),将此刻计数器的值锁存到CCR(Capture Compare Register,16bit)影子寄存器并自动将CCR影子寄存器的值拷贝进CCR预装寄存器,以供用户读取。DMA传输方式就是将CCR预装寄存器中的计数值传输到内存中。CCR寄存器中的计数值与上一次的计数值相减 x 计数频率的倒数 = 高电平或者低电平信号宽度。
输入捕获采样的频率就是定时器经过预分配器(PSC)之后的频率,譬如STM32F1 TIM1 CH1的计数器频率等于2.4MHz = 72MHz/(Prescaler + 1),那么计数器计数每增加4个就表示BMC(bit rate 600kbps)的一个bit。解码时,如果连续2次计数间隔之差都小于6,那么这2次计数间隔对应的4b5b bit是1,如果1次计数间隔之差大于6,说明这次4b5b bit是0。

https://github.com/alterapraxisptyltd/chromium-ec/blob/master/chip/stm32

MISO (DAT0): mi s əu
MOSI (CMD): m əu si
QUP:高通平台的SPI总线和I2C共用core和引脚,称为QUP(QCOM Universal Peripheral);而UART和QUP又共用引脚,并且称为BLSP

4.2 FUSB30X
Registers.Control.TOGGLE
Registers.Status.I_HARDRST
void autoVdmDiscovery(void)

4.3 DP Pin assignments
TA0356 – USB Type-C and Power Delivery DisplayPort Alternate Mode

USB SSTX – TX1
USB SSRX – RX1
DP0 – RX2
DP1 – TX2

5 Abbreviations
AEC-Q100:Automotive Electronics Council-Quality,汽车电子协会,主要规定汽车上IC要遵循的标准,也即是车规认证。汽车级EZ-PD CCG3PA控制器通过了AEC-Q100认证
ARC:Argonant RISC Core
CC2530:TI ChipCon2530
CCG2:Type-C Controller Generation 2
CCGP:USB Common Class Generic Parent,Linux内核类似的驱动就是usb_generic_driver
DWC2:Design Ware Controller 2,Apple的嵌入式设备,包括iPad和iPhone都是使用的DWC2
EZ-PD PMG1: Power Delivery Microcontroller Gen1 in year 2021
giveback:归还 – ehci_urb_done() -> usb_hcd_giveback_urb()。USB PD中的giveback(= 1)指sink会响应source的GotoMin请求,返还部分电力给source。
GRL:Granite River Labs,GRL东莞实验室
halt:停车或者站住,来自于德语;USB endpoint停止运行,返回stall handshake。recovery方法:control ep接收下一次SETUP PID时,自动清除halt标志;其它ep使用clear_feature复位ep halt。
HX3C:USB Type-C Hub with PD
ISP1161:Philips’ Integrated host Solution Pairs 1161,“Firms introduce USB host controllers”,https://www.eetimes.com/document.asp?doc_id=1290054
MPS:Monolithic Power Systems,美国公司
PTN5100:Part Number
Quirks:the attributes of a device that are considered to be noncompliant with expected operation
RS507L:ASEMI整流桥RS507L,4pin接口;用途有LED,手机充电器整流
SL811HS:Cypress/ScanLogic 811 Host/Slave,性能上与ISP1161(Integrated host Solution Pairs 1161)相当
TDI:TransDimension Inc.,该公司首先发明了将TT集成到EHCI RootHub中的方法,这样对于嵌入式系统来说,就省去了OHCI/UHCI的硬件,同时降低了成本,作为对该公司的纪念,Linux内核定义了宏ehci_is_TDI(ehci);产品UHC124表示USB Host Controller;收购了ARC USB技术;现已被chipidea收购,chipidea又被mips收购
TLV:TI Low Value,高性价比
TPS:TI Performance Solution
USB BH reset:Bigger Hammer or Brad Hosler,表示warm reset;you may be confused why the USB 3.0 spec calls the same type of reset “warm reset” in some places and “BH reset” in other places. “BH” reset is supposed to stand for “Big Hammer” reset, but it also stands for “Brad Hosler”. Brad died shortly after the USB 3.0 bus specification was started, and they decided to name the reset after him. The suggestion was made shortly before the spec was finalized, so the wording is a bit inconsistent.
USB PD:USB 电源交付
USB PDT:USB PD Test Instrument

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/215914.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • MyBatis的通俗理解:SqlSession.getMapper()源码分析

    MyBatis的通俗理解:SqlSession.getMapper()源码分析一、什么是MyBatis?直接看官方文档:https://mybatis.org/mybatis-3/zh/index.html。从上面我们了解到:1、MyBatis是一款优秀的持久层框架2、MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。3、MyBatis避免了几乎所有的JD…

  • ioctl与FIONREAD

    ioctl与FIONREADFIONREAD,就是返回缓冲区有多少字节。输入有个输入缓冲区,用ioctl(0,FIONREAD,&nread);能得到缓冲区里面有多少字节要被读取。值放在nread里面了。然后就可以read了。nread=read(0,buffer,nread);

  • git/github运用

    git/github运用

    2021年10月20日
  • python工具包大全_python 库 包 模块

    python工具包大全_python 库 包 模块首先,先向大家介绍一下什么是werkzeug,Werkzeug是一个WSGI工具包,他可以作为一个Web框架的底层库。这里稍微说一下,werkzeug不是一个web服务器,也不是一个web框架,而是一个工具包,官方的介绍说是一个WSGI工具包,它可以作为一个Web框架的底层库,因为它封装好了很多Web框架的东西,例如Request,Response等等。例如我最常用的Flask框架就是一Werkzeug为基础开发的,这也是我要解析一下Werkzeug底层的原因,因为我想

  • Futex系统调用,Futex机制,及具体案例分析[通俗易懂]

    Futex系统调用,Futex机制,及具体案例分析[通俗易懂]Futex1、背景1.1自己实现锁1.1.1自旋锁1.1.2sleep+自旋1.1.3小结1.2futex1.2.1什么是Futex1.2.2futex诞生之前1.2.3futex诞生之后2、Futex系统调用3、Futex机制4、具体案例分析4.1在Bionic中的实现4.2C语言实现5、参考及扩展阅读首先要区分一下futex系统调用和futex机制。futex系统调用是操作系统提供给上层的系统调用接口。而futex机制是使用futex接口实现的一种锁。1、背景线程同步可以说

  • excel转json的全套解决方案

    excel转json的全套解决方案首先准备图个excel:excel转json,使用的在线的一个工具:https://www.bejson.com/json/col2json/将上面代码先格式化,格式化网站如下:http://tool.oschina.net/codeformat/json然后将格式化的文本,复制粘贴到txt文本中将tx…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号