第一章 USB Type C的基本原理
图 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/5V)
USB Type-C:8.3mmx2.5mm
microUSB: 7.4mmx2.35mm
lightning: 7.5mmx2.5mm
引脚解释,如图2所示:
母口:
公头:
图2 引脚映射图
USB-C设备识别方法如图3所示。
图3:USB-C设备识别方法
电阻和充电电流映射如表1所示。
表1:USB-C Rp和Rd具体值(以上拉电压5V为例)
正反可插如图4所示。
图4:正反可插图示
DRP设备是如何工作的?
图5 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;
}
}
防伪以及线缆验证。
图 6:eMarker(EMCA)原理简介
问题1:USB-C的接口是否一定要IC 支持?
第一章 USB Type C的基本原理的更多相关文章
- 第一章:Symfony2和HTTP基本原理
恭喜你!通过学习Symfony2,你将用你自己的方式开发出更加高效.全面和流行的Web应用(当然,要受到用人单位或同行的欢迎,还是得靠你自己).Symfony2的存在是为了要解决最根本的问题:即提供一 ...
- Android群英传》读书笔记 (1) 第一章 Android体系与系统架构 + 第二章 Android开发工具新接触
第一章 Android体系与系统架构 1.Dalvik 和 ARTDalvik好比是一辆可折叠的自行车,平时是折叠的,只有骑的时候,才需要组装起来用.ART好比是一辆组装好了的自行车,装好就可以骑了. ...
- 《Django By Example》第一章 中文 翻译 (个人学习,渣翻)
书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:本人目前在杭州某家互联网公司工作, ...
- Asp.Net MVC4 + Oracle + EasyUI 学习 第一章
Asp.Net MVC4 + Oracle + EasyUI 第一章 --操作数据和验证 本文链接:http://www.cnblogs.com/likeli/p/4234238.html 文章集合 ...
- 第一章 第一个spring boot程序(转载)
第一章 第一个spring boot程序 本编博客转发自:http://www.cnblogs.com/java-zhao/p/5324185.html 环境: jdk:1.8.0_73 mave ...
- 第一章:Javascript语言核心
本节是javascript语言的一个快速预览,也是本书的第一部分快速预览. 读此书之前,感谢淘宝技术团队对此javascript核心的翻译,感谢弗拉纳根写出此书.感谢你们无私的分享,仅以此笔记献给你们 ...
- .net架构设计读书笔记--第一章 基础
第一章 基础 第一节 软件架构与软件架构师 简单的说软件架构即是为客户构建一个软件系统.架构师随便软件架构应运而生,架构师是一个角色. 2000年9月ANSI和IEEE发布了<密集性软件架构建 ...
- OpenGL完全教程 第一章 初始化OpenGL
第一章 初始化OpenGL 无论是什么东西,要使用它,就必须对它进行初始化.如果你之前使用过GDI,你应该也多多少少了解到GDI在绘制图形之前要为之创建渲染环境.OpenGL也一样.本章给出的代码,大 ...
- c#高级编程第七版 学习笔记 第一章 .NET体系结构
第一章 .NET体系结构 本章内容: 编译和运行面向.NET的代码 Microsoft中间语言(Microsoft Intermediate Language,MSIL或简称IL)的优点 值 ...
随机推荐
- Session对象的集合
Session StaticObjects 集合 StaticObjects 集合包含 Session 对象范围中用 <OBJECT> 标记创建的所有对象.该集合可用于确定对象特定属性的值 ...
- asp.net 中使用不同的数据源绑定gridview
第一种,使用SqlDataReader绑定gridview.代码如下: public SqlDataReader bind() { SqlConnection con = new SqlConnect ...
- asp.net连接mysql数据库
方法一:使用MySQL推出的MySQL Connector/Net组件, 该组件是MySQL为ADO.NET访问MySQL数据库设计的.NET专用访问组件.完成该组件后,需要在项目中引用这个组件,也可 ...
- 解决VS报表.rdl 显示乱码“小方块”问题
报表在编辑状态显示文本显示小方块 如图 原因:字体格式是英文状态下. 解决:选中文本框,选择文本框属性,选择字体,字体改成宋体或微软雅黑.就可以了.
- [04] SQL语句优化之索引
1.索引的概念 根据书的目录可以知道内容所在的页码,不用一页一页翻书,可直接通过页码找到内容.数据库的索引类似于书本的目录,索引指向内容存储位置,可直接定位到内容而不必扫描整张表,减少了磁盘的I/O次 ...
- 纯代码添加约束条件(Auto Layout)
Auto Layout 是一种基于约束的.描述性的布局系统.也就是使用约束条件来描述布局,View的Frame会根据这些描述来进行计算. 在iOS6.0以后加入了一个新类: NSLayoutConst ...
- 三栏布局的n种实现
本文主要讨论左右边栏固定宽度,中间栏填满其余空间的布局.至于其他类型,基本上也就是半斤和八两.每一种布局都会有个Demo,个人依然认为文章里帖代码并没有Demo来的直接.所以正文负责解释,源码参见De ...
- 准备Activiti的开发环境
1.创建项目
- 关于“undefined reference to”错误
哪些问题可能产生undefined reference to错误? 1.没用生成目标文件 比如说hello.o文件,由于名字写错.路径不对.Makefile缺少. 2.没用添加相应的库文件.so/dl ...
- 九度OJ 1214 寻找丑数【算法】
题目地址:http://ac.jobdu.com/problem.php?pid=1214 题目描述: 把只包含因子2.3和5的数称作丑数(Ugly Number).例如6.8都是丑数,但14不是,因 ...