XMC4500 Relax Kit -> Array -> UART transmission using DMA

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
User8734
Level 4
Level 4
Hello everyone,

I have a simple task -> transmit data
uint16_t srcBuffer[1024] -> UART at 1Mbod speed.

I took example "DMA003_USIC" from this thread
MEMORY->UART
I migrate it to my XMC4500 Relax Kit, create TestArray by srcBuffer=16*i+1 and catch transmitted data by Realterm.

Data transmitted regularly through UART, but their integrity is NOT OK.
Approximately first 30 words transmitted fine, but then some amount of data missed, and so on.

I have impression that something wrong with handshake, so FIFO buffer is overwritten on some reason.

BR
K
0 Likes
2 Replies
lock attach
Attachments are accessible only for community members.
User8734
Level 4
Level 4
Everything works fine with DMA settings:

Single Transfer width = 8;
DMA Burst Width = 8
Block Size = 256;

UART Transmit FIFO = 16;

It as well works with Block Size = 320;
4D 38 30 30 0D DA - is my header.

4010.attach

But, with Block Size = 340; and above -> It doesn't work!
Transmission data messed up....:confused:

4011.attach

I just change Block Size with single string string...
DMA003_Handle0.DMAChRegs->CTLH = 340;

Project:

BR
K
0 Likes
User8734
Level 4
Level 4
Even I can not get 6000 bytes array from UART, using simple code:

for(i=0; i<1000; i++)
{
UART001_WriteDataMultiple(&UART001_Handle0, BlockHeader, 6);
uS_Delay(200);
}

Problem was with USB<->UART adapter based on OTi6858 chip.:mad: It supports 3Mbod, but only in small chunks, due its buffer size.
I took SUUC0041 instead, based on CP2102 chip, and get successfully 2048 bytes transmitted on 921600 speed.:o

K
0 Likes