USB Battery Charging V1.2 Specification 定义了USB充电器的类型或者叫做充电源。

1. 支持的充电器类型

1.1 Standard Downstream Port(SDP)

这种USB端口存在于主机PC中,这个是与USB的规格书一致的。

当一个USB外设接到SDP端口上的时候,有下列几种情况:

  • 当总线挂起的时候电流应该小于2.5mA.
  • 如果总线没有挂起并且没有配置,或者连接到一个总线供电的hub上,电流应该小于100ma
  • 如果总线没有挂起且配置好了,电流应该小于等于200ma。

1.2 DCP 或者叫做wall charger

这些充电端口可以供应高达1500ma的电流给移动设备充电。

然而这些DCP端口不支持通过USB接口进行数据传输。

电池充电规格书定义了数据线应该被短接在这种DCP情况下。

充电类型的检查依赖于这些数据线。

1.3 charging Dedicated Port (CDP)

CDP端口是一个在主机端的特殊端口,能够提供高达1500ma的电流,与此同时,可以枚举设备以供正常的USB使用。

1.4 Proprietary charger (专有的充电器)

这些适配器不像正常的标准充电器那样,短接数据线。他们有自己的组合,上拉或者下拉数据线。

1.5 Floated charger

这种类型的充电器被看做是不兼容的充电器类型。USB数据线没有短接并且是悬空的。

因此,与标准类型的充电器相比,当充电检测上拉或者下拉的时候,电压的范围将决定了,他不会

被识别成是DCP.

2 USB充电的架构

下面有几种配置给USB充电和充电器类型的检测。

  • 基于外部充电芯片的充电器检测(SMB充电器检测)
  • 内部的USB PHY充电器检测逻辑

基于USB PHY的充电子系统有以下一些基本模块:

  • USB core负责让OTG driver知道充电器的连接。
  • 高通平台的电池充电是被PMIC或者外部的充电芯片所控制。它必须知到充电器类型和最大充电电流。
  • 原生的电池驱动直接与PMIC进行交互。这个驱动通知PMIC开始使用USB VBUS进行充电并且指明可以获取的最大的电流。

PS:这里的电池驱动估计说的不对,或者我自己理解有误,从代码上看应该是USB的驱动检测到充电器类型之后,把这一信息通知给PMIC.

3 充电检测算法

在通用的充电器检测模型中,提到了几个阶段:

  • Data Contact Detect(DCD)—— 这个是硬件块使用的,用来帮助检测当USB数据线与pin脚连接起来。
  • Primary detection - 这个阶段用来区分是连接在了主机上面还是或者是一个大电流的设备上面。(SDP VS DCP/CDP)
  • Secondary detection - 这个最终阶段,决定了是连接到了DCP 还是CDP。

高通平台:USB充电【转】的更多相关文章

  1. 【转】高通平台android 环境配置编译及开发经验总结

    原文网址:http://blog.csdn.net/dongwuming/article/details/12784535 1.高通平台android开发总结 1.1 搭建高通平台环境开发环境 在高通 ...

  2. 高通平台的bootloader过程【转】

    ====================基本知识=======================LK是(L)ittle (K)ernel的缩写.高通平台android普遍采用LK作为其bootloade ...

  3. 高通平台Bootloader启动流程【转】

    本文转载自:http://blog.csdn.net/fang_first/article/details/49615631 ====================基本知识============= ...

  4. [修改高通平台WIFI MAC 地址] & [adb over wifi]

    [修改高通平台WIFI MAC 地址]fccmd --helpfccmd startfccmd getwifimacfccmd setwifimac 74:AC:5F:F5:D7:40 [adb ov ...

  5. 高通平台 lcd driver 调试小结

    一.概述 1.1 简介 本文档主要包括LCD模块的驱动流程分析.Framebuffer相关知识.Gralloc等相关内容,以及LCD调试的一些经验和相关bug的分析和讲解. 1.2  开发环境 And ...

  6. 高通平台msm8909 LK 实现LCD 兼容

    前段时间小米出现红米note2 换屏门,现在我们公司也要上演了:有两个供应商提供不同IC 的LCD panel. 软件区分的办法是读取LCD IC 的ID 寄存器,下面解析高通平台LK中LCD兼容的过 ...

  7. android 6.0 高通平台sensor 工作机制及流程(原创)

    最近工作上有碰到sensor的相关问题,正好分析下其流程作个笔记. 这个笔记分三个部分: sensor硬件和驱动的工作机制 sensor 上层app如何使用 从驱动到上层app这中间的流程是如何 Se ...

  8. 高通平台MSM8916LCM模块移植(一)-bootloader部分

    此次移植打算分成两个模块来说,bootloader部分和kernel部分.在实际的移植调试过程中也是这么分成了两个部分分别调试. 高通平台中的bootloader叫做LK(Little Kernel, ...

  9. Android : 高通平台Camera调试之SetpropKey/camxoverridesettings.txt

    高通相关网址:Createpoint: https://createpoint.qti.qualcomm.com(可下载文档,Release Note等)Chipcode: https://chipc ...

随机推荐

  1. IO - 同步 异步 阻塞 非阻塞的区别,学习Swoole有帮助

    同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?本文较长需耐心阅读,基础 ...

  2. C++ STL容器

    不定长数组:vector vector是一个模板类,作用为创建一个不定长的数组 声明方式:vector<int>a或者vector<double>b这种类型的方式. 基本操作: ...

  3. EFCore某张表中获取某几个字段

    目录 EFCore某张表中获取某几个字段 1.背景 2.法一:linq 2.1 使用Select方法 2.2 使用ForEach方法 2.3 其他参考代码 3.法二:IQueryble 3.1 参考例 ...

  4. SSH框架之Spring第三篇

    1.1 AOP概述 1.1.1 什么是AOP? AOP : 全称是Aspect Oriented Progamming既 : 面向切面编程.通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技 ...

  5. C# 程序一个cmd命令窗口执行多条dos命令

    1,前几天的项目要用到程序执行dos命令去编译已生成的ice文件,后来去百度了好多都是只能执行一条命令 或者是分别执行几条命令,而我要的是一条dos命令在另一台命令的基础上执行.而不是分别执行. 后来 ...

  6. css知识笔记:水平垂直居中(别只看,请实操!!!)

    css实现元素的水平垂直居中. (尝试采用5W2H方法说明): 别只看,请实操!!! What: 1.这篇文档主要描述元素水平方向居中的几种最常见和最实用的几种方式,并说明优缺点. 2.写这篇文章的目 ...

  7. C lang: VLA(variable-length array)

    Xx_VLA Introduction VLA:variable-length array,not variable array size,but variable arary dimensional ...

  8. JDK环境变量配置遇见的错误以及解决办法

    cmd中输入java -version错误信息: An error has occurred while processing the shared archive file.Unable to un ...

  9. Android五大布局详解——TableLayout(表格布局)

    TableLayout 前面所学的LinearLayout和RelativeLayout两大布局已经完全适用于各种开发条件下,其他的布局仅供参考学习,毕竟知识就是力量,以后的开发过程中万一遇到也能游刃 ...

  10. 12c新特性 在线操作数据文件

    我们都知道,oracle pre-12c之前,若是想要把一个数据文件改名或者迁移, 必须在归档模式下先把这个数据文件offline之后, 然后进行OS上的copy或者rename 操作, 最后在sql ...