Table of Contents

Edge2 IO GPIO header

An Edge2 IO board is needed.

Edge2 IO board 16 pins GPIO header, used for communication between board and different external devices.

Reference table

GPIO num Name Pin Pin Name GPIO num
SARADC 9 1 VCC_3V3
VCC_1V8 10 2 DEBUG_TX 13
111 SPI1_MOSI 11 3 DEBUG_RX 14
112 SPI1_MISO 12 4 GND
114 SPI1_CSO 13 5 GND
113 SPI1_CLK 14 6 MCUSWDIO
24 I2C6_SCL 15 7 MCUSWCLK
23 I2C6_SDA 16 8 VCCMCU

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