I have a requirement to interface TMS320F280025C with another controller over SPI interface. 280025C is configured as SPI slave. I have used SPI example 4 that uses DMA controller with SPI TX and RX buffers. The DMA is set for burst size of 8 and transfer size of 4. So 32 words make one complete transaction. I have disabled the internal loop back so that SPI receives data externally. Initially I tested by sending stream of data (32 16-bit words) using SPIA interface. The controller receives and prints data without any errors. As a next step I modified the same code for SPIB interface. Keeping the rest of the code same only the pinMux settings were updated for SPIB and DMA channels were assigned to SPIB instead of SPIA. However the SPIB interface is giving a lot of errors in the receive data. For e.g. if I am sending a constant value of 2 repeatedly 32 times then the data received in the SPIB buffer is as below:
DMA:2 2 2 258 2 1 2 2 2 0 2
2 2 2 0 2 258 2 2 2 2
2 258 1 7 2 2 2 0 2 2
2
DMA:2 2 2 2 0 2 2 2 0 2 2
2 1 2 2 2 2 2 0 2 2
58 2 0 2 2 2 3 2 2 2 2
2
DMA:2 2 6 2 2 2 2 0 0 2 2
6 1 2 2 2 0 2 2 2 2
0 2 2 2 6 2 2 2 2 0
2
The red values are in error. I don't suspect any issue with the transmission controller as SPIA interface reads data correctly. I have tested SPIB interface without DMA using FIFO interrupt but the results are same. I have spent more than 2 days to figure this issue but all in vain. I suspect there could be any silicon issue in SPIB?. Please check and let me know if I need to correct something.