STM32: Interrupt DMA

OP #4877029
Lesenswert?
• ▲
▼
Liebes Forum,

auf dem STM32F303 habe ich zusätzlich zur UART-Kommunikation die DMA 
programmiert. Der Kanal für die DMA für UART2 ist der Channel 7.
Nachdem alle Daten gesendet wurden, wird ein Interrupt ausgelöst (durch 
UART_TX).
Aus irgendeinem Grund passiert es, dass in die Interrupt-Routine hinein 
gesprungen wird, ohne dass der Interrupt durch die UART2 ausgelöst wird.
Nach langem Suchen im Internet habe ich gefunden, dass vermutlich eines 
der folgenden Interrupts ausgelöst wird (wodurch ich in die ISR komme):
I2C1-RX, TIM2_CH2, TIM2_CH4, TIM4_UP, TIM17_CH1, TIM17_UP
Ich habe im Datenblatt nachgesehen und habe festgestellt, dass diese 
alle auf Kanal 7 liegen (siehe Anhang).
Ich habe mir gedacht, dass ich das Problem umgehen, indem ich dann in 
der ISR jedes der einzelnen Flags abfrage und dann einfach lösche.
Nur dazu müsste ich wissen, was zB TIM2_CH2 bedeutet. Offensichtlich 
handelt es sich hierbei um den Timer 2?! Was bedeutet aber CH2 und was 
könnte hier einen Interrupt auslösen?
Bzw. was bedeutet TIM4_UP?

Ich bin für jeden Hinweis dankbar!!
Angehängte Dateien:
#4877189
Lesenswert?
• ▲
▼
steff p. schrieb:
> Nachdem alle Daten gesendet wurden, wird ein Interrupt ausgelöst (durch
> UART_TX).

Nö. Der TX wird bei jedem Byte[1] ausgelöst, aber noch während Exception 
Entry in den IRQ Handler transferiert der DMA das nächste Byte und die 
Quelle/Auslöser wird abgeschaltet. Trotzdem bleibt der Interrupt im NVIC 
dann entweder pending oder active, und die Handler Funktion wird 
ausgeführt.

Ich würde den TX Interrupt nur anmachen, wenn im DMA IRQ Handler keine 
Bytes mehr übrig sind.

[1]: Bei Fifos im UART/USART muss es nicht jedes Byte sein, sondern nur 
das jeweils letzte.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.