Part Number: TMS320F28388D
Other Parts Discussed in Thread: C2000WARE
Hi expert
Problem one:
SCI FIFO receiving uses SCI_ setFIFOInterruptLevel(SciModuleCfg->SciBase, SCI_ FIFO_ TX16, SCI_ FIFO_ Rx1); use receivedchar = SCI_ readCharBlockingFIFO(SCIA_ Base); receive
For example: send 8 lengths at a time, receive 8 times, occasionally, receive 255, cause receive interrupt, do not understand the reason.
Problem two:
SCI_getRxFIFOStatus(uint32_t base),This functions gets the current number of words in the receive FIFO。
This function should have nothing to do with interruptlevel
But to receive the correct number, add a DEVICE_DELAY_US(1000) delay; the crystal oscillator is 20MHz. If it is not received, it will always be 0
example:
bbb = SCI_getRxFIFOStatus(SCIBase);
DEVICE_DELAY_US(1000);
for(i=0;i<bbb;i++)
{
array[i] = CI_ readCharBlockingFIFO(SCIA_ Base)
}
Add a DEVICE_DELAY_US(1000) delay ,so bbb value is correct; Do not understand the reason.
Problem three:
Example:
if((HWREGH(SCIBase + SCI_O_FFRX) & SCI_FFRX_RXFFINT) == SCI_FFRX_RXFFINT)
{
SCI_readCharArray(SCIBase, array, RxLevel);
}
Current RxLevel Value is 7,But Tx Data is 8, The received data is out of order The next time we receive 7 characters, the data is still in disorder.Do not understand the reason.
Receive is equal to or greater than 7 interrupts,
Please give more support,Thank you!
Best Regards
Ti customers