cancel
Showing results for 
Search instead for 
Did you mean: 

STM32WB55 QSPI and DMA

I have a custom board with a quadSPI chip installed. I can program a 256-byte page just fine using HAL_QSPI_Transmit(), which I'm monitoring with a logic analyzer. But when I try to do this with HAL_QSPI_Transmit_DMA(), nothing happens on the lines when I run that command, even though I have enabled and configured DMA for QSPI in the CubeMX, every QSPI and DMA register seems right to me, and when I step through the HAL_QSPI_Transmit_DMA() code, there are no errors. It just gets to the end of the function with no activity on the SPI lines. I'm using STM32CubeIDE v 1.90, and all my firmware packages say they're up to date.

I would appreciate any ideas to check.

By the way, I was able to speed up the HAL_QSPI_Transmit() function by a factor of two for my 256 byte page program by having it send words to the qspi rather than bytes, but in my application I have a lot of data processing to do in addition to fairly high-speed data logging, so I'd really rather not tie up the core for 160 usec (370 usec before my mod) for every flash page write.

I tried using the example DMA read/write, but the QSPI pins don't line up with my custom board, and my WB55 nucleo board doesn't have flash, so it doesn't get very far.

1 ACCEPTED SOLUTION

Accepted Solutions

Thanks for responding. Agreed, changing pins on the example to work with my board in hopes that I might find a difference is the next step I can take.

View solution in original post

2 REPLIES 2
TDK
Guru

Is DMA initialized before QSPI?

Hard to know without seeing code. HAL return codes should provide a clue. Inspecting registers can also help.

Shouldn't be too hard to port the QSPI examples to different pins by modifying the pin initialization.

If you feel a post has answered your question, please click "Accept as Solution".

Thanks for responding. Agreed, changing pins on the example to work with my board in hopes that I might find a difference is the next step I can take.