USB PD規(guī)范 第二章濃縮了USB PD規(guī)范的精華,走馬觀花地講了USB PD協(xié)議的工作原理。 假設(shè)你已經(jīng)接觸過USB PD協(xié)議,有一些基本的了解和相關(guān)知識(shí),請(qǐng)先閱讀本章,淺淺地嘗一嘗,試著找找感覺再?zèng)Q定要不要更加深入地了解和學(xué)習(xí)。
  2.6.2 SNK Operation  
  • 在連接狀態(tài)時(shí)(沒有 PD 的連接)
1. SNK 會(huì)通過對(duì)端有無輸出 vSafe5V 來判斷連接。 2. 對(duì) DRP 端口來說會(huì)切換使其變成 SNK 以完成和 SRC 的連接。 3. 一旦 SNK 在 VBUS 上檢測(cè)到 vSafe5V 的存在,它通過等對(duì)端是否發(fā)出 SRC_CAP 來判斷對(duì)端為具有 PD 能力的 SRC。 4. 如果 SNK 沒有在 tTypeCSinkWaitCap 時(shí)間內(nèi)收到 SRC 發(fā)出的SRC_CAP,通過發(fā)出 Hard Reset 信號(hào)寄望于 SRC(具有 PD 能力)可以發(fā)出 SRC_CAP。 5. SNK 不會(huì)生成 SOP’或 SOP”的包,也沒有必要檢測(cè) SOP’或 SOP”的包,同時(shí)不會(huì)去識(shí)別它們。
  • 建立 PD 的連接(PD 連接沒完成或沒有建立明確的契約關(guān)系)
1. SNK 收到了 SRC_CAP 的 Message,然后用 GoodCRC 響應(yīng)。 2. SNK 不會(huì)生成 SOP’或 SOP”的包,也沒有必要檢測(cè) SOP’或 SOP”的包,就算檢測(cè)到也要將其丟掉。  
  • 建立顯性契約關(guān)系(PD 連接但在 PRS 或 FRS 之后的契約關(guān)系還沒建立)
1. SNK 從 SRC 那邊收到 SRC_CAP Message,然后用 Request Message向 SRC 發(fā)出供電請(qǐng)求。如果是一個(gè)合法,有效的 Request, SNK 收到了對(duì)端的 Accept Message,當(dāng)準(zhǔn)備好供電給 SNK 協(xié)商好的 Power 之后,同時(shí)會(huì)收到 SRC 發(fā)出的 PS_RDY Message,這個(gè)時(shí)候顯性契約就建立了: (1)SNK 申請(qǐng)的電壓應(yīng)該是 SRC 發(fā)出的電壓能力中的一個(gè),即使它是被 USB2.0,USB3.1,USB Type-C 1.2??或 USBBC 1.2??所支持的vSafe5V 輸出,為的能夠協(xié)商更高的電壓。如果用了 Request Message 將會(huì)導(dǎo)致錯(cuò)誤,SNK 就不會(huì)向申請(qǐng)任何的供電請(qǐng)求。 (2)假如 SNK 申請(qǐng)的電壓能力不在 SRC 所能提供的范圍內(nèi),那么將以默認(rèn)的第一個(gè)進(jìn)行申請(qǐng),SNK 將它改變申請(qǐng)的動(dòng)作通知最后一個(gè)。 (3)SNK 不會(huì)生成 SOP’或 SOP”的包,也沒有必要檢測(cè) SOP’或 SOP”的包,就算檢測(cè)到也要將其丟掉。  
  • 在 PD 連接過程中(建立了顯性契約關(guān)系狀態(tài)到 PE-SNK-Ready 狀態(tài))
1. SNK 會(huì)處理和響應(yīng)(如果需要的話)所有收到的包,無論何時(shí),當(dāng)它本地策略需要的時(shí)候會(huì)發(fā)送恰當(dāng)?shù)陌? 2. 當(dāng) SNK 的申請(qǐng)能力需要改變的時(shí)候,會(huì)通過發(fā)新的 Request Message 來通知 SRC。SNK 申請(qǐng)的電壓應(yīng)該是 SRC 發(fā)出的電壓能力中的一個(gè),即使它是被 USB2.0,USB3.1,USB Type-C 1.2 或 USBBC 1.2 所支持的 vSafe5V 輸出,為的能夠協(xié)商更高的電壓: (1)在一個(gè)錯(cuò)誤的狀態(tài)中,SNK 不會(huì)用 Request Message 來申請(qǐng)任何的電壓能力。 (2)假如 SNK 申請(qǐng)的電壓能力不在 SRC 所能提供的范圍內(nèi),那么將以默認(rèn)的第一個(gè)進(jìn)行申請(qǐng),SNK 將它改變申請(qǐng)的動(dòng)作通知最后一個(gè)。 3. SNK 在 CC 線路上總是 asserted RD。 4. 當(dāng)端口電力模式為 DRP 時(shí),SNK 可以發(fā)起或收到電力模式轉(zhuǎn)變的請(qǐng)求。在 PRS 之后,SNK 將會(huì)變成 SRC,在明確的契約關(guān)系形成之前,由默認(rèn)的契約關(guān)系暫時(shí)代替其工作。 5. 當(dāng)端口數(shù)據(jù)模式為 DRD 時(shí),SNK 可以發(fā)起或收到數(shù)據(jù)模式轉(zhuǎn)變的請(qǐng)求。在 DRS 之后,DFP 會(huì)變成 UFP.端口的電力模式還是 SNK,同時(shí) VCONN SRC 也不會(huì)發(fā)生改變。 6. SNK 可以發(fā)起或接收轉(zhuǎn)換 VCONN SRC 供應(yīng)的請(qǐng)求.在 VCONN 交換期間,是可以被兩端所運(yùn)用的(中斷之前)。此時(shí)端口的電力模式和數(shù)據(jù)模式?jīng)]有發(fā)生改變。 7. 當(dāng) SNK 也是 VCONN SRC 的時(shí)候,在沒有其它 SOP 通訊時(shí),可以在任何時(shí)候用 SOP’或 SOP”與 Cable Plug 進(jìn)行通訊。 (1)當(dāng) SNK 收到 SOP 的包,就算此時(shí)進(jìn)行 SOP’或 SOP”通訊也要立即結(jié)束,優(yōu)先開始 SOP 通訊(Cable Plug 超時(shí),不會(huì)重試了)。 (2)如果 SNK 正在進(jìn)行 SOP’或 SOP”通訊的時(shí)候需要發(fā)起 SOP 通訊(比如供電能力的改變),SOP’或 SOP”的通訊都將被終止。 (3)當(dāng)端口 SNK 同時(shí)也是個(gè) DFP 時(shí),可以通過對(duì) Cable Plug 發(fā)包來控制 Mode 的進(jìn)入和退出以及可以控制工作的模式。 8. 當(dāng)端口既是 SRC,同時(shí)也為 DFP 時(shí) (1)SNK 可以發(fā)起結(jié)構(gòu)化和非結(jié)構(gòu)化的 VDM 的 Message。 (2)SNK 可以在 SRC 端口上控制 Mode 進(jìn)入與退出和用結(jié)構(gòu)化 VDM 的 Message 來控制其工作的模式。  
  • 通訊錯(cuò)誤或斷開
1. 當(dāng) SNK 檢測(cè)到線路上沒有 VBUS 輸出時(shí),這就意味著 PD 連接的結(jié)束,除非是由于 Hard Reset, PRS,FRS 中的一個(gè)導(dǎo)致狀態(tài)回到 vSafe0V。 2. SNK 檢測(cè)到插頭的移除,然后開始進(jìn)行放電。 3. 當(dāng) SNK 在 tReceive 時(shí)間,收到了為響應(yīng) Message 而發(fā)出的 GoodCRC 包的過程中檢測(cè)到了錯(cuò)誤。 (1)由于 CRCReceiveTimer 的期滿,在 tSoftReset 時(shí)間內(nèi),產(chǎn)生了 Soft Reset。 (2)如果 Soft Reset 沒有按時(shí)完成的話,就會(huì) CRCReceiveTimer timer out 之前,在 tHardReset 時(shí)間內(nèi)產(chǎn)生 Hard Reset。同時(shí)在 1-1.5S 內(nèi)將 VBUS 調(diào)到 USB 的默認(rèn)電壓 5V。 (3)SNK 為了進(jìn)一步嘗試通訊但沒有收到響應(yīng)表示出現(xiàn)了錯(cuò)誤。 4. 在 Power 協(xié)商過程中出現(xiàn)的錯(cuò)誤會(huì)自動(dòng)地產(chǎn)生 Hard Reset 為了將Power 維持在默認(rèn)的等級(jí)(5V)。  
  • 錯(cuò)誤的處理
1. 當(dāng)協(xié)議層出現(xiàn)錯(cuò)誤時(shí),會(huì)引起端口中的任意一個(gè)發(fā)出 Soft Reset。從而復(fù)位 counters, timers 和 states,但這個(gè)動(dòng)作不會(huì)改變協(xié)商好的電壓,電流或端口的模式(比如 SRC,DFP/UFP,VCONN SRC)也不會(huì)導(dǎo)致退出現(xiàn)有的工作模式。 2. 當(dāng)線路中出現(xiàn)嚴(yán)重錯(cuò)誤的時(shí)候,兩個(gè)端口任意一個(gè)都可能會(huì)發(fā)出 Hard Reset 的信號(hào)。 (1)和 Soft Reset 一樣,Hard Reset 會(huì) reset protocol,同時(shí)為了保護(hù)SNK,將 Power Supply 降到 vSafe0V 或 vSafe5V 輸出。 (2)使端口的數(shù)據(jù)模式維持在最初狀態(tài)的 UFP。 (3)當(dāng) SNK 為 VCONN SRC 時(shí),Hard Reset 會(huì)關(guān)閉 VCONN 供電.此時(shí)將回到最初 SRC 也是 VCONN SRC 的狀態(tài)。 (4)將會(huì)導(dǎo)致退出所有的模式,比如 SRC 會(huì)退出現(xiàn)有的工作模式。
  • 在 Hard Reset 產(chǎn)生后,寄望于 SRC 可以在 tTypeCSinkCap 的時(shí)間內(nèi)對(duì)Hard Reset??請(qǐng)求做出響應(yīng)。如果 SRC??未有回應(yīng),在 UFP??還維持在 PESNKWaitforCap 狀態(tài)的時(shí)候,再發(fā)出兩個(gè) Hard Reset 信號(hào)。
2.6.3 Cable Plug
  • Cable Plug 是由 VCONN 供電的,但不需要清楚此時(shí)的狀態(tài)關(guān)系。
 
  • Cable Plug 不會(huì)主動(dòng)發(fā)起 Message 的序列,只有為了響應(yīng) VCONN SRC 發(fā)的包才會(huì)發(fā)起 Message。
 
  • 斷開或通訊錯(cuò)誤:
1. 在任何時(shí)候,通訊都可以被中斷。 2. 在 VCONN SRC(DFP/UFP)與 Cable Plug 的通訊的時(shí)候,沒有時(shí)間超時(shí)的說法。 3. Cable Plug 準(zhǔn)備響應(yīng)可能的重復(fù)請(qǐng)求。  
  • 錯(cuò)誤地處理
1. Cable Plug 檢測(cè)到 Hard Reset 信號(hào)后來判定 SRC 和 SNK 已經(jīng) Reset,之后 Reset 自身(相同的掉電過程)。 (1)Cable Plug 自身不能生成 Hard Reset 信號(hào)。 (2)Hard Reset 會(huì)使 VBUS 和 VCONN 同時(shí)掉電,這一點(diǎn)也就相當(dāng)于 Reset Cable Plug 自身。 2. Cable Plug 檢測(cè)到 Cable Reset 的信號(hào)來決定是否需要 Reset 它自身(相同的掉電過程)。 (本文為連載系列文章,后期會(huì)持續(xù)更新
譯者:李熙民
  相關(guān)閱讀