STM32F072 USB DataOut preneha delovati po dveh paketih

Vse kar je v povezavi z ARM-Cotrex-M procesorji. Sem spada tako HW kot SW.

Moderator: tilz0R

STM32F072 USB DataOut preneha delovati po dveh paketih

OdgovorNapisal/-a urosg » 12 Jan 2023, 13:21

Upam, da ima kdo kaj vec iskusenj s tem kot jaz.

Do sedaj sem uspesno v enem primeru uporabil USB CDC driver iz STM32CubeMX, tokrat sem se pa odlocil, da naredim malce bolj "sleek" zadevo in sem se lotil uporabe Custom HID driverja.

Posiljanje iz MCUja na racunalnik (windows ali linux - libusb-1.0 knjiznica) deluje bp, tezavo imam pri komunikaciji v obratni smeri.

Nastavljen imam EP 0x01 OUT INTERRUPT(RX gledano iz MCUja) ter EP 0x81 IN INTERRUPT (TX gledano iz MCUja), oba imata velikost bufferja nastavljeno na 8 bytov.

V zgenerirani kodi sem spremenil funkcijo "CUSTOM_HID_OutEvent_FS" tako da sem samo dodal par vrstic, da preverim prejete podatke in zapisem v globalno spremenljivko status, da so se vhodni podatki spremenili in potem zapustim funkcijo z rezultatom USBD_OK.

Malo sem brskal po spletu in ta pojav blokade po dveh paketih se dogaja, samo na zalost se nisem nasel nobene primerne resitve.

Kaksen nasvet bo zelo dobrodosel.
Uporabniški avatar
urosg
 
Prispevkov: 663
Pridružen: 10 Feb 2015, 13:38
Kraj: Domžale, Mengeš, Kamnik
Zahvalil se je: 24 krat
Prejel zahvalo: 145 krat
Uporabnika povabil: mucek
Število neizkoriščenih povabil: 14

Re: STM32F072 USB DataOut preneha delovati po dveh paketih

OdgovorNapisal/-a urosg » 12 Jan 2023, 14:17

Dodatni podatki / pojasnila:
V primeru ko uporabljam oz. posiljam podatke samo iz Hosta (PC) na Device (MCU) zadeva deluje bp; v primeru ko pa 2x iz Device posljem podatek proti Hostu z uporabo USBD_CUSTOM_HID_SendReport funkcije se pa potem zgodi zgornji primer - t.j. posiljanje iz Device proti PCju naprej deluje v obratni smeri pa nic vec.
se ista tezava na ST forumu
Uporabniški avatar
urosg
 
Prispevkov: 663
Pridružen: 10 Feb 2015, 13:38
Kraj: Domžale, Mengeš, Kamnik
Zahvalil se je: 24 krat
Prejel zahvalo: 145 krat
Uporabnika povabil: mucek
Število neizkoriščenih povabil: 14

Re: STM32F072 USB DataOut preneha delovati po dveh paketih

OdgovorNapisal/-a urosg » 12 Jan 2023, 20:34

Da si odgovorim sam sebi trenutna resitev / ena od moznih:
Namesto, da sem uporabil endpoint 1 kot dvosmeren endpoint (IN=0x81; OUT=0x01) sem uporabil dva enpointa (1 in 2) in sicer 0x01 za OUT ter 0x82 za IN - sedaj komunikacija tece kot predvideno.
Uporabniški avatar
urosg
 
Prispevkov: 663
Pridružen: 10 Feb 2015, 13:38
Kraj: Domžale, Mengeš, Kamnik
Zahvalil se je: 24 krat
Prejel zahvalo: 145 krat
Uporabnika povabil: mucek
Število neizkoriščenih povabil: 14

Re: STM32F072 USB DataOut preneha delovati po dveh paketih

OdgovorNapisal/-a Kroko » 12 Jan 2023, 21:54

Zakaj Custom_HID? Se mi zdi, da je napol narejen zato sem raje izhajal iz navadnega HIDa in naredil svoj class.
http://www.planet-cnc.com Kroko was here!
Uporabniški avatar
Kroko
 
Prispevkov: 5963
Pridružen: 14 Jan 2015, 11:12
Kraj: Ljubljana
Zahvalil se je: 762 krat
Prejel zahvalo: 2308 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: STM32F072 USB DataOut preneha delovati po dveh paketih

OdgovorNapisal/-a urosg » 13 Jan 2023, 06:29

Custom HID sem izbral, ker sem potem delal "Vendor specific" in sem zelel uporabit "samo" osnovo.

Uspelo mi je nastavit vendor specific s podporo WinUSB, tako da v windowsih ni potrebnih nobenih posebnih gonilnikov, naprava se pa tudi normalno pojavi in se z uporabo libusb-1.0 normalno dostopa, vendar se mi je pa potem malce ustavilo pri dvosmerni komunikaciji.

Verjetno bi enako lahko naredil iz navadnega HIDa...
Uporabniški avatar
urosg
 
Prispevkov: 663
Pridružen: 10 Feb 2015, 13:38
Kraj: Domžale, Mengeš, Kamnik
Zahvalil se je: 24 krat
Prejel zahvalo: 145 krat
Uporabnika povabil: mucek
Število neizkoriščenih povabil: 14


Vrni se na ARM-Cortex-M

Kdo je na strani

Po forumu brska: 0 registriranih uporabnikov in 1 gost