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);
|