We are developing some USB audio hardware around the RP2350
We prototyped basic functionality with a Pico 2 jumpered to some other peripheral boards in an arrangement we have affectionately termed "the rats nest." Everything works fantastic despite, assuredly, loads of EMI and ringing on signal edges.
This gave us the confidence to spin a board. Lacking a source of bare RP2350s we decided to just transplant them from Pico 2s for now.
We has Problems with the new board. Our device would pass audio between USB and I2S for just a few moments before something would fall over.
Long story short, after two days of blaming our board, or our transplant job, and squinting at this thing from every angle we could think of, we tried putting a different Pico 2 into the rats nest and it had the same failure. Turns out the RP2350 has a QC issue that affects some units but not others, or something.
Then we started commenting out code to see what code is triggering the hardware bug.
The line that made our software start working again when we deleted it was:
That's right, enabling the pull up on that particular gpio (there are 9 other gpios with pullups enabled) made our software fall over... but only after running for a few seconds.
We're gonna try and throw a physical pull up resistor on that pin to see what happens. I am emotionally preparing myself for the issue to crop up whenever the pin is logic high for any reason. Will report back.
I don't grok the software side of this project well enough to tell what's happening when the software dies. I just do circuit boards and mechanical... I do know there's a maze of DMAs and IRQs that seems to be getting broken but I don't see why a gpio should be breaking them, particularly since there are no gpio interrupts enabled.
We prototyped basic functionality with a Pico 2 jumpered to some other peripheral boards in an arrangement we have affectionately termed "the rats nest." Everything works fantastic despite, assuredly, loads of EMI and ringing on signal edges.
This gave us the confidence to spin a board. Lacking a source of bare RP2350s we decided to just transplant them from Pico 2s for now.
We has Problems with the new board. Our device would pass audio between USB and I2S for just a few moments before something would fall over.
Long story short, after two days of blaming our board, or our transplant job, and squinting at this thing from every angle we could think of, we tried putting a different Pico 2 into the rats nest and it had the same failure. Turns out the RP2350 has a QC issue that affects some units but not others, or something.
Then we started commenting out code to see what code is triggering the hardware bug.
The line that made our software start working again when we deleted it was:
Code:
gpio_pull_up(0);
We're gonna try and throw a physical pull up resistor on that pin to see what happens. I am emotionally preparing myself for the issue to crop up whenever the pin is logic high for any reason. Will report back.
I don't grok the software side of this project well enough to tell what's happening when the software dies. I just do circuit boards and mechanical... I do know there's a maze of DMAs and IRQs that seems to be getting broken but I don't see why a gpio should be breaking them, particularly since there are no gpio interrupts enabled.
Statistics: Posted by Analogy — Thu Feb 27, 2025 6:34 am — Replies 1 — Views 48