串行总线的学习

news/2024/11/14 10:56:27/文章来源:https://www.cnblogs.com/wyuu101/p/18540984

一、USB概念

Universal Serial Bus,简称 USB。中文翻译称为通用串行总线,是一种串口总线的标准,也是一种输入输出接口的技术规范

二、USB接口外形分辨

  • 主要类型:Type-A,Type-B,Type-C,Micro,Mini

下面以USB2.0协议展示不同类型接口的形状

Type-A

Type-B

通常在打印机设备使用,另一端使用 USB-A 连接电脑(一些单片机程序下载接口也采用TypeB)

Type-C

Micro

Mini

需要注意的是,上图展示的都是公头,每一个公头都有与之对应的母头,引脚一一对应,由于形状相似,所以不再展示母头的图片,具体可以参考另一篇文章

三、USB口的引脚定义

1、USB2.0

前面的图片展示的均为USB2.0协议下的接口,下面具体介绍每一个引脚的作用

看到这里,可能读者会有疑问,ID引脚(也就是4号)引脚有什么作用,为什么又分两种接法。
别着急,这将在后面的OTG(On-The-Go)部分进行详细讲解。

2、USB3.0


  可见USB3.0相比USB2.0多出5条特殊引脚,用于实现全双工超速差分信号传输,USB2.0使用D+和D-实现半双工通信,而USB3.0新增差分信号发射对和差分信号接收对来实现全双工通信,目前许多支持USB3.0协议的接口同时还留有USB2.0定义的数据引脚(D+和D-),用于支持USB2.0通信。至于他们的通信协议,后面会专门讲。

  • 下面以Type-A和Type-B为例稍微讲一下引脚分布,其他类型的接口也是同理。

    • Type-A

    到这里你应该学会了如何区分Type-A的2.0接口和3.0接口,应该去看他的接口内的引脚数量(而不是去看那块塑料的颜色),如果引脚数量为4,那么肯定是2.0;如果可以看到引脚的数量为9,那么它可能是3.0接口,为什么是只是可能?因为有些不良商家,虽然用的是支持3.0的接口,但是在接线的时候只连接了2.0的引脚,其他的引脚甚至都没焊上,所以买的时候要小心...

    • Type-B

    • Type-C

      • 24Pin
        Type-C的引脚定义也是大同小异,支持USB3.0协议的Type-C接口为24Pin接口,也称全能Type-C接口。


        巧妙的引脚设计使得Type-C在接口时无需辨别正反,正插反插都能达到同样的效果。
        下面是每个引脚的具体定义

        可见24pin接口具备USB3.0协议中的所有针脚,但是同时还多出CC和SBU等引脚,这主要是用于实现新型的PD(PowerDelivery)快充协议,至于这些接口的协议,后面会说。
        除了24pin的Type-C接口,其实它还有16pin、12pin和6pin的引脚,下面具体来看

      • 16pin、12pin

           一些普通的设备不支持USB3.0,只有USB2.0,使用24Pin的TypeC很浪费,于是就有了16Pin的TypeC,相比24Pin,就是少了下图中阴影部分遮盖的超高速全双工信号传输通道,除了没有USB3.0高速传输外,其他别无二致,同样支持PD快充(后面协议部分会说)。

           16Pin一般为接口厂家、封装的正式名称,而日常生活中习惯称呼为12Pin。这是因为接口设计时,将TypeC母座两端的两个Vbus和GND出线都并拢了起来,虽然从口那里看是16条出线,但座子后面的焊盘只有12个。

        本来16pin、12pin的Type-C口应该放在前面的USB2.0引脚定义中讲,但是为了更加连贯直观的介绍Type-C口,本人是从USB3.0引脚定义的24pin Tpye-C口引申到16pin、12pin。

      • 6pin

          对于玩具、牙刷等生活用品,产品定位上没有USB通信的需求,只需要USB取电充电。那么连USB2.0都可以省掉了。
        6Pin TypeC正式出道。6Pin TypeC仅仅保留Vbus、GND、CC1、CC2。接口两侧对称分布着两组GND、Vbus,使得防反插功能保留,粗线也让其更为方便的传输大电流,CC1、CC2用于PD设备识别,承载PD协议,以向供电端请求电源供给(可见6pin的TypeC尽管没有了USB2.0通信协议,但仍能支持PD协议)

        看到这里再会过头想想,对于Type-B、Mirco、Mini接口,如果我们仅仅使用它的供电功能,那D+和D-也没有存在的必要,但通常这些接口都带有这些引脚,对于仅仅需要供电而不需要通信的电路,D+和D-悬空即可。



四、OTG技术

  • 概念:OTG即On-The-Go的英文缩写,是由USB标准化组织公布的一项用于USB设备连接或数据交换的技术

  • 作用:通过OTG技术,可将原本作为终端的USB设备演变为主机,从而达到满足USB设备之间进行相互控制或管理的需求。

  • 详解:

    • 先了解主机与从机,简单理解:主机是控制方,从机是被控方。

    • USB 2.0规范定义了主机/外设关系,PC始终是主机,插入它的设备是外围设备。举例:以日常的数据线(Type-A~Micro-B)为例,用其将手机和电脑连接起来,那么默认手机就是从机,电脑就是主机,由主机向从机供电,并管理从机的数据。

    • 随着PDA,数码相机和各种其他便携式设备的技术进步,需要直接互连这些设备而无需增加计算机,USB 2.0不支持此功能(一种简单的应用情景就是用手机直接管理U盘,此时手机变成了主机,U盘变成了从机,如果任然按照以前的规定,这是不能实现的)。因此,为了克服这一限制,USB-OTG被发布。

    • 所以USB口中的ID引脚此时就发挥了作用,通过接地或者悬空(上拉)来让设备确定自己在本次通信中作为主机(Host)还是从机(Slave),而对于能够根据ID引脚的电平来确定自己是主机还是从机的设备(也就是能在特定情况下能作为主机管理其他设备),就称这个设备支持OTG技术,现在许多智能手机都支持OTG。

    • 对于普通的数据线(Type-A~Micro-B为例),Micro-B中的ID引脚通常是悬空的,这样移动设备在使用这条线时就知道自己是从机。
      同理,对于支持OTG的设备,若要求其能够作为主机管理其他设备,就需要专用的OTG数据线(我们常称为转接口或手机拓展坞),其图片和接线图如下所示



      到这里你已经学会如何自己做一个OTP转接口了。

五、充电协议

(零)协议升级的目的与发展现状

1、协议升级的理论依据

由于充电功率和电压电流相关P=UI,提高电压或者电流就可以提高充电功率,在电池容量一定的情况下,功率越大充电速度越快。

2、发展现状

现行快充技术主要分为两大阵营:低压快充和高压快充。

  • 低压快充以OPPO的VOOC闪充为代表,通过增大充电电流的方式来提高充电功率。

    • 优点:发热量小、能量转换效率高

    • 缺点:硬件需要定制,成本高,兼容性差

  • 高压快充以高通QC2.0为代表,其他厂家技术原理和高通一样都是基于BC1.2,通过增大充电电压来提高充电功率。

    • 优点:兼容性好、继承性好、稳定

    • 缺点:发热量大,能量转换效率低

(一)BC1.2快充协议

1、介绍

  BC1.2 (Battery Charging v1.2)是USB-IF下属的BC(Battery Charging)小组制定的协议,主要用于规范电池充电的需求,该协议最早基于USB2.0协议来实现。USB2.0协议规定外设从USB充电器抽取电流的最大值为500mA,500mA的电流限制无法满足日益增长的快充需求。因此,BC1.2引入了充电端口识别机制,下面先了解一下下面几种端口类型。

2、协议识别过程

  • ①VBUS Detect Vbus 检测( VBUS检测)
    PD(portable device,便携式设备)中有个检测VBUS是否有效的电路,电路有一个参考值,高于这个值就认为是VBUS有效了,参考值不固定一般在0.8V~4V之间

  • ②Data Contact Detect 数据连接检测(这一步可以不看,感觉没什么必要())
    VBUS电压有效后,便携式设备必须确保数据引脚保持接触,然后再进行检测。如果终端设备在数据引脚接触之前过早做出决策,就可能错误地判断充电器类型,这个阶段不是必须的,因为USB端口可能支持数据协议也可能不支持。如果这个阶段超时900ms还没检测到D+或ID PIN的连接,就要求必须开始进行Primary Detection。

  • ③Primary Detection 首次检测(主充电器检测)
    该阶段主要作用是判断端口是充电口还是数据口,即终端设备区分具有充电标签的500mA以上端口(CDP和DCP)与500mA以下端口(SDP)。

    • 关闭DCD阶段的电流源后,终端设备必须在D+上使能0.5V至0.7V电压源,在D-上使能25μA至175μA流入电流源。
    • 如果在D-上出现0.5V至0.7V电平,则判定连接的是DCP或CDP;
    • 如果D-电压下降至零,则判定为连接的是SDP,则需要进一步进行判定:终端设备切入一个比较器,将D-电压与0.25V至0.4V进行比较。如果D-电压高于0.4V但低于逻辑低电平门限0.8V,终端设备则认为此端口用于充电;否则,判定为此端口用于数据连接。
  • ④Secondary Detection 二次检测
    该阶段作用是确认充电口能否支持数据协议,即区分CDP和DCP。

    • 按照反序执行③的测试。在D-作用0.5V至0.7V电压源,在D+作用50μA电流源。
      • 如果D+出现0.5V至0.7V电平连接,判定为DCP
      • 如果D+电压为零,判定为CDP
  • ⑤判定完毕,按照对应的结果进行供电或者传输数据。

3、波形展示

4、补充与衔接

  由于BC1.2并非强制性协议,许多厂家基于BC1.2研发了自己的私有快充协议。比如高通的QC2.0/QC3.0,联发科的PE(Pump Express)/PE+。高通的QC2.0/QC3.0和联发科的PE快充方案技术原理是一样的,都是通过增大充电电压来提高充电功率

(二)高通QC(Quick-Charge)协议

1、介绍  

美国高通专为配备Qualcomm骁龙处理器的终端而研发的快速充电技术。

  • QC1.0充电协议:
    突破了BC1.2充电协议的最大1.5A电流极限,达到5V2A,充电时间缩短40%

  • QC2.0充电协议:

  • QC3.0充电协议:

  • QC4.0充电协议:

2、协议识别过程

2-1、QC2.0协议
  • ①将充电器通过数据线连接到手机上,充电器默认将D+、D-短接,这样手机端探测到充电器类型是DCP(专用充电端口模式),此时默认输出5V电压,手机正常充电;
  • ②如果手机支持QC2.0快速充电协议,则Android用户空间的hvdcp(high voltage dedicated charger port)进程启动,开始在D+上加载0.325V电压,并维持1.25S以上;
  • ③当充电器检测到D+上电压0.325V并维持超过1.25S后,充电器断开D+和D-的短接,由于D+和D-断开,故D-上的电压不在跟随D+变化,此时电压开始下降;
  • ④手机端检测到D-上的电压从0.325V开始下降并维持1ms以上时,hvdcp读取/sys/class/power supply/usb/voltage max 的值,如果是9000mv,则设置D+上电压为3.3V,D-上电压为0.6V;若为5000mv,则设置D+上电压为0.6V,D-上电压为0V;需要注意的是,如果D-设置为3.3V,说明该设备还支持QC3.0,就要进入后续的QC3.0协商过程,也就是说QC3.0是QC2.0的进步式协议
  • ④充电器检测到D+、D-上的电压后,就调整充电器的输出至相应电压
2-2 QC3.0协议
  • QC3.0就是一个步进式的协议,如增加200mv的输出电压,就是DM3.3V,DP发送0.6~3.3V的方波,一个方波增加一次电压;降低电压相反

参考文章
https://blog.csdn.net/u010783226/article/details/120142717
https://blog.csdn.net/qq_27854611/article/details/120316581
https://blog.csdn.net/weixin_45694615/article/details/108532889
https://blog.csdn.net/zzsddre/article/details/124420624

(三)USB-PD协议(USB-Power Delivery)

(四)PE

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/832621.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文搞懂 ARM 64 系列: PACISB

一文搞懂 ARM 64 系列: PACISB1 PAC AMR64提供了PAC(Pointer Authentication Code)机制。 所谓PAC,简单来说就是使用存储在芯片硬件上的「密钥」,一个「上下文」,与「指针地址」进行加密计算,得出一个「签名」,将这个「签名」写入指针的高bit上。计算出来的「签名」之所以…

NewStarCTF-pwn

NewStarCTF-pwn目录NewStarCTF-pwnweek1overwriteread() 参数gdbweek2week3week4 week1 overwrite 首先查看文件,保护全开,为64位放入IDA查看代码,发现关键函数func()第9-12行代码,首先打印提示信息“pls input the length you want to readin: ”,然后使用__isoc99_scanf…

Animal Controller文档——Animal Modifiers

Overview 是一个结构类,在进入新动画时修改Animal的Main Core功能。通常用于States或Animator Controller中的Animal Modifier Behaviour组件。有关如何使用这些的更多信息,请参阅States页面。Parameters RootMotion 启用/禁用Animator上的Root Motion。 Sprint 启用/禁用Ani…

南开高级语言程序设计2--OJ题目答案

注意:素数是从2开始,2也是素数 第七章(运算符重载) #include <cstdio> #include <iostream>using namespace std; int gcd(int a, int b) {return b ? gcd(b, a % b) : a; } int lcm(int a, int b) {return a * b / gcd(a, b); } class Rational { private:in…

Animal Controller文档——States

Overview States是动物控制的核心逻辑,使动物能够移动、坠落、跳跃、死亡等。 States的动画相互独立。例如,动物不能同时处于奔跑和跳跃,或飞行和游泳状态。 它们按优先级排序,优先级高的状态将优先尝试激活,之后才是优先级低的状态。如果一个高优先级状态是当前激活的状态…

开源 - Ideal库 - 常用枚举扩展方法(一)

分享枚举操作常用扩展方法,适用正常枚举和位标志枚举。包括名称/描述转枚举、转枚举值或默认值等方法,并附上详细单元测试。代码库已上传,可直接使用Ideal.Core.Common。今天和大家享一些关于枚举操作相关的常用扩展方法。我们平时用的比较多的是正常枚举,同时还有加[Flags…

2024腾讯云双十一必抢清单:省钱、省心、省力的购买攻略

一、前言 大家好,我是 Neo!一年一度的双十一购物狂欢节又到了!在这个特别的日子,腾讯云也推出了超一、前言 大家好,我是 Neo!一年一度的双十一购物狂欢节又到了!在这个特别的日子,腾讯云也推出了超值的优惠活动。最近我正好在做自己的小程序项目,需要用到服务器,特意…

Pytest自动化发现测试数据并进行数据驱动-支持YAML/JSON/INI/CSV数据文件

需求在测试框架中,往往需要测试数据和代码分离,使用CSV或JSON等数据文件存储数据,使用代码编写测试逻辑 一个用例过程往往可以测试多组数据,Pytest原生的参数化往往需要我们自己手动读取数据文件,比较麻烦又略显混乱 我们如何能把数据文件按约定的目录和文件名存起来,文件…

IT Manager项目管理工具-最新版

为了解决项目管理的难点,过多纸质办公的问题,诞生了该系统。其中的价值点包括几大点: 公司组织架构管理;项目成员管理,项目分解,任务分配,时间进度,质量把控; 周报,月报,工时统计;查看项目成员工作饱和度;协助公司进行有效的项目成本控制 组织数据初始化 首先需要…

概率统计-常见分布的均值及方差

概率统计-常见分布的均值及方差 纯原创+老师的PPT总结部分,作二级结论

团队作业4-2

仓库地址:https://github.com/bitpurleclude/GDUT-Goofish.git这个作业属于哪个课程 (https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/join?id=CfDJ8AOXHS93SCdEnLt5HW8VuxT_rAhbZKO3TfjMmbv1B0Re5Fp2d0_QACha2ZoYZ4fxF-ZKCCAhfJl7B8mvCfesLYE02X8T6kx_2R8w0SR-ykrgDVRKW…

【nginx安全】Nginx日志安全分析脚本

Nginx 日志的重要性和必要性 我们知道 Nginx 属于是程序日志的范畴,相对于系统日志来说层级要低一些了,但对于站长来说是至关重要的。因为 Nginx 日志里记录着站点来访的所有信息,无论是正常访客还是恶意请求都会在日志里留下痕迹,比如:被采集、恶意刷流量、暴力破解、漏洞…