[PROJEKT] Rejestrator sygnałów analogowych na STM32 – jednokanałowy oscyloskop USB

Należy zauważyć, że wysyłanych jest 10 paczek po 64-bajty co wynika z rozmiaru bufora próbek, który jest 320-elementową tablicą typu unsignedshort, czyli ma długość 640 bajtów. Natomiast callback od EP3_IN ma podobną strukturę wysyłania kolejnych paczek:

Po podłączeniu urządzenia-rejestratora do portu USB komputera należy włączyć aplikację libusb-win32 Inf-Wizard, w której powinna zostać wyświetlona informacja o nowym urządzeniu USB z portem wirtualnym COM. Dalej wystarczy postępować zgodnie z zaleceniami w efekcie czego zostanie utworzony plik .inf urządzenia USB gotowy do zapisu w systemie operacyjnym.

Czasami podczas pracy w środowisku uVision wraz z urządzeniem mogą pojawić się problemy jak niemożliwość dostępu współpracującej aplikacji PC. Należy wtedy wyjść z trybu debuggingu w uVision, oraz wyłączyć i ponownie podłączyć urządzenie do portu USB.

Następnie należy poinformować układ NVIC przy jakich zdarzeniach powinny być generowane przerwania:

Dalej następuje konfiguracja wyprowadzenia PA1 na które będzie podawany rejestrowany sygnał:

Kolejno należy skonfigurować układ podstawy czasu timera 1 oraz jego kanał 1 i należy pamiętać o tym, że timer ten jest podłączony do magistrali APB2 która jest taktowana sygnałem 72 MHz. Wstępnie kanał 1 jest skonfigurowany do odliczania 62,5 us, czyli sygnał będzie próbkowany z częstotliwością 16 kHz.

Następnie jest konfigurowany i włączany kontroler DMA:

Ostatnią czynnością jest skonfigurowanie kanału 1 przetwornika A/D:

Funkcja main() wygląda następująco:

Organizacja pomiarów jest dość prosta, a najważniejszy kod tej części programu znajduje się w pliku stm32_it.c i wygląda następująco:

Do pobrania

O autorze