Q: I need some details on the GPIO (General Purpose Input Output) pins on the Raspberry Pi for a project I've undertaken. However, as I understand it, significant pieces of the Raspberry Pi hardware design are considered "proprietary", and consequently, the documentation is not available. What are the "definitive sources" for GPIO documentation? Is the GPIO documentation "complete"?
A: The "definitive sources" of documentation on the Raspberry Pi are published by the Raspberry Pi Foundation on the RPi documentation website, and on the RPi GitHub documentation page. The GPIO documentation is part of this overall web-based repository, and it is augmented by several documents that provide additional details. Raspberry Pi's documentation on the GPIO is mostly contained in, or available through, the following URLs:
- The "Usage" documentation
- The GPIO documentation
- The Hardware documentation (which is a bit inconsistent in places) includes:
- There is also an "errata sheet" on the BCM2835 maintained by eLinux, several pertain to GPIO details. The data on this eLinux site is a bit out-of-date last checked, but may still be useful.
- The Raspberry Pi Compute Module Data Sheet
There is an extensive set of documentation then, published or referenced by "The Foundation". However, there is more that's outside that set of documentation. The following is not intended to be a comprehensive list, but will be updated from time to time as new sources are identified:
- An extract from BCM2835 full data sheet; Gert van Loo, 2-August-2012 1
- A C header file w/ macros & masks for GPIO
- GPIO Library:
pigpio
- GPIO Library:
wiringPi
- Other GPIO Libs; listed here with sample code in many languages (C, C#, Ruby, Perl, Python, shell, etc)
REFERENCES & NOTES:
- While the provenance of this document is not completely known, it clearly shows there are GPIO functions that are not included in The Foundation's "official documentation".