Pages

Saturday, 9 August 2014

HummingBoard GPIO

GPIO Header Pinout

GPIO Layout

Pin
Signal
Pin
Signal
1
3.3V
2
5V
3
I2C_SDA
4
5V
5
I2C_SCL
6
GND
7
GPIO 1
8
UART TX
9
GND
10
UART RX
11
GPIO 73
12
GPIO 72
13
GPIO 71
14
GND
15
GPIO 10
16
GPIO 194*
17
3.3V
18
GPIO 195*
19
SPI_MOSI
20
GND
21
SPI_MISO
22
GPIO 67
23
SPI_SCLK
24
ECSPI2_SS0
25
GND
26
ECSPI2_SS1

* Pins 16 and 18 are actually SD3_CMD and SD3_CLK signals that can be muxed to support flex can TX/RX interface (i.e. those can be connected to an external CAN) 

Note: SPI and I2C can also be muxed to be GPIO

Accessing GPIO from Linux userspace

The external GPIOs are available under the /sys/class/gpio folder in Linux.

Get the current list of reserved GPIO

> mount -t debugfs none /sys/kernel/debug
> cat /sys/kernel/debug/gpio

Reserve/free a GPIO pin

> echo XX > /sys/class/gpio/export
> echo XX > /sys/class/gpio/unexport

Set GPIO pin Direction

> echo in > /sys/class/gpio/gpioXX/direction
> echo out > /sys/class/gpio/gpioXX/direction

Set the value of an output pin

> echo 1 > /sys/class/gpio/gpioXX/value
> echo 0 > /sys/class/gpio/gpioXX/value

Get the value of an input pin

> cat > /sys/class/gpio/gpioXX/value