This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Part Number: TM4C1290NCZAD
Tool/software: TI C/C++ Compiler
The SDRAM via EPI is working Properly using uDMA However I’m note able to get end of DMA interrupt.
I’m using similar code to KrishnanCIT_UDMA_EPI.zip
To enable interrupt I add
EPI Interrupt from FIFO in writing works properly!!!
However, I do not receive interrupts from DMA termination
Only EPI_INT_TXREQ works Properly
Please help me to resolve this issues.......
The EPI is treated as a peripheral, so the following paragraph from the TivaWare Peripheral Driver's Library User's Guide applies.
Best Regards,Bob Crosby
We are glad that we were able to resolve this issue, and will now proceed to close this thread.
If you have further questions related to this thread, you may click "Ask a related question" below. The newly created question will be automatically linked to this question.
In reply to Bob Crosby:
We need an indication to finish reading from slow memory that is outside the CPU through the EPI
According to the quote from the user guide it is not possible
It does not make sense to me that it is not possible to get an interrupt to end of DMA
Do you know how to Implement an Interrupt to at End of reading from EPI via DMA ?
In reply to haim rozenboim:
Let me try to be more clear. In your code you need to enable the EPI interrupts for EPI_DMA_TX_DONE and EPI_DMA_RX_DONE. Line 297 in your code is a good place to add it.
EPIIntEnable(INT_EPI0, EPI_INT_DMA_TX_DONE | EPI_INT_DMA_RX_DONE | EPI_INT_ERR);
Then in your EPIIntHandler routine, when you call EPIIntStatus(), check for either EPI_INT_DMA_TX_DONE or EPI_INT_DMA_RX_DONE in the return status. I suggest you use the masked value as now you have enabled these two interrupt sources.
I followed your instructions and still I do not get END DMA interrup
Attach my files
Would be happy if you can review the code the
I took the example from your first post and modified it so that it works. Since the EPI was setup with a 16-bit data bus, I changed the array and transfers to be 16-bits wide. Note the use of the function uDMAChannelAssign() in initDma(). When the uDMA has read 256 16-bit half-words, you get an EPI interrupt with the EPI_INT_DMA_RX_DONE bit set in the masked status register. I did not see a TivaWare function to clear that interrupt bit, so I did it with a HWREG write. Then I start another 256 half-word reads. The CCSv8 project is in the attached .zip file.
All content and materials on this site are provided "as is". TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with regard to these materials, including but not limited to all implied warranties and conditions of merchantability, fitness for a particular purpose, title and non-infringement of any third party intellectual property right. No license, either express or implied, by estoppel or otherwise, is granted by TI. Use of the information on this site may require a license from a third party, or a license from TI.
TI is a global semiconductor design and manufacturing company. Innovate with 100,000+ analog ICs andembedded processors, along with software, tools and the industry’s largest sales/support staff.