DMA Transmission over RSPI without jumping to Interrupt-Verctor

I've implemented a data transmission over the RSPI0 Serial port with a DMAC-channel.
I want to transmit 1296 bytes without using the CPU. The data is transmitted from a buffer via DMA directly to the RSPI Data Register (SPDR) of the RSPI interface.
Transmit Buffer Empty Interrupt starts the DMA after a serial transmission again.

All works fine but I want to avoid that the CPU jumps to the interrupt-Vector  
(void Excep_RSPI0_SPTI0(void) after each frame of serial data.

Any ideas?

       RSPI0.SPCMD0.BIT.SPB= 0x02;     // 32 Bit Frame     (set default)
       RSPI0.SPDCR.BIT.SPFC= 0;         // 1 Frame
       RSPI0.SPDCR.BIT.SPBYT= 0;       // Byte Access off
       RSPI0.SPDCR.BIT.SPLW= 1;        // Long Word Access
       //RSPI0.SPCMD0.BIT.LSBF= 1;     // LSB first
       RSPI0.SPDCR2.BIT.BYSW =1;     // Byteswap enalbe
       IR(RSPI0,SPTI0)=0;                         //clear Interrupt Flag
       IPR(RSPI0,SPTI0) = 15;                  //set Interrupt Priority
       IEN(RSPI0,SPTI0)=1;                     //enable Interrupt
       RSPI0.SPCR.BYTE = 0x6A ;          // Enable RSPI in master mode only transmission

       DMAC2.DMCNT.BIT.DTE=0;                                            //1: Disables DMA transfer.
       DMAC0.DMCSL.BIT.DISEL= 0;
       DMAC2.DMSAR=(char*)(&DMA_Buffer);
       DMAC2.DMDAR=(char*)(&RSPI0.SPDR.LONG);
       DMAC2.DMCRA=324;
       DMAC2.DMTMD.BIT.DCTG=1;                                        //0 1: Interrupts*1 from peripheral module
       ICU.DMRSR2=39;                                                           // Interrupt-Source RSPI0 SPTI0
       DMAC0.DMINT.BIT.DTIE = 1U;
       DMAC2.DMSTS.BIT.DTIF=0;                                           //clear interrupt flg
       DMAC2.DMCNT.BIT.DTE=1;                                            //1: Enables DMA transfer.

       IR(RSPI0,SPTI0)=1;                                                      //Start first datatransfer bei setting the Interrupt-Flag

       while (!DMAC2.DMSTS.BIT.DTIF);                             //wait for end of transmission

 Best regards
Martin

Parents Reply Children
No Data