Ich entwickle die USB-Ruhezustandsfunktion auf einer der Plattformen, die den Synopsis DWC3 USB-Controller verwenden. Wenn USB allein aus dem Suspend-Zustand wieder aufgenommen wird, gibt es kein Problem.
Aber ich habe ein Problem, während mein Gerät aus dem Tiefschlaf reaktiviert wird. Beim Fortsetzen des Verbindungsstatus wird 4 (Getrennt) angezeigt, was zu einer erneuten USB-Enumeration führt.
Vom Hardware-Team gibt es eine Frage zu diesem Problem, die ich nicht verstehen kann. Siehe unten,
Im Tiefschlaf beobachteten wir:
- eine Mikrorahmen-Spitzensignalamplitude, die viel größer ist als erwartet (fast das Doppelte);
- ein unerwünschter Nullpegelversatz vor dem Mikrorahmen.
Dieses Fehlverhalten entspricht der Hypothese einer fehlenden Single-Ended 0 (SE0)-Terminierung an einem der dem Strom zugewandten Enden. Da der Host der Suspend/Resume-Master ist, der korrekt mit jedem anderen USB 2.0-Gerät funktioniert, sollten wir annehmen, dass das Geräteende seine High-Speed (HS) 45 Ohm (nämlich) Abschlussverbindung am Ende der Resume-Phase vermisst.
Gemäß der Spezifikation muss das Gerät die HS-Terminierung innerhalb von 1,33 us seit dem Wiederaufnahmeende (USB D – fallende Flanke) verbinden, sodass dies normalerweise von der USB 2.0 PHY-Hardware durchgeführt wird, die bereit ist, im Voraus zu reagieren, seit der Wiederaufnahmestatus begonnen hat. Wir haben beobachtet, dass das Gerät den Start des Resume-Zustands korrekt erkennt, indem es den Stromverbrauch in wenigen Millisekunden erhöht, was eine sofortige Reaktion zum Verlassen des Tiefschlafzustands anzeigt. Die Wiederaufnahme dauert nicht weniger als 20 ms, was groß genug ist, um USB 2.0 PHY darauf vorzubereiten, auf die Erkennung des Wiederaufnahmeendes und die relevante SE0-Beendigung zu antworten, die von der HS-Kommunikationsverbindung benötigt werden.
Wenn das Gerät SE0 ausfällt, dann bewirkt die vom Host überwachte erhöhte Signalamplitude, die beim ersten Mikroframe auftritt, dass der Host in einen High-Speed-Disconnect-Zustand eintritt, gefolgt von einem USB-Reset, einer FS-zu-HS-Aushandlung, einer Neuaufzählung usw.
Könnte jemand erklären, was die obige Abfrage ist?
wir sollten annehmen, dass das Geräteende seine High-Speed (HS) 45 Ohm (nämlich) Abschlussverbindung am Ende der Resume-Phase verfehlt.
Aus der Beschreibung des „Hardware-Teams“ geht hervor, dass Ihr Gerät die HS-Terminierung nach dem Ende von RESUME nicht wiederherstellen konnte, was zu einer HS-Trennung führt (die Mikroframe-Amplitude verdoppelt sich aufgrund fehlender Terminierung in Ihrem Gerätedesign).
Bitte beachten Sie, dass ein wichtiger Teil des RESUME-Protokolls in der Beschreibung fehlt: Beim Host-initiierten RESUME (K-Zustand) muss das Gerät den GLEICHEN Leitungszustand (K-Zustand) als Erkennungssignal zurücksenden. Der Host erkennt diesen bidirektional gesteuerten Zustand, wenn das hostseitige 20-ms-Timeout abläuft, aber der Bus bleibt im K-Zustand. Dann wartet der Host darauf, dass das Gerät den K-Zustand beendet, und fährt mit der Wiederaufnahme des HS-Leerlaufverkehrs (SOFs) fort.
Es liegt also in der Verantwortung des Geräts, die RESUME-Bedingung zu beenden und die HS-Beendigung rechtzeitig (1,33 us) geltend zu machen. Es sieht also so aus, als ob die gesamte Protokollantwort Ihres Geräts fehlt. Ihr Gerät empfängt das RESUME korrekt, reagiert jedoch nicht richtig. Einige Hooks (vielleicht zum Power-Management-Teil der Gerätesoftware) fehlen.
SamGibson
Ale..chenski