Khadas Docs

Amazing Khadas, always amazes you!

User Tools

Site Tools


Sidebar

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

VIM1 GPIO Header

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

Reference table

Linux

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

GPIO Name Physical Physical Name GPIO
5V 1 21 GND
5V 2 22 PIN.DV25 474
HUB_DM1 3 23 PIN.DV24 473
HUB_DP1 4 24 GND
GND 5 25 PIN.DV27 476
5V 6 26 PIN.DV26 475
HUB_DM2 7 27 3.3V
HUB_DP2 8 28 GND
GND 9 29 PIN.H7 423
ADC.CH0 10 30 PIN.H6 422
GND 11 31 PIN.H9 425
ADC.CH2 12 32 PIN.H8 424
420 PIN.H4 13 33 PIN.AO6 507
GND 14 34 GND
506 PIN.AO5 15 35 PIN.AO3 504
505 PIN.AO4 16 36 RTC_CLK
GND 17 37 PIN.H5 421
UART_RX / PIN.AO1 18 38 PWR_EN
UART_TX / PIN.AO2 19 39 PWM_F
3.3V 20 40 GND

Android

GPIO Name Physical Physical Name GPIO
5V 1 21 GND
5V 2 22 I2C_SCK_A
HUB_DM1 3 23 I2C_SDA_A
HUB_DP1 4 24 GND
GND 5 25 I2C_SCK_B
5V 6 26 I2C_SDA_B
HUB_DM2 7 27 3.3V
HUB_DP2 8 28 GND
GND 9 29 PIN.H7 178
ADC.CH0 10 30 PIN.H6 177
GND 11 31 PIN.H9 180
ADC.CH2 12 32 PIN.H8 179
SPDIF 13 33 PIN.AO6 151
GND 14 34 GND
UART_RX 15 35 PWM_AO_A
UART_TX 16 36 RTC_CLK
GND 17 37 PIN.H5 176
Linux_RX 18 38 PWR_EN
Linux_TX 19 39 PWM_F
3.3V 20 40 GND

Get GPIO number

If the GPIO number above changed, you can also follow the documentation to get the gpio number.

GPIO usage examples

Please make sure that the GPIOs you want to use are not configured as other functions, if they are, you can follow Device Tree Overlay to configure them as normal GPIOs.

When you get the GPIO number, you can follow the steps below to control it. Here we take GPIO number 465 as an example.

Export GPIO

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

Set-up GPIO direction

We can configure direction as input or output.

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

Set GPIO value

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

Get GPIO value

$ cat /sys/class/gpio/gpio465/value # Get GPIO input value

Unexport GPIO

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

Troubleshooting

If you got the similar error below, it means that the PIN you try to export is used for another function, you need to edit Device Tree Overlay configuration file to set the PIN as normal GPIO.

$ echo 465 | sudo tee /sys/class/gpio/export 
tee: /sys/class/gpio/export: Invalid argument
2022/06/30 00:01 · nick
Last modified: 2024/08/12 23:00 by xiong