Hi,
I am using Beagle XM board(DM3730) in one of my project. One of the requirement in our project is to have SPI/SDMA combination in DSP. The driver code for SPI and SDMA runs on DSP processor.
I am using SPI3 in salve duplex mode and configured SDMA channel 1 for SPIRX0(DMA req line 15 ie S_DMA_15) and channel 3 for SPITX0(DMA req line 14 ie S_DMA_14). Basically I am using HW synchronized transfer mechanism.
I have configured DMA as follows,
Element size --> 32 bit
Element number --> 160
Frame number --> 1
And I have configured DMA channel for Block interrupt using CICR register. After a block transferred, I am getting proper block interrupt also proper data at destination memory.
The problem I am facing is that, after a block get transferred at RX the DMA channel 1 gets disabled automatically and I am not able to receive next block. Even I try enabling the channel through SW, it does not have any effect. I tried with channel linking but there also I receive one block from original channel and other block from linked channel. totally I get 2 blocks and the transaction stops.
Can any body help me or suggest what might have gone wrong? Why the channel gets disabled automatically and it can not be enabled further? My requirement is to get block of data continuously till SW disables the DMA channel.
Regards
Ganapati Hegde