Hi,
I read a few discussions around the SSI DMA topic but didn't get the right information. I am using TM4C123BH6ZRB with IAR EWARM 6.50.5. I am using SSI0 Slave ISR and I was able to read and write fixed size 34 bytes messages to another micro-controller. The issue is reading 34-bytes from SPI Rx FIFO takes around 150us. I am trying to use DMA (from udma_demo and other posts) to minimize the time to read SPI Rx data register. My questions are:
1. TM4C123BH6ZRB data sheet states "Transfer size is programmable in binary steps from 1 to 1024". I can only set uDMAChannelTransferSet() with 32 or 64 but not 34 bytes?
2. I am testing out with a slow Rx data rate of incoming 32-bytes packet once every 2 seconds which follow by 32 0xFFs. It seems ping-pong configuration is way over kill but the Rx data is close (but not exactly) to my expectation. Should UDMA_MODE_BASIC or UDMA_MODE_AUTO work for this data rate?
3. With ping-pong configuration, I have the SPI ISR mode == UDMA_MODE_STOP. Half of the time, the data is close to what the sender sent out. The other half is zero.
4. On the better half of the messages, the received packets lost the first 2 bytes and appended with 2 zero bytes at the end.
Please see the attached files.
Thanks,
Dennis Nguyen