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

STM32F7 TIM2/3/4/5 z DMA1 - Błąd transferu przy pierwszym request

mycodename47 14 Kwi 2017 10:37 978 4
REKLAMA
  • #1 16411667
    mycodename47
    Poziom 16  
    Posty: 256
    Pomógł: 15
    Ocena: 54
    Witam,

    Tak jak w temacie mam problem z poprawnym dzialaniem TIM2/3/4/5 w polaczeniu z DMA1.

    W moim projekcie jeden z powyzszych timerow skonfigurowany jest jako slave w trybie GATED (z wykorzystaniem wejscia ETR), po wyzwoleniu na jednym z kanalow generuje PWM (PWM1), oraz na kolejnym kanale wykorzystuje tryb porownywania do wysylania requestow DMA w odpowiednim momencie (DMA w trybie P2M, flow controlerem jest peryferium). Problem pojawia sie w momencie odebrania pierwszego requestu, gdzie DMA w HISR wystawia transfer error. Reference mowi jedynie ze chodzi o problem na szynie lub o blad w trybie double buffer (ktory notabene nie jest wykorzystywany wiec odpada). Zostaje wiec ta nieszczesna szyna.

    Czy DMA1 ma jakies obostrzenia w tego typu zastosowaniach ?

    Dodam ze wszystko jest poprawnie skonfigurowane, calosc dziala w ukladzie TIM1 + DMA2 lub TIM8 + DMA2 na wszystkich mozliwych kanalach i nozkach.
  • REKLAMA
  • #2 16411675
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #3 16411711
    mycodename47
    Poziom 16  
    Posty: 256
    Pomógł: 15
    Ocena: 54
    Peryferium wyjsciowym jest port GPIO. (na request od timera, DMA przerzuca dane z portu do pamieci - powiedzmy ze to rodzaj odbioru). Wiem ze DMA nie sa zamienne (poprawnie wybieram DMA, jego stream i kanal w zaleznosci od kanalu timera ktory wysyla request).

    Co do kodu to wspominalem ze dziala poprawnie dla wszystkich ukladow z DMA2 wiec raczej nie tutaj jest problem (wszystko ustawiam identycznie, rejestry DMA i np. TIM2 wygladaja tak samo).

    Czy jest jakas funkcjonalna roznica pomiedzy DMA1 a DMA2 ? (jak np przy transferze M2M gdzie moze uczestniczyc jedynie DMA2). Transfer error mowi jasno, ze chodzi o kolizje na szynie AHB.
  • REKLAMA
  • Pomocny post
    #4 16411807
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    Wg schematu z działu "System and memory overview" manuala, DMA1 - w odróżnieniu od DMA2 - _NIE_ jest podłączone do układów peryferyjnych na szynie AHB. Zauważ, że w diagramie multipleksera magistrali brak jest "kropek" w miejscu gdzie krzyżują się DMA_MEM1 oraz szyny do AHB1 i AHB2.

    Jest to generalnie również przyczyna dla której DMA1 nie może uczestniczyć w transferach pamięć-pamięć - z DMA1 do RAMu jest tylko jedno połączenie (przez DMA_MEM1). DMA2 ma dwa połączenia - przez DMA_MEM2 i przez DMA_P2.
  • #5 16411920
    mycodename47
    Poziom 16  
    Posty: 256
    Pomógł: 15
    Ocena: 54
    No to sie wyjasnilo. Btw dziwne ze nie ma tego w rozdziale o DMA (gdzie jest mowa ze faktycznie DMA moze kozystac jedynie z peryferiow na AHB jednak nie ma jawnego rozgraniczenia ze DMA1 nie mozna a DMA2 juz moze).

    Dziekuje zamykam
REKLAMA