Feb 01, 2020
12:54 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Feb 01, 2020
12:54 AM
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
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
- Tags:
- IFX
2 Replies
Attachments are accessible only for community members.
Feb 03, 2020
05:15 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Feb 03, 2020
05:15 AM
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.
But, with Block Size = 340; and above -> It doesn't work!
Transmission data messed up....:confused:
I just change Block Size with single string string...
DMA003_Handle0.DMAChRegs->CTLH = 340;
Project:
BR
K
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.
But, with Block Size = 340; and above -> It doesn't work!
Transmission data messed up....:confused:
I just change Block Size with single string string...
DMA003_Handle0.DMAChRegs->CTLH = 340;
Project:
BR
K
Feb 05, 2020
11:35 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Feb 05, 2020
11:35 PM
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
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