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
HuEl_264296
Level 5
Level 5
First like given 25 sign-ins First solution authored

 Yup, found out why. Already.

   

 

   

The DMA doesn't like it if you enable it with the Transfer Count set to zero.

   

 

   

Hugo

0 Likes
HeLi_263931
Level 8
Level 8
100 solutions authored 50 solutions authored 25 solutions authored

Writing down a problem sometimes helps with understanding what one tries to achive- and to see the difference to what one did... So don't hesitate to ask and then answer your own question.

   

I know of places where one is forced to explain a problem to a teddy bear first, before being allowed to ask a co-worker. Solves about 50% of all questions 🙂

0 Likes
Anonymous
Not applicable

In that case they should get 2 teddy bears, 100% of problems would be fixed...

0 Likes
HeLi_263931
Level 8
Level 8
100 solutions authored 50 solutions authored 25 solutions authored

Statistics101 says otherwise...

0 Likes
Bob_Marlowe
Level 10
Level 10
First like given 50 questions asked 10 questions asked

@HL

   

Poor math!! With 2 teddybears you'll get 75% solved, not more.

   

 

   

Bob

0 Likes
Anonymous
Not applicable

If you tell the the 2nd bear about the 50% unsolved problem, that would become 75% max.

   
    But if you tell the 2     nd bear 100% of the problem, than it is possible you get 100%.        
0 Likes
HuEl_264296
Level 5
Level 5
First like given 25 sign-ins First solution authored

 Thanks Hli,

   

 

   

Yes, we often use that method at work. Just grab someone and ask them for help, then while explaining the problem, say "Oh, I worked it out now. Thanks you were a great help".

   

 

   

Hugo

0 Likes
Bob_Marlowe
Level 10
Level 10
First like given 50 questions asked 10 questions asked

@HL

   

So you think that when you tell the 2nd bear all the problems including those you've already solved (by telling them to the first bear) you are going to get a better result than when talking about the unsolved problems only? Turns out to be an interesting statistical problem, but I still question your math.

   

 

   

Bob

0 Likes