Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[STM32][USART][DMA] - Nadawanie przez USART z wykorzystaniem DMA STM32F4

22 Lut 2015 11:48 1242 4
  • Poziom 8  
    Witam, chciałbym przesyłać dane przez USART za pomocą DMA (STM32F4). DMA jest aktywowane w przerwaniu od TIM2 w odstępach co 100 ms. Program wykonuje się, natomiast dane nie są przesyłane. Wiem, że na pewno przerwanie od TIM2 działa poprawnie. Jeśli ktoś wie gdzie może być błąd/braki w konfiguracji proszę o odpowiedź. Z góry dzięki. Poniżej kod:

    Kod: c
    Zaloguj się, aby zobaczyć kod
  • Poziom 38  
    A gdzie wybór kanału?

    Dodano po 2 [minuty]:

    A gdzie wybór kanału?
    I dlaczego skaczesz z adresem co polslowo?
  • Poziom 8  
    Rzeczywiście, dawno nie używałem DMA i "zapomniałem" co to kanał :cry: . Poprawiłem też długości słów (obydwa po 1 bajt) ale tak naprawdę nic się nie zmieniło. Dalej nie otrzymuję danych. Mogę dodać, że zegary od TIM2, DMA1, USART2 włączone. Może robię coś nie tak przy sprawdzaniu tych flag w przerwaniu od DMA, ale starałem się pisać zgodnie z manualem. Poprawiony kod poniżej:
    Kod: c
    Zaloguj się, aby zobaczyć kod
  • Pomocny post
    Poziom 38  
    Kanal nadal nie ustawiony, zły kierunek transmisji.
  • Poziom 8  
    Kanał akurat był już ustawiony dobrze. Kierunek rzeczywiście źle - zmieniłem:
    ( DMA1_Stream6->CR |= DMA_SxCR_DIR_0 ). Oczywiście błąd był też w pierwszej linijce przerwania, powinno być: (if(DMA1->HISR & DMA_HISR_TCIF6)) i co najważniejsze - zapomniałem o włączeniu przerwania DMA w NVIC. Teraz wszystko hula, dzięki za pomoc tadzik!