Raspberry Pi ha confermato un bug nella nuova famiglia di microcontrollori RP2350, che causa il blocco dei pin che emettono 2,15 V quando configurati come ingressi utilizzando i resistori pull-down interni. Il problema, riportato da Hackster.io è legato, a quanto pare, alle modifiche apportate da un fornitore a un componente ormai andato fuori produzione.
“Ho trovato un bug nel circuito…”, spiega Ian Lesnet di Dangerous Prototypes del problema, che è stato confermato come un errore nella documentazione ufficiale di Raspberry Pi per la famiglia di microcontrollori a doppia architettura RP2350 appena lanciata. “… Quando un pin GPIO [General-Purpose Input/Output] è un ingresso con il resistore pull-down abilitato, agisce come un bus hold. Utilizziamo il pull-down sul pulsante, che si collega a 3,3 V quando viene premuto. Durante l’autotest premendo il pulsante funziona, ma poi non si abbassa mai più, rimane a 2,15 V…”
La famiglia Raspberry Pi RP2350 rappresenta un ambizioso progetto di microcontroller interno di seconda generazione che unisce, per la prima volta nella storia dell’azienda, core Arm standard con core RISC-V Hazard3 gratuiti e open source. Questi ultimi sono stati sviluppati da Luke Wren, principale ingegnere hardware di Raspberry Pi. Prima che possiate trarre conclusioni affrettate, il problema non risiede nel lavoro di L.W ma è attribuito a un fornitore IP del quale non è stata rilevata l’identità.
“Non abbiamo modificato il pad difettoso, abbiamo chiesto al fornitore di modificare il proprio pad”, spiega Wren parlando dell’origine del problema, che è stato individuato nel circuito analogico di un particolare pad tollerante ai guasti (FT). “C’era una struttura particolare sul pad RP2040 FT che ne limitava la tolleranza, ma dopo un’ispezione il layout modificato che abbiamo ottenuto era un circuito completamente diverso. Per noi è stato un po’ un punto cieco, perché il modello di simulazione fornito ovviamente non ha questo problema.”
Questo problema, come dettagliato nella scheda tecnica RP2350 di Raspberry Pi come erratum RP2350-E9, è descritto come “comportamento di blocco sui resistori pull-down del banco 0” e influisce su tutti i pin GPIO: quando configurato come ingresso che utilizza il resistore pull-down interno e con il buffer di uscita disabilitato, un pin GPIO si bloccherà tra 2,1 e 2,2 V anziché essere riportato a GND, ma solo dopo il primo utilizzo.
Dato che il problema risiede nell’hardware del chip, non esiste una soluzione semplice: Raspberry Pi afferma che risolverà il problema attraverso la “documentazione” piuttosto che tramite eventuali modifiche al kit di sviluppo software (SDK). Ciò include la raccomandazione di abilitare il buffer di input solo immediatamente prima della lettura, quindi disabilitarlo nuovamente in seguito, tuttavia, per coloro che non sono legati a un particolare layout del circuito, una soluzione più semplice è configurare gli input per utilizzare il pull-up interno, dal momento che quei resistori, non sono affetti dal problema.
Nel caso di Lesnet, il problema è stato risolto in due modi per i prossimi Bus Pirate 5XL e Bus Pirate 6 alimentati da RP2350. “I pulsanti sono stati modificati per utilizzare i pull-up, ma facciamo affidamento sui pull-down anche per i tipi di bus open collector. Il pull-down mantiene basso il pin IO in modo che il PIO [Input/Output programmabile] non abbia bisogno di manipolare la direzione GPIO. Le schede hanno 100.000 pull-down installati (invece di 1M Ohm) finché non verrà trovata una soluzione.”
Il thread completo di Lesnet è disponibile su Mastodon, così come il commento di Wren; maggiori dettagli sono disponibili nella scheda tecnica dell’RP2350, a pagina 1340.
Iscriviti ai nostri gruppi Telegram