Zijn de SPI-pinnen 5V tolerant?

I am looking at programming a ATMEGA328/Arduino Uno over the SPi pins and Adafruit has a tutorial on how to do it - > https://learn.adafruit.com/program-an-avr-or-arduino-using-raspberry-pi-gpio-pins?view=all

Ze vermelden echter niet of de SPI-pinnen op de RPI 5V-tolerant zijn en ze vermelden ook niets over het gebruik van level-shifters.

Het lijkt erop dat ze de chip op 5V uitvoeren en de pinnen rechtstreeks verbinden.

3
Geen van de Pins is 5 volt tolerant.
toegevoegd de auteur doekman, de bron

3 antwoord

ALLE Pi GPIO's zijn 3V3. GEEN van hen zijn tolerant ten opzichte van spanningen buiten het bereik van 0 tot 3,3V.

BEWERKT OM TE VOEGEN:

De enige pin die in de Pi wordt ingevoerd, is de pin die is verbonden met MISO (Master In Slave Out). Het eenvoudigste om te doen is een spanningsdeler op die lijn gebruiken om de ADC 5V-uitgang te knippen naar een Pi-safe 3V3. Een spanningsdeler is meestal een paar weerstanden.

For an example see https://learn.sparkfun.com/tutorials/voltage-dividers/

4
toegevoegd

Late toevoeging: wees voorzichtig met de resetpin. De atmega328P heeft een 60kohm interne pull-up weerstand op de resetpin ... Dit zou de RPi niet kunnen beschadigen, maar ... nou ...

2
toegevoegd

Ik heb geëxperimenteerd met interfacing tussen de PI GPIO-lijnen en 5V HC-logica. Ik heb het allebei geprobeerd met de PI als een input en als een output, en experimenteerde behoorlijk zorgvuldig.

Geconfigureerd als outputs, drijven de GPIO-lijnen vrij sterk door naar 3.3V of 0V via de interne MOSFETS. In een belasting van 10K naar aarde of naar 3,3V, is er niet veel spanningsdelta van de voedingslijnen. Zodra de GPIO is geconfigureerd als een ingang (wat de standaardstatus is), wordt deze echter een hoge impedantie. Als je dit via een 47K-weerstand op 5V aansluit, heb ik in de praktijk de spanning op de GPIO-pin gemeten op slechts iets minder dan 5V. Ik heb de IO-pin echter niet beschadigd, hoewel ik dit al vele malen heb geëxperimenteerd. 47K beperkt de ingangsstroom die van de 5V-rail naar de PI kan stromen aanzienlijk.

Het vreemde is echter dat wanneer je op het web googelt naar een R-Pi GPIO equivalent intern circuit, er duidelijk twee diodes zijn, die normaal gesproken in tegengestelde richting zijn, de ene naar de aarde en de andere naar 3,3V. Dit is een gemeenschappelijk schema voor ingangsbescherming en helpt zeker schade door impulsen door statische ontladingen te voorkomen.

Ik vond dit vreemd in het licht van het hierboven beschreven scenario, waarbij het verbinden van de GPIO-lijn via 47K naar 5V (of zelfs 10K) nog steeds ten minste 4,7V op de GPIO-pin geeft. De stroom is niet hoog. Ik had verwacht dat de interne diodes dit tot iets meer dan 3,3V zouden klemmen. Inderdaad, het toevoegen van een externe Schottky-diode van de GPIO-pin naar 3,3 V snijdt deze spanning terug tot ongeveer 3,5V.

Zodra code de pin configureert als een uitvoer met logica 1, zakt de 4.7V op de pin naar 3,3V.

Samengevat impliceert het equivalente schema van de GPIO dat de pennen tolerant zijn ten opzichte van 5V zolang de stroom klein is. In de praktijk raad ik aan de pennen vanuit 5V-logica via een weerstand van ten minste 10K aan te drijven en ook een externe Schottky-diode van de pin aan te sluiten op 3,3V om te voorkomen dat de spanning van de ingangsspeld veel boven de voedingsrail van de PI stijgt.

Om dieper te graven, deed ik een extra experiment en mat ik de werkelijke ingangsstroom die naar een GPIO-pin stroomt die is geconfigureerd als een ingang (zonder pull-up of down-weerstanden) wanneer deze is aangesloten op 5V via een 47k-weerstand. Variërend van de ingangsspanning (stijgend van 0-5V) geeft een onmeetbare kleine stroom (in wezen nul) totdat de spanning boven 3,3V stijgt. Op dit punt neemt de ingangsstroom toe, maar deze is nog steeds slechts 3,9uA van een 5V bron via de serieweerstand.

Ik probeerde het toen met een 10K-serie weerstand en de stroom van de 5V-bron naar de GPIO-invoerpin was nog steeds slechts ongeveer 4.9uA. Ik probeerde een aantal andere weerstandswaarden en kreeg de volgende resultaten:

4K7 - 5.4uA
10K - 4.9uA
47K - 3.9uA
100K - 2.8uA

In het licht hiervan lijkt er enige stroombeperking aan de gang te zijn, omdat de keuze van de weerstand niet veel verandert aan de ingangsstroom van een 5V bron. Persoonlijk denk ik nu dat, op voorwaarde dat je de inputs van een redelijk hoge impedantiebron bestuurt, zoals een met een serieweerstand groter dan 10K, je waarschijnlijk niet de GPIO-ingangen zult beschadigen om hem aan te sluiten op een 5V-systeem.

Ik heb geen bewijs dat er geen schade was, behalve dat de PI nog steeds prima lijkt te werken, maar de betrokken stromen lijken te klein om zorgwekkend te zijn.

Alle experimenten werden gedaan op een Pi-zero running Raspberian en gebruikten pin 12 op de GPIO-header.

0
toegevoegd