294 lines
7.2 KiB
Groff
294 lines
7.2 KiB
Groff
.TH GPIO 1 "March 2018" wiringPi "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/pwnTone/clock/toggle/blink ...
|
||
.PP
|
||
.B gpio
|
||
.B [ \-x extension:params ]
|
||
.B mode/read/write/aread/awrite/pwm/toggle/blink ...
|
||
.PP
|
||
.B gpio
|
||
.B [ \-p ]
|
||
.B read/write/toggle/blink
|
||
.B ...
|
||
.PP
|
||
.B gpio
|
||
.B [ \-p ]
|
||
.B pwnTone pin frequency
|
||
.B ...
|
||
.PP
|
||
.B gpio
|
||
.B readall
|
||
.PP
|
||
.B gpio
|
||
.B wfi
|
||
.B ...
|
||
.PP
|
||
.B gpio
|
||
.B drive
|
||
group value
|
||
.PP
|
||
.B gpio
|
||
.B usbp
|
||
high | low
|
||
.PP
|
||
.B gpio
|
||
.B pwm-bal/pwm-ms
|
||
.PP
|
||
.B gpio
|
||
.B pwmr
|
||
range
|
||
.PP
|
||
.B gpio
|
||
.B i2cd
|
||
.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.
|
||
|
||
.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 character device ABI.
|
||
|
||
.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 character device ABI.
|
||
|
||
.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.
|
||
|
||
.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 toggle <pin>
|
||
Changes the state of a GPIO pin; 0 to 1, or 1 to 0.
|
||
|
||
Note unlike the blink command, the pin must be in output mode first.
|
||
|
||
.TP
|
||
.B blink <pin>
|
||
Blinks the given pin on/off. Press Control-C to exit.
|
||
|
||
Note: This command explicitly sets the pin to output mode.
|
||
|
||
.TP
|
||
.B aread <pin>
|
||
Read the analog value of the given pin. This needs to be used in
|
||
conjunction with a -x flag to add in an extension that handles analog
|
||
inputs.
|
||
|
||
e.g. gpio -x mcp3002:200:0 aread 200
|
||
|
||
will read the first analog input on an mcp3002 SPI ADC chip.
|
||
|
||
.TP
|
||
.B awrite <pin> <value>
|
||
Write the analog value to the given pin. This needs to be used in
|
||
conjunction with a -x flag to add in an extension that handles analog
|
||
inputs.
|
||
|
||
e.g. gpio -x mcp4802:200:0 awrite 200 128
|
||
|
||
will write the value 128 to the first DAC port on an mcp4802 chip on
|
||
the Pi's SPI bus 0.
|
||
|
||
|
||
.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.
|
||
|
||
The readall command is usable with an extension module (via the -x parameter),
|
||
but it's unable to determine pin modes or states, so will perform both a
|
||
digital and analog read on each pin in-turn.
|
||
|
||
.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.
|
||
|
||
The ALT modes can also be set using \fIalt0\fR, \fIalt1\fR, ... \fIalt5\fR.
|
||
|
||
.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 usbp
|
||
high | low
|
||
|
||
Change the USB current limiter to high (1.2 amps) or low (the default, 600mA)
|
||
This is only applicable to the Model B+ and the Model B, v2.
|
||
|
||
.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 i2cd
|
||
Executes i2c-detect for the default I2C port on the P1 connector.
|
||
|
||
.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 vs. Physical pin numbering"
|
||
|
||
.PP
|
||
The quickest way to get a list of the pin differences is to run the command
|
||
.TP
|
||
gpio readall
|
||
|
||
.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 -g read 0 # Read GPIO Pin 0 (SDA0)
|
||
|
||
.SH "NOTES"
|
||
|
||
As of kernels 4.1.7, a user-level GPIO access mechanism is available,
|
||
however wiringPi will not use this by default - because at this time
|
||
there appears to be issues when trying to program the PWM or clock output
|
||
hardware. If you can live without PWM or GPIO clocks and you want to use
|
||
the GPIO from a non-root program, then you need to make sure that the
|
||
module \fIbcm2835_gpiomem\fR is loaded at boot time. This should happen
|
||
automatically when you enable the device tree in raspi-config. You may
|
||
also need some additional information in /etc/udev/rules.d/ to change the
|
||
mode and ownership of the /dev/gpiomem file. Finally, you need to set
|
||
the environment variable \fIWIRINGPI_GPIOMEM\fR. This will go-away
|
||
in future releases once the /dev/gpiomem interface is fully operational.
|
||
|
||
.SH "SEE ALSO"
|
||
|
||
.LP
|
||
WiringPi's development
|
||
.IP
|
||
https://github.com/WiringPi/WiringPi/
|
||
|
||
.SH AUTHOR
|
||
|
||
Gordon Henderson and contributors
|
||
|
||
.SH "REPORTING BUGS"
|
||
|
||
Please report bugs to https://github.com/WiringPi/WiringPi/issues
|
||
|
||
.SH COPYRIGHT
|
||
|
||
Copyright (c) 2012–2019 Gordon Henderson; 2019–2026 Contributors
|
||
.br
|
||
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.
|