Khadas Docs

Amazing Khadas, always amazes you!

User Tools

Site Tools


Sidebar

products:sbc:vim3:applications:gpio:40pin-header

This is an old revision of the document!


VIM3/3L GPIO Header

Reference table

5.15

GPIO num Name Pin Pin Name GPIO num
5V 1 21 GND
5V 2 22 PIN.A15 491
USB_DM 3 23 PIN.A14 490
USB_DP 4 24 GND
GND 5 25 PIN.AO2 414
MCU3V3 6 26 PIN.AO3 415
MCUNRST 7 27 3V3
MCUSWIM 8 28 GND
GND 9 29 PIN.A1 477
ADC0 10 30 PIN.A0 476
1V8 11 31 PIN.A3 479
ADC1 12 32 PIN.A2 478
422 PIN.AO10 13 33 PIN.A4 480
GND 14 34 GND
449 PIN.H6 15 35 PWM-F 448
450 PIN.H7 16 36 RTC
GND 17 37 PIN.H4 431
UART_RX / PIN.AO1 18 38 MCU-FA1
UART_TX / PIN.AO0 19 39 PIN.Z15 442
3V3 20 40 GND

4.9

GPIO num Name Pin Pin Name GPIO num
5V 1 21 GND
5V 2 22 PIN.A15 475
USB_DM 3 23 PIN.A14 474
USB_DP 4 24 GND
GND 5 25 PIN.AO2 498
MCU3V3 6 26 PIN.AO3 499
MCUNRST 7 27 3V3
MCUSWIM 8 28 GND
GND 9 29 PIN.A1 461
ADC0 10 30 PIN.A0 460
1V8 11 31 PIN.A3 463
ADC1 12 32 PIN.A2 462
506 PIN.AO10 13 33 PIN.A4 464
GND 14 34 GND
433 PIN.H6 15 35 PWM-F 432
434 PIN.H7 16 36 RTC
GND 17 37 PIN.H4 431
UART_RX / PIN.AO1 18 38 MCU-FA1
UART_TX / PIN.AO0 19 39 PIN.Z15 426
3V3 20 40 GND

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
Last modified: 2023/11/07 04:31 by nick