PD是Power?Delivery的簡稱,代表著TYPE-C電力傳輸的一個通訊協議。
PD協議的通信編碼為Bi-phase Mark Coded (BMC),BMC編碼規則是曼切斯特編碼的一個版本,數據1的傳輸,需要有一次高/低電平之間的切換過程,而0的傳輸則是固定的高電平或者低電平,BMC的最大頻率達300KHz,單指令長度在1ms內。
PD的物理層由發射模塊和接收模塊組成,通過CC腳進行通信,由于CC是單線協議,所以所有通信都是半雙工的,如下圖。
通過BMC解碼后,并不是最終可以解析的數據。PD通信協議在這里增加了一個軟編碼,稱為4B5B編碼。即接收到的數據每5個二進制數據,需要經過一個4B5B編碼表還原成正確的PD通信數據。4B5B的解碼表如下:
PD通信指令包格式如下:
一個完整包結構包括引導碼,SOP*使用場景碼,Message Header功能碼,Byte0-n數據碼和CRC校驗碼,EOP結束碼,如果Byte數據碼沒有,說明指令僅僅作為控制指令使用,沒有數據內容,所以叫做控制包。有數據內容的叫做數據包,通常數據包里攜帶了要變化的電壓值和電流值等信息。
1、引導碼:通過64位交替的0和1鎖定接收端,與數據包的其余部分不同,前導碼不應該進行4b/5b編碼,并且應該以0開關,以1結尾。
2、SOP*碼:所有的USBPD傳輸流程,都是從SOP開始,SOP*代表SOP, SOP’, SOP’’,不同的使用場景會用到不同的SOP,每個SOP也由不同的特殊編碼組成,數據包使用SOP作為開頭, 表示指令是在Source與SINK之間進行的,如果沒有檢測到有效的SOP,則整個傳輸將被丟棄,數據包使用SOP’, SOP’’, 表明是Source與E-marker之間的通信。
3、Message Header功能碼:通常包括:數據包還是控制包說明,如果是數據包還包含了有多少個數據包的信息,電源角色,數據角色,PD的協議版本,消息類型等
當message Header中的Number of Data Objects位設置為0時,表示當前指令包為控制包,控制消息類型由message Header的message type決定,具體如以下表格所示
當message Header中的Number of Data Objects位設置非0值時,表示當前指令包為數據包,數據消息類型由message Header的message type決定,具體如以下表格所示
4、數據碼:Message Header向右就是數據區域,通過4B5B的轉換后,SOP是16個二進制位,Message Header也是16個二進制位,而數據區域,每個獨立的數據塊包括了32個二進制位
5、CRC:數據模塊右邊就是一個32位的數據校驗區域,也稱作CRC校驗。CRC校驗是PD通信協議中獨特的一套校驗方式,為了保持數據的完整與糾錯,整個PD指令任何一個位變動,都會造成CRC改變。
6、EOP結束碼:經過了引導碼,SOP碼,MessageHeader,data碼,CRC碼后,接下來就是EOP碼即結束碼,在4B5B中我們可以看到接收到01101的BMC編碼,即代表PD指令包全部接收完畢。
BMC編碼的通信,也可以使用邏輯分析儀進行分析,用來抓取每個數據包,并且獲得數據包的作用,以下是手機充電時充電器與手機的交互信息。
PD規范中,對不同功率的電壓電流作了以下定義
對于5V/9V/15V來說,最大的電流為3A,在20V的配置當中,如果是普通的電流,則最大能夠支持20V/3A,即60W,如果使用的是帶了E-Marker的線纜,則供電能達到20V5A,即100W。
支持超高速數據傳輸(USB3.1)或者是供電電流超過3A,電纜都必須使用E-Marker進行標識。線纜中有IC,他們需要從VCONN獲得電源。
我們注意到,線纜中有1K的下拉電阻Ra,這樣在線纜插入的時候,Source會識別到CC1和CC2電壓下降的情況,具體的電壓會告訴主機哪個端子被Sink的5.1K下拉,那個端子被線纜的1K電阻下拉。因此線纜的插入方向也可以被識別到。Source就可以通過開關,給E-Marker提供VCONN
如下圖為帶E-Marker的情況:
(1)電纜接通之后,Source的一根CC線被來自VCONN的1K拉低
(2)Source檢測到此電壓,知道電纜中有E-Marker,因此切換VCONN到對應的CC引腳
(3)在之后,PD通信將會包含Source和E-Marker之間的通信(SOP'&SOP'')Source和Sink之間為SOP
標準更新
2021年5月,USB-IF協會公布了全新快充標準USBPD3.1,新的標準增加了擴展功率范圍(EPR),可使充電器的充電功率從PD3.0最高的100W,提升到最高240W