Wpis z mikrobloga

Używał ktoś z Was USB CDC na STM32? Jeśli tak, jak zmienić baud rate? Czy wystarczy ustawić odpowiednią prędkość po stronie komputera, np. w terminalu i wirtualny port szeregowy sam się pod to ustawi? Bo nie widzę nigdzie konfiguracji po stronie STM-ki (bo pakiety USB i tak idą z szybkością wg specyfikacji) a chciałbym uzyskać maksymalną możliwą przepustowość.
#elektronika #stm32 #mikrokontrolery
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@defoxe: poszukam w plikach nagłówkowych, chociaż wątpię żebym to znalazł, gdyby była taka opcja to na pewno byłaby też do ustawienia w CubeMX w sekcji Middleware, a nie ma
  • Odpowiedz
Chociaż z tego co czytam to ramka USB FS jest wysyłana co 1 ms (nawet jeśli nie są wysyłane żadne dane), zawsze ma 64 B, więc jeśli dobrze rozumiem baud rate tutaj nie ma znaczenia i największą prędkość uzyskam wysyłając pełne 64 B w ramce, ale poprawcie mnie jeśli się mylę
  • Odpowiedz
@loginniezajety: używam F7, nie wiem czy to ma jakiś wpływ na szybkość transmisji. A czy muszę jakoś ręcznie kolejkować pakiety, czy biblioteka ma jakieś własne FIFO i mogę po prostu napieprzać wywołania funkcji z kolejnymi częściami danych, bez odpytywania czy się wysłało?
Problem jest taki że muszę wysyłać obraz grayscale z kamerki z STM32 do kompa, nie ogarniam za bardzo USB a chcę to zrobić najprościej jak się da, więc
  • Odpowiedz
@xerxes931: Te biblioteki się często zmieniają więc trudno powiedzieć. Ja wolałem zawsze powycinać to co zbędne zostawiając tylko SOF_Callback() z wywołaniem UserToPMABufferCopy(), między peryferiałem obsługiwanym przez DMA a obsługą SOF zrobić kolejkę a po stronie PC użyć libusb (nie wiem czy to prawda bo nie z tego powodu używałem libusb ale ktoś mi opowiadał że na STM32F4 i usbser miał tylko 500 kB/s).
  • Odpowiedz