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.

Issue in McASP port of DM648

I am using McASp port of DM648 and i am seeing that some data is lost while receiving data via McASP.

4 serializers of the McASP are used and I am using DMA to tranfer that data(channel 15) and have linked 7 DMA channels to service the McASP receive event.All the links are loaded with same param sets.Each link will tranfser 9216 bytes of data for each serializer from McASP receive register to DDR and then the next link is reloaded.The data is lost randomly but it is exactly 9216 bytes meaning one of the link is missed.

Following are the configuration i used.

#define RCV_ACNT        4       /* No of bytes in an Array */
#define RCV_BCNT        4       /* No of arrays in a frame */
#define RCV_CCNT        2304    /* No of frame to be transferred in one link */
#define RCV_SRC_BIDX    4       /* Source Index between two arrays */
#define RCV_DST_BIDX    9216   /* Destination Index between two arrays */
#define RCV_SRC_CIDX    0       /* Source Index between two frames */
#define RCV_DST_CIDX    4       /* Destination Index between two frames */

Can anybody throw light on why 1 receive link is missed.

 

  • What's the significance of your 7 linked channels?  Do you have a 7-buffered solution (e.g. as opposed to typical dual buffered or ping-pong buffered)?  If that's the case then how do the src/dst differ for the 7 parameter sets?

    Can you explain a little more about data being "lost"?  Does all data stop or does it continue running?  Do you still receive a completion interrupt for that buffer?  What data is in the buffer?

  • We are using 7 links to transfer data from the McASP receive receive register to DDR and currently the src is the McASP receive register and it is same for the seven links.the destination will differ for the 7 links.

    The data does not stop but it continues to run.Completion interrupt is received but i am not sure whether some onterrupt is lost inbetween.The data present in the buffer is audio data.

     

  • Try using a unique TCC in each of your 7 parameter sets such that you get a unique IPR bit set depending upon the completion interrupt that occurred.  Then you can tell us specifically if you are losing an interrupt.  I still don't understand exactly what issue you are seeing.  Do you know what your CPU load is?  Perhaps your issue is that you're missing an interrupt because you have too much processing going on.

  • The EDMA User's Guide contains similar terms that must be used in their correct context to make sense. Linking and chaining sound similar but mean completely different things. Param sets and channels sometimes get confused, as do channel-mapped param sets and link param sets.

    It would be helpful if you supplied a little more detail, such as the OPT settings you have programmed. And please make sure you are using the correct terms, for example "linking channels" is confusing.