A Hardware Bug in the Raspberry Pi RP2350 MCU Causes Pins to Stick at 2.15V

A Hardware Bug in the Raspberry Pi RP2350 MCU Causes Pins to Stick at 2.15V

1.078
Views
0 Comments

A Hardware Bug in the RP2350 microcontroller family causes GPIO pins to get stuck at around 2.15V when configured as inputs with internal pull-down resistors. This “latching” behavior is due to a faulty fault-tolerant pad design from an unnamed IP vendor. The issue affects all GPIO pins and occurs after the first time the pin is used. While there’s no software fix, Raspberry Pi recommends enabling the input buffer only when needed as a workaround. Alternatively, using internal pull-up resistors, which are not affected, can avoid the problem altogether.

Dangerous Prototypes’ Ian Lesnet first found the bug, he explains the issue was confirmed as an erratum in Raspberry Pi’s official documentation for the newly-launched dual-architecture RP2350 microcontroller family.

“When a GPIO pin is an input with the pull-down resistor enabled, it acts like a bus hold. We use the pull-down on the button, which connects to 3.3V when pressed. During the self-test pressing the button works, but then it never goes low again, it sits at 2.15V…”

The company found that the problem is with a tiny part of the chip called a “fault-tolerant pad,” which helps protect it from damage. They didn’t design this part themselves but instead asked another company (the “vendor”) to make it. The vendor changed the design in a way that caused unexpected problems. This tiny part now causes some of the chip’s GPIO pins to get stuck at a voltage of 2.15V. This happens when you try to use those pins in a specific way (as an input with the “pull-down resistor” turned on). Raspberry Pi didn’t catch this issue in their simulations because the vendor gave them a model that didn’t show the problem.

Because the problem is with the physical chip itself, there’s no easy way to fix it with software. Raspberry Pi says they will update their documentation to help people work around the issue. One suggestion is to only turn on part of the pin (the “input buffer”) right before you need to use it, and then turn it off again immediately after.

Hardware Bug in the RP2350

But there’s a simpler solution if you have more flexibility with your design that is to use a different part of the pin (the “pull-up resistor”) instead. This part isn’t affected by the bug. This bug was first discovered by Ian Lesnet, who was working on debugging tools for Bus Pirate 5XL and Bus Pirate 6. He had to find creative ways to work around the problem in his designs. He ended up using the “pull-up resistors” for buttons and also made some changes to other parts of the circuit to make things work correctly.

To learn more about this Hardware Bug in the RP2350, you can find detailed discussions and comments from both Ian Lesnet (who discovered the bug) and Luke Wren (Raspberry Pi engineer) on Mastodon. For in-depth technical information, refer to the official RP2350 datasheet, specifically page 1340, where the erratum is documented.

Please follow and like us:
Pin Share
About Debashis Das

Tech Content Creator | Hardware Design Engineer | IoT Enthusiast | Digital Storyteller | Video Creator | From crafting digital dialogues at Semicon Media to orchestrating online engagement at Electronics-lab.com, my journey is about making tech talk interesting and accessible. In the quiet corners of the day, I advocate for easier tech education, one tutorial at a time. Let's connect and keep the digital dialogue going!

view all posts by das
Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments
Get new posts by email:
Get new posts by email:

Join 97,426 other subscribers

Archives