Description

[HB GPIO] GPIO, or General-Purpose Input/Output is a mechanism that allows a computing board to provide electrical contacts for signalling to a wide range of external devices. These pins allow commerical and hobbyist projects to do things like communicate with a “breakout board”, or individual physical modules – like a motor.

GPIO interfaces are different than other capabilities on a circuit board (like LVDS or the RTC integration) in that they provide a non-specific electrical interface. While these other interfaces have a set specification and set capability for an intended use (connecting to an LCD panel or a real-time clock, in the cited examples respectively) GPIO pins are used at the developer’s discretion. You could connect a motor. Or a temperature sensor. Or a lock solenoid. Or any one of millions of other device combinations for bringing information into the system – or sending information out from the HummingBoard device.

Pin header schematics

26 pin header

GPIO Header Pinout

Header Pin

Pad Name (Default)

GPIO Name

Linux GPIO Number (*)

J2 [pin 1]

3.3V

-

J2 [pin 2]

5V

-

J2 [pin 3]

I2C_SDA

#

J2 [pin 4]

5V

-

J2 [pin 5]

I2C_SCL

#

J2 [pin 6]

GND

-

J2 [pin 7]

GPIO 1

1

J2 [pin 8]

UART TX

#

J2 [pin 9]

GND

-

J2 [pin 10]

UART RX

#

J2 [pin 12]

GPIO 72

GPIO3_IO08

72

J2 [pin 13]

GPIO 71

71

J2 [pin 14]

GND

-

J2 [pin 15]

GPIO 10

10

J2 [pin 16]

GPIO 194

194

J2 [pin 17]

3.3V

-

J2 [pin 18]

GPIO 195

195

J2 [pin 19]

SPI_MOSI

#

J2 [pin 20]

GND

-

J2 [pin 21]

SPI_MISO

#

J2 [pin 22]

GPIO 67

67

J2 [pin 23]

SPI_SCLK

#

J2 [pin 24]

ECSPI2_SS0

#

J2 [pin 25]

GND

-

J2 [pin 26]

ECSPI2_SS1

#

note

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).
(*) SPI and I2C & UART can also be muxed to be GPIO

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).
(*) SPI and I2C & UART can also be muxed to be GPIO


Accessing GPIO from Linux user space

General

Please have a look at WiringX, which also supports the Hummingboard:

http://wiringx.org/

Manual

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


Reserve GPIO pin

# Export GPIO XX
echo XX > /sys/class/gpio/export

Set GPIO pin Direction

echo "out" > /sys/class/gpio/gpioXX/direction
# or
echo "in" > /sys/class/gpio/gpioXX/direction

Set the value of an output pin

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

Get the value of an input pin

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

Free GPIO pin

# Unexport GPIO XX
echo XX > /sys/class/gpio/unexport

To calculate the GPIO number XX:
XX = linux gpio number = (gpio_bank - 1) * 32 + gpio_bit

Example: To calculate the GPIO number of pin header J2 [pin 12] Pad Name GPIO3_IO08

GPIO Bank = 3, GPIO bit = 8

XX = (3 - 1) * 32 + 8 = 72

note

You can take the GPIO Number from the above table (*)

You can take the GPIO Number from the above table (*)

Serial UART port access

The UART port for debug can be accessed on the 26 pin header as follows –

Pin 6/9/14/20/25 GND
Pin 1 3.3V
Pin 8 buffered i.MX6 UART TX – pulled up to 3.3v
Pin 10 buffered i.MX6 UART RX – pulled up to 3.3v
Notice that the pin number starts as pin #1 on the edge of the board, towards the micro-USB connector; then number #2 is the one towards the corner of the board.

External Links and References