Hi all!
We are developing system which transfer data from EMIFA bus to I2S.
Our hardware:
LogicPD OMAP-L138 module, which is connected to FPGA over EMIFA bus (16 bit)
I2S bus connected to hardware which send and receive data to/from OMAP.
Software solution:
dev tool: CCS 3.3 + DSP/BIOS (but task manager is switched off)
I2S frame sync frequency 96kHz. We are using for transmitting/receiving data both of edges I2S FrameSync, 4 serializes for TX and 4 for RX. In this case total size = 4 serializes * 2 channels * 4 bytes (i2s channel size) = 32 bytes.
After each full Frame Sync we have TX and RX IRQ, in IRQ we fill buffer for next transfer
For I2S we use CSL with EDMA3 LLD library.
Also, FPGA toggles GPIO 16,000 times per second (FPGA ND_INT). EDMA hardware channel connected to this GPIO and after GPIO event happends, EDMA starts to read from EMIFA 40 bytes automatically. (You can see that at screen shot). After transfer complete, transfer complete IRQ happed (FPGA EDMA callback).
But, strange thing is delay between real completion time and time when IRQ routine called.
Next strange thing, that EDMA reading from EMIFA bus holds all EDMA completion IRQs. (see FPGA MEMREAD and I2S TX callback).
Can anybody helps us? How we can solve this problems?
,