Part Number: AM5728
Tool/software: Linux
Hello,
We're working to get SPI communications between a custom AM5728 board running Linux (version 4.4.12) and a slave-only device. The AM5728 is configured as a master running at 9.6MHz. When the slave device has data to send it sets a GPIO high. A program running on Linux monitors the GPIO signal and on going high will perform a 128 byte transfer. Over the course of testing we've seen the 128 byte transfer pause mid-transfer. The pause varies from microseconds to milliseconds and happens randomly.
Attached is an image of two 128-byte bursts over SPI (CSn and SCLK shown). The 128-byte bursts happen every ~4.2ms and should only take ~250us each. During the second data burst there's a 3ms pause midway through the data offload. There are no other user programs running on the system and this happens often, though not always 3ms.
What would cause the transfer to pause?
Could a process with higher level priority be interrupting the SPI transfer?
If possible that another process is interrupting SPI, is there a way to disable all other background interrupts, either by elevating the priority of user program or by disabling background processes?
We've tried assigning an affinity value to our SPI program to test if running on CPU0 or CPU1 changed the behavior but on either core we still see the transfer occasionally pausing. Using cat /proc/interrupts we checked to see what other processes could be interrupting it but we're not sure how to change it so they don't interrupt anymore, or if we should. Below is a screenshot of the cat /proc/interrupts output.


