3 KiB
User Accessible GPIOs (J12)
Helios4 provide 12 GPIOs on J12 header that are free to use for user application. This header connected to 16-bit IO Expander PCA9655E using I2C bus 0.
Pin | GPIO number | Remarks |
---|---|---|
1 | - | 3.3V supply |
2 | IO0_2 | |
3 | IO0_3 | |
4 | IO0_4 | |
5 | IO0_7 | |
6 | IO1_0 | |
7 | IO1_1 | |
8 | IO1_2 | |
9 | IO1_3 | |
10 | IO1_4 | |
11 | IO1_5 | |
12 | IO1_6 | |
13 | IO1_7 | |
14 | - | GND |
!!! warning IO0_0, IO0_1, IO0_5, and IO0_6 are reserved for system use. It is not advisable to access the I2C IO expander directly using I2C.
LED Expansion (J18)
Helios4 board was designed to either use the on-board LEDs or use custom expansion panel (not-available). To use the header insure to switch to OFF the DIP switch SW2.
Pin | LED number | Remarks |
---|---|---|
1 | - | 3.3V supply |
2 | - | Not connected |
3 | LED1 | Heartbeat LED |
4 | LED2 | System Fault LED |
5 | LED3 | SATA port 1 LED |
6 | LED4 | SATA port 2 LED |
7 | LED5 | SATA port 3 LED |
8 | LED6 | SATA port 4 LED |
9 | LED7 | USB activity LED |
10 | - | GND |
Accessing GPIOs under Linux
If the kernel support debugfs (CONFIG_DEBUG_FS=y), list of GPIOs can be accessed using
sudo cat /sys/kernel/debug/gpio
and look for
gpiochip2: GPIOs XXX-YYY, parent: i2c/0-0020, pca9555, can sleep:
whereas XXX is first GPIO number and YYY is last GPIO number of IO expander.
Another way to get first GPIO number of the IO expander
cat /sys/bus/i2c/devices/0-0020/gpio/gpiochip*/base
** J12 assigned GPIO number in sysfs **
Pin | Sysfs GPIO number | Remarks |
---|---|---|
1 | - | 3.3V supply |
2 | 498 | |
3 | 499 | |
4 | 500 | |
5 | 503 | |
6 | 504 | |
7 | 505 | |
8 | 506 | |
9 | 507 | |
10 | 508 | |
11 | 509 | |
12 | 510 | |
13 | 511 | |
14 | - | GND |
!!! info The GPIO number listed on the table most likely would not changed between kernel version.
Declare GPIO number to be use.
echo N | sudo tee -a /sys/class/gpio/export
Set the direction, "out" as output and "in" as "input".
echo DIRECTION | sudo tee -a /sys/class/gpio/gpioN/direction
To read current GPIO input
cat /sys/class/gpio/gpioN/value
Write 0 or 1 to GPIO
echo VALUE | sudo tee -a /sys/class/gpio/gpioN/value
!!! notes Pay attention to the path, /sys/class/gpio/gpioN/
Example
Set IO1_7 (pin 13) output as high
echo 511 | sudo tee -a /sys/class/gpio/export
echo "out" | sudo tee -a /sys/class/gpio/gpio511/direction
echo 1 | sudo tee -a /sys/class/gpio/gpio511/value