Forum: Mikrocontroller und Digitale Elektronik stm32f2: Probleme mit UART und DMA RX


von StmUser (Gast)


Lesenswert?

Guten Morgen,

für eine spzeielle Anwendung wird für die UART ein DMA für den Empfang 
von Daten benötigt. Das Empfangen von Daten funktioniert auch nur wenn 
zum zweitenmal ein Datenpacket von 256 Bytes gesendet wird, dann stimmen 
die ankommenden Daten mit den gesendeten Daten von der Reihenfolge 
nicht. Das erste WORD wird dann vom letzten WORD des vorangegangen 
Packets befüllt. Was müsste ich tun, damit dieses Verhalten nicht mehr 
erscheint?
1
  /* DMA RX */
2
  DMA_DeInit(DMA1_Stream5);
3
  DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)&USART2->DR;
4
  DMA_InitStructure.DMA_PeripheralInc      = DMA_PeripheralInc_Disable;
5
  DMA_InitStructure.DMA_MemoryInc          = DMA_MemoryInc_Enable;
6
  DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;
7
  DMA_InitStructure.DMA_MemoryDataSize     = DMA_MemoryDataSize_Byte;
8
  DMA_InitStructure.DMA_Mode               = DMA_Mode_Normal;
9
  DMA_InitStructure.DMA_FIFOMode           = DMA_FIFOMode_Enable;
10
  DMA_InitStructure.DMA_FIFOThreshold      = DMA_FIFOThreshold_Full;
11
  DMA_InitStructure.DMA_MemoryBurst        = DMA_MemoryBurst_Single;
12
  DMA_InitStructure.DMA_PeripheralBurst    = DMA_PeripheralBurst_Single;
13
  DMA_InitStructure.DMA_Priority           = DMA_Priority_VeryHigh;
14
  DMA_InitStructure.DMA_Channel            = DMA_Channel_4;
15
  DMA_InitStructure.DMA_DIR                = DMA_DIR_PeripheralToMemory;
16
  DMA_InitStructure.DMA_Memory0BaseAddr    = (uint32_t)pUSART2->UsartRxDmaBuffer;
17
  DMA_InitStructure.DMA_BufferSize         = 256;
18
  DMA_Init(DMA1_Stream5, &DMA_InitStructure);

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.