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.

TMS320F28069: Cannot get DMA interrupts to trigger after transfer using McBSP

Part Number: TMS320F28069


Hello,

I am trying to use the McBSP in SPI mode with DMA, and it's _almost_ working. I am actually have two issues, and I think fixing either one would make things work well enough for my purposes, but this question is just about the interrupts.

I can't get the DMA interrupts to fire. In the debugger I can see that PieCtrlRegs.PIEIFR7 = 3, which makes sense after a transfer since I have both DMA channels 1 and 2 set to generate interrupts:

  _dmaRegisters->CH1.MODE.bit.CHINTE = 1;            // Enable channel interrupt
   _dmaRegisters->CH1.MODE.bit.CHINTMODE = 1;            // Interrupt at end of transfer
   _dmaRegisters->CH1.MODE.bit.PERINTE = 1;         // Enable peripheral interrupt event
   _dmaRegisters->CH1.MODE.bit.PERINTSEL = DMA_MXEVTA;  // Peripheral interrupt select = McBSP MXSYNCA

and

_dmaRegisters->CH2.MODE.bit.CHINTE = 1;            // Enable channel interrupt
     _dmaRegisters->CH2.MODE.bit.CHINTMODE = 1;            // Interrupt at end of transfer
     _dmaRegisters->CH2.MODE.bit.PERINTE = 1;         // Enable peripheral interrupt event
     _dmaRegisters->CH2.MODE.bit.PERINTSEL = DMA_MREVTA;  // Peripheral interrupt select = McBSP MRSYNCA

but the functions pointed to by PieVectTable.DINTCH1 and DINTCH2 are never executed.

I also  have all of these set, within EALLOW.

IER |= M_INT6 | M_INT7

PieCtrlRegs.PIEIER7.bit.INTx1 = 1;

PieCtrlRegs.PIEIER7.bit.INTx2 = 1;

PieCtrlRegs.PIEIER6.bit.INTx5 = 1;

PieCtrlREgs.PIEIER6.bit.INTx6 = 1;

I am trying to use the interrupt because in this setup I'm manually controlling the SPI_SEL/MFSX line (because of the other issue I'm having) and I want to use the dma transfer completetion interrupt to deassert that signal.