精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

USB PD協(xié)議詳解

冬至子 ? 來源:聯(lián)想全球安全實驗室 ? 作者:I Can ? 2023-05-25 16:26 ? 次閱讀

0x00 USB PD協(xié)議背景知識

USB PD(Power Deliver)協(xié)議是USB IF協(xié)會制定的USB充電標準與技術(shù),是目前主流的快充協(xié)議之一,其最大供電能力可達100W,被應用在各種設備的電源上。USB PD協(xié)議利用USB Type-C接口的CC(Configuration channel)引腳作為數(shù)據(jù)傳輸通道來協(xié)商充電的電壓、電流和功率傳輸方向,在介紹USB PD協(xié)議的具體內(nèi)容之前,先簡單介紹一下其依賴的USB Type-C接口。

圖片

如上圖所示,Type-C接口可以完全替代Type-A、Type-B、Micro AB等各種USB接口,實現(xiàn)數(shù)據(jù)傳輸、電力傳輸。USB PD協(xié)議就是基于Type-C接口的強大功能實現(xiàn)的。Type-C接口的引腳示意圖如下所示,VBUS為總線電源,D+、D-為USB2.0的差分信號線,TX+、TX-、RX+、RX-為SuperSpeed差分信號,SBU(Sideband Use)為旁路使用,CC為配置通道。Type-C接口最大功率傳輸可達100W(20V/5A),最大數(shù)據(jù)傳輸速率為10Gbps。可以看到,在公頭上只有一個CC引腳,母頭上的CC引腳是對稱的,所以也可以利用CC引腳判斷正反插。

圖片

USB PD協(xié)議的工作原理是利用Type-C接口的CC線作為數(shù)據(jù)線來協(xié)商電壓、電流以及供電方向,整個通信過程需要按照特定的數(shù)據(jù)包格式,并且存在相互認證的過程。下面先介紹一些USB PD中常見的名詞,這些名詞在后面也會用到。

  • Source:通常指電源提供端,如電源適配器。
  • Sink:通常指電源消耗端,如手機、平板。
  • E-Marker(electronic marker):電子標記,一般存在于Type-c to Type-c的線纜中。
  • CC(Configuration Channel) :配置通道,用于識別、控制等。
  • BMC(Biphase Mark Coding):雙相位標識編碼,通過CC通信。
  • DFP(Downstream Facing Port):下行端口,即為HOST或者HU B下行端口。
  • UFP(Upstream Facing Port):上行端口,即為Device或者HUB的上行端口。
  • DRD (Dual-Role Data):能作為DFP/UFP。
  • DRP (Dual-Role Power):能做為Sink/Sour ce。
  • SOP(Start of Packet Sequences):所有的PD傳輸流程,都是以SOP開始,SOP*代表SOP,SOP’,SOP''。
  • EOP (End of Packet):數(shù)據(jù)包結(jié)束標志。

0x01 USB PD協(xié)議的數(shù)據(jù)格式

USB PD協(xié)議通過特定格式的數(shù)據(jù)包進行通信,數(shù)據(jù)包的格式如下所示。

圖片

一個完整的USB PD數(shù)據(jù)包由前導碼(Preamble),使用場景碼(SOP*),功能碼(MessageHeader),數(shù)據(jù)碼(Byte0-n)、校驗碼(CRC)以及結(jié)束碼(EOP)組成,如果數(shù)據(jù)部分為空,說明數(shù)據(jù)包僅作為控制指令使用,稱為控制消息。有數(shù)據(jù)內(nèi)容的稱為數(shù)據(jù)消息,通常數(shù)據(jù)消息里包含了要變化的電壓值和電流值等信息。整個USB PD數(shù)據(jù)包中,除了前導碼不需要進行4b5b編碼外,數(shù)據(jù)包的其他部分均需要進行4b5b編碼,指定數(shù)據(jù)經(jīng)過4b5b編碼后,數(shù)據(jù)包中所有數(shù)據(jù)都需要使用BMC編碼之后才能通過CC發(fā)送。4b5b編碼和BMC編碼會在下一章節(jié)詳細介紹。

前導碼(Preamble)

前導碼(Preamble)是為了鎖定接收端,預示發(fā)送端將要有數(shù)據(jù)到達,前導碼由64位交替的‘0’和‘1’組成,以'0'開始,以'1'結(jié)束。

使用場景碼(SOP*)

所有的USB PD傳輸流程,都是以SOP開始,SOP代表SOP,SOP',SOP''。不同的使用場景會用到不同SOP,每一個SOP也由不同的特殊編碼組成。如SOP是由3個Sync-1和1個Sync-2組成,對應的5b編碼可以在4b5b編碼表中查到。

圖片

數(shù)據(jù)包使用SOP作為開頭,說明該數(shù)據(jù)包是在Source與Sink之間進行的。

SOP'由2個Sync-1和2個Sync-3組成,其順序如下圖。

圖片

SOP''也是由2個Sync-1和2個Sync-3組成,但是其順序與SOP'不同。

圖片

數(shù)據(jù)包使用SOP'或SOP'',則說明是Source與E-Marker之間的通信過程,不同的是,SOP'體現(xiàn)的是Source與線材近端E-Marker的通信,SOP''體現(xiàn)的是Source與線材遠端E-Marker的通信。

功能碼(Message Header)

功能碼長度16-bits,通常包含數(shù)據(jù)包類型、端口角色(UFP/DFP)、PD協(xié)議版本等信息,功能碼的組成如下圖所示。

圖片

從列表中可以看出,不同的功能碼需要特定的SOP*,這個在之前也有提到,下面介紹一些常用的功能碼。

Extended

Extended是用來表示該數(shù)據(jù)包是否包含外部指令的功能碼,該位置1,表示數(shù)據(jù)包中存在外部指令,反之則沒有。如果數(shù)據(jù)包中包含外部指令,指令內(nèi)容會跟在功能碼后面進行傳輸。USB PD協(xié)議的外部指令使用的比較少,在這里就不做詳細的介紹了。

Number of Data Objects

當Extended置0時,Number of Data Objects才可以使用,該功能碼有3-bits,用來表示功能碼后跟的數(shù)據(jù)的位數(shù),如果Number of Data Objects置0,則表示功能碼后沒有數(shù)據(jù),該數(shù)據(jù)包為控制消息。如果該功能碼置1,則表示該數(shù)據(jù)包為數(shù)據(jù)消息。

Port Power Role & Port Data Role

這兩個功能碼都是表示端口的電源角色(Source/Sink)和數(shù)據(jù)角色(DFP/UFP),該位置1時表示Source/DFP,該位置0表示Sink/UFP。

Message Type

Message Type有5-bits,是功能碼中比較重要的位,需要和Number of Data Objects 結(jié)合使用,前面提到Number of Data Objects決定了數(shù)據(jù)包的消息類型,Message Type 則表示具體的指令類型。當Number of Data Objects置0, Message Type則可以表示以下控制指令。例如當接收器成功接收數(shù)據(jù)包并CRC校驗正確后,會向發(fā)送端發(fā)送帶有GoodCRC和Message ID的數(shù)據(jù)包,來表示通信成功。

圖片

當Number of Data Objects置1時,Data Message Types可表示以下指令,例如Source會在通信過程中向Sink發(fā)送Source_Capabilitties來表示供電能力,Sink可以從供電能力列表中進行選擇并通過Request指令發(fā)送給Source端。

圖片

數(shù)據(jù)碼(Byte0-n)

數(shù)據(jù)碼只有在數(shù)據(jù)包類型為數(shù)據(jù)消息時才會使用,具體的數(shù)據(jù)內(nèi)容需要根據(jù)指令的內(nèi)容改變,例如在使用Source_Capabiliities消息指令時,數(shù)據(jù)碼就會存放Source的供電能力。數(shù)據(jù)碼同樣需要使用4b5b進行編碼。

校驗碼(CRC)

功能碼和數(shù)據(jù)碼都需要由32bits的CRC校驗進行保護,校驗碼的生成機制比較繁瑣,一般都會使用查表的方式實現(xiàn),在這里也不做詳細的介紹了,感興趣的小伙伴可以參考USB IF協(xié)會的官方文檔。

結(jié)束碼(EOP)

結(jié)束碼表示整個數(shù)據(jù)包的結(jié)束,在4b5b編碼表中可以找到對應的5b編碼,為01101。

0x02 USB PD協(xié)議的編碼方式

4B5B編碼

在USB PD協(xié)議的數(shù)據(jù)包中,除了前導碼(Preamble)之外,其他部分均需要使用4b5b編碼,官方的說法是為了降低接收端設計的復雜度,提高接收端設計的自由度。4b5b編碼的原理是建立一個4b5b編碼表,將4-bits的數(shù)據(jù)與5-bits的數(shù)據(jù)進行對應,發(fā)送端根據(jù)編碼表對4-bits數(shù)據(jù)進行編碼,接收端根據(jù)編碼表對5-bits數(shù)據(jù)進行解碼,編碼表的具體內(nèi)容如下圖所示。

圖片

從圖中可以看出,除了基本的hex數(shù)據(jù)外,還定義了一些特定的編碼,如Sync-1、RST-1等,這些特定的編碼會組成SOP*,在介紹USB PD協(xié)議數(shù)據(jù)格式時也有提到。另外,編碼表中還預留了多個未定義的5b編碼,可以作為的擴展指令使用。

BMC編碼

USB PD協(xié)議的數(shù)據(jù)包中,所有的數(shù)據(jù)都需要使用BMC進行編碼,BMC編碼屬于物理層的操作,經(jīng)過編碼之后的數(shù)據(jù)通過CC線進行傳送。

圖片

上圖為BMC編碼的示例,BMC編碼規(guī)則是曼切斯特編碼的一個版本,按照脈寬來設定的0和1,從示例中可以看到,在一個周期里有高低電平變化為1,否則為0。

USB PD協(xié)議編解碼流程

以上詳細介紹了USB PD協(xié)議數(shù)據(jù)包的格式和各個部分的功能,那么對于一個完整的數(shù)據(jù)包,發(fā)送端發(fā)送的流程是什么,接收端接收到數(shù)據(jù)之后會進行哪些處理呢。

圖片

上圖為一個完整的數(shù)據(jù)包發(fā)送和接收的流程圖,可以看到,在發(fā)送數(shù)據(jù)時,需要將經(jīng)過CRC校驗后的數(shù)據(jù)使用4b5b編碼,再使用BMC編碼才可以通過CC發(fā)送。在接收數(shù)據(jù)時,首先進行BMC解碼,然后需要確定SOP的位置,因為SOP后的數(shù)據(jù)才是真正的有用的數(shù)據(jù),再進行5b4b的解碼,校驗CRC。

介紹完理論,來看一下在實際的數(shù)據(jù)包。下面是使用邏輯分析儀抓取的USB PD協(xié)議通信數(shù)據(jù)包,使用上面介紹到的內(nèi)容對這個數(shù)據(jù)包進行解析。

圖片

首先,BMC解碼,根據(jù)BMC編碼規(guī)則,識別出'0'和'1',已經(jīng)標注在圖中。SOP識別,標注出的前20 bits為00011 00011 00011 10001,我們可以將這些數(shù)據(jù)理解為4組經(jīng)過4b5b編碼的數(shù)據(jù),由于在傳輸數(shù)據(jù)時采用大端模式,所以需要將數(shù)據(jù)的高低位交換,轉(zhuǎn)換之后為11000(Sync-1) 11000(Sync-1) 11000(Sync-1) 10001(Sync-2),也就是SOP(Sync-1、Sync-1、Sync-1、Sync-2)。同樣的,SOP后的數(shù)據(jù)也需要先高低位交換,識別結(jié)果為Source_Capabilities,說明該消息是用來表明Source的供電能力的,那么數(shù)據(jù)包中也會包含數(shù)據(jù)碼,分析的方法跟前面也是一樣的。

在日常的工作中,其實并不需要手工去分析大量的USB PD的消息類型,目前大部分邏輯分析儀都可以對USB PD協(xié)議進行解析,另外也可以借助CY4500 EZ-PD?協(xié)議分析儀對USB PD通信邏輯進行分析,只有部分邏輯分析儀無法識別的內(nèi)容,才需要我們根據(jù)協(xié)議內(nèi)容去進行分析,這些內(nèi)容大部分是USB PD芯片廠商定義的調(diào)試消息類型。

以上詳細介紹了單個USB PD數(shù)據(jù)包的構(gòu)成,以及如何去識別數(shù)據(jù)包的內(nèi)容,DFP和UFP通過數(shù)據(jù)包進行通信,就是USB PD協(xié)議認證協(xié)商的過程。

0x03 USB PD協(xié)議認證協(xié)商

我們知道,不同的設備需要不同的充電電壓、電流,手機需要9V/2A,平板需要15V/2A,電腦需要20V/3.25A,那么電源是如何實現(xiàn)根據(jù)設備需求提供定制化輸出的呢?

支持USB PD協(xié)議的設備,在與電源連接時,會進行認證和協(xié)商,協(xié)商內(nèi)容包括電源可提供的充電能力,設備支持的充電功率等。

圖片

上圖為USB PD認證協(xié)商的流程圖。首先DFP向UFP發(fā)送Source Capabilities 來表明其供電能力,UFP接收到該數(shù)據(jù)包校驗無誤后會向DFP發(fā)送GoodCRC,表明接收成功,隨后UFP會從DFP的Capabilities中選擇合適功率并使用Request消息發(fā)送給DFP,同樣DFP也會對數(shù)據(jù)包校驗并返回GoodCRC。DFP在收到UFP的Request之后,會判斷能否滿足該Request,如果可以則發(fā)送Accept,同時DFP會調(diào)整內(nèi)部電源,準備向UFP供電,準備完成之后會向UFP發(fā)送PS_Ready消息并將電壓、電流轉(zhuǎn)換成UFP請求的值,待UFP回復GoodCRC,整個協(xié)商過程完成,電源與設備建立起快充關(guān)系。

圖片

上圖是使用CY4500 EZ-PD?協(xié)議分析儀對協(xié)商過程進行監(jiān)控得到的數(shù)據(jù),從數(shù)據(jù)中可以看出,在DFP發(fā)送PS_Ready消息之前,VBUS的電壓為5V,電流幾乎為0,在DFP發(fā)送PS_Ready消息的同時,VBUS電壓升為20V,開始對設備進行快充。

0x04 USB PD協(xié)議安全性分析

前面詳細介紹了USB PD協(xié)議的數(shù)據(jù)格式、協(xié)商認證過程,了解了其工作原理,USB PD協(xié)議的具體實現(xiàn)需要使用USB PD芯片,USB PD協(xié)議本身也是公開的,數(shù)據(jù)包中包含CRC校驗,并使用4b5b編碼和BMC編碼,可以說協(xié)議在設計的時候就把安全考慮進去,但是各個廠商的USB PD協(xié)議芯片的安全性可以說是參差不齊了。USB PD協(xié)議芯片一般包括物理層、協(xié)議層和策略層,物理層包括一些通用寄存器和PD專用寄存器,還有BMC編解碼的功能等,協(xié)議層就會包含SOP*的識別、協(xié)議的實現(xiàn)等內(nèi)容,策略層則包括一些上層策略。所以需要對芯片進行編程,配置策略,實現(xiàn)協(xié)議,當然就會存在固件。由于USB PD協(xié)議僅使用CC線進行通信,所以芯片廠商也會通過CC線對USB PD芯片進行固件燒錄,在燒錄方式上目前存在三種形態(tài)。

第一種是原廠單次燒錄(OTP),這種芯片只在出貨之前被燒錄一次,不會被再次修改,也就是說不存在燒錄惡意固件的問題。同時也因為只支持一次性燒錄,所以這種協(xié)議芯片往往只會兼容標準的、成熟的快充協(xié)議,后續(xù)如果出現(xiàn)其他快充協(xié)議,協(xié)議芯片很難兼容。

第二種是開放式的多次燒錄(eFlash/MTP),這種協(xié)議芯片配置靈活,可以利用開發(fā)工具修改固件,完成對新快充協(xié)議的兼容以及修復后續(xù)出現(xiàn)的BUG,出貨量較大。不過這種芯片對應的開發(fā)工具可以比較容易買到,存在較大安全風險。

第三種是加密式的多次燒錄(eFlash/MTP),芯片配置同樣非常靈活,不過只有掌握了密鑰才能獲得固件更新的權(quán)限,而密鑰一般都有充電器廠商保管。在技術(shù)層面,這樣既保證充電器對BUG的修復能力,又能保護充電器不會被惡意更改程序,是USB PD快充充電器的最佳選擇,但是如果廠商將密鑰存儲在燒錄軟件本地或者燒錄設備中,也有可能存在密鑰泄露的情況。

所以,USB PD協(xié)議的安全性主要取決于芯片廠商的取舍,以上三種形態(tài)都在一定程度上犧牲了產(chǎn)品的功能性或者安全性,至于如何去平衡功能性和安全性,這是開發(fā)人員和安全研究人員一直需要思考和面對的問題,我們要知道, 沒有絕對的安全

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • USB接口
    +關(guān)注

    關(guān)注

    9

    文章

    699

    瀏覽量

    55574
  • 電源適配器
    +關(guān)注

    關(guān)注

    14

    文章

    656

    瀏覽量

    43072
  • CRC效驗
    +關(guān)注

    關(guān)注

    0

    文章

    30

    瀏覽量

    1093
  • DFP
    DFP
    +關(guān)注

    關(guān)注

    0

    文章

    26

    瀏覽量

    3847
收藏 人收藏

    評論

    相關(guān)推薦

    帶大家認識什么是USB.PD協(xié)議

    帶大家認識 USB PD協(xié)議
    的頭像 發(fā)表于 08-19 11:29 ?2.4w次閱讀
    帶大家認識什么是<b class='flag-5'>USB.PD</b><b class='flag-5'>協(xié)議</b>

    求助,如何實現(xiàn)QC協(xié)議轉(zhuǎn)USB PD協(xié)議

    如何實現(xiàn)QC協(xié)議轉(zhuǎn)USB PD協(xié)議
    發(fā)表于 01-24 08:11

    目前主流的快充協(xié)議USB-PD介紹

    USB-PD 是由 USB-IF 組織制定的一種快速充電規(guī)范,是目前主流的快充協(xié)議之一。 USB-PD 快充協(xié)議是以 Type-C 接口輸出
    發(fā)表于 10-28 08:55

    什么是PD充電協(xié)議

    高;而PD快充大家最為陌生,雖然多款iPhone設備都支持快充,但是其官方并沒有贈送PD充電器。本文小編就帶大家來了解一下什么PD充電協(xié)議?  pd
    發(fā)表于 01-28 17:05

    PD快充協(xié)議芯片,支持USB PD 3.0

    PD快充協(xié)議芯片可以用以下兩種芯片:JD6621,JD6606S芯片代理:深圳市夸克微科技鄭R*** Q : 2867714804JD6606S是一款集成的USB Power Delivery
    發(fā)表于 01-30 16:54

    PD充電協(xié)議芯片

    PD充電協(xié)議芯片,PD3.0快充芯片支持USBType-CPD標準USB Type-C PD其最高支持到100W快充深圳市微電半導體有限公司
    發(fā)表于 09-14 07:13

    什么是USB PD協(xié)議

    標題:PD協(xié)議什么是USBPD協(xié)議USB PD(Power Deliver)協(xié)議
    發(fā)表于 09-15 07:41

    USB PD3.1+PD+QC+AFC+FCP 快充協(xié)議取電芯片 PD誘騙芯片

    1.概述 XSP16 是一款集成 USB Power Delivery PD3.1 快充協(xié)議PD2.0/3.0 快充協(xié)議、QC2.0/3.
    發(fā)表于 06-01 22:14

    最新USB PD協(xié)議與快充市場的大統(tǒng)一

    最新USB PD協(xié)議與快充市場的大統(tǒng)一
    發(fā)表于 04-27 10:03 ?22次下載

    pd充電協(xié)議是什么_pd協(xié)議快充什么意思

    本文開始介紹了PD充電器的硬件結(jié)構(gòu),其次分析了pd充電協(xié)議是什么及pd協(xié)議快充的定義,最后闡述了PD
    的頭像 發(fā)表于 03-14 08:44 ?80.6w次閱讀
    <b class='flag-5'>pd</b>充電<b class='flag-5'>協(xié)議</b>是什么_<b class='flag-5'>pd</b><b class='flag-5'>協(xié)議</b>快充什么意思

    關(guān)于USB type C和PD協(xié)議規(guī)范設計要求

    USB type C PD協(xié)議設計考量
    的頭像 發(fā)表于 08-10 00:16 ?1.3w次閱讀

    支持多協(xié)議USB Type-C PD誘騙芯片

    音箱, 無人機 ,小風扇,臺燈等這樣的用電器,想要支持 USB? Type- C PD 的快充功能,就需要內(nèi)置一顆 USB? Type- C PD 誘騙芯片。
    發(fā)表于 09-10 15:23 ?5922次閱讀
    支持多<b class='flag-5'>協(xié)議</b>的<b class='flag-5'>USB</b> Type-C <b class='flag-5'>PD</b>誘騙芯片

    更強大的USB PD3.1快充協(xié)議

    目前我們大多數(shù)Type-C接口仍然采用的是PD3.0快充協(xié)議,按當前用戶的使用場景來看功率也完全夠用,那么PD3.1快充協(xié)議是什么?USB
    的頭像 發(fā)表于 10-19 12:05 ?1.6w次閱讀
    更強大的<b class='flag-5'>USB</b> <b class='flag-5'>PD</b>3.1快充<b class='flag-5'>協(xié)議</b>

    JD6621:高度集成的USB PD控制器,支持USB PD 3.0和多種快速充電協(xié)議

    隨著移動設備的普及和快速充電需求的增加,USB PD控制器的重要性日益突出。JD6621作為一款高度集成的USB PD控制器,以其支持USB
    的頭像 發(fā)表于 05-12 17:48 ?1095次閱讀
    JD6621:高度集成的<b class='flag-5'>USB</b> <b class='flag-5'>PD</b>控制器,支持<b class='flag-5'>USB</b> <b class='flag-5'>PD</b> 3.0和多種快速充電<b class='flag-5'>協(xié)議</b>

    PD快充協(xié)議是什么?USB PD快速充電通信原理

    USB PD的通信是將協(xié)議層的消息調(diào)制成24MHZ的FSK信號并耦合到VBUS上,或從VBUS上獲得FSK信號來實現(xiàn)手機和充電器通信的過程。
    發(fā)表于 11-13 10:15 ?1.2w次閱讀
    <b class='flag-5'>PD</b>快充<b class='flag-5'>協(xié)議</b>是什么?<b class='flag-5'>USB</b> <b class='flag-5'>PD</b>快速充電通信原理