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.