Table of Contents

Edge1 GPIO Header

Universal GPIO 40 pins board header, used for communication between board and different external devices.

Reference table

Current GPIO numbers valid for vendor kernel only. Mainline linux kernel GPIO numbers will be different…

GPIO num Name Pin Pin Name GPIO num
5V 1 21 GND (0V)
5V 2 22 SPI3_RXD / I2C0_SCK / GPIO1_C0 48
HOST1_DM 3 23 SPI3_TXD / I2C0_SDA / GPIO1_B7 47
HOST1_DP 4 24 GND (0V)
GND (0V) 5 25 I2C2_SCL / GPIO2_A1 65
MCU_TX 6 26 I2C2_SDA / GPIO2_A0 64
MCU_NRST 7 27 3.3V
MCU_SWIM 8 28 GND (0V)
GND (0V) 9 29 I2S0_SCLK / GPIO3_D0 120
ADC_IN2 10 30 I2S_CLK / GPIO4_A0 128
1.8V 11 31 I2S0_SDO0 / GPIO3_D7 127
ADC_IN3 12 32 2S0_LRCK_TX / GPIO3_D2 122
112 SPDIF / GPIO3_C0 13 33 I2S0_SDI0 / GPIO3_D3 123
GND (0V) 14 34 GND (0V)
50 SPI3_CS / GPIO1_C2 15 35 I2S0_SDI3SDO1 / GPIO3_D6 126
49 SPI3_CLK / GPIO1_C1 16 36 2S0_SDI2SDO2 / GPIO3_D5 125
GND (0V) 17 37 I2S0_SDI1SDO3 / GPIO3_D4 124
UART_RX 18 38 I2S0_LRCK_RX / GPIO3_D1 121
UART_TX 19 39 MCU_PA1
3.3V 20 40 GND (0V)

GPIO Usage Examples

Before using a GPIO, ensure it is not configured for another function (e.g., I2C, SPI). If it is, you can reconfigure it as a standard GPIO by applying a Device Tree Overlay.

Once you have identified the correct GPIO number (e.g., 465), follow these steps to control it via the sysfs interface.

Export GPIO

Make the GPIO accessible to user space:

$ echo 465 | sudo tee /sys/class/gpio/export

Set GPIO Direction

Configure the GPIO as either an input or an output:

# Set GPIO output
$ echo out | sudo tee /sys/class/gpio/gpio465/direction 
 
# Set GPIO input
$ echo in  | sudo tee /sys/class/gpio/gpio465/direction 

Set GPIO value

If configured as an output, you can set its logic level:

# Set GPIO output high
$ echo 1 | sudo tee /sys/class/gpio/gpio465/value 
 
# Set GPIO output low
$ echo 0 | sudo tee /sys/class/gpio/gpio465/value 

Read GPIO Input value

If configured as an input, read its current logic level:

$ cat /sys/class/gpio/gpio465/value

The command returns 0 (low) or 1 (high).

Unexport GPIO

When finished, release the GPIO:

$ echo 465 | sudo tee /sys/class/gpio/unexport

Troubleshooting

If you encounter an error similar to the following when exporting, the GPIO pin is likely reserved for another function (e.g., by the device tree):

echo 465 | sudo tee /sys/class/gpio/export
tee: /sys/class/gpio/export: Invalid argument

Solution: Modify the Device Tree Overlay configuration to free the pin and define it as a standard GPIO.

2022/06/30 00:01 · nick