Folosim dispozitive electronice comune pentru a corespunde acestor trei tipuri: Sursă – încărcător; Chiuveta – telefon mobil; DRP – laptop sau power bank.
Pentru trei tipuri de dispozitive, vor exista 9 combinații de interconectare în teorie. Trebuie să existe metode de conectare greșite (cum ar fi adaptorul de conectare) sau metode de conectare care nu sunt sigure cine este Sursa (cum ar fi power bank sau laptop). Deci, pentru atât de multe combinații, cum configurează controlerul de tip C interfața?
Controlerul de tip C finalizează întregul proces de identificare și comunicare prin comutarea de stare a mașinii de stare. Următoarele sunt câteva stări principale din mașina de stat.
1. Unattached.SRC, Sursa este într-o stare neconectată
2. Unattended.SNK, Sink este într-o stare neconectată
3. AttachWait.SRC, scopul acestei stări este ca Source să se asigure că CC1 și CC2 rămân stabile după ce dispozitivul este conectat
4. AttachWait.SNK, scopul acestei stări este ca Sink să se asigure că CC1 și CC2 rămân stabile după ce dispozitivul este conectat
5. Attached.SRC, Source stabilește că dispozitivul este conectat cu succes
6. Attached.SNK, Sink determină că dispozitivul este conectat cu succes
5. Try.SRC, această stare este pentru ca dispozitivul DRP să încerce să schimbe rolul sursă
6. Try.SNK, această stare este pentru ca dispozitivul DRP să încerce să schimbe rolul Sink
Scenariul 1 Mecanism de comportament între sursă și chiuvetă (adaptor și telefon mobil)
Următorul este mecanismul de comportament atunci când Sursa are dispozitivul Sink conectat:
(1) Sursa și Sink sunt ambele în starea neatașat Unattached.SRC și Unattached.SNK
(2) Source detects that there is a pull-up resistor on the CC end of the Sink, and the Source state changes to Unattached.SRC --> AttachWait.SRC-->Atasat.SRC; Sursa activează VBUS și VCONN.
(3) Sink detects VBUS, and the Sink state changes to Unattached.SNK --> AttachWait.SNK -->Atașat.SNK
(4) După ce Source și Sink sunt în starea atașată
Sursa ajustează valoarea Rp pentru a limita curentul absorbit de chiuvetă
Sink detectează tensiunea vRd pe Rd pentru a determina curentul permis de VBUS
Sursa determină dacă chiuveta este deconectată prin monitorizarea CC. Dacă este deconectat, intră Unattached.SRC
Sink determină dacă sursa este deconectată prin monitorizarea tensiunii VBUS. Dacă este deconectat, intră Unattached.SNK

Scenariul 2 Mecanism de comportament între sursă și DRP (încărcător și laptop)
Următorul este mecanismul de comportament atunci când Sursa are conectat un dispozitiv DRP:
(1) Atât Sursa, cât și DRP sunt în stare neatașată
Sursa este în starea Unattached.SRC - DRP comută între Unattached.SRC și Unattached.SNK
(2) Source detects that there is a Sink pull-up resistor on the CC end, then the Source state changes to Unattached.SRC --> AttachWait.SRC -->Atasat.SRC; Sursa activează VBUS și VCONN.
(3) When DRP switches to Unattached.SNK and detects that the CC pin is pulled up, the DRP state changes to Unattached.SNK --> AttachWait.SNK -->Atașat.SNK
(4) După ce Sursa și DRP sunt în starea atașată
Sursa ajustează valoarea Rp pentru a limita curentul absorbit de DRP (adică Sink)
DRP (adică Sink) detectează tensiunea vRd pe Rd pentru a determina curentul permis de VBUS
Sursa determină dacă Sink este deconectat prin monitorizarea CC. Dacă este deconectat, intră Unattached.SRC-DRP (adică Sink) determină dacă Sursa este deconectată prin monitorizarea tensiunii VBUS. Dacă este deconectat, intră în Unattached.SNK și își restabilește mecanismul de comutare între Unattached.SRC și Unattached.SNK

Scenariul 3 Mecanism de comportament între DRP și Sink (laptop și telefon mobil)
Următorul este mecanismul de comportament atunci când DRP are conectat un dispozitiv Sink:
(1) Atât DRP, cât și Sink sunt în starea neatașată
DRP comută între Unattached.SRC și Unattached.SNK - Sink este în starea Unattached.SNK
(2) When DRP switches to Unattached.SRC and detects that the CC pin has a pull-down resistor, the DRP state changes to Unattached.SRC --> AttachWait.SRC -->Atasat.SRC; DRP (adică Sursa) pornește VBUS și VCONN.
(3) When the Sink detects VBUS, the Sink state changes to Unattached.SNK --> AttachWait.SNK -->Atașat.SNK
(4) După ce Sursa și DRP sunt în starea atașată
DPR (adică Sursa) ajustează valoarea Rp pentru a limita curentul absorbit de chiuvetă - chiuveta detectează tensiunea vRd pe Rd pentru a determina curentul permis de VBUS
DRP (adică Sursa) determină dacă Sink-ul este deconectat prin monitorizarea CC. Dacă este deconectat, intră în Unattached.SRC și își restabilește mecanismul de comutare între Unattached.SRC și Unattached.SNK
DRP (adică Sink) determină dacă sursa este deconectată prin monitorizarea tensiunii VBUS. Dacă este deconectat, intră Unattached.SNK

Scenariul 4 Mecanism de comportament între DRP și DRP (Banc de putere și laptop)
Pentru comunicarea dintre DRP și DRP, există trei situații. Într-o situație, cele două dispozitive decid cine este Sursa sau Sink la întâmplare; în a doua situație, unul dintre DRP încearcă să decidă să fie Sursa prin mecanismul Try.SRC; în a treia situație, unul dintre DRP încearcă să decidă să fie Sink prin mecanismul Try.SNK.
Următorul este mecanismul de comportament atunci când un dispozitiv DRP este conectat la DRP:
Scenariul 1:
(1) Ambele dispozitive DRP sunt în starea neconectate
DRP#1 și DRP#2 comută aleatoriu între Unattached.SRC și Unattached.SNK
(2) When DRP#1 switches to Unattached.SRC and detects that the CC pin is pulled down by DRP#2, the state of DRP#1 changes to Unattached.SRC--> AttachWait.SRC -->Atasat.SRC; DRP#1 (adică Sursa) pornește VBUS și VCONN.
(3) When DRP#2 switches to Unattached.SRC and detects that the CC pin is pulled up, the state of DRP#2 changes to Unattached.SNK --> AttachWait.SNK -->Atașat.SNK
(4) După ce Sursa și DRP sunt în starea atașată
DPR#1 (adică Sursa) ajustează valoarea Rp pentru a limita curentul absorbit de DRP#2 (adică Sink)
DRP#2 (adică Sink) detectează tensiunea vRd pe Rd pentru a determina curentul permis de VBUS
DRP#1 (adică Sursa) determină dacă Sink este deconectat prin monitorizarea CC. Dacă da, intră Unattached.SRC și își restabilește mecanismul de comutare între Unattached.SRC și Unattached.SNK
DRP#2 (adică Sink) determină dacă Sursa este deconectată prin monitorizarea tensiunii VBUS. Dacă da, intră Unattached.SNK și își restabilește mecanismul de comutare între Unattached.SRC și Unattached.SNK

Cazul 2:
(1) Ambele dispozitive DRP sunt în starea neconectate
DRP#1 și DRP#2 comută aleatoriu între Unattached.SRC și Unattached.SNK
(2) When DRP#1 switches to Unattached.SRC and detects that the CC pin is pulled down by DRP#2, the state of DRP#1 changes to Unattached.SRC--> AttachWait.SRC -->Atasat.SRC; ; DRP#1 (adică Sursa) pornește VBUS și VCONN.
(3) When DRP#2 switches to Unattached.SRC and detects that the CC pin is pulled up, the state of DRP#2 changes to Unattached.SNK -->AttachWait.SNK
(4) DRP#2 is in AttachWait.SNK and wants to switch to the Source role. The state of DRP#2 changes to AttachWait.SNK -->Încearcă.SRC; și trage în sus pinul CC
(5) DRP#1 no longer detects DRP#2 pulling down the CC pin, so the state changes to Attached.SRC --> UnattachWait.SNK -->AttachWait.SNK; și dezactivează VBUS și VCONN și comută rezistorul de tragere pe pinul CC
(6) DRP#2 detects that the CC pin is pulled up, so its state changes to Try.SRC -->Atasat.SRC; și pornește VBUS și VCONN
(7) The state of DRP#1 changes to AttachWait.SNK -->Atașat.SNK
(8) După ce Sursa și DRP sunt în starea atașată
DPR#2 (adică Sursa) ajustează valoarea Rp pentru a limita curentul absorbit de DRP#1 (adică Sink)
DRP#1 (adică Sink) detectează tensiunea vRd pe Rd pentru a determina curentul permis de VBUS
DRP#2 (adică Sursa) determină dacă Sink este deconectat prin monitorizarea CC. Dacă da, intră Unattached.SRC și își restabilește mecanismul de comutare între Unattached.SRC și Unattached.SNK
DRP#1 (adică Sink) determină dacă Sursa este deconectată prin monitorizarea tensiunii VBUS. Dacă da, intră Unattached.SNK și își restabilește mecanismul de comutare între Unattached.SRC și Unattached.SNK

Al treilea caz este mecanismul Try.SNK, care este similar cu mecanismul Try.SRC și nu va fi descris aici.
Scenariul 5 Mecanism de comportament între sursă și sursă și între chiuvetă și chiuvetă
În aceste două cazuri de utilizare, atât Source, cât și Sink sunt în stările Unattached.SRC și Unattached.SNK, deci nu există alimentare între dispozitive.
Până acum, am introdus câteva mecanisme comune de comunicare între dispozitive. În special pentru două dispozitive DRP cu rol dublu, controlerul de tip C va folosi Try.SRC sau Try.SNK pentru a încerca să stabilească o logică normală de alimentare. Desigur, dacă apare o logică greșită a sursei de alimentare (de exemplu, un laptop încarcă o bancă de alimentare), USB
Protocolul PD oferă, de asemenea, un mecanism Power Role Swap, care comută rolul sursei de alimentare prin protocolul PD. Pentru detalii, consultați Specificațiile de livrare a energiei USB.





