Risorse per il Lab. Elettronica |
|
Home Page
CAD/CAE • LTspice • PSpice Sistemi • Arduino • AVR • Raspberry Pi • National Instruments Risorse • Datasheet • Link • Hardware e Software • Misc |
Programmare il GPIO di Raspberry Pi in C (beta) Quest'opera è distribuita con Licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Italia. E' dunque escluso l'utilizzo per scopi di lucro . Autore: Francesco Parisi, fparisi AT gmail DOT com Ultima modifica: 09/08/2021 Panoramica del GPIO • Piedinatura Il Raspberry Pi dispone di un port di I/O digitale (GPIO), che gli consente di comunicare con il mondo esterno (interruttori, pulsanti, LED, sensori, attuatori ecc.) Il GPIO è accessibile mediante un connettore maschio (riferimento sul circuito stampato: "P1") da 26 pin, passo 100mil, disposti su due linee da 13 pin ciascuna. Lo schema del connettore è riportato di seguito e si riferisce alla revisione attualmente in commercio (la n. 2):
• Pin fisici e pin virtuali Una prima distinzione che bisogna fare è fra "pin fisici" e "pin virtuali". I primi seguono la numerazione fisica del connettore, secondo la seguente convenzione: guardando il connettore dall'alto, in modo che la tacchetta di riferimento si trovi in basso a sinistra, il pin 1 è quello che si trova in corrispondenza della tacchetta stessa, il pin2, non si trova alla destra del pin 1, ma sulla linea opposta, di fronte, come riportato nell'immagine successiva:
Quindi, la convenzione "fisica" prevede che i pin inferiori siano numerati dispari: 1, 3, 5, ... , 25, mentre quelli superiori vengano numerati pari: 2, 4, 6, ... , 26 I pin virtuali, invece, sono numeri o nomi, usati per identificare i pin fisici nella programmazione o nell'accesso dalla shell. Un esempio di convenzione virtuale è la numerazione dei pin adottata da WiringPI, una libreria C (e per altri linguaggi), che consente di programmare il Raspberry con una sintassi semplificata, simile a quella di Arduino. I pin WiringPi sono riportati nell'immagine di sopra cerchiati di colore rosso; come si può vedere si usano 17 numeri (da 0 a 16) per identificare i pin di I/O; ad esempio il pin fisico 11, corrisponderà al pin virtuale 0 (secondo WiringPi) e al pin virtuale 17 (secondo la convenzione del produttore del chip). La convenzione WiringPI ha un vantaggio non indifferente: è indipendente dalle revisioni delle schede (rev.1 e rev.2), quindi non occorre ridefinire i numeri dei pin nei sorgenti. • Livelli di tensione e di corrente I pin GPIO2 e GPIO3 sono internamente collegati a una resistenza di pull-up da 1,8kΩ (linee SDA/SCL della comunicazione I2C). La massima corrente prelevabile dai pin di alimentazione 3,3V è 50mA, mentre dai rami +5V è 300mA (per la rev.2). I valori di tensione nominali associati al livello alto e al livello basso sono, rispettivamente, 3,3V e 0V. I circuiti interni non prevedono alcuna protezione per tensioni superiori a 3,3V, quindi, nel caso si debba applicare a un ingresso del GPIO una tensione superiore (es. 5V TTL) occorrerà utilizzare dei convertitori di livello (transistor, buffer/line driver ecc.), partitori di tensione o zener, per portare la tensione nell'intorno dei 3,3V (i livelli di tensione in ingresso sono: VIH > = 1,3V e VIL < = 0,8V)
Le impostazioni di default, infine, limitano la massima corrente a 8mA per pin, valore massimo che garantisce la corretta interpretazione del livello logico alto. La rev.2 monta anche un secondo connettore (riferimento P5) che prevede altri 4 pin GPIO, nel caso i 17 pin del connettore P1 non fossero sufficienti. |
|
Informativa estesa sui Cookie
|
|
Realizzazione a cura di Francesco Parisi (2002 ÷ 2024) | Contatti