Hallo,
ich versuche seit einiger Zeit aus dem STM32F429 Discoveryboard ein
USB-CDC -Device zu machen. Leider hält sich der Erfolg in Grenzen. Ich
habe mittels CubeMX den Quellcode erzeugt und compiliert.
Beim anstecken an den PC werden einige Interrupts ausgelöst:
int: rst
int: en done
int: rst
int: en done
int: rst
int: en done
int: suspend
Am PC ist anschliessend zu sehen, dass die Enumeration fehlgeschlagen
ist.
Ich benutze CubeMX und die Firmware in der aktuellsten Version (4.11.0
bzw. V1.9.0).
Ich benutze OTG_HS als Device_only. Meine Konfiguration:
1 | hpcd_USB_OTG_HS.Instance = USB_OTG_HS;
|
2 | hpcd_USB_OTG_HS.Init.dev_endpoints = 11;
|
3 | hpcd_USB_OTG_HS.Init.speed = PCD_SPEED_FULL;
|
4 | hpcd_USB_OTG_HS.Init.dma_enable = DISABLE;
|
5 | hpcd_USB_OTG_HS.Init.ep0_mps = DEP0CTL_MPS_64;
|
6 | hpcd_USB_OTG_HS.Init.phy_itface = USB_OTG_EMBEDDED_PHY;
|
7 | hpcd_USB_OTG_HS.Init.Sof_enable = DISABLE; //konflikt mit lcdt
|
8 | hpcd_USB_OTG_HS.Init.low_power_enable = DISABLE;
|
9 | hpcd_USB_OTG_HS.Init.lpm_enable = DISABLE;
|
10 | hpcd_USB_OTG_HS.Init.vbus_sensing_enable = ENABLE;
|
11 | hpcd_USB_OTG_HS.Init.use_dedicated_ep1 = DISABLE;
|
12 | hpcd_USB_OTG_HS.Init.use_external_vbus = DISABLE;
|
Hat jemand eine Idee, wie ich den Fehler finden kann, ohne jetzt in die
Untiefen des USB-Stacks eintauchen zu müssen?
Vielen Dank,
Markus