stm32 CDC USB – Périphérique inconnu (code d’erreur 43) [fermé]

kaziel

stm32 CDC USB – Périphérique inconnu (code d’erreur 43) [fermé]


Je rencontre un problème avec la fabrication de PCB personnalisés avec STM32F103C8T6 FS CDC mais toute l’histoire ressemblait à ceci.

  1. J’ai fait une petite application de test en utilisant CubeMX et IAR sur un PC bon marché de Chine avec le même MCU – dans le terminal sur Windows, j’ai pu recevoir des données. BTW J’ai utilisé 8MHz XTAL, 1k5 pull jusqu’à 3,3 sur la ligne DP sans résistance série.
  2. Sur la carte personnalisée, même code (que je peux télécharger sur MCU sans aucun problème) et je reçois un périphérique inconnu dans HW Manager sur win7.

Même MCU, même application et horloges et deux comportements différents – qu’est-ce que je fais mal?


brhans

Montrez-nous votre schéma et PCB.

P J__

Je parie – probablement que le tableau bon marché force l’énumération que vous ne faites pas et que vous n’êtes pas prêt à envoyer les descripteurs. C’est un problème très courant.

Ale..chenski

Comment les deux appareils sont-ils alimentés? Via USB, ou bien?

kaziel

Bonjour, merci de votre attention. J’essaierai de publier des schémas et la disposition des PCB dans la soirée. La seule différence que je peux trouver jusqu’à présent est que sur la carte de la Chine, il y a un connecteur Micro USB avec une broche d’identification à souder sur GND et sur ma carte, j’utilise USB_B sans cette broche et j’alimente la carte depuis USB. Ce changement peut-il provoquer cet effet?

Turbo J

Sources courantes de cette erreur: lignes USB D + et D- permutées, horloge MCU ou configuration des broches incorrecte. Le code d’erreur 43 indique essentiellement qu’il n’y a pas de communication USB en plus du pullup sur une ligne de données.

Réponses


 Ale..chenski

L’une des erreurs typiques des périphériques USB alimentés par bus est la mauvaise gestion de la résistance de rappel. Votre description dit: « 1.5k pullup to 3.3 » , ce qui signifie que l’événement de connexion USB (pullup DP) sera vu immédiatement lors du branchement. L’hôte commencera donc le processus d’énumération dans 100 ms. Pourtant, votre MCU prendra un certain temps à démarrer, il ne sera donc pas prêt avec des réponses appropriées, et les demandes de l’hôte échoueront. Au moment où votre MCU est prêt à communiquer, l’hôte déclarera le port mort et affichera une erreur. Lorsqu’une carte de démonstration est alimentée en externe avant de se connecter à l’hôte USB et qu’elle est déjà opérationnelle, la connexion est correcte.

Pour éviter cet incident, toutes les cartes de démonstration STM réputées ont la résistance de pull-up contrôlée à partir de la broche GPIO, généralement PB2 ou PD2. Ensuite, le pull-up est défini par code uniquement lorsque la pile USB est prête à répondre.

La connexion de la broche d’identification sur la prise Micro-B du côté du périphérique USB est sans conséquence, elle est destinée à l’hôte USB OTG, pas à un périphérique ordinaire.

kaziel

Merci pour la réponse – je l’apprécie vraiment. Maintenant, j’aurai quelques indices pour enfin faire fonctionner cela. Un autre commentaire de mon côté – sur une carte sur laquelle USB CDC fonctionne (même MCU), l’USB se fait de la même manière que PU, pas de contrôle HW PU, le même code s’exécute sans problème (même horloge). Quoi qu’il en soit, j’essaierai quelques options et informerai des résultats.

VladBlanshey

@kaziel Avez-vous fait fonctionner votre STM32 USB?

 

-, [fermé], 43), CDC, code, d’erreur?, inconnu, périphérique, STM32?, USB

 

google

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *