2024-11-13 01:00 AM
i have a stm32u5a5 board but I needed a SPI full duplex Master example with DMA so i used the one for stm32u575.
full duplex Master DMA
it runs fine on my u5a5 board.
i added a SPI 2 channel and i cannot get it to work. i only want to run them one at a time now.
i think i have the SPI 2 configured properly.
can you please give me some advice.
i have attached my .ioc file
I am using STM32cubeMX 6.12.1
stm32 cubeIDE 1.16.1
firmware 1.6.0
one question is the u575 different between u5a5 on how it runs SPI 2
thanks
phil
2024-11-13 01:04 AM - edited 2024-11-13 01:24 AM
@Weightwatcherphil wrote:i think i have the SPI 2 configured properly.
So if you have just SPI2 - without SPI1 - does that work?
You'll need to show your, tell what board you have, etc:
What, exactly, does "not working" mean here?
2024-11-13 01:25 AM
i running the code on a nucleo-u5a5 board.
i pulled the SPI FULL DUPLEX MASTER DMA example. (i could not find the example for u5a5)
generated code with STM32cubeMX 6.12.1
used u5 firmware 1.6.0
i compiled the example using STM32cube IDE 1.16.1 and ran it with SPI1 and it ran on the u5a5 board.
then i used STM32cubeMX 6.12.1 to remove spi1 and add spi2.
and generated new code.
i used STM32cubeIDE 1.16.1 to compile and i had to change some spi instances to spi2 instance in a few places.
i kept the same DMA channels
this code did not run.
iin particular when i transmitted the spi data i never got a COMPLETE back.
thank you so much for your quick response.
i have attached my .ioc file
since i am using the example code i will not repeat it here.
phil
2024-11-13 01:27 AM
to be clear when i use MXcube to generate the code it is showing U575 as the board..
it am just thinking for SPI the u5a5 and u575 seem the same.
and for SPi1 it worked.
2024-11-13 01:54 AM
@Weightwatcherphil wrote:when i transmitted the spi data i never got a COMPLETE back.
But was anything actually transmitted on the SPI wires?
Was the clock generated?
2024-11-13 09:54 PM
I expected SPI2_SCLK on pin PB10 which on my nucleo-u5a5zj board is on CN12 pin 25.
there are no clocks.
I will recap my problem.
i started out trying to find a SPI FULL DUPLEX MASTER DMA example.for nucleo-u5a5 board but could not find one.
instead i did find one on a nucleo-u575 board and i pulled it and compiled it and it ran.
on my nucleo-u5a5 board. I think the u5a5 and u575 have identical resisters for SP1 but i am not sure.
I see clocks on the SPI1_sclk pin.(PA5 CN12 pin 11) when i run the original example.
so I asked stm32cubeMX (6.12.1) to remove SPI 1 and add SPI2..
I configured SPI2 with DMA just like SPI1 and i generated new code
I changed the main.c file in code to use hspi2 in a few places
i also tried taking the example and removing SPI 1 and then putting it back.
i had to carefully the SPI parameters but i was able to get it to run again.
since i have no SPI2 clocks i think the clocks must be configure wrong but the MX tool shows 160mhz going to SPI2.
i am attaching my complete project with spi1 which does work and the one where i replaced SPI1 with SPI2.
i run them both on a nucleo-u5a5ZJ board.
l put the u5a5 startup file in both projects.
if you put a breakpoint at line 163 in main.c in the project with SPI1 it will stop there when you run the program in debug mode (after you push the blue button on the board). you do not need any chips on the spi bus.
if you run the project with SPI 2 it will not hit the breakpoint and you will not see any clocks on pin PB10 CN12 pin 25.
i have attached both projects.
you will need a nucleo-u5a5ZJ board to test.
and if by some chance the SPI 2 registers on u575 are not the same as the ones on U5a5 then my idea will never work. if you can confirm the SPI2 registers on both boards that would be helpful and i will continue to look for my problem. i feel it is in the clocks and they are what i understand the least.
thank you so much for all your timely support.
phil
and i used
2024-11-14 01:11 AM
@Weightwatcherphil wrote:there are no clocks.
Right - so the transmission did not even start.
If the transmission did not start, then clearly you will never get a COMPLETE signal.
Have you used the debugger to confirm that your code does actually reach the point where the transmission should start?
2024-11-14 01:38 AM
Yes the code reaches the Hal transmitandreceive statement and gets all the way to the while loop. The zip files contain the entire project so you can try it for yourself .