Gast
#6412391
ich bin gerade dabei ein Chinaboard 'Devebox STM32XX_M' mit dem H743VI in Betrieb zu nehmen. Mit Mbed das den H743 unterstützt und einen USB Stack hat den ich schon auf verschiedenen F4/F7 laufen habe. Der H743 ist um einiges komplexer, aber die Initialiserung von Clock und USB/PCD wird größtenteils über die HAL gemacht die in Version 1.8.0 enthalten ist. Das Problem scheint am Takt zu liegen, USB1 kann verschiedene Quellen haben: - HSI48 Initialisierung hängt in stm32h7xx_ll_usb.c/USB_CoreReset(). Es wird USBx->GRSTCTL |= USB_OTG_GRSTCTL_CSRST; gesetzt und dann gewartet bis dieses Bit von der HW wieder rückgesetzt wird, das passiert nicht. Google liefert hier Ergebnisse, die Warteschleife ist schlecht programmiert, habe die Wartezeit aber schon bis auf 10s erhöht und es hängt hier trotzdem. Kontrollausgabe auf MCO1 zeigt an das der Takt ca. 48,3 MHz beträgt. Das kann mit CRS korrigiert werden, aber auch hinzufügen von CRS ändert nichts am CoreReset Problem. - PLL1Q gleicher Effekt wie beim HSI. PLL1Q hat den Nachteil das der Sysclock dann max. 192 MHz wird, aber auch mit diesem 'langsamen' Takt hängt die Initialisierung. MCO1 zeigt 48 MHz an. - PLL3Q PLL1 war für 480 MHz Systemtakt programmiert (habe auch langsameren probiert), USB wird mit eigener PLL3 getaktet. Einen MCO für diese Quelle gibt es leider nicht. Mit diesem Takt komme ich aber am weitesten: Init läuft durch, ein USB Gerät wird detektiert, aber es gibt keine Verhandlung mit dem Host und es wird nur Suspend gemeldet (über trace Ausgaben) was nach 3 ms inaktivität auf dem Bus ausgelöst wird. Ich würde da auch den Takt vermuten das dadurch keine gültigen Datenpakete erkannt werden. Hat hier jemand vielleicht einen funktionierenden Code für das Nucleo H743 zum Laufen bekommen? Im Anhang ist die clock config mit zwei Varianten, es wird HSE verwendet, der Quarz hat 25 MHz und USB_DEVICE ist gesetzt.
