Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Table of Contents

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

#

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

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

  • To control on the GPIO pins you need to calculate the GPIO number XX (*) and run the commands below:Get the current list of reserved GPIO

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


Reserve GPIO pin

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

# 

Set

...

GPIO

...

pin

...

Direction

...

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

# 

Set

...

the

...

value

...

of

...

an

...

output

...

pin

...

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

# 

Get

...

the

...

value

...

of

...

an

...

input

...

pin

...

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

Free GPIO pin

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

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

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

GPIO Bank = #######3, GPIO bit = #######8

XX = ##############

 

Attached here the header schematics

26 pin header

...

...

Header Pin

...

Pad Name

...

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

...

#

...

J2 [pin 8]

...

UART TX

...

#

...

J2 [pin 9]

...

GND

...

#

...

J2 [pin 10]

...

UART RX

...

#

...

J2 [pin 12]

...

GPIO 72

...

#

...

J2 [pin 13]

...

GPIO 71

...

#

...

J2 [pin 14]

...

GND

...

#

...

J2 [pin 15]

...

GPIO 10

...

#

...

J2 [pin 16]

...

GPIO 194*

...

#

...

J2 [pin 17]

...

3.3V

...

#

...

J2 [pin 18]

...

GPIO 195*

...

#

...

J2 [pin 19]

...

SPI_MOSI

...

#

...

J2 [pin 20]

...

GND

...

#

...

J2 [pin 21]

...

SPI_MISO

...

#

...

J2 [pin 22]

...

GPIO 67

...

#

...

J2 [pin 23]

...

SPI_SCLK

...

#

...

J2 [pin 24]

...

ECSPI2_SS0

...

#

...

J2 [pin 25]

...

GND

...

#

...

J2 [pin 26]

...

ECSPI2_SS1

...

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

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