该系列文章总目录链接与各部分简介: Android Qcom USB Driver学习(零)

USB接口类型

Android终端上常用的USB接口:TypeC(现在的主流),MicroB(以前的设备)

一、TypeC

Hardware Interface

USB-C引脚和功能指南
一文读懂USB TypeC与USB-…TypeC引脚定义
USB-C(USB Type-C)规范的简单介绍和分析

USB-C接口具有三个主要功能:

(1)允许设备协商并选择通过接口的适当功率水平。
(2)具有可翻转的连接器。接口的设计使得插头可以相对于插座翻转。
(3)支持USB 2.0,USB 3.0和USB 3.1 Gen 2标准。
(4)TypeC基于CC1/CC2通讯支持USB PD协议,高通基于D+/D-通信支持高通快充HVDCP高通快充握手协议,前提是基于BC1.2协议
(5)Typec接口要支持视频输出,必须支持DP,这就要看高通芯片的usb feature,而TypeA单是纯粹的数据接口,无法传输视频信号,但也有displaylink的技术能通过TypeA进行传输,通过将显卡计算的结果转为usb,传输后再将usb转为视频输出。

24Pin全功能的TypeC接口的成本较高,很多MCU没有USB3.0,于是就有仅支持USB2.0的16Pin的TypeC,去除SS的R/TX。

TypeC Pin Hardware schematic Function
VBUS USB_VBUS_CONN 总线电源
D ± USB_HS_TYP_C_DP USB_HS_TYP_C_DM USB2.0 高速(High Speed)差分信号
CC1/2 USB_CC1/2_CONN Configuration channel用于连接检测
R/T X1/2 ± USBC_SS_R/T X 0/1_CONN_P
USBC_SS_R/T X 0/1_CONN_M
USB3.0 SuperSpeed差分信号
SBUS1/2 USB0_SBU1/2 Sideband use 适用于传输非USB信号

Channel Configure

  在USB2.0应用中,无需考虑CC方向检测问题,但USB3.0或者USB3.1应用中,必须考虑CC方向检测问题。CC1/CC2内部相连,最好分别使用5.1k下拉电阻,而不是共用一颗5.1k的电阻下拉到地。USBC硬件接口设计失误

 USB Type-C的连接检测包括3部分的内容:
 (1)连接检测;
 (2)连接方向检测;
 (3)Power Role检测。

Power Role

Source,通过VBUS或者VCONN供电。
Sink,通过VBUS或者VCONN接受供电。
DRP(Dual-Role-Power),既可作为Source,也可作为Sink。角色由设备连接后的CC决定,以及后续的power role switch过程决定。

Data Role

  在USB 2.0及以前的时代,根据功能的不同,USB端口分为Host、Device、OTG等。快充协议芯片按照应用场景的不同,Type C又可称为以下三类角色:

DFP(Downstream Facing Port),一般作为Host或者Hub,在初始配置下通过VBUS或者VCONN向device供电,典型的就是电源适配器。
UFP(Upstream Facing Port),一般作为Device或者Hub,初始配置下通过VBUS或者VCONN由Host供电,例如接口转接线等。
DRD(Dual-Role-Data),类似于以前的OTG,既可以作为DFP,也可以作为UFP。设备刚连接时作为哪一种角色,由端口的Power Role
决定;后续也可以通过data role switch过程更改(如果支持USB PD协议的话),例如支持PD快充的移动电源、手机、电脑。


  上拉电阻Pull-up resistor (Rp) +下拉电阻Pull-down resistor (Rd) ,通过Rp-Rd路径确定电缆连接及其方向,以及传达有关源电流能力的信息。对插头来说,正常情况下只有一个CC,通过检测CC引脚上的电压,连接线上的电压会低于未连接线上的电压,以此就可以判断连接的方向。如果是可供电的USB cable(Powered cable,E-Marker芯片),一个用做CC,另一个用作Vconn,给电缆芯片内部供电,则需要注意下拉电阻Ra,由于Ra不同于Rd,因此DFP仍能够通过检查DFP CC1和CC2引脚上的电压来确定电缆的方向。对于插座来说则有CC1/CC2两个通道。
  设备连接与分开检测:DFP需要检测到CC管脚上有某个电压时,判断UFP设备已插入或拔出,来提供和管理VBUS。当没有UFP设备插入时,必须关闭VBUS。因此所有的DFP设备需要CC逻辑检测与控制芯片以及VBUS开关电路。
  标准下拉电阻为Rd=5.1k,上拉电阻Rp不确定。USB Type-C靠Rp的不同,从而在 CC pin检测到的电压就不一样,来控制DFP供电模式。

DFP Perspective

CC1 CC2 State Postion
Open Open Nothing Attched,没有连接的端口 N/A
Rd Open UFP attached,连接的方向由CC为Rd决定,通过VBUS供电而非VCONN
Open Rd
Open Ra Powered Cable/No UFP attached,检测Open状态等待UFP attached
Ra Open
Rd Ra Powered Cable/UFP attached,通过VCONN(插座)和VBUS进行供电
Ra Rd
Rd Rd Debug Accessory Mode attached 调试附件模式 N/A
Ra Ra Audio Adapter Accessory Mode attached 音频适配器模式 N/A

USB 主机和配件概览,是否支持 USB 主机和配件模式最终取决于设备的硬件。

USB OTG

NMOS or PMOS的功能介绍
  N-MOS,当VGS大于某个值会导通 ,若为导通的状态下,如果通路上有大电阻则电流接近0,实际电位则为低,P-MOS高端驱动,当VGS小于某个值以上,则会导通。高通4290上USB OTG的功能主要是基于PMI632 CC1_ID(OTG mode enable or CC1 pin for the USB Type-C connector (user programmable),若USB功能需要转为Host,与此同时Data Role以及Power Role的角色也就需要转变。

if (chg->typec_port) {typec_partner_register(chg);typec_set_data_role(chg->typec_port,TYPEC_HOST);   //Data  Role ↑↑↑typec_set_pwr_role(chg->typec_port, TYPEC_SOURCE); //Power Role ↑↑↑vote(chg->usb_icl_votable, USB_PSY_VOTER, true, chg->dcp_icl_ua);vote(chg->usb_icl_votable, SW_ICL_MAX_VOTER, false,0);power_supply_changed(chg->usb_psy);
}

二、MicroB

Android终端一般接口都是TypeC,MicroB 一般为标准的USB接口:VBUS、USB_D+、USB_D-、USB_ID、GND

Android Qcom USB Driver学习(一)相关推荐

  1. Android Qcom USB Driver学习(二)

    该系列文章总目录链接与各部分简介: Android Qcom USB Driver学习(零) BC v1.2充电规范 Battery Charging Specification USB port 如 ...

  2. Android Qcom USB Driver学习(八)

    该系列文章总目录链接与各部分简介: Android Qcom USB Driver学习(零) 因为要看usb charging的问题,所以需要补充一下battery的相关知识,算是入门吧 BAT SC ...

  3. Android Qcom USB Driver学习(六)

    该系列文章总目录链接与各部分简介: Android Qcom USB Driver学习(零) 眼图基础知识与详解 10分钟教会你看眼图 USB2.0 HUB眼图调试经验总结 一篇文章教你如何全面了解眼 ...

  4. Android Qcom USB Driver学习(四)

    该系列文章总目录链接与各部分简介: Android Qcom USB Driver学习(零) VID/PID识别USB设备 CDC-ACM驱动介绍   CDC-ACM(Communication De ...

  5. Android Qcom USB Driver学习(九)

    该系列文章总目录链接与各部分简介: Android Qcom USB Driver学习(零) 高通的某些平台将电源管理移植到了ADSP Subsystem, 分析一下其中比较关心的部分 Archite ...

  6. Android Qcom Audio架构学习

    总结: Android Audio不简单呀,一个人摸索入门不容易的,研究了一段时间,感觉还不是很懂,但以下的知识对入门还是有帮助的. Audio架构中的名词 FE(Front End) 提供pcm的设 ...

  7. Android Qcom lcd display 学习(1)

    LCD的结构 TFT-LCD屏幕构造组成原理 Android LCD(一):LCD基本原理篇 LCD: 奇景光电 (hx8399) .敦泰 (ft8719) .京东方 .联咏等IC厂商 由于TFT-L ...

  8. Android Qcom lcd display 学习(4)

    DRM Linux DRM(二)基本概念和特性 DRM(Direct Rendering Manager)学习简介 DRM 的诞生就是用来处理多个程序对 Video Card 资源的协同使用问题,通过 ...

  9. Android Qcom lcd display 学习(3)

    Android Display整体架构 Android 图形组件 Android Graphic analyze display:高通display overview MDP(mobile displ ...

最新文章

  1. Lua学习笔记6:C++和Lua的相互调用
  2. 运营商认为虚拟化也难快速降低企业OPEX
  3. gsoap生成webservice调用客户端接口
  4. 七、Excel中图表制作和展示
  5. sqoop把mysql数据导入hive
  6. 计算机科学中的逻辑学术,简述逻辑学在计算机科学中的应用
  7. where和having区别
  8. 常见的排序算法五——堆排序
  9. Gerrit代码Review高阶实战
  10. 为什么我不推荐敏捷开发?
  11. 简单的制作一个动态链接库(DLL)
  12. 重新想象 Windows 8.1 Store Apps (91) - 后台任务的新特性: 下载和上传的新特性, 程序启动前预下载网络资源, 后台任务的其它新特性...
  13. EfficientDet训练自己的物体检测数据集
  14. 数据结构:八皇后、N皇后
  15. PG数据库操作相关问题以及解决
  16. hdu4699 Editor(栈)
  17. 知己知彼 看CIO如何成功领导80后
  18. weblogic 打补丁
  19. MoviePy - 中文文档2-快速上手-创建和导出video clips
  20. 十进制的转换与任意进制的互转

热门文章

  1. nohup不输出nohup.out日志信息(nohup: appending output to ‘nohup.out‘)
  2. PXC 安装 (yum操作)
  3. 购房流程 - 新浪网
  4. 构建人工智能评测平台(体系)
  5. 什么是自动气象站 校园气象站
  6. 网课python程序设计答案_Python程序设计知到网课答案
  7. jieba库的安装与使用
  8. CV中一些常见的特征点
  9. 分辨率,像素,dp之间的联系
  10. c语言结构体作为形参是否加struct_(struct)结构体变量作为函数参数调用的方法小结...