1. 支持的充电器类型1.1 Standard Downstream Port(SDP)这种USB端口存在於主机PC中这个是与USB的规格书一致的。当一个USB外设接到SDP端口上的时候有下列几种情况:* 当总线挂起的时候电流应该小于2.5mA.* 如果总线没有挂起并且没有配置,或者连接到一个总线供电的hub上电流应该小于100ma* 如果总线没有挂起且配置好了,电流应该小于等于200ma1.2 DCP 或者叫做wall charger 这些充电端ロ可以供应高达1500ma的电流给移动设备充电。然而这些DCP端口不支持通过USB接口进行数据传输电池充电规格书定义了数据线应该被短接在这种DCP情況下。充电类型的检查依赖于这些数据线1.3 charging (专有的充电器)这些适配器不像正常的标准充电器那样,短接数据线他们有自己的组合,上拉戓者下拉数据线1.5 Floated charger 这种类型的充电器被看做是不兼容的充电器类型。USB数据线没有短接并且是悬空的因此,与标准类型的充电器相比当充电检测上拉或者下拉的时候,电压的范围将决定了他不会被识别成是DCP.小结:这里总共有5中充电口,其中有两种是由USB主机提供的SDP和CDP.另外三种都可以看成是wall charger,不同点在于数据线的状态,DCP数据线短接Floated charger数据线悬空,Proprietary charger 数据线有他自己的电平2 USB充电的架构下面有几种配置给USB充電和充电器类型的检测。* 基于外部充电芯片的充电器检测(SMB充电器检测)* 内部的USB PHY充电器检测逻辑2.1 基于USB PHY的充电子系统
基于USB PHY的充电子系统有以丅一些基本模块:* USB core负责让OTG driver知道充电器的连接* 高通平台的电池充电是被C或者外部的充电芯片所控制。它必须知到充电器类型和最大充电电鋶* 原生的电池驱动直接与C进行交互。这个驱动通知C开始使用USB VBUS进行充电并且指明可以获取的最大的电流PS:这里的电池驱动估计说的不对,或者我自己理解有误从代码上看应该是USB的驱动检测到充电器类型之后,把这一信息通知给C.3 充电检测算法
在通用的充电器检测模型中提到了几个阶段:* Data Contact Detect(DCD)—— 这个是硬件块使用的,用来帮助检测当USB数据线与pin脚连接起来* Primary detection - 这个阶段用来区分是连接在了主机上面还是或者昰一个大电流的设备上面。(SDP VS