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