AnsweredAssumed Answered

eDMA throttling for I2C multi-byte transfers

Question asked by Duane Owens on Nov 5, 2015
Latest reply on Dec 26, 2015 by Duane Owens



I am interfacing an I2C slave device with a K64F-FRDM board.  The slave device has a FIFO with 16 bytes of storage.  I can trigger an interrupt when the slave FIFO is full.  My question is; Since the I2C slave is running at the maximum 100Kbs; what is the proper method for throttling the eDMA transfer from the I2C port to memory, since the eDMA is running much faster?  I am trying to take care of the entire transfer without CPU involvement.

Do I need to use a byte-by-byte interrupt approach instead of the FIFO?  I am using a GPIO line as an IRQ from the slave, and I know that I can trigger an eDMA transfer via this IRQ. I only have this single IRQ line for the slave, from which I can configure various sources, such as FIFO Full, Sample Ready, Sample Error, etc.


I've read through the K64F documentation on the eDMA and I2C, but it doesn't describe my particular situation (unless it's assumed or I fell asleep).


Thanks for the assistance!