Trying to use DMA to load the Shift Register FIFOs

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

cross mob
dacoc_960756
Level 1
Level 1

I'm trying to create a logical block to take care of data transfer for a large array (several thousand) of NeoPixel type smart RGBW LEDs.  

   

Each LED requires 32 bits, and each bit is broken into 4 chips - a Zero is sent with one high chip, and three low chips, and a One is sent with two high and two low. I've created a state machine which "should" be able to take an array of 32b RGBW data from memory, load them into a 32b Shift Register via DMA, and shift it through the state machine to chip the bits and TX to the NeoPixels. 

   

The documentation for the Shift Register indicates that it's FIFOs can be loaded directly from CPU, or via DMA (which was my intent). I've tried attaching the Interrupt output from the Shift_Register to the DRQ input of a DMA module, and then tried to run the DMA wizard, but the DMA wizard doesn't show the DMA module, nor the Shift Register's FIFOs as a DMA endpoint. 

   

The DMA Wizard does see a Control Register, but since there is no parallel load option on the Shift Register, I can't use that to move data (other than a bit at a time with the Shift In, which wouldn't help me at all). 

   

I've looked for examples of using DMA or Shift Registers with DMA, and can't find any, so I'm currently stuck... 

   

Any help would be much appreciated. 

   

Dave

0 Likes
1 Solution
2 Replies
EvPa_264126
Level 7
Level 7
500 replies posted 250 replies posted 100 likes received

Maybe my project for 2x16 ShiftReg  can help you: DA1311A_DMA.zip

   

Hmm ... Strange: I can not create linc  for  DA1311A_DMA.zip:
You don't have permission to access "http://www.cypress.com/comment/reply/516141" on this server.
Reference #18.a7e0d4d9.1486886420.127771e4

the only way:  http://mylab.wmsite.ru/ftpgetfile.php?id=151