Simultaneous SPI DMA not working.

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
lock attach
Attachments are accessible only for community members.
HuEl_264296
Level 5
Level 5
First like given 25 sign-ins First solution authored

 I have a PSoC3666 project containing 4 identical SPI Master components. Each is fed by it's own TX and RX DMAs.

   

I can get one of these units working on its own by enabling its DMA channels. But when I try to enable the DMA channels of the other three SPI components, the first one breaks.

   

 

   

    CyDmaChSetInitialTd_FAST(SPI_TxChannel[0], SPI_TxTD[0]);

   

    CyDmaChSetInitialTd_FAST(SPI_RxChannel[0], SPI_RxTD[0]);

   

    CyDmaChEnable_FAST(SPI_RxChannel[0]);

   

    CyDmaChEnable_FAST(SPI_TxChannel[0]);               // This works on its own.

   

    

   

    CyDmaChSetInitialTd_FAST(SPI_TxChannel[1], SPI_TxTD[1]);

   

    CyDmaChSetInitialTd_FAST(SPI_RxChannel[1], SPI_RxTD[1]);

   

 

   

    CyDmaChEnable_FAST(SPI_RxChannel[1]);

   

    CyDmaChEnable_FAST(SPI_TxChannel[1]);               // But when I add this, it all stops working.

   
        
   
    Is there some reason enabling a second DMA would affect the first one?   
   
        
   
    Hugo   
   
        
0 Likes
8 Replies