Khadas Docs

Amazing Khadas, always amazes you!

User Tools

Site Tools


Sidebar

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

This is an old revision of the document!


GPIO Header

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

Boards reference table vendor kernel

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

Edge-V

GPIO Name Physical Physical Name GPIO
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)

Edge2

GPIO Name Physical Physical Name GPIO
GND(0V) 1 21 GND(0V)
SARADC_IN4 2 22 MCU_SWDIO
1.8V 3 23 MCU_SWCLK
112 SPI1_MOSI_M1/GPIO3_C0 4 24 VCC_MCU
111 SPI1_MISO_M1/GPIO3_B7 5 25
114 SPI1_CS_M1/GPIO3_C2 6 26
113 SPI1_CLK_M1/GPIO3_C1 7 27
I2C6_SCL_M0_3V3 8 28
I2C6_SDA_M0_3V 9 29
MCU_IR_IN 10 30
PWR_KEY_IN 11 31
SARADC_IN3 12 32
VCC_3V3_S3 13 33
DEBUG_TX_3V3 14 34
DEBUG_RX_3V3 15 35
GND(0V) 16 36
PWM3_IR_M3 17 37
GND(0V) 18 38
MCU_USART2_TX 19 39
MCU_USART2_RX 20 40

Control GPIO 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.

khadas@Khadas:~$ echo 465 | sudo tee /sys/class/gpio/export 
tee: /sys/class/gpio/export: Invalid argument
Last modified: 2022/10/18 03:02 by hyphop