www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik STM32F4 Discovery, usb endpoint IN2 funktioniert nicht


Important announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Peter (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
hallo zusammen,

ich habe versucht auf dem STM32F4 Discovery Board CDC und HID zusammen 
zum laufen zu bringen, die geräte wurden erkannt und funktionierten auch 
fast!
maus gut, seriell out (pc->stm) gut, nur seriell stm32->pc funktioniert 
nicht. die daten wollen einfach nicht raus. nach langem hin und her 
mußte ich feststellen, dass es an dem endpoint IN2 liegt. alles 
zurückgebastelt und cdc einzeln betrieben, endpoint 1 für in und out 
verwendet -> alles gut.
endpoint 2 für in und out verwendet -> daten wollen nicht raus. gleiches 
mit HID einzeln versucht, genau das gleiche! alle in endpunkte (stm->pc) 
größer 1
scheinen nicht zu funktionieren. nach langem debuggen mußte ich 
feststellen dass der fifo des EP2 nicht leer wird. "diepint.b.xfercompl" 
ist immer 0 für endpunkte > 1. dies läßt sich ganz einfach mit dem 
standard DEMO nachvollziehen indem man HID_IN_EP auf 0x82 setzt. die 
maus funktioniert nicht mehr! ich geh mal davon aus, dass es sich um ein 
bug von st handelt.
oder hat da jemand ne andere idee oder sogar ne lösung ? wer hat schon 
mal in-endpunkte 2 oder 3 erfolgreich verwendet ?

Autor: Jim Meba (turboj)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Meine Glaskugel sagt: Endpoint Deskriptor falsch.

Hast Du die entsprechenden Endpoint Deskriptoren angepasst? Da steht die 
Endpoint Nummer drin.

Ansonsten: Zeig uns den Code.

Autor: Peter (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
hallo,

vielen dank für die antwort.

der code ist orginal demo vom discovery, alles hübsch von vorne bis 
hinten mit defines, schön ordentlich, so wie es sich gehört.

wer ein hid oder cdc oder sonst was mit usb auf dem STM32F4 Discovery am 
laufen hat möge doch bitte mal seinen XX_IN_EP auf 0x82 stellen und 
schauen obs noch geht.

meine glaskugel hab ich auch schon gefragt, konnte mir leider auch nid 
wirklich helfen.

hier mal etwas code, denke da sieht man deutlich, dass der endpoint 
descriptor in ordnung ist. wie gesagt, mit 0x81 gehts mit 0x82 nicht, 
egal ob cdc oder hid.


#define HID_IN_EP                    0x82 // geht nicht
//#define HID_IN_EP                    0x81 // geht
....
 /******************** Descriptor of Mouse endpoint 
********************/
  /* 27 */
  0x07,          /*bLength: Endpoint Descriptor size*/
  USB_ENDPOINT_DESCRIPTOR_TYPE, /*bDescriptorType:*/
  HID_IN_EP,     /*bEndpointAddress: Endpoint Address (IN)*/
  0x03,          /*bmAttributes: Interrupt endpoint*/
  HID_IN_PACKET, /*wMaxPacketSize: 4 Byte max */
  0x00,
  0x0A,          /*bInterval: Polling Interval (10 ms)*/

...

static uint8_t  usbd_cdc_Init (void  *pdev, uint8_t cfgidx) {

    DCD_EP_Open(pdev, HID_IN_EP, HID_IN_PACKET, USB_OTG_EP_INT);

....

}

Autor: Potter (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Du zeigst einen HID-Endpunkt und eine CDC-Init() Funktion. Ob denn dass 
zusammen passt?

Was steht denn im Datenblatt? Gibts den EP2 überhaupt? Wird der auch auf 
dem Board verwendet? Ist der in der Firmware implementiert? Hast Du mal 
einen Link zu den Datenblättern? Kannst Du mal die Descriptoren 
anhängen, dass man damit auch etwas anfangen kann?

Gruß Potter

Autor: Peter (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hallo,

richtig, die CDC-Init() und HID-Endpunkt passen augenscheinlich nicht 
zusammen. Dies ist noch ein Relikt aus vorangegangenen Versuchen. Hat 
aber mit dem eigentlichen Problem nix zu tun.

Laut Datenblatt werden 4 Endpunkte unterstützt. Die Firmware ist auch 
für mehrere Endpunkte ausgelegt.


Datenblatt des STM32F407:

http://www.st.com/internet/com/TECHNICAL_RESOURCES...

Beschreibung des STM32F4DISCOVERY:

http://www.st.com/internet/evalboard/product/252419.jsp

Hier gehts direkt zum Source Code:

http://www.st.com/internet/com/SOFTWARE_RESOURCES/...

Grüße, Peter

Autor: Potter (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hallo Peter,

schön, wenn Du die Unterlagen parat hast:) Dann mach Dich mal ran.

Ich fange nicht an Dein Projekt zu debuggen, aber das kannst Du ja auch 
selber. Z.B. mit

http://www.sysnucleus.com/

Zuerst gilt es mal festzustellen, ob überhaupt irgendetwas über den Bus 
geht, und falls ja, was.

Gruß Potter

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel




Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder GIF-Format hochladen.
Siehe Bildformate
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net