STM32 CDC auf unterschiedlichen Rechnern

OP #7598492
Lesenswert?

Hallo,

woran kann es liegen, dass meine CDC, generiert aus CubeMX auf unterschiedlichen Rechern erkannt / nicht erkannt wird?

Genauer gesagt habe ich zwei Windows10 Rechner. Auf dem einen wird die CDC tadellos erkannt, auf dem anderen kommt die Fehlermeldung, dass das USB-Gerät nicht erkannt wurde.

Mehr kann ich nicht sagen, da ich bis jetzt nur den generierten Code verwende. Die Hardware scheint zu funktionieren. Ich verwende einen 7,3728 Baud Quarz und der USB Takt ist 47,92Mhz.

Danke für Tips!

#7598502
Lesenswert?

Ada J. Quiroz schrieb:

Niklas G. schrieb:

Sollte der Takt nicht 48 MHz sein?! Wozu ein Baudratenquarz wenn man USB nutzt?

Weil ich auch viel Uart und RS485 im System verwende. Aber auch mit 48 Mhz über den internen Quarz habe ich das selbe Fehlerbild.

Es gibt keinen internen Quarz. Es gibt zwei interne Oszillatoren (32k und 8M), die aber nicht quarzstabilisiert und damit für USB oft nicht genau genug sind.

fchk

(Firma: Wilhelm.Consulting) #7598531
Lesenswert?

Es gibt einige wenige STM32 die crystal-less USB unterstützen. Die ziehen ihren internen 48MHz Quarz auf "Ziel Frequenz" und nehmen dabei den Host als Referenz.

Im allgemeinen braucht du aber exakt 48MHz. Sonst ist das Zufall.

https://community.silabs.com/s/article/usb-clock-tolerance?language=en_US

Hier meinen die, man bräuchte+-0.25% für usb full-speed.

Das wären 47.88 als untere Grenze.

Wenn ich deine 47.92 noch mit 100ppm schmücke, dann bist du da draußen.

Ich würde da Mal anfangen...

Übrigens, ich hatte Mal ein ähnliches Problem, als ich unabsichtlich den internen 8mhz RC Oszillator statt des externen tcxo verwendet hatte. Ging am Tisch meist, aber eben nicht immer. Nachdem ich impedanzen gemessen, Rechner getauscht,... hatte, habe ich am Schluss den takt gemessen (den kannst du auf einen Pin rausrouten), und nach einer 2 Zeilen Änderung im Code waren alle Probleme verschwunden.

Selbiges Spiel kenne ich übrigens von Ethernet. Hatte da Mal unabsichtlich einen mems Oszillator bestückt... Hat mich auch einige Zeit gekostet diesen dummen fehler im BOM zu finden.

73

(Firma: Wilhelm.Consulting) #7599077
Lesenswert?

Aja, wenn da USB-C im Spiel ist, sollte man den Stecker probieren zu drehen ...

Es gibt ein paar Fehler,die auftreten können, oder, die man selber einbauen kann, die sich so zeigen würden.

Aber wie oben geschrieben, beim Quarz beginnen, um da Mal sauber zu sein.

73

OP #7603581
Lesenswert?

Ich habe den Quarz getauscht auf einen 12MHz (mit PLL zu 48MHz) und habe mir auf MCO den Takt ausgeben lassen, der sieht gut aus.

Jetzt wird hingegen USB auf keinem Rechner mehr erkannt, mit dem 7,372800 Takt hat es immerhin auf einem Rechner funktioniert.

Ich bin ratlos, woran kann es liegen? Es ist ein STM32F413VGT6.

OP #7603619
Lesenswert?

Wastl schrieb:

Gut aussehen reicht nicht, er muss auch hinreichend genau sein.

Das meinte ich ja damit.

Wastl schrieb:

Du musst für jeden Quarz die richtigen Lastkapazitäten dazuschalten sonst liegt evtl. die Frequenz zu stark daneben.

Ich benötige keine Kapazitäten,d a ich einen Quarz Oszillator verwende.

Ich habe aber den Fehler gefunden. Statt 22Ohm habe ich 220Ohm bestücken lassen. Nun funktioniert es auch auf allen Rechnern.

Danke trotzdem, ich denke dass der 12MHz schon wichtig war.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren