TIM2 100Hz in CDC_Transmit_FS

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

Moderator: tilz0R

TIM2 100Hz in CDC_Transmit_FS

OdgovorNapisal/-a zoc » 26 Nov 2019, 22:44

Imam STM32L476, v njem nastavljen TIM2, da pošilja testni buffer in števec na USB (npr 60 Bytes ali 230 Bytes).
Uporabljam HAL driverje, zadnje firmware knjižnice. TIM2 uporablja prekinitev s prioriteto 6, USB nastavljen kot CDC pa s prioriteto 3. Ko se timer izteče, se iz HAL_TIM_PeriodElapsedCallback kliče CDC_Transmit_FS (na vsakih 100 do 1000Hz sprobano) pošlje fiksen buffer in povečan števec vsak nov cikel.

Ko berem podatke preko USB s python skripto (na win10) opazim, da se mi vsake toliko izgubi kakšen paket. Velikokrat se to dogaja periodično na vsakih 8364 vzorcev, ne glede na nastavljeno hitrost TIM2, ampak ne zmeraj.
Če zadevo laufam na debuggerju (uVision+nucelo) se izgubljeni paketi pojavljajo redkeje.
Primer izgubljenih paketov je na sliki viden z rdečo barvo, modra je 16bit števec.

Any ideas?
Priponke
izgube-usb.png
graf izgubljenih paketov in števec poslanih paketov
Uporabniški avatar
zoc
 
Prispevkov: 8
Pridružen: 18 Jan 2015, 00:42
Zahvalil se je: 3 krat
Prejel zahvalo: 1 krat
Uporabnika povabil: radix
Število neizkoriščenih povabil: 3

Re: TIM2 100Hz in CDC_Transmit_FS

OdgovorNapisal/-a Kroko » 27 Nov 2019, 00:38

STM ne pošilja podatkov, USB deluje tako, da jih PC zahteva.
Nekateri win 10 CDC gonilniki imajo hrošča. Pri hudi obremenitvi podatke sicer zahtevajo ampah jih ne obdelajo. Poskusi z win7, tam tega buga ni. Ali pa zamenjaj driver.
Druga možnost je, da je PC prepočasen in ne zmore pošiljati zahtev glede na nastavljen USB time frame. Nastavi višjo prioriteto niti/procesa, ki kliče USB. Jaz ponavadi naredim nit z visoko prioriteto zadolženo samo za USB transfer, ki bere/piše podatke v ciklični buffer. Tega potem "obdelujejo" druge niti, zraven pa spremljam zasedenost tega bufferja.
Čeprav bi bilo super USB ni realtime komunikacija.
http://www.planet-cnc.com poskakuješ na eni nogi in žvižgaš alpske podoknice Kroko was here!
Uporabniški avatar
Kroko
 
Prispevkov: 4548
Pridružen: 14 Jan 2015, 11:12
Kraj: Ljubljana
Zahvalil se je: 651 krat
Prejel zahvalo: 1498 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255


Vrni se na ARM-Cortex-M

Kdo je na strani

Po forumu brska: 0 registriranih uporabnikov in 1 gost