2017-07-11 2 views
0

J'ai une tâche dans laquelle j'ai besoin d'implémenter l'état de suspension L2 dans la gestion de l'alimentation de la liaison. J'utilise un tableau de développement avec un contrôleur USB DWC3 interfacé avec PHY. Fondamentalement, notre conseil utilise le pilote USB Linux DWC3 et connecté à l'hôte.État L2 dans la gestion de l'alimentation de la liaison

À ma connaissance, le contrôleur USB génère un signal SUSPEND après l'inactivité du bus de 3.125 msec. Quelqu'un peut-il me dire comment puis-je configurer ce contrôleur pour mettre en œuvre l'état de suspension L2?

Répondre

0

Dans votre configuration actuelle, votre carte est en mode périphérique/gadget et vous êtes connecté à l'hôte. Rappelez-vous que le périphérique USB ne peut pas piloter la signalisation suspendue. Il est supposé être démarré par Host.

Le processus de suspension pour un périphérique USB 2.0 -

1 - hôte USB n'a pas de données pour envoyer et actuellement son envoi de trames SOF
2 - Hôte SW suspend l'appareil en réglant la suspension/U3 dans le contrôleur EHCI/XHCI
3 - Maintenant, le périphérique USB voit l'état inactif dans le bus où il n'y a pas de SOF
4 - Après environ 3 ms, le matériel de l'appareil commence à se suspendre en retirant sa terminaison au sol et en connectant le registre interne pull up
5 - Ensuite, l'appareil interroge à nouveau les lignes pour voir si l'hôte a supprimé sa terminaison ou non.
6 - Comme hôte a supprimé la fin, l'appareil sera de suspendre

processus de suspension pour un périphérique USB 3.0 -

1 - hôte USB n'a pas de données à envoyer
2 - L'hôte SW suspend le périphérique en réglant U3 dans le contrôleur XHCI
3 - L'hôte commence à envoyer des commandes de liaison LGO_U3 pour lancer la signalisation de suspension
4 - Après appareil reçoit commande LGO_U3, il reconnaîtra et commencer à suspendre

Donc, en conclusion, à partir du périphérique USB que vous ne pouvez pas démarrer la suspension de signalisation. Vous pouvez uniquement définir l'état interne de la pile de périphériques.

EDIT 1 - Ce processus de suspension est pour les périphériques USB 2.0/haute vitesse. Si votre carte est un périphérique super vitesse/USB 3.0 connecté via un port SS à l'hôte, le processus est un peu différent au niveau de la liaison, mais du point de vue de l'utilisateur, il n'y a pas de différence.
EDIT 2 - J'ai maintenant mis à jour la réponse avec le processus de suspension pour les périphériques USB 2.0 et USb 3.0

+0

Merci pour la réponse Shaibal. Donc vous voulez dire que je n'ai pas besoin de configurer le contrôleur? Il va générer un signal de suspension par lui-même? Si oui, un bit de registre particulier sera-t-il réglé après 3msec? OU ISR sera exécuté? – user3267021

+0

Encore une fois, votre contrôleur fonctionne en mode périphérique. Le contrôleur DWC peut fonctionner en mode hôte ou en mode périphérique. Lors de l'exécution en mode périphérique, il ne génère aucun signal. Le signal de suspension est censé provenir de l'hôte sur lequel vous avez connecté votre carte. Et oui après la suspension, PORTSC sera mis à U3 dans votre contrôleur et vous recevrez l'événement/interruption pour cela. ISR sera exécuté. – Shaibal

+0

Merci beaucoup pour votre soutien.Une dernière question, où puis-je trouver des informations sur cette ISR qui est exécutée? OU Quelle partie du code sera exécutée en cas d'interruption ou d'événement? – user3267021