STM32 «USB Device» par rapport à «USB OTG HS» - quelle est la différence?

10

J'ai récemment téléchargé l'application stm32 pour la recherche de MCU et j'ai découvert que par exemple STM32F429 n'a "NON" dans le périphérique "Périphérique USB", alors qu'il dit "OUI" dans "USB OTG FS" et "USB OTG HS". Ce qui est assez surprenant car le STM32F429 est entièrement fonctionnel en tant que périphérique USB, c'est-à-dire qu'il prend en charge toutes les bibliothèques et classes USB.
Certains autres microcontrôleurs contiennent «périphérique USB», par exemple. STM32L052 entrez la description de l'image ici

Ensuite, j'ai essayé de vérifier CubeMX et j'ai découvert qu'il y avait un périphérique USB_Device dans leur recherche (et encore une fois STM32F429 ne l'inclut pas, les choses USB se font via OTG).

Cela peut être une question assez facile car je soupçonne que périphérique USB signifie simplement celui qui ne prend pas en charge OTG, mais je ne suis pas sûr, généralement les MCU utilisent de toute façon OTG (et de plus il n'y a qu'une seule bibliothèque, alors pourquoi indiquer "NON" en USB périphérique). Je n'ai pas pu trouver d'informations à ce sujet dans google ou dans la documentation CubeMX.

Je ne suis pas vraiment inquiet à ce sujet car USB OTG HS semble fonctionner correctement avec la bibliothèque, mais je me pose des questions sur la terminologie.

Je comprends que le forum ST est probablement un meilleur endroit pour cette question, mais de nombreux sujets n'y sont tout simplement pas répondus ou répondus après 2 ans. :)

Merci.

ScienceSamovar
la source
1
J'ai eu cette expérience avec les forums ST, donc je sympathise ...
dim
En ce qui concerne le fait que le forum ST a une mauvaise contribution, ce n'est apparemment pas seulement le forum, mais aussi par e-mail, j'ai ouvert un ticket concernant une erreur possible dans l'un de leur documentation et des exemples USB, mais personne (encore) ne s'est donné la peine de me réécrire. Ce qui est vraiment ennuyeux.
Mohammed Noureldin

Réponses:

16

Votre opinion est correcte: les périphériques marqués "Oui" dans la colonne Périphérique USB peuvent simplement agir comme un périphérique USB. Ils ne prennent pas en charge la spécification OTG et ne peuvent pas non plus agir en tant qu'hôte.

Mais bien sûr, tout appareil capable d'USB OTG peut, en revanche, agir comme un simple appareil. Celui qui peut faire plus peut faire moins.

Ils les identifient de cette manière parce que le "périphérique USB", "OTG FS" et "OTG HS" sont trois cœurs IP différents dans les puces. Ils ont tous leurs capacités / spécifications particulières et peuvent nécessiter des pilotes différents (comme vous l'avez remarqué).

Pour résumer:

  • Périphérique USB: ne peut agir qu'en tant que périphérique, à pleine vitesse (12 Mbps)
  • USB OTG FS: capable d'agir comme un périphérique / hôte / périphérique OTG, à pleine vitesse (12 Mbps)
  • USB OTG HS: capable d'agir comme un périphérique / hôte / périphérique OTG, à pleine vitesse (12 Mbps) ou haute vitesse (480 Mbps). Notez que le noyau HS pour [la grande majorité des] * MCU ST nécessite une puce ULPI PHY externe pour réellement prendre en charge la haute vitesse. Le PHY sur puce ne peut fonctionner qu'à pleine vitesse. ... Oui, c'est très déroutant.

* Edit : Il semble que ST ait finalement fait des efforts pour intégrer un PHY haute vitesse sur puce sur quelques-uns de leurs nouveaux MCU (plus précisément: certaines des versions STM32F7x3 et STM32F730, pour le moment). Cependant, il n'y a pas de colonne spécifique qui indique clairement cette fonctionnalité dans leur tableau de sélection de périphérique, ce qui ajoute encore à la confusion. Vous devez regarder les détails de la fiche technique.

faible
la source
Ok, merci, je voulais juste l'entendre pas de ma propre tête :)
ScienceSamovar
1
De même, j'ai un système iMX qui a à la fois "hôte USB" et "otg fs", ce qui lui donne deux ports USB utilisables - mais ils nécessitent des pilotes différents! Quelque chose de similaire peut s'appliquer à ST - même fonctionnalité nécessitant un logiciel différent.
pjc50
En effet, je suis sûr qu'ils ont, ou avaient dans le passé, des appareils qui avaient plusieurs ports périphériques avec différents niveaux de fonctionnalités. C'est une façon non ambiguë d'énumérer les caractéristiques d'une gamme de pièces (ou cela aurait semblé le cas dans le passé)
Sean Houlihane
Hey! Pourriez-vous développer un peu? Si un microcontrôleur prend en charge USB OTG, pourriez-vous théoriquement avoir deux ports USB connectés à la puce: 1 pour agir en tant qu'hôte USB OTG (par exemple, brancher un clavier) et l'autre USB pour agir en tant que périphérique? Existe-t-il un terme pour décrire ce comportement?
NessDan
1
@Ness Si la puce intègre uniquement le bloc USB OTG, non, vous ne pouvez pas. Mais beaucoup de MCU haut de gamme incluent à la fois le périphérique USB et les blocs USB OTG. Ensuite, vous pouvez utiliser les deux simultanément et avoir deux ports indépendants sur votre MCU: l'un agissant comme périphérique et l'autre comme hôte, oui. Vérifiez les fiches techniques.
Dim