2025-10-20 2:08 AM - last edited on 2025-10-20 4:18 AM by Andrew Neil
Hi everyone,
I'm currently working on project witch use SPi with DMA and S2LP Module
I have a function that initializes the DMA portion :
In my code I try to read information in DMA through the SpiritDeviceVersion and SpiritReadnbinfifo functions:
However, I get my data, but only when I call a DMA read 2 times :
nbOctetRecuB = the value I should read from nbOctetRecuA (0xC1)
nbOctetRecuB2 = the value I should read from nbOctetRecuB (0x0A, my FIFO element count)
nbOctetRecuC = the value I should read from nbOctetRecuB2 (0x0A, my FIFO element count) => whereas I expect 0xC1.
Below are one of those function:
I don't understand witch element is missing, why i need to perform another DMA operation to get my data ?
Just a heads-up, a double DMA operation is needed : so if I read S2LP register with DMA, and after Reread DMA without using SPI (ex no CS command) i get my data, this is what it tell me the problem isen't from the SPI ?
Is anyone get tis issue ?
Tanks for your time, Regards.
2025-10-20 4:00 AM
Hello @Quentin_27 ,
Please use </> button to share your code instead of pasting screenshots. Please read How to insert source code.
Thank you for your understanding.
2025-10-20 4:19 AM
Does it work OK without DMA ?
Have you used an oscilloscope or logic analyser to see what's actually happening on the SPI wires?
2025-10-20 4:37 AM
Hi,
Yes it works without DMA,
All is correct on SPI Wires as you can see below (Last ligne is CS#, Frequency 1MHz, and I have try 4MHz):
Tanks for your time, Regards.