logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak przesłać sygnał MIDI z Behringer SWING do STM32-Nucleo-F303RE?

toja689 19 Gru 2024 16:32 234 5
REKLAMA
  • #1 21355024
    toja689
    Poziom 2  
    Posty: 2
    Witam,

    chciałbym zrobić projekt w postaci pianina na mikrokontrolerze. Posiadam kontroler midi Behringer SWING, którego podłączam do mikrokontrolera STM32-Nucleo-F303RE z nakładką midi (MIDI OUT na klawiaturze do MIDI IN na nakładce). Klawiatura midi jest zasilona za pomocą usb z komputera. Chciałbym prosić o pomoc w przesłaniu sygnału midi z klawiatury do mikrokontrolera i wyświetlenie go w konsoli komputera, żeby zrozumieć jak wygląda przesyłanie tego sygnału zanim zabiorę się za pianino i odtwarzanie dźwięków. Z tego co się dowiedziałem, to sygnał ma być przesłany poprzez pin Rx na mikrokontrolerze, lecz mimo wielu prób nie udaje mi się wyświetlić żadnej informacji na konsoli o tym, że jakikolwiek sygnał dociera jak naciskam klawisz klawiatury midi.

    Pozdrawiam
    AI: Jakiej metody lub biblioteki używasz do odczytu sygnału MIDI na mikrokontrolerze STM32?
    Nie znalazłem żadnej biblioteki midi do stm. Próbowałem użyć takiej metody:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    AI: Czy możesz podać konfigurację ustawień UART na mikrokontrolerze, takich jak prędkość transmisji i inne parametry?
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 21355258
    oscil1
    Poziom 23  
    Posty: 619
    Pomógł: 49
    Ocena: 171
    Jako pierwsha porada - ponieważ nie zabardzo wiesz jak te UART-y działają - odpuść sobie wszelkie asynchroniczne metod. Nie używaj funkcji ..._IT albo _DMA.

    Musisz sobie również odpowiednio skonfigurować piny MCU
  • REKLAMA
  • REKLAMA
  • #4 21355368
    oscil1
    Poziom 23  
    Posty: 619
    Pomógł: 49
    Ocena: 171
    robiw napisał:
    MIDI jest właśnie asynchroniczne i do tego bardzo proste.

    Drogi robiw. Moze sobie byś asynchroniczne co nie ma nic wspólnego z funkcjami nieblokującymi (czyli asynchronicznymi) w HAL-u STMa. Widać że OP nie za bardzo ma wprawę, więc niech używa funkcji blokujących.,
  • REKLAMA
  • #5 21355392
    robiw
    Poziom 26  
    Posty: 2030
    Pomógł: 25
    Ocena: 133
    Cudowny HAL. Dobrze, że tego nie ma w AVR-ach 😛. MIDI trzeba obsługiwać natychmiast, bo potrafi sporo tego lecieć, zwłaszcza przez SysEx'y. Najlepiej w ISR. Wiem, co mówię. Sporo takich urządzeń zaprojektowałem. Funkcje blokujące, o których mówisz są jednym z gorszych pomysłów. Jak będziesz odbierał komunikat SysEx to godzisz się na to, żeby program wisiał pół minuty? Dla przykładu. Żeby się tym sensownie bawić warto najpierw poczytac trochę o komunikatach MIDI a potem wszystko obsłużyć ISR. Pozdrawiam. R
  • #6 21356367
    toja689
    Poziom 2  
    Posty: 2
    Bardzo dziękuję za odpowiedzi.

    Skonfigurowałem piny PA2 i PA3 jako UART2, aktywowałem przerwania. Jak debuguję, to obsługa przerwania następuje z klawiatury komputera, lecz z klawiatury MIDI podłączonej do mikrokontrolera nie ma już żadnej reakcji. Mam podłączony MIDI shield do pinu Rx. Jak mogę przesłać tę wiadomość MIDI do mikrokontrolera? Czy idę w ogóle w dobrym kierunku, próbując odebrać sygnał na podstawie przerwania Rx?
REKLAMA