Problems with the Raspberry Pi Pico 2, Raspberry Pi RP2350 Deepen as Projects Hit By Erratum E9

A fly in the ointment, or a flaw in the chip, is causing some to pause or shelve plans to migrate RP2040-based designs to the RP2350.

UPDATE (9/6/2024): Raspberry Pi has released an updated version of the RP2350's datasheet which expands on erratum RP2350-E9, the hardware flaw causing pins to latch at around 2.15V — and has confirmed that it can occur even if you're not using the chip's internal pull-down resistors.

In the latest version of the datasheet, the requirements for triggering the bug — blamed on a third-party IP vendor — have been updated to remove the need for the chip's internal pull-down resistors to be enabled. The company has also confirmed that the flaw affects programs running on the Programmable Input/Output (PIO) blocks, and that a software workaround of disabling a pin's input state and then enabling it only before reading then disabling it again cannot be used by PIO programs.

For these, and for other programs where the above workaround can't be used, the company's recommendation is to either wire the circuit so the RP2350's internal pull-up resistors can be used or to add external pull-down resistors of 8.2k Ohms or less to each pin used.

The latest datasheet is available direct from Raspberry Pi as PDF download; thus far, the company has not announced any plans to address the flaw with a new chip revision.

Original article continues below.

Raspberry Pi's new RP2350 microcontroller family continues to be the focus of considerable troubleshooting this week, as developers increasingly run into the side-effects of a design flaw known as erratum RP2350-E9 — with the result that some are cancelling designs built around the new chip, at least until a new stepping is released with the fault fixed.

Raspberry Pi unveiled the RP2350, a quad-core dual-architecture successor to the popular RP2040 and its first part to feature RISC-V cores, back in early August, having provided early access to a range of hardware partners to design their own boards to sit alongside the Raspberry Pi Pico 2. Sadly, all has not been smooth with the device's launch: the discovery of a hardware fault, known as erratum RP2350-E9, which causes general-purpose input/output (GPIO) pins to "latch" at around the 2V mark has been the cause of considerable consternation among designers and engineers.

"[I] found a silicon bug," Dangerous Prototypes' Ian Lesnet explained of the issue, following his report of the same to Raspberry Pi and its recording of the flaw as a formal erratum. "When a GPIO [General-Purpose Input/Output] 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…"

Lesnet had been working with the RP2350 for the Bus Pirate 5XL and Bus Pirate 6, building on his earlier RP2040-powered Bus Pirate 5 design. Those, however, have now been shelved, at least for the time being. "RP2350 based Bus Pirate (6 & 5XL) production is paused," he explains in an update posted to Mastodon this week. "E9 errata appears more expansive than reported in [the] datasheet, [and the] first batch of RP2350 Bus Pirates are probably DOA [Dead On Arrival]. RP2350 inputs seem to stick at ~2.1 volts without pull-down/load of ~9k ohms/0.33mA."

"BP uses pin pull-downs with open collector bus types because it simplifies PIO [Programmable Input/Output] programs that run through 1.2-5 volt bidirectional buffers. I attempted to correct for E9 based on what was known at the time: by disabling pin pull-down and using an external 100k pull-down resistor. Unfortunately, this probably wasn't enough. As reported by […] others, the latch up doesn't seem limited to when pull-downs are enabled. Any input pin not held low with [a] ~9k resistor will stick at 2.1 volts after going high in multiple tests.

The problem, easier to trigger than the official erratum in the datasheet would suggest, has been confirmed by others including CircuitPython core developer Dan Halbert and maker Tod Kurt, who has stated that "I currently have several Pico-based projects that cannot use Pico 2/RP2350 because of this problem" — while Agustín Gimenez Bernad has cancelled a work-in-progress effort to port his RP2040-based logic analyzer to the RP2350 as a direct result of the flaw. "According to the official errata the lock only happens when the pull downs are enabled, you input a high level value and then the GPIO starts outputting 2.1V," he explains. "That doesn't sound too bad but the reality is very different."

"I've been testing it and even forcing the pulldowns to be disabled," Bernad continues, "the PIO triggers the lock. In this state, the RP2350 is useless if you need to use the GPIOs to input any data. The only workaround provided is to disable the pins and enable them when you are going to read and disable them after it to reset the pin status, but as you can imagine with the PIO this is impossible, and even if it was possible the capture speed would be reduced so much that the analyzer would be totally useless. Unfortunately I must stop the port to the Pico 2 until this situation is solved."

Raspberry Pi engineer James Hughes has issued brief comment in the company's forum, confirming that the company is in discussions with the IP supplier it blames for the fault in the chip — but, at the time of writing, the company was sticking with the description of the flaw as it stands in the datasheet, and had not commented on the timing or even likelihood of a new stepping which would resolve the problem in hardware rather than in documentation.

Interested parties can monitor the progress of the investigation via the Raspberry Pi Pico GitHub Issue.

Gareth Halfacree
Freelance journalist, technical author, hacker, tinkerer, erstwhile sysadmin. For hire: freelance@halfacree.co.uk.
Latest articles
Sponsored articles
Related articles
Latest articles
Read more
Related articles