AnsweredAssumed Answered

K22 I2S 2-channel DMA operation

Question asked by SCOTT MILLER on Sep 21, 2016
Latest reply on Sep 22, 2016 by SCOTT MILLER

I'm currently using an I2S TX channel in DMA mode on a K22FN1M0 with the Processor Expert component in CW 10.7.  It works fine with a single TX channel and I've been running it that way for several months with no trouble.

 

Now, I'm trying to set up a second TX channel.  I'm using the SendBlocks() method and for testing I have both channels pointed to the same data buffer.  If I have DMA disabled, it works fine.  I get all of my data out, and I get exactly the same thing on both channels.

 

If I set it to use DMA, things get weird.  The channels get out of sync and one finishes in half the time of the other.  The second channel seems to be dropping a lot of data.

 

Has anyone run this configuration before?  I've spent most of my morning tinkering with it but haven't dug deep into the generated code yet.  The rest of my afternoon is full of meetings so I figured I'd ask here.

 

Note that this is not actually running I2S or any closely-related protocol.  Each channel is emulating a 1-wire protocol.  The clock and framing signals aren't used at all.  I'm just using the channels as shift registers.

 

Thanks,

 

Scott

Outcomes