充电杂项介绍

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

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包格式

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

Figure 2-3 QC4+充电器


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中断产生

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

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

Figure 3-3 USB PD Ballot Box


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






1 USB Type-C的基本原理
1.1 基本特性
Figure 1-1 USB Type-C接头外形

USB Type-C(简称USB-C)的基本特性:
1. 接口插座的尺寸与原来的Micro-USB规格一样小,约为8.3mm X 2.5mm
2. 可承受1万次反复插拔
3. 支持正反均可插入的“正反插”功能
4. 最大传输速度10Gb/s,即是USB 3.1 Gen2标准
5. 配备USB-C连接器的标准规格连接线可通过3A电流,同时还支持超出现有USB供电能力的USB Power Delivery,可以最大提供100W电力(20V/5A)

1.2 引脚定义
Figure 1-2 引脚定义
母口:

公头:

Figure 1-3 引脚映射图

1.3 USB-C设备识别方法
Figure 1-4 USB-C设备识别方法

电阻和充电电流映射如Table 1-1所示。
Table 1-1 USB-C Rp和Rd具体值(以上拉电压5V为例)

1.4 正反可插原理
Figure 1-5 正反可插图示

1.5 DRP设备如何工作
Figure 1-6 DRP设备电路原理图

DRP状态机伪代码示例如下所示(该示例伪代码状态机来源于P124 Figure 4-15 of USB Type-C Specification Release 1.1),为便于理解下一章节讲述的USB PD,所以也加入了USB PD的简单状态。

drp_toggle_timeout = 50ms;
tc_sm(void *arg)
{
    switch (state) {
    case UFP_STATE_DETACHED:
        if (DFP连接) {
            state = UFP_STATE_ATTACHED_DEBOUNCE;
            debounce_timeout = 100ms;
        } else if (drp_toggle_timeout) {
            set_drp_mode(CC电阻上拉);
            state = DFP_STATE_DETACHED;
        }
        break;

    case UFP_STATE_ATTACHED_DEBOUNCE:
        if (DFP仍然连接) {
            state = UFP_STATE_ATTACHED;
        } else {
            state = UFP_STATE_DETACHED;
        }
        break;

    case UFP_STATE_ATTACHED:
        // TODO
        state = UFP_STATE_DISCOVERY;
        break;

    case UFP_STATE_DISCOVERY:
        // TODO: PD negotiate
        break;

    [...]

    case DFP_STATE_DETACHED:
        if (UFP连接) {
            state = DFP_STATE_ATTACHED_DEBOUNCE;
            debounce_timeout = 100ms;
        } else if (drp_toggle_timeout) {
            set_drp_mode(CC电阻下拉);
            state = UFP_STATE_DETACHED;
        }
        break;

    case DFP_STATE_ATTACHED_DEBOUNCE:
        if (UFP仍然连接) {
            state = DFP_STATE_ATTACHED;
        } else {
            state = DFP_STATE_DETACHED;
        }
        break;

    case DFP_STATE_ATTACHED:
        // TODO
        state = DFP_STATE_DISCOVERY;
        break;

    case DFP_STATE_DISCOVERY:
        // TODO: PD negotiate
        break;
    } // end of switch
}

1.6 防伪以及线缆验证
Figure 1-7 eMarker(EMCA)原理简介

Question:USB-C的接口是否一定要IC支持?





1 USB 3.0标准A插头
USB 3.0连接器是基于USB 2.0改进而来的,这个设计给USB 3.0连接器带来了一些潜在风险,如果USB 3.0设备插入主机的速度太慢,3.0的针脚还没来得及被识别到,就会被主机判定成USB 2.0的设备。
Figure 1-1 USB 3.0标准A插头

Figure 1-2 USB 3.0标准A插座实现PD协议

2 VOOC原理
Figure 2-1 VOOC快充适配器

Figure 2-2 VOOC快充数据线

VOOC充电适配器利用了USB 3.0的socket,但是数据线认证只用了3.0的5根线中间的GND_DRAIN, GND_DRAIN线上接了一个TI的单线IC,里面存储了认证数据,充电时适配器内置的MCU通过单线读取里面的数据确认是否是OPPO原装数据线,是就使能VOOC快充。

利用GND_DRAIN可以说是借鉴了USB PD 1.0(需要检测线缆是否支持高电压高电流,例如20V@3A的rule)。区别是USB PD 1.0需要修改USB 3.0标准A插座,而VOOC不需要。由于USB-IF官方已经删除了USB PD 1.0规范,所以只能提供个网址如下。

新USB 3.0标准公布,提供100W供电能力。
https://www.chiphell.com/thread-731652-1-1.html

快充握手是通过DP/DM(CLK和DATA)来识别的,这个和QC / TI MaxCharge等是一样的。手机端的7pin示意:GND, GND, ID, DP, DM, VBUS, VBUS。
Figure 2-3 OPPO VOOC 7pin示意图

OPPO的电池是是2个电芯并联的(并联增加容量,串联增加电压),这样VOOC的7pin可以看成是2个VBUS的电流分流了适配器端的,然后2个VBUS流到2个电芯,类似于QCOM的Parallel Charging。

VOOC 是Voltage Open-Looped, Multi-Step Constant-Current Charging的缩写,意思是电压开环,多步恒流充电,大致原理如Table 2-1所示。

Table 2-1 VOOC充电电流变化过程

3 Abbreviations
vivo NEX:其命名来源于英文单词NEXT
VOOC: Voltage Open-Looped, Multi-Step Constant-Current Charging




1 MTK PE
1.1 原理
在讲正文之前,我们先看一个例子。

对于一块电池,我们假设它的容量是6000mAh,并且标称电压是3.7V,换算成Wh(瓦时)为单位的值是22.3Wh(6000mAh*3.7V);普通的充电器输出电压电流是5V2A(10W),理想状态下充满这块电池需要2.23小时(22.3Wh/10W)。现在我们假设充电器调整输出电压电流为10V2A(20W),那么充满同样的一块电池需要1.115小时(22.3Wh/20W)。

我们注意到,由于充电过程中电池的内阻和温度都会上升,所以实际充电过程中是不会一直有这么高的功率充电的。

锂离子电池的充电过程可以分为以下三个部分:预充、恒流、恒压。

由于预充是为了帮助过放电的锂离子电池恢复介质活性,所以需要较小的电流,充电过程中花费大量时间的是在恒流阶段,因此,大电压和电流只能用于恒流阶段。

基于上面的原理分析,我们可以得出一种手机快速充电的定义:手机充电过程中根据电池电压、电量和温度等参数动态请求充电器调整输出电压和电流的方法。

而MTK Pump express正是采用了减少恒流充电时间而提出的一种快速充电方式。

支持Pump express快充的AC适配器如Figure 1-1所示:
Figure 1-1

我们知道变压器有个特性,就是当次级线圈接上负载后,会导致初级线圈的电压和电流产生变化,这个原理也叫“负载调制”。

Pump express正是利用了VBUS上的电流的变化来不断调整恒流阶段的充电电压的。

原理如下:

恒流充电时,送往电池的电流不断减少,辅助绕组Naux电压和电流也产生变动,Naux的输出电流送给了Vsense引脚,Vsense电路会计算电流的变化,通过调节开关管Q1的导通时间来调节初级绕组Npri电压,使之变大,这样次级绕组Nsec的输出电压也提高了,根据公式P=UI,输往手机Charger IC的功率就增大了;保证了当电池的电压接近4.2V时,不断的执行从P=UI(5V*很小电流)到P=UI(大于5V的电压*很小电流)的调整,实现了对电池的快速充电目的。

Note: Pump express plus的最大输出电压是12V

1.2 URLs
[电源]联发科mtk-pe+快速充电诱导成功(MediaTek Pump Express plus)
http://bbs.mydigit.cn/read.php?tid=1740978

2 PE 3.0-Based on USB PD VDM
http://blog.sina.com.cn/s/blog_63f7b4540102wbhx.html

Figure 2-1 PE 3.0 Direct Charge




EPT GPIO初始化文件 @bsp_gpio_ept_config.c

1 知识点总结
1.1 Official 参考充电电路
Figure 1-1 参考电路

VCHG:USB正极
VCDT:VCHG Charger Detect充电电压检测脚
ISENSE:充电电流检测电阻的正极
BATSNS:充电电流检测电阻的负极
BAT:电池正极引脚
BAT_ON:电池NTC (热敏电阻) 引脚
RECHARGING_VOLTAGE: 回充电压

1.2 5V充电器电压设置
@ cust_charging.h
#define  V_CHARGER_MAX       6500    // 6.5 V 充电器的电压最大值
#define  V_CHARGER_MIN       4400    // 4.4  充电器的电压最小值
#define  V_CHARGER_ENABLE     0      //1:ON , 0:OFF  //充电电压保护使能

1.3 配置电池温度检测相关参数
@ cust_battery_temperature_table.h
1.3.1 热敏电阻
目前热敏电阻有两种规格:10K和47K;由电池工程师提供参数。
#define BAT_NTC_10 1
#define BAT_NTC_47 0

1.3.2 在配置热敏电阻参数的同时,也要根据原理图,配置温度检测上拉电阻以及参考电压
#define RBAT_PULL_UP_R             16000 // Unit: Ohm,对应原理图中的R311
#define RBAT_PULL_UP_VOLT          2800   // Unit: micro voltage,对应原理图中的VBATREF

BattVoltToTemp函数就是任何将ADC读出的电压值转换为温度值,该函数其实就是做了两个运算,运算的原理如下图所示。
Figure 1-2 MTK平台NTC温度值计算

1.4 配置充电电流
@ cust_charging.h

1.5 配置电流检测电阻
@ cust_battery_meter.h or @ cust_charging.h
#define CUST_R_SENSE         56  // Unit: micro Ohm, 56 mOhm

该电阻的两端是BATSNS & ISENSE。

Figure 1-3 充电电流检测电阻

1.6 Dead Battery Voltage
@ cust_charging.h
#define V_0PERCENT_TRACKING             3410  /* 3410mV */

1.7 各温度下最大放电容量,内阻-电压表,放电深度-电压表
电池充放电参数由电池工程师向电池厂家索取。目前MTK支持-10°、0°、25°、50°。
1.7.1 各温度下最大放电容量 (Unit: mA)
@ cust_battery_meter.h

Q表示各温度下最大的放电容量
#define Q_MAX_POS_50 1750  //Cmax, 50°最大放电容量1750 mA
#define Q_MAX_POS_25 1763 // 25°
#define Q_MAX_POS_0 1756  // 0°
#define Q_MAX_NEG_10 1726 // -10°

High Voltage:
#define Q_MAX_POS_50_H_CURRENT 1737 //Cmax_400mA, 50°最大放电容量1337 mA
#define Q_MAX_POS_25_H_CURRENT 1717  // 25°
#define Q_MAX_POS_0_H_CURRENT 1214  // 0°
#define Q_MAX_NEG_10_H_CURRENT 966  // -10°

1.7.2 各温度下的内阻-电压表和放电深度-电压表
@ cust_battery_meter_table.h

Figure 1-4 ZCV curve measured SOP

Figure 1-5 Battery Voltage Measure

CAR:库仑计
Cmax/Qmax:电池容量
DOD:Depth of Discharging,放电深度百分比;每次开机后初始的DOD,通过OCV方式算出来或者使用RTC保存的值
mAh:放电容量
OCV:Open Circuit Voltage,开路电压
R (battery):电池内阻,(V2-V1)/400mA
SOP:Standard Operation Procedure
VC (=VBAT):Voltage of Closed Circuit,闭路电压,Charge ADC采样的到电压就是闭路电压
ZCV:Zero Current Voltage,零电流-电压,一般指ZCV的2个表格(开路电压-放电深度百分比,开路电压-电池内阻)

在ZCV曲线里面,还有一栏是电池内阻R (battery),在cust_battery_meter_table.h里面就是r_profile_tX[51],那这个有什么用呢?
公式:oam_v_ocv_1 (OCV) = vol_bat (VC) + 补偿电压(IR)。
在手机端读取的电池电压是vol_bat (VC),实际电池电压是oam_v_ocv_1 (OCV),两者之间由于电池特性或者充电线会有一些差异,这时候就会需要一个补偿电压来让手机端显示百分比更准确,这就是R (battery) 的作用。

Figure 1-6 MTK OCV和SOC计算原理

线性插值方法具体原理如下图。
Figure 1-7 Linear Interpolation Method

从电池供应商表格中提取 R-OCV 对应温度的r_profile_tX[51]数组
从电池供应商表格中提取DOD-OCV到对应温度的battery_profile_tX[51]数组中
注意数组的元素个数都要一致。
系统开机后,会利用预先测得的分布在-10、0、25、50摄氏度下的 ZCV 表,结合真实温度,动态重构一张当前温度下的ZCV 表格,重写TEMPERATURE对应预留的空ZCV数组battery_profile_temperature[51]

假如产品的电压范围设置在4.2V - 3.4V,并且该电压范围对应的容量大小是2000mA,则每个百分点就是20mA。

1.8 充电算法
@ cust_battery_meter.h
考虑接触点电阻,电池接触点处一般会有20~40 mOhm的电阻,这个阻值在大电流 (1.5-2A) 充电的时候,会对充电算法有一定的影响。所以在调试的时候要考虑这个电阻的存在,尤其是大电流充电的时候。在函数mtk_imp_tracking中计算开路电压 (OCV)的时候,可以通过宏定义FG_METER_RESISTANCE的调整去补充这个接触点电阻。

2 Documents
《Battery_Charging_Introduction_for_Customer_V1.0.pdf》
《Battery_Customer Document_MT65xx.pdf》
《Fuel_Gauge_introduce.pdf》
《Fuel_Gauge_Application_Notes_V1.0.pdf》
《Fuel_Gauge_Battery_ZCV_Table_Test_SOP_V1.0_20120716.pdf》

3 DOD-OCV的百分数excel计算法
3.1 excel
1) 点击B1 然后在上面的编辑栏输入 (A1/100)

2) 右键“设置单元格格式(F)...”

3) 剩下的其他单元格只要把鼠标拖到B1的右下角有个 +号此时点击鼠标左键下拉就行了
4) 折线图的生成
从excel选中2列数据,点击“插入”->“插入折线图”,excel会生成直观折线图。

3.2 word

4 Abbreviations
GM 3.0:MTK Gauge Master




1 BC 1.2
1.1 充电器类型探测
1)DCD:DP上有150mV(= 10uA x 15K欧姆下拉电阻)的电压,DM上电压为0
2)Primary Det(DP发起检测DM):
- DP上加载0.6V电压,DM上电压为0,充电器类型是SDP
- DP上加载0.6V电压,DM上电压为0.6V,进入Secondary Det
3)Secondary Det(DM发起检测DP):
- DM上加载0.8V电压,DP上电压为0,充电器类型是CDP
- DM上加载0.8V电压,DP上电压为0.8V,充电器类型是DCP
注:VDAT_REF=0.6V,数据线参考电压
VLGC=0.8V,逻辑电压
Figure 1-1 CDP探测波形

 

1.2 USB 2.0 ULPI PHY
高通平台的USB 2.0的PHY框图如Figure 1-2所示。
Figure 1-2 USB 2.0 PHY

高通平台的USB 2.0接口由于采用了ULPI PHY接口,所以将BC 1.2的探测寄存器放到了ULPI寄存器空间,标准的ULPI寄存器空间地址范围0x00-0x2f,这部分是公规(地址偏移不允许芯片制造商更改),从而高通将充电器探测寄存器的地址放到了这些公规寄存器地址之外了。

1.3 USB 3.0 UTMI and PIPE PHY
高通平台USB 3.0的PHY框图如Figure 1-3所示。
Figure 1-3 USB 3.0双总线架构

由于USB 3.0是双总线架构,既包含了USB 2.0的数据线也包含了USB 3.0的数据线,所以USB 3.0的物理层是有两个部分的。高通MSM8974的USB 3.0的LS/FS/HS物理层用的是UTMI接口,SS用的PIPE3接口(参看phy-interface-pci-express-sata3-usb30-archectures.pdf),并且这两种PHY接口是没有内置寄存器的,故而高通将BC 1.2的充电探测寄存器放到了AHB地址空间(见图)。识别原理主要通过UTMI PHY控制寄存器,PIPE3 PHY接口是不用来做充电器识别的。

2 Q & A
Q:USB_VBUS管脚的47K电阻的作用?
A:使得USB_VBUS上的电压快速充放电,从而识别出外部电源已拔走,快速关断三极管,避免异常时电流倒流的情况。

3 Abbreviations
ARC:Argonant RISC Core
AT91SAM9260:SAM means Smart ARM-based Microcontroller
ATMEL SAMBA:ATMEL Smart ARM-based Microcontroller Boot Assistant
CC2530:TI ChipCon2530
DCD:Data Contact Detect
DWC2:Design Ware Controller 2,Apple的嵌入式设备,包括iPad和iPhone都是使用的DWC2
ISP1161:Philips' Integrated host Solution Pairs 1161,“Firms introduce USB host controllers”,https://www.eetimes.com/document.asp?doc_id=1290054
Quirks:the attributes of a device that are considered to be noncompliant with expected operation
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
TT:Transaction Translator(事务转换器,将USB2.0的包转换成USB1.1的包)
usb3_mifgen:Altera Memory Initialization File
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 SIE:Serial Interface Engine,新的版本命名为Link layer
xECP:xHCI Extended Capabilities Pointer
————————————————




1 JEITA
Reference to https://www.mianbaoban.cn/blog/post/169964
符合 JEITA 规范的锂离子电池充电器解决方案

2 Battery Fuel Gauge
2.1 Cycle Count(充放电循环次数)
此指令回传一只读字段,代表电芯组已经历的完整充放电循环数。当放电容量接近或等于设计容量(DesignCapacity)时定义为一循环。
page 63
http://www.ti.com/lit/ug/sluu431/sluu431.pdf
drivers/power/bq28400_battery.c

2.2 DesignCapacity
DesignCapacity 代表电池设计容量,也就是手机出厂时全新电池的容量。

2.3 FullChargeCapacity
代表实际充满电的电池容量(电池现在总容量),也就是损耗后剩余的总电池容量,小于等于DesignCapacity。

3 BC1.2
3.1 充电器类型探测
1)DCD:DP上有150mV(= 10uA x 15K欧姆下拉电阻)的电压,DM上电压为0
2)Primary Det(DP发起检测DM):
- DP上加载0.6V电压,DM上电压为0,充电器类型是SDP
- DP上加载0.6V电压,DM上电压为0.6V,进入Secondary Det
3)Secondary Det(DM发起检测DP):
- DM上加载0.8V电压,DP上电压为0,充电器类型是CDP
- DM上加载0.8V电压,DP上电压为0.8V,充电器类型是DCP
Figure 3-1 CDP探测波形

3.2 Port Detection for Power Banks
doc no: SLVA770
http://www.ti.com.cn/cn/lit/an/slva770/slva770.pdf

4 Charge Flow in sbl1
4.1 Old Target Charging Flow
core/systemdrivers/pmic/app/chg/src/pm_app_chg_alg.c
pm_chg_battery_and_debug_board_detect_state

4.2 New Target Charging Flow
For example:
systemdrivers/pmic/config/msm8937/pmi8937/pm_config_target.xml
PM_PROP_SMBCHG_SPECIFIC_DATA

boot/secboot3/hw/msm8976/sbl1/sbl1_config.c
sbl1_ddr_init

systemdrivers/pmic/target/msm8937_pm8937_pmi8937/system/src/pm_sbl_boot.c
pm_sbl_chg_init

systemdrivers/pmic/app/chg/src/pm_app_smbchg.c
pm_sbl_chg_check_weak_battery_status

4.3 EDL D+ Checking
boot/secboot3/hw/msm8952/sbl1/sbl1_config.c
qsee_jump_func(...)
{
    [...]
    if (boot_usb_al_check_for_pbl_dload(0))
    {
        boot_dload_transition_pbl_forced_dload();
    }
    [...]
}

5 Abbreviations
AT91SAM9260:SAM means Smart ARM-based Microcontroller
ATL(CATL):Contemporary Amperex Technology Limited,Amperex是一个人造词,由Ampere(安培)和excellent(卓越)合成,意为提供卓越的电流
ATMEL SAMBA:ATMEL Smart ARM-based Microcontroller Boot Assistant
DCD:Data Contact Detect
PWM OB2633:On-Bright
SDI:Samsung Display Inc.
SEC:Samsung Electronics Co., Ltd.
TLV:TI Low Value,高性价比
TPS:TI Performance Solution
————————————————
版权声明:本文为CSDN博主「SEP5010」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zoosenpin/article/details/77448190

版权声明:本文为CSDN博主「SEP5010」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zoosenpin/article/details/29585555

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值