图 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的基本原理的更多相关文章

  1. 第一章:Symfony2和HTTP基本原理

    恭喜你!通过学习Symfony2,你将用你自己的方式开发出更加高效.全面和流行的Web应用(当然,要受到用人单位或同行的欢迎,还是得靠你自己).Symfony2的存在是为了要解决最根本的问题:即提供一 ...

  2. Android群英传》读书笔记 (1) 第一章 Android体系与系统架构 + 第二章 Android开发工具新接触

    第一章 Android体系与系统架构 1.Dalvik 和 ARTDalvik好比是一辆可折叠的自行车,平时是折叠的,只有骑的时候,才需要组装起来用.ART好比是一辆组装好了的自行车,装好就可以骑了. ...

  3. 《Django By Example》第一章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:本人目前在杭州某家互联网公司工作, ...

  4. Asp.Net MVC4 + Oracle + EasyUI 学习 第一章

    Asp.Net MVC4 + Oracle + EasyUI  第一章 --操作数据和验证 本文链接:http://www.cnblogs.com/likeli/p/4234238.html 文章集合 ...

  5. 第一章 第一个spring boot程序(转载)

    第一章 第一个spring boot程序 本编博客转发自:http://www.cnblogs.com/java-zhao/p/5324185.html   环境: jdk:1.8.0_73 mave ...

  6. 第一章:Javascript语言核心

    本节是javascript语言的一个快速预览,也是本书的第一部分快速预览. 读此书之前,感谢淘宝技术团队对此javascript核心的翻译,感谢弗拉纳根写出此书.感谢你们无私的分享,仅以此笔记献给你们 ...

  7. .net架构设计读书笔记--第一章 基础

    第一章 基础 第一节 软件架构与软件架构师  简单的说软件架构即是为客户构建一个软件系统.架构师随便软件架构应运而生,架构师是一个角色. 2000年9月ANSI和IEEE发布了<密集性软件架构建 ...

  8. OpenGL完全教程 第一章 初始化OpenGL

    第一章 初始化OpenGL 无论是什么东西,要使用它,就必须对它进行初始化.如果你之前使用过GDI,你应该也多多少少了解到GDI在绘制图形之前要为之创建渲染环境.OpenGL也一样.本章给出的代码,大 ...

  9. c#高级编程第七版 学习笔记 第一章 .NET体系结构

    第一章      .NET体系结构 本章内容: 编译和运行面向.NET的代码 Microsoft中间语言(Microsoft Intermediate Language,MSIL或简称IL)的优点 值 ...

随机推荐

  1. XMPP即时通讯(代码实现)

    1.配置XMPP(XMPPConfig.m) 2.配置XMPPFramework框架 3.创建单例类(XMPPManager.h/XMPPManager.m)管理器 XMPPManager.m: #i ...

  2. <Error>: CGContextRestoreGState

    <Error>: CGContextRestoreGState: invalid context 0x0. If you want to see the backtrace, please ...

  3. 无限大整数相加算法的C语言源代码

    忙里偷闲,终于完成了无限大整数相加算法的C语言代码,无限大整数相加算法的算法分析在这里. 500位的加法运行1000次,不打印结果的情况下耗时0.036秒,打印结果的情况下耗时16.285秒. 下面是 ...

  4. HTML5 Canvas 绘制时钟

    网上会看到很多绘制的时钟,看代码也是云里雾里,自学了下Canvas,觉得不难,就自己做了一个. 先看一下截图: 比较简陋,但是该有的都有了,样式只加了个阴影. html代码就不贴了,就一个canvas ...

  5. 在Mac OS X中使用VIM开发STM32(2)

    本文原创于http://www.cnblogs.com/humaoxiao,非法转载者请自重! 在我先前的博文⎣在Mac OS X中使用VIM开发STM32(1)⎤中,我们安装完成了MACVIM,这一 ...

  6. setInterval()与setTimeout()计时器

    JavaScript是单线程语言,但是它可以通过设置超时值和间歇时间值来指定代码在特定的时刻执行.超时值是指在指定时间之后执行代码,间歇时间值是指每隔指定的时间就执行一次代码. 超时调用 超时调用使用 ...

  7. htmlt中的块状元素与内联元素

    块元素(block element) address - 地址 blockquote - 块引用 center - 举中对齐块 dir - 目录列表 div - 常用块级容易,也是CSS layout ...

  8. 初涉GitHub

    安装 访问https://help.github.com/articles/set-up-git/,选择对应OS平台.有文档参考,我的是OpenSuse. 在console中下载安装http://ww ...

  9. position:absolute,绝对定位和相对定位,JQ隐藏和显示

    需要在指定位置,用绝对定位. 如果直接写position:absolute,top:0;left:0,那就是以浏览器的左上角为参照了 现在需要在某一个指定位置用绝对定位 解决方法 在需要用绝对定位(p ...

  10. Entity Framework 插入数据 解决主键非自增问题

    http://blog.csdn.net/educast/article/details/8632806 与Entity Framework相伴的日子痛并快乐着.今天和大家分享一下一个快乐,两个痛苦. ...