Other Parts Discussed in Thread: C2000WARE
Hi all:
The demo code I used is "F:\C2000_SDK\C2000Ware_1_00_03_00\device_support\f2833x\examples\mcbsp_loopback_dma". I have changed the working mode of MCBSP from loopback to clockstop mode and it works well.
The next step is to test DMA function. However, I have some questions:
1. The dma needs trigger so that in demo code, the trigger sources are "DmaRegs.CH2.MODE.bit.PERINTSEL = DMA_MREVTB;" and " DmaRegs.CH1.MODE.bit.PERINTSEL = DMA_MXREVTB;"
1.1 During the transmitting process, the DMA should move "Sdata[]->McbspaRegs.DXR1.all", but how MVBSP trigger the DMA? When "Sdata[]" has been filled fullly, then MCBSP will trigger the DMA to move ?
1.2 During the receiving process, the DMA should move "McbspaRegs.DRR1.all -> Rdata[]", but how MVBSP trigger the DMA? As soon as the "McbspaRegs.DRR1.all" has val, then trigger the DMA to move?
2. There are two DMA interrupts in demo code and are for DMA channl1 and 2. The function of them is just to check the correction after moving.
2.1 The trigger source of DMA is MCBSP, so is this trigger source called MCBSP event?
2.2 Do these two DMA ISR occupy CPU resources?
3. The whole process in my mind is:
3.1 fill the Sdata[] -> then DMA_MREVTB trigger DMA to move Sdata[] to "McbspaRegs.DXR1.all" reg -> The cpu enter "local_D_INTCH1_ISR", waitting for transmitting done -> start DMA again by setting 1 to run bit;
Is anything wrong with this process?
Best Wish
Li