Libreria GPIO per C


8

Voglio utilizzare i pin GPIO sul mio Raspberry Pi 2, ma preferirei non usare Python poiché non mi piace personalmente la lingua. Tuttavia, non riesco a trovare alcuna informazione sull'uso di C, ma solo su Python.

Esiste un'API C ufficiale? In tal caso, dove posso trovare tutorial su di esso? In caso contrario, quali alternative ho?


Questo non è specifico per C ma per il supporto generale del linguaggio di programmazione GPIO consultare l'elenco su elinux.org/RPi_GPIO_Code_Samples
joan

Ci sono due API C abbastanza recenti e un'API C ++ che ho trovato e fornito un esempio in un post correlato: Controlla i pin GPIO da C
Gorlux

Risposte:


10

Non esiste una biblioteca ufficiale

Esistono diverse opzioni. Di solito uso http://wiringpi.com . Viene utilizzato per l' gpioutilità inclusa nelle recenti versioni di Raspbian.

La pigpiobiblioteca di Joan è su https://github.com/joan2937/pigpio e ha anche wrapper Python. Se si desidera utilizzare socket o un demone, questo è consigliato e ha un buon supporto per l'hardware e l'accesso in blocco ai banchi di pin.

Entrambi hanno una vasta documentazione.

Ce ne sono un paio, ma alcuni sembrano un po 'datati.


2

Non menzioni un sistema operativo, come Milliways, presumo che intendi Raspbian o qualche altro GNU / Linux. Windows IoT sarebbe separato.

Tutte le librerie di Python sono wrapper per le librerie C, il che non è insolito. Creare le librerie da zero in qualcosa di diverso da C. sarebbe. Ce ne sono tre:

Questi sono in circolazione da almeno alcuni anni e sono attivamente mantenuti (ad esempio, l'ultima versione di libbcm2835 era 3-4 mesi fa).

Tuttavia, non è necessaria alcuna libreria a seconda di ciò che si desidera fare. Come accennato qui, oltre all'interfaccia sysfs per le cose di base, ci sono interfacce di livello C portatile userland per I2C e SPI che usano driver del kernel. Questo lascia PWM: per accedere e utilizzare i canali hardware è necessario utilizzare una di queste tre librerie. Oppure, come menziona Joan in un commento su quell'altra domanda, se stai cercando di contare impulsi molto veloci (in quel caso farei qualche esperimento con alcuni metodi).

Non ho provato tutte le combinazioni, ma presumendo che le librerie specifiche di pi siano codificate in modo corretto, dovresti essere in grado di mescolarle e abbinarle con le interfacce portatili (ad esempio, utilizzare la normale API I2C e cablaggioPi per PWM) fintanto che le usi per perni separati. Questo può sembrare un approccio strano, ma ha senso se stai lavorando con codice modulare e vuoi rendere le singole parti il ​​più portatili possibile. Ad esempio, se si desidera scrivere un'interfaccia per un sensore I2C, basarlo sull'API del driver del kernel. Quindi, se si desidera utilizzarlo in un programma con PWM, utilizzare una delle tre librerie per PWM. Il codice scritto con pigpio / cablaggioPi / libbcm2835 funzionerà solo su un Raspberry Pi; il codice scritto usando le API del driver del kernel funzionerà su qualsiasi sistema linux.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.