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. JavaEE初学笔记之Servlet与Tomcat

    JavaEE开发,本质上就是开发一个个Servlet,然后部署到Servlet容器(如Tomcat)里运行.   1. Servlet是什么? Servlet就是一个普通的接口(Interface), ...

  2. VUE+Element UI实现简单的表格行内编辑效果

    原理是通过Css控制绑定的输入控件与显示值,在选中行样式下对控件进行隐藏或显示 <!DOCTYPE html> <html> <head> <meta cha ...

  3. Flask 教程 第十章:邮件支持

    本文翻译自The Flask Mega-Tutorial Part X: Email Support 这是Flask Mega-Tutorial系列的第十部分,在其中我将告诉你,应用如何向你的用户发送 ...

  4. SAP FI 问题汇总

    记录工作中遇到的问题汇总 1.固定资产折旧码的设置 2.与资产有关的日期 3.如何添加固定资产分类

  5. Android 极光IM-高级篇-玩聊天app诞生

    距离上一次写 基础篇有了4个月,终于我写了一个 功能完善的即时通讯app,作为高级篇的担当出现.废话不多说,上图 app预览 ​​​​ ​​​​ ​​ 实现功能 1.用户的登录注册 2.单聊,能清空聊 ...

  6. Windows下RabbitMQ 的下载、配置、Java实现生产者和消费者例子

    RabbitMQ是一个轻量级的消息代理中间件,支持多种消息通信协议,支持分布式部署,支持运行于多个操作系统,具有灵活.高可用等特性.RabbitMQ支持多种协议,其中最为重要的是高级消息队列协议(AM ...

  7. 如何实现用户的历史记录功能(最多n条)

    使用容量为n的队列存储历史记录 使用标准库collections中的deque,它是一个双端循环队列 from collections import deque q = deque([], 5) #参 ...

  8. python 中model.py详解

    model详解 Django中遵循 Code Frist 的原则,即:根据代码中定义的类来自动生成数据库表. 创建表 基本结构 from django.db import models # Creat ...

  9. i2c中start和restart的区别【转】

    有的硬件芯片提供了一个个寄存器,供我们很好的操作i2c,但是,在用的时候,我们是不知道他到地是怎么操作的,下边,我就探讨下i2c中的start和restart的区别. start是在scl是高电平的时 ...

  10. 一个简单的WebServer,socket+threading

    一个简单的WebServer import socket import threading body = '<h1> web server </h1>' response_pa ...