This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Device: TMS570LC4357BZWTQQ1
Compiler: TI Clang v2.1.0.LTS, BE32
Issue: when configuring sending serial data buffers on SCI3 using DMA the MSb of the last byte of the buffer is always set on the wire. The buffer set in g_dmaCTRL does not have the bit set and when sending direct on SCI the bit is not set. When using DMA the bit is always set, we carry the CRC in the last 2 bytes so it was showing up as intermittent frame errors.
The g_dmaCTRL is set thusly:
g_dmaCTRL dmaControl = {.SADD = address_as_number, .DADD = SCI3_TX_ADDR, .CHCTRL = 0,
.FRCNT = length, .ELCNT = 1, .ELDOFFSET = 0,
.ELSOFFSET = 0, .FRDOFFSET = 0, .FRSOFFSET = 0,
.PORTASGN = PORTA_READ_PORTB_WRITE, .RDSIZE = ACCESS_8_BIT,
.WRSIZE = ACCESS_8_BIT, .TTYPE = FRAME_TRANSFER, .ADDMODERD = ADDR_INC1,
.ADDMODEWR = ADDR_FIXED, .AUTOINIT = AUTOINIT_OFF};
we listed for BTC interrupt to acknowledge the send completed:
dmaEnableInterrupt(DMA_CH0, BTC, DMA_INTA);
I'm not sure where to start tweking to resolve this. Any insights appreciated.
Hi Michael,
when configuring sending serial data buffers on SCI3 using DMA the MSb of the last byte of the buffer is always set on the wire.
If i understand it correctly, no matter what the value of MSb(i.e. either logic-0 or logic-1) it is transmitting as logic-1 to the destination. Is this correct?
Did you get a chance to verify your code with, example SCI DMA present in HALCoGen?
If you make sure your code is correct, can you please formward the code? at least a minimal version with only SCI and DMA?
--
Thanks & regards,
Jagadish.