I am using imx6 as a SPI SLAVE to communicate with external peripheral which is acting as SPI MASTER.
Size of data to be shifted out is more than 512KB. I am setting burst_length value to maximum which is 2^7 (128) words. My data is being shifted out in multiple SPI Burst, but I am getting a strange result at the end of each spi burst. My 128*1 + 1, 128*3 + 1, 128*5 + 1..... words are getting replaced with zeros. Rest of the data before and after these words are fine.
Burst Len = 0xFFF
bpw = 32
CPOL = 0
CPHA = 0
Am I missing something here?
Any pointers will be appreciated.
The iMX53 and iMX6 ECSPI module is very buggy and this is an (as of yet undocumented) silicon bug, The ECSPI module behaves erratically when the bitcount is [(32 * n) + 1] with [n > 0].
For an in-depth analysis see http://guruce.com/blogpost/freescale-imx53-ecspi-silicon-bug
Hci Craig, We are now using the SPI of imx6q as slave mode with DMA transfer to receive data from the other devices. Have you finish your wok implement SPI slave driver?Can your driver transfer with DMA?
I also try to use the SPI as slave mode with DMA transfer, but is have some problems configuring the slave correct.
I’m using two imx6q, one as master the other one as slave. Transmitting data from the master via the DMA is working. But I think there goes something wrong in my configuration on the slave. Can you tell me how your slave configuration looks like?