STM32F4 DMA UART RX

Gast #4353361
Hallo,

ich sende einem STM32F4 mittels UART Telegramme.
Die Empfangenen Daten werden mittels DMA in ein Array abgelegt.

Der DMA ist wie folgt konfiguriert:
Mode: Circular
Data Width Byte/Byte
kein FIFO
1
char uart_rx[16];
2
HAL_UART_Receive_DMA(&huart1, (uint8_t*)&uart_rx[0], 16);

Wenn 16 Zeichen empfangen wurden wird wieder uart_rx[0] überschrieben.
soweit so gut!


Die vom STM32 zu empfangeneden Daten haben am ende ein CR oder LF.
Ist es möglich den "DMA pointer" bei erhalt eines CR oder LF auf 
uart_rx[0] zurückzusetzen?

irgendwie so:?
1
uint8_t i;
2
for (i=0; i<16; i++){
3
   if (uart_rx[i] == '\r'){
4
      DMA pointer = &uart_rx[0];
5
   }
6

7
}
Gast #4353409
>Ist es möglich den "DMA pointer" bei erhalt eines CR oder LF auf
>uart_rx[0] zurückzusetzen?

Das ist unsinnig. Wenn Du sowieso eine Schleife über den Buffer laufen 
lässt, kannst Du auch gleich den Inhalt wegkopieren/verarbeiten.
Und auf DMA könntest Du gleich ganz verzichten.
#4353446
Es kommt auf den genauen Einsatz an, aber ich denke nicht, dass der DMA 
des STM32F4 dafür Sinnvoll ist. Hier hilft nur ein Datentransfer mittels 
Software.

Schau dir mal die PIC32 an. Hier hat der DMA einen "DMA Pattern Data 
Register", der den DMA-Transfer stoppt, sobald ein spezielles Byte 
transferiert wurde.

Mehr infos hier:
http://ww1.microchip.com/downloads/en/DeviceDoc/60001117H.pdf
auf Seite 31

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.