cancel
Showing results for 
Search instead for 
Did you mean: 

GPIO read/write not working on custom STM32H735 board

Legacy member
Not applicable

Hello,

I'm using a custom board based on a STM32H735 with various GPIO inputs and outputs. The STM32 is packaged as a 0.5mil pitch BGA and the board assembly has been outsourced.

I'm able to flash a program on the MCU and debug it by adding breakpoints and visualizing registers values. However, none of the GPIO is working: I cannot drive a LED nor read a button input state. The registers are set as expected when using the HAL to set/reset a GPIO output. I've tried to bypass the HAL and write directly on the registers MODER and ODR, and the IDR register value change as expected. On top of that, I have no trouble driving a GPIO output on my STM32H735 demo board, so I don't think the issue come from the software.

I have 6 LEDs on different GPIO ports, and I cannot drive a single one of them. I also have three boards, I'm able to flash and debug all of them, but not a single GPIO.

It looks as if the GPIOs of the MCU where somehow not connected to the LEDs and buttons of my board. It could be explained if the 0.5mil BGA has been badly soldered, but I can communicate with my 3 boards through the JTAG, and not a single one of the GPIO I tested on my boards are working. This seems thus improbable to me that the issue come from some soldering/reflowing issue, as the JTAG is never impacted.

Do you have any idea on where the issue could come from, or any insight on where I should look at?

Thanks for your help.

T.

 

11 REPLIES 11
Laurent BEYLY
ST Employee

You have only connected the LDO but in your code you have enabled the SMPS.

Try to use :  HAL_PWREx_ConfigSupply(PWR_LDO_SUPPLY); in system_clock config instead of your current setting :

HAL_PWREx_ConfigSupply(PWR_DIRECT_SMPS_SUPPLY);

This should help.

Legacy member
Not applicable

Thanks for your help Laurent, you solved the issue!
Indeed, I had searched for power-related settings in the PWR tab of CubeMX, and this SupplySource setting was located in the RCC tab, I wasn't looking at the right place.
I am now able to write and read on all my GPIOs successfully.
Thanks again to all the people involved in this thread.

Regards,
T