|
- .TH "GPIO" "March 2013" "Command-Line access to Raspberry Pi's GPIO"
-
- .SH NAME
- gpio \- Command-line access to Raspberry Pi's GPIO
-
- .SH SYNOPSIS
- .B gpio
- .B \-v
- .PP
- .B gpio
- .B [ \-g | \-1 ]
- .B mode/read/write/aread/awrite/wb/pwm/clock ...
- .PP
- .B gpio
- .B [ \-x extension:params ]
- .B mode/read/write/aread/awrite/pwm ...
- .PP
- .B gpio
- .B [ \-p ]
- .B read/write/wb
- .B ...
- .PP
- .B gpio
- .B readall/reset
- .PP
- .B gpio
- .B unexportall/exports
- .PP
- .B gpio
- .B export/edge/unexport
- .B ...
- .PP
- .B gpio
- .B wfi
- .B ...
- .PP
- .B gpio
- .B drive
- group value
- .PP
- .B gpio
- .B pwm-bal/pwm-ms
- .PP
- .B gpio
- .B pwmr
- range
- .PP
- .B gpio
- .B load \ i2c/spi ...
- .PP
- .B gpio
- .B gbr
- channel
- .PP
- .B gpio
- .B gbw
- channel value
-
- .SH DESCRIPTION
-
- .B GPIO
- is a swiss army knife of a command line tool to allow the user easy
- access to the GPIO pins on the Raspberry Pi and the SPI A/D and D/A
- converters on the Gertboard. It's designed for simple testing and
- diagnostic purposes, but can be used in shell scripts for general if
- somewhat slow control of the GPIO pins.
-
- It can also control the IO's on the PiFace IO board and load the SPI and I2C
- kernel modules if required.
-
- Additionally, it can be used to set the exports in the \fI/sys/class/gpio\fR
- system directory to allow subsequent programs to use the \fR/sys/class/gpio\fR
- interface without needing to be run as root.
-
- .SH OPTIONS
-
- .TP
- .B \-v
- Output the current version including the board revision of the Raspberry Pi.
-
- .TP
- .B \-g
- Use the BCM_GPIO pins numbers rather than wiringPi pin numbers.
- \fINote:\fR The BCM_GPIO pin numbers are always used with the
- export and edge commands.
-
- .TP
- .B \-1
- Use the physical pin numbers rather than wiringPi pin numbers.
- \fINote:\fR that this applies to the P1 connector only. It is not possible to
- use pins on the Revision 2 P5 connector this way, and as with \-g the
- BCM_GPIO pin numbers are always used with the export and edge commands.
-
- .TP
- .B \-x extension
- This causes the named extension to be initialised. Extensions
- comprise of a name (e.g. mcp23017) followed by a colon, then the
- pin-base, then more optional parameters depending on the extension type.
- See the web page on http://wiringpi.com/the-gpio-utility/
-
- .TP
- .B \-p
- Use the PiFace interface board and its corresponding pin numbers. The PiFace
- will always appear at pin number 200 in the gpio command. You can assign any
- pin numbers you like in your own programs though.
-
- .TP
- .B read <pin>
- Read the digital value of the given pin and print 0 or 1 to represent the
- respective logic levels.
-
- .TP
- .B write <pin> <value>
- Write the given value (0 or 1) to the pin. You need to set the pin
- to output mode first.
-
- .TP
- .B wb <value>
- Write the given byte to the 8 main GPIO pins. You can prefix it with 0x
- to specify a hexadecimal number. You need to set pins to output mode
- first.
-
- .TP
- .B readall
- Output a table of all GPIO pins values. The values represent the actual values read
- if the pin is in input mode, or the last value written if the pin is in output
- mode.
-
- .TP
- .B reset
- Resets the GPIO - As much as it's possible to do. All pins are set to input
- mode and all the internal pull-up/down resistors are disconnected (tristate mode).
-
- .TP
- .B pwm <pin> <value>
- Write a PWM value (0-1023) to the given pin. The pin needs to be put
- into PWM mode first.
-
- .TP
- .B clock <pin> <frequency>
- Set the output frequency on the given pin. The pin needs to be put into
- clock mode first.
-
- .TP
- .B mode <pin> <mode>
- Set a pin into \fIinput\fR, \fIoutput\fR or \fIpwm\fR mode. Can also
- use the literals \fIup\fR, \fIdown\fR or \fItri\fR to set the internal
- pull-up, pull-down or tristate (off) controls.
-
- .TP
- .B unexportall
- Un-Export all the GPIO pins in the /sys/class/gpio directory.
-
- .TP
- .B exports
- Print a list (if any) of all the exported GPIO pins and their current values.
-
- .TP
- .B export
- Export a GPIO pin in the \fI/sys/class/gpio\fR directory. Use like the
- mode command above however only \fIin\fR and \fIout\fR are supported at
- this time. Note that the pin number is the \fBBCM_GPIO\fR number and
- not the wiringPi number.
-
- Once a GPIO pin has been exported, the \fBgpio\fR program changes the
- ownership of the \fI/sys/class/gpio/gpioX/value\fR and if present in
- later kernels, the \fI/sys/class/gpio/gpioX/edge\fR pseudo files to
- that of the user running the \fBgpio\fR program. This means that you
- can have a small script of gpio exports to setup the gpio pins as your
- program requires without the need to run anything as root, or with the
- sudo command.
-
- .TP
- .B edge
- This exports a GPIO pin in the \fI/sys/class/gpio\fR directory, set
- the direction to input and set the edge interrupt method to \fInone\fR,
- \fIrising\fR, \fIfalling\fR or \fIboth\fR. Use like the export command
- above and note that \fBBCM_GPIO\fR pin number is used not not wiringPi pin
- numbering.
-
- Like the export commands above, ownership is set to that of the
- calling user, allowing subsequent access from user programs without
- requiring root/sudo.
-
- .TP
- .B unexport
- Un-Export a GPIO pin in the /sys/class/gpio directory.
-
- .TP
- .B wfi <pin> <mode>
- This set the given pin to the supplied interrupt mode: rising, falling
- or both then waits for the interrupt to happen. It's a non-busy wait,
- so does not consume and CPU while it's waiting.
-
- .TP
- .B drive
- group value
-
- Change the pad driver value for the given pad group to the supplied drive
- value. Group is 0, 1 or 2 and value is 0-7. Do not use unless you are
- absolutely sure you know what you're doing.
-
- .TP
- .B pwm-bal/pwm-ms
- Change the PWM mode to balanced (the default) or mark:space ratio (traditional)
-
- .TP
- .B pwmr
- Change the PWM range register. The default is 1024.
-
- .TP
- .B load i2c [baudrate]
- This loads the i2c or drivers into the kernel and changes the permissions
- on the associated /dev/ entries so that the current user has access to
- them. Optionally it will set the I2C baudrate to that supplied (or as
- close as the Pi can manage) The default speed is 100Kb/sec.
-
- .TP
- .B load spi [buffer size in KB]
- This loads the spi drivers into the kernel and changes the permissions
- on the associated /dev/ entries so that the current user has access to
- them. Optionally it will set the SPI buffer size to that supplied. The
- default is 4KB.
-
- .TP
- .B gbr
- channel
-
- This reads the analog to digital converter on the Gertboard on the given
- channel. The board jumpers need to be in-place to do this operation.
-
- .TP
- .B gbw
- channel value
-
- This writes the supplied value to the output channel on the Gertboards
- SPI digital to analogue converter.
- The board jumpers need to be in-place to do this operation.
-
-
- .SH "WiringPi vs. BCM_GPIO Pin numbering"
-
- .PP
- .TS
- c c c c l.
- WiringPi GPIO-r1 GPIO-r2 P1-Phys Function
- _
- 0 17 17 11
- 1 18 18 12 (PWM)
- 2 21 27 13
- 3 22 22 15
- 4 23 23 16
- 5 24 24 18
- 6 25 25 22
- 7 4 4 7
- 8 0 2 3 I2C: SDA0
- 9 1 3 5 I2C: SCL0
- 10 8 8 24 SPI: CE0
- 11 7 7 26 SPI: CE1
- 12 10 10 19 SPI: MOSI
- 13 9 9 21 SPI: MISO
- 14 11 11 23 SPI: SCLK
- 15 14 14 8 TxD
- 16 15 16 10 RxD
- 17 - 28
- 18 - 29
- 19 - 30
- 20 - 31
- .TE
-
- Note that "r1" and "r2" above refers to the board revision. Normally
- wiringPi detects the correct board revision with use for it's own
- numbering scheme, but if you are using a Revision 2 board with some
- of the pins which change numbers between revisions you will need
- to alter your software.
-
- .SH FILES
-
- .TP 2.2i
- .I gpio
- executable
-
- .SH EXAMPLES
- .TP 2.2i
- gpio mode 4 output # Set pin 4 to output
- .PP
- gpio -g mode 23 output # Set GPIO pin 23 to output (same as WiringPi pin 4)
- .PP
- gpio mode 1 pwm # Set pin 1 to PWM mode
- .PP
- gpio pwm 1 512 # Set pin 1 to PWM value 512 - half brightness
- .PP
- gpio export 17 out # Set GPIO Pin 17 to output
- .PP
- gpio export 0 in # Set GPIO Pin 0 (SDA0) to input.
- .PP
- gpio -g read 0 # Read GPIO Pin 0 (SDA0)
-
- .SH "NOTES"
-
- When using the \fIexport\fR, \fIedge\fR or \fIunexport\fR commands, the
- pin numbers are \fBalways\fR native BCM_GPIO numbers and never wiringPi
- pin numbers.
-
- .SH "SEE ALSO"
-
- .LP
- WiringPi's home page
- .IP
- http://wiringpi.com/
-
- .SH AUTHOR
-
- Gordon Henderson
-
- .SH "REPORTING BUGS"
-
- Please report bugs to <projects@drogon.net>
-
- .SH COPYRIGHT
-
- Copyright (c) 2012-2013 Gordon Henderson
- This is free software; see the source for copying conditions. There is NO
- warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
- .SH TRADEMARKS AND ACKNOWLEDGEMENTS
-
- Raspberry Pi is a trademark of the Raspberry Pi Foundation. See
- http://raspberrypi.org/ for full details.
|