cancel
Showing results for 
Search instead for 
Did you mean: 

Faulty stm32F769I-disco GPIOs on arrival? Advice needed

JTurn.2
Senior

So I recently prucahsed a stm32F769I-disco baord and for some reason the Arduino connector GPIOs do not output any voltage when I try to run a simple UART test. I'm sure I have not shorted anything as I did not connect to the power GPIOs. I then tried to run a simple blink led test and it doesn't work either. The LCD works though, just not the GPIOs. Could this be a sign of a faulty board?

Update:

Thank you for all the help! After troubleshooting for a day, I realised that the problem is due to the configuration of the board. I should have doubled checked the standard configurations set by stm32cubemx.

7 REPLIES 7
Danish1
Lead II

Was it bought new? Or second-hand?

If new, I very much doubt that the GPIOs would be faulty. If second-hand, it is possible that the previous owner damaged them.

  • How strongly do you know it's not your code rather than the board?
  • Is the code something you wrote?
  • If so, have you had opportunity to test it on another similar board where it does work?
  • How did you write it?
  • How strongly do you know the Arduino connector is on the GPIO port and bit-numbers you are using? It might be different on Disco boards for different processors.
  • Are you using stm32cube (which should handle all the necessary details) or writing to the GPIO registers directly?
  • If writing directly, do you enable the clock to the appropriate GPIO port first? And set the mode to output?
  • For this disco board, are the Arduino pins shared with (e.g.) the LCD? If so, do you need to change a link to select which you're using?

Sorry to hear you're having problems. Hope these suggestions narrow down the problem.

Danish

Hi, thank you for your reply. It is new. I wrote and tested the same code with different pin configs on another stm32 board without any problems.

Essentially, I configured the pins in cubemx and used HAL_GPIO_WritePin and HAL_UART_Transmit to test it out. My pin configurations are according to the documentation and the Arduino pins I used are not multiplexed. Even if it is, it shouldn't affect it as I turned off all unnecessary functions to ensure the pins aren't being used for something else.

I also hooked up a mulimeter to test for problems and there was no voltage, hence why I believe the GPIOs are faulty. The problem is, I'm not sure if it is DOA or if I somehow damaged the GPIOs. I haven't connected to the power pins as I use USB to power the board, so I think it was DOA as I don't think anything's been shorted. The LCD screen works, but just not the GPIOs.

Danish1
Lead II

My pin configurations are according to the documentation

Do you know how many times I've had problems, only to discover that I'm using out-of-date documentation or it was for a different board. As you don't mention which ports/pins, I can't double-check.

I also hooked up a multimeter to test for problems and there was no voltage.

Good test. When you hooked it up, you measured the voltage between a pin and Vss=0V.

Please also measure the voltage between that pin and Vdd=3.3V, and between Vdd and Vss. This will show if the pin is floating or driven-low. And what you need to do to ensure good contact when measuring one of these pins. (I tend to shove a resistor-leg into the hole of the connector, then clip the multimeter onto the resistor-leg).

Pins can fail/be killed. But quite often that killing will take out the whole port. And I see that the pins are from quite a scattering of ports, so I'd expect other things to also not work, yet you say the LCD is fine.

Good luck tracing the faults.

Danish

I am using pins PC6 and PC7 for USART6. (I have also tested USART1 and there is also no output.) The board I am using is a MB1225-B02.

Do you mean I should test the voltage between the GPIO pins and the voltage pin? I have tested the voltage between 3v3 and PC6/7 and the voltage is ~3.3V. When testing the voltage between GND and pc6/7, however, the voltage is ~0V. ​

Yes, my LCD is fine. But all other ports do not work. I am able to consistently upload code to my LCD without any problems. From what I understand is, usually all the GPIO ports fail if it has been shorted, so since my LCD works it doesn't seem to be the case.

Thank you very much for your help!

ONadr.1
Senior III

You could configure those pins as a standard GPIO output (push,pull) and in the simple code generate pulses with cca 3-5sec petiod. You should se, on the multimeter, whether or not are changing output voltage.

Check if it is SW or HW problem. Step your program and check status of GPIO SFRs (MODER, OTYPER, ODR) and look if there are corresponding values. If yes, step thru "HAL_GPIO_WritePin" and look at GPIO ODR and IDR registers if ODR is set and cleared and if IDR see the same value. If yes and if everithing OK from SW point of wiev then take a look at schematic. Look for jumpers and solder bridges. Measure pin status directly on MCU.

You seem overly invested in the LCD working, not sure it relates strongly to the performance of the GPIO on Arduino Shield interface, seeing as the screen uses DSI specific pins, and not anything usable as a GPIO.

https://www.st.com/resource/en/schematic_pack/stm32f769i-disco_sch.zip

PC6/PC7 look like they should be fine.

I've got no means to judge the efficacy of your coding, and whether the involved code is called.

Most debuggers provide a peripheral view, you can enable the RCC clocks for the GPIO Bank C, and should be able to set/clear the bits related to the ODR

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..