Forum: Mikrocontroller und Digitale Elektronik STM32/USB Host/URB_NOTREADY


von Stefan K. (whassup)


Lesenswert?

Hallo,

ich verwende die STM32_USB-Host-Device_Lib_V2.1.0 zusammen mit dem 
STM32F207ZG-SK Eval Board.
Ich habe den MSC (Mass Storage Class) Beipielcode (Host) angepasst, so 
dass ich mit einem CDC Device kommunizieren kann.
Die Enumeration funktioniert und ich kann die Deskriptoren Device 
Descriptor, Configuration Descriptor, Interface Descriptor und den 
Endpoint Descriptor auslesen.

Nach der Enumeration möchte ich mit dem Senden von Daten beginnen. Dazu 
nutze ich:
status = USBH_BulkSendData (pdev,
                           USBH_CDC_XferParam.pOutBuffer,
                           USBH__XferParam.Out_Packet_Length,
                           hc_num_out);

Das funktioniert oft und mit
URB_Status =   HCD_GetURB_State(pdev , hc_num_out);
erhalte ich auch URB_Status = URB_DONE.

In einigen Fällen erhalte ich jedoch URB_Status = URB_NOTREADY und ich 
kann nicht herausfinden warum.

Habe ich evtl. vergessen einige Parameter einzustellen bevor ich 
USBH_BulkSendData() benutze?

Vielen Dank,
Stefan

von M. K. (avr-frickler) Benutzerseite


Lesenswert?

Nach welcher USB-Spezifikation arbeiten die STM32, OHCI? Könntest du mir 
dann sagen welcher ConditionCode sich hinter URB_NOTREADY verbirgt?

Ich habe ähnliche Probleme allerdings mit einem LPC, vielleicht hat es 
ja die selbe Ursache.

von Stefan K. (whassup)


Lesenswert?

Die USB Lib ist USB2.0 konform. Ob OHCI unterstütz wird, weiß ich leider 
nicht.

Hinter URB_NOTREADY  verbirgt sich die Rückmeldung vom Host Controller 
Treiber, das eine NAK condition aufgetreten ist. Laut USB Beschreibung 
kann dies bedeuten, dass der Empfänger keine Daten aufnehmen kann oder 
der Sender nicht senden kann bzw. keine Daten zum Senden hat.

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
Noch kein Account? Hier anmelden.