Skip to main content
CBerg
Senior II
November 18, 2023
Solved

STM32G431RB PB4 GPIO Open Drain (no pullup/-down) only reaches 1.2 Volt on 10k 3V3

  • November 18, 2023
  • 6 replies
  • 4595 views

Hello Community,

given is this circuit:

a.png

Typically when I use external pullup circuitry for a signal I set the corresponding GPIO to "Open Drain" and no pullup/-down as the state of the line is defined externally.

Flash_CSn is directly connected to PB4 on an G431RB. It is a single, simple almost straight trace on the PCB, without any branches. There is nothing but EMV that could have an influence on that line, except the MCU and the Resistor (R2) + Supply Voltage. But in the Scope I see no evidence for a potential EMV issue, as the signal levels are pretty clean.

In this case the GPIO-Config is:

b.png

 

The issue is: if I do it this way the line level never reaches 3.3V as it should, but reaches max. 1.2 Volt.

If I change the GPIO Configuration to Push-Pull it works as it it's supposed to work.

 

I noticed this behaviour also on an G473RC. On this board I was able to disconnect the external ADC reference, which is generated at 2.5 Volt by a CJ431. When I disconnected the ADC Reference physically the Signal Levels of the Open Drain GIPOs became normal. When I reconnected the ADC Reference the levels of the Open Drain GPIOs are pulled down to 1.2 Volt again.

I measured the supply voltage of the MCU and the ADC Reference voltage, they are as they should be.

Edit: I also measured R2, it is 10 kOhm.

Edit 2: I change the title and added PB4, so others who stumble uppon this pitfall may find it easier.

Has anyone an idea what's going on here?

 

 

 

This topic has been closed for replies.
Best answer by Andreas Bolsch

If you're absolutely sure that neither the mcu's nor the flash's pin had been damaged (static discharge sometimes cause mysterious effects like high leakage): The errata sheet says that there is a problem with PB4. The description is rather vage, unfortunately. Furthermore, there is a 5k pull-down active at PB4 by default, see RM, 47.4.3.

6 replies

MM..1
Super User
November 18, 2023

Are you sure R is 10k?

CBerg
CBergAuthor
Senior II
November 18, 2023

yes, i just edited my posting because I forgot to mention that. I measured it with the multimeter and it is 10k

 

Andreas Bolsch
Andreas BolschBest answer
Lead III
November 18, 2023

If you're absolutely sure that neither the mcu's nor the flash's pin had been damaged (static discharge sometimes cause mysterious effects like high leakage): The errata sheet says that there is a problem with PB4. The description is rather vage, unfortunately. Furthermore, there is a 5k pull-down active at PB4 by default, see RM, 47.4.3.

CBerg
CBergAuthor
Senior II
November 18, 2023

Danke Andreas

I guess that is the issue. I complely ignored that Pull Down.

And Yes I am sure the GPIO and the Flash Memory are OK, because it works when I set the Pin to Push Pull

David Littell
Senior II
November 19, 2023

One thing I noticed: You want FLM_CSn to be negated (i.e., voltage level high) when the GPIO's are initialized, right?  If so, the PB4 "GPIO output level" should be High, not Low as you show.  "GPIO output level" is poorly named in CubeMX and should include the word "Initial".

CBerg
CBergAuthor
Senior II
November 19, 2023

thanks for the hint, I appreciate it. This one "sliped through" ...