2022-03-17 12:26 PM
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.
Solved! Go to Solution.
2022-03-17 03:12 PM
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.
2022-03-17 02:32 PM
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.
2022-03-17 03:12 PM
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.