Hallo, ich möchte gerne in meinem Programm ein VCP integrieren. Da ich noch recht unwissend bin hoffe ich auf eine schnelle Lösung und etwas Verständnis falls ich etwas unbeholfen bin. Und zwar geht es um den STM32F105, sowie STM32F205 stehen beide zur Verfügung. Die Platine ist selbst entwickelt (mit 8MHz Quarz). Zurzeit ist es so, dass ich das Programm mittels CubeMX generiert habe und einfach nur möchte, dass der PC die USB Schnittstelle als VCP erkennt. Im Gerätemanager wird leider nur ein "Unbekanntes USB-Gerät angezeigt. (Fehler beim Anfordern der Gerätebeschreibung - Code 43 - VID / PID sind verkehrt). Ich vermute keinen Hardware Fehler auf der Platine, da diese mit einem STM32F072 ohne Probleme funktioniert. Der Unterschied zwischen den Mikrocontrollern STM32F072 und STM32F105/205 liegt in Bezug auf die USB Schnittstelle darin das der STM32F072 nur "USB" und der STM32F105/205 "USB OTG (on the Go)" hat. Im Cube MX habe ich die USB Schnittstelle wie folgt eingestellt: Connectivity --> USB_OTG_FS --> Mode --> Device_Only Middleware --> USB_Device --> Class For FS IP --> Communication Device Class (VCP) Weitere Einstellungen im Cube MX System Core -->GPIOs entsprechend konfiguriert -->RCC --> HSE --> Crystal/Ceramic Resonator -->SYS --> Debug --> JTAG 5 Pins In der Clock Configuration habe ich den 8MHz Quarz eingetragen und den Rest automatisch einstellen lassen. Hat jemand eine Idee wo das Problem liegen könnte?
Mike schrieb: > (Fehler beim Anfordern der Gerätebeschreibung - Code 43 Dann sollte man di Basiscs (Spannung, Takt, Pinbelegung) prüfen. Code 43 sagt erstmal nur das er überhaupt keine Daten von dem USB Gerät erhalten konne (deshalb auch die flaschen VID/PID). Falls an D+ ein Pullup angeschlossen ist, funktioniert das USB Peripherial vermutlich noch gar nicht.
Mike schrieb: > In der Clock Configuration habe ich den 8MHz Quarz eingetragen Hast du auch einen 8Mhz Quarz angeschlossen? Kontrolliere in der Diagramm-Ansicht für die Takt-Konfiguration, ob irgend etwas rot ist. Manchmal versagt die Automatik, die Fehler werden dann farblich hervorgehoben.
Mike schrieb: > ich möchte gerne in meinem Programm ein VCP integrieren. Da ich noch > recht unwissend bin hoffe ich auf eine schnelle Lösung Die schnelle Lösung gibt es nicht - es sei denn, jemand hat das alles bereits vor dir getan und läßt dich an seinen Ergebnissen teilhaben. Ich nicht, denn mit den TM32F105 oder 205 habe ich mich bislang nicht befaßt. Aber du kannst ja mal das Referenzmanual zu deinen Chips zu Rate ziehen und die betreffenden Kapitel über den USB mit dem entsprechenden Kapitel im Manual zum STM32F103 vergleichen - und dann deine eigenen Schlüsse draus ziehen. So etwa würde ich an deiner Stelle vorgehen. W.S.
W.S. schrieb: > Aber du kannst ja mal das Referenzmanual zu deinen Chips zu Rate ziehen > und die betreffenden Kapitel über den USB mit dem entsprechenden Kapitel > im Manual zum STM32F103 vergleichen Die sind komplett unterschiedlich. Die "OTG" Peripherie ist sehr viel komplexer als die einfache "USB" Peripherie.
:
Bearbeitet durch User
Niklas G. schrieb: > Die sind komplett unterschiedlich. Nun, OTG und simples Device sind oftmals zwei völlig verschiedene Peripherie-Cores. Aber wenn das so ist bei diesem µC, dann ist für den TO ne richtige Eigenentwicklung angesagt. Muß er sich eben in die Thematik einarbeiten. W.S.
Hehe, hab grad bei ST geschaut: Das zuständige RefManual ist das RM0008 und das gilt lt. ST dafür: STM32F101xx, STM32F102xx, STM32F103xx, STM32F105xx, STM32F107xx Siehe: https://www.st.com/en/microcontrollers-microprocessors/stm32f105-107.html# Also, es sollte ja wohl doch gehen!!! W.S.
Egal ob normal USB oder OTG, der code der von Cube MX erzeugt wird stellt zumindest in so weit funktionalität her, dass das Gerät als VCP erkannt wird. Sicher das auf der Hardware Siete alles passt? Kein kurzschluss beim löten des steckers o.ä.?
W.S. schrieb: > Das zuständige RefManual ist das RM0008 und das gilt lt. ST dafür: > STM32F101xx, STM32F102xx, STM32F103xx, STM32F105xx, STM32F107xx > Also, es sollte ja wohl doch gehen!!! Du hast übersehen, dass es zwei separate Kapitel für die beiden grundsätzlich unterschiedlichen USB Cores hat.
W.S. schrieb: > Hehe, hab grad bei ST geschaut: > > Das zuständige RefManual ist das RM0008 > und das gilt lt. ST dafür: > STM32F101xx, > STM32F102xx, > STM32F103xx, > STM32F105xx, > STM32F107xx > > Siehe: > https://www.st.com/en/microcontrollers-microprocessors/stm32f105-107.html# > > Also, es sollte ja wohl doch gehen!!! Nö, du hast einfach mal wieder garkeine Ahnung von garnichts! Es ist immer dasselbe mit dir. Du weist ja nichtmal wie ST "Datasheet" und "Referencemanual" aufbaut und trennt. Aber du willst mal wieder mitreden! Im RefMan steht alles was die angegebenen STM32 haben KÖNNTEN! Was diese dann wirklich haben steht im Datenblatt. Und was steht da beim F105? -> "USB OTG FS" Ein "Universal serial bus full-speed device interface (USB)" hat der F105 nicht, sondern nur der F103. Beim F105 sind sogar USB und CAN gleichzeitig nutzbar.
Mike schrieb: > Ich vermute keinen Hardware Fehler auf der Platine, da diese mit einem > STM32F072 ohne Probleme funktioniert. Der Unterschied zwischen den > Mikrocontrollern STM32F072 und STM32F105/205 liegt in Bezug auf die USB > Schnittstelle darin das der STM32F072 nur "USB" und der STM32F105/205 > "USB OTG (on the Go)" hat. Das sind eben 2 komplett unterschiedliche Blöcke ;) Aber zeig doch mal bitte trotzdem einen Schaltplan, das Layout und ein Foto des Aufbaus. Vor allem vermischt du hier F105 und F205. Welchen von den beiden hast du denn? Beim F105 hat der USB OTG noch 1,25kb exklusiven SRAM, aber der USB OTG des F205 hat das nicht. Daher vermute ich da einen Unterschied, aber dazu müsste ich nochmal genauer in die Registerbeschreibung gucken.
Danke erst einmal für die vielen Rückmeldungen. Ich habe euch nochmal ein Auszug des Schaltplans der Platine angehängt, sowie die aktuelle clock configurtation. Soweit ich das erkennen kann habe ich den Quarz angeschlossen und in der clock configuration alles richtig eingestellt, es werden keine Fehler angezeigt. Auch die Hardware habe ich nochmals gecheckt, soweit alles in Ordnung, kein Kurzschluss o.ä.. Fällt euch auf den Anhängen etwas auf?
Mach mal zur Probe die Kondensatoren an den USB Leitungen weg. Du könntest den HSE Takt mal auf MCO1 oder MCXO2 ausgeben um zu kontrollieren, ob die Frequenz stabil ist und stimmt. Oder ganz banal: lasse eine LED blinken und kontrolliere, ob sie regelmäßig und mit der richtigen Frequenz blinkt. Der externe Pull-Up Widerstand ist nicht nötig, ich vermute sogar, dass er weg muss. Zitat aus dem Referenzhandbuch: "DP/DM integrated pull-up and pull-down resistors controlled by the OTG_FS core depending on the current role of the device."
Mit den 22pF Kondis hat das mit einem F072 funktioniert? Durchaus interessant, laut ST brauchts diese nicht. Wenn du angst hast dir den STM32 durch ESD aus dem USB Kabel zu grillen, dann nimm TVS Dioden für USB. Die gibts im SOT23-6/TSOP6, Datenpaar rein, Datenpaar raus sowie VCC/GND. Beispiel: https://www.mouser.de/ProductDetail/Nexperia/IP4234CZ6125?qs=sSXnapcmqSskfgXn%2F9aKzA== Diese verbau ich immer. Die 22R können mit dieser TVS auch weg, die sind integriert. Dein Gerät ist USB powered nehm ich mal an? Ansonsten wärs noch empfehlenswert die 5V USB an den VUSB Pin des STM32 zu legen. Wenn er 5V tolerant ist, dann direkt sonst per Spannungsteiler. Der Widerstand an DP ist im STM32 integriert, also lass den weg. Das USB Device muss inenrhalb eines kurzen Zeitfensters antowrten wen der Pull vom Host erkannt wurde und wenn deine Software dann noch nicht so weit ist dann is essig. Das Quarz braucht durchaus etwas Zeit zum anschwingen und die PLL zum Einrasten. Ansonsten fliegen die Boot0/Boot1 Pins ind er Luft rum, das ist auch nicht gut. Belege die bitte mit GND oder 3,3V. Boot0/1 -> GND für den Start aus dem Flash.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.