Please enable javascript, or click here to visit my ecommerce web site powered by Shopify.
Jump to: navigation, search

Difference between revisions of "Rockpi4/hardware/gpio"

(GPIO number: try to simplify calculation)
 
(4 intermediate revisions by 3 users not shown)
Line 8: Line 8:
  
 
ROCK Pi 4 has a 40-pin expansion header. Each pin is distinguished by color.
 
ROCK Pi 4 has a 40-pin expansion header. Each pin is distinguished by color.
 
 
{| class="wikitable"
 
{| class="wikitable"
 
! GPIO number || Function2 || Function1 ||  GPIO ||  Pin# || || Pin# || GPIO || Function1 || Function2 || GPIO number
 
! GPIO number || Function2 || Function1 ||  GPIO ||  Pin# || || Pin# || GPIO || Function1 || Function2 || GPIO number
Line 18: Line 17:
 
| 72 || || I2C7_SCL || GPIO2_B0 || style="background:green; color:white"| 5 || || style="background:black; color:white"| 6 ||  || GND ||  ||
 
| 72 || || I2C7_SCL || GPIO2_B0 || style="background:green; color:white"| 5 || || style="background:black; color:white"| 6 ||  || GND ||  ||
 
|-
 
|-
| 75 || || SPI2_CLK || GPIO2_B3 || style="background:green; color:white"| 7 || || style="background:green; color:white"| 8 || GPIO4_C4 || style="background:orange"|DEBUG_TXD ||  || 148
+
| 75 || || SPI2_CLK || GPIO2_B3 || style="background:green; color:white"| 7 || || style="background:green; color:white"| 8 || GPIO4_C4 || style="background:orange"|UART2_TXD ||  || 148
 
|-
 
|-
| || ||  GND ||  || style="background:black; color:white"| 9 || || style="background:green; color:white"|10 || GPIO4_C3 || style="background:orange"|DEBUG_RXD ||  || 147
+
| || ||  GND ||  || style="background:black; color:white"| 9 || || style="background:green; color:white"|10 || GPIO4_C3 || style="background:orange"|UART2_RXD ||  || 147
 
|-
 
|-
 
|146  || ||  PWM0 || GPIO4_C2 || style="background:green; color:white"|11 || || style="background:green; color:white"|12 || GPIO4_A3 || I2S1_SCLK ||  || 131
 
|146  || ||  PWM0 || GPIO4_C2 || style="background:green; color:white"|11 || || style="background:green; color:white"|12 || GPIO4_A3 || I2S1_SCLK ||  || 131
Line 30: Line 29:
 
| || ||  +3.3V || || style="background:yellow"|17 || || style="background:green; color:white"|18 || GPIO4_D4 || ||  || 156
 
| || ||  +3.3V || || style="background:yellow"|17 || || style="background:green; color:white"|18 || GPIO4_D4 || ||  || 156
 
|-
 
|-
|40 || UART4_TXD ||  SPI1_TXD || GPIO1_B0 || style="background:green; color:white"|19 ||  ||style="background:black; color:white"|20 || || GND ||  ||  
+
|40 || UART4_TXD ||  style="background:orange"|SPI1_TXD || GPIO1_B0 || style="background:green; color:white"|19 ||  ||style="background:black; color:white"|20 || || GND ||  ||  
 
|-
 
|-
|15 || UART4_RXD || SPI1_RXD || GPIO1_A7  || style="background:green; color:white"|21  ||  || style="background:green; color:white"|22  || GPIO4_D5  ||  || || 157
+
|39 || UART4_RXD || style="background:orange"|SPI1_RXD || GPIO1_A7  || style="background:green; color:white"|21  ||  || style="background:green; color:white"|22  || GPIO4_D5  ||  || || 157
 
|-
 
|-
|41 || ||  SPI1_CLK || GPIO1_B1 || style="background:green; color:white"|23 ||  || style="background:green; color:white"|24 || GPIO1_B2  || SPI1_CSn  ||  || 42
+
|41 || ||  style="background:orange"|SPI1_CLK || GPIO1_B1 || style="background:green; color:white"|23 ||  || style="background:green; color:white"|24 || GPIO1_B2  || style="background:orange"|SPI1_CSn  ||  || 42
 
|-
 
|-
 
| || ||  GND  ||  || style="background:black; color:white"|25  ||  || style="background:green; color:white"|26 ||  || ADC_IN0 ||  ||
 
| || ||  GND  ||  || style="background:black; color:white"|25  ||  || style="background:green; color:white"|26 ||  || ADC_IN0 ||  ||
Line 52: Line 51:
 
| || ||  GND ||  || style="background:black; color:white"|39  ||  ||style="background:green; color:white"|40  || GPIO4_A7 || I2S1_SDO ||  || 135
 
| || ||  GND ||  || style="background:black; color:white"|39  ||  ||style="background:green; color:white"|40  || GPIO4_A7 || I2S1_SDO ||  || 135
 
|}
 
|}
 +
 +
==== More details about 40-pin Header ====
 +
* Function marked with color orange is the default function of this pin.
 +
* Except Pins for power supply, all pins are laid out directly to Soc RK3399.
 +
* For pin 3, 5, 27, 28, 29 and 31, each pin is connected to the 3.0V supply through a 4.7K pull-up resistor.
 +
* Pin 19, 21, 23, 24 are laid out directly to the pins of SPI device on board.
 +
* Pin 7 is laid out directly to the pin of MIPI CSI on board.
 +
* UART
 +
** UART2 is enabled as U-boot and Linux serial console by default. Check [[Rockpi4/dev/serial-console]] to use. Check [[Rockpi4/hardware/devtree_overlays]] to disable serial console on UART2.
 +
** UART2 & UART4 support a wide range of baud rate. It includes but not is not limited to the following baud rates. For instance, 115200bps. 500000bps, 1500000bps and so on.
 +
** For v1.4 and later hardware, on board SPI flash is soldered, UART4 PINs are used as SPI function.
 +
* For I2C-2 and I2C-7
 +
** We have do the test using the i2c device e2prom. We  need to open the i2c device file, and then do the read or write operation.
 +
 +
  
 
=== IO Voltage ===
 
=== IO Voltage ===
Line 83: Line 97:
 
     GPIO4_D5 = 4*32 + 3*8 + 5 = 157
 
     GPIO4_D5 = 4*32 + 3*8 + 5 = 157
 
     (A=0, B=1, C=2, D=3)
 
     (A=0, B=1, C=2, D=3)
 +
 +
[[File:Screenshot_2020-04-12_01-06-09.png|800px]]
  
 
To set GPIO4_D5 output
 
To set GPIO4_D5 output

Latest revision as of 09:07, 17 April 2020

    ROCK Pi 4 >  Hardware >  GPIO


General purpose input-output (GPIO) connector

ROCK Pi 4 has a 40-pin expansion header. Each pin is distinguished by color.

GPIO number Function2 Function1 GPIO Pin# Pin# GPIO Function1 Function2 GPIO number
+3.3V 1 2 +5.0V
71 I2C7_SDA GPIO2_A7 3 4 +5.0V
72 I2C7_SCL GPIO2_B0 5 6 GND
75 SPI2_CLK GPIO2_B3 7 8 GPIO4_C4 UART2_TXD 148
GND 9 10 GPIO4_C3 UART2_RXD 147
146 PWM0 GPIO4_C2 11 12 GPIO4_A3 I2S1_SCLK 131
150 PWM1 GPIO4_C6 13 14 GND
149 SPDIF_TX GPIO4_C5 15 16 GPIO4_D2 154
+3.3V 17 18 GPIO4_D4 156
40 UART4_TXD SPI1_TXD GPIO1_B0 19 20 GND
39 UART4_RXD SPI1_RXD GPIO1_A7 21 22 GPIO4_D5 157
41 SPI1_CLK GPIO1_B1 23 24 GPIO1_B2 SPI1_CSn 42
GND 25 26 ADC_IN0
64 I2C2_SDA GPIO2_A0 27 28 GPIO2_A1 I2C2_CLK 65
74 I2C6_SCL SPI2_TXD GPIO2_B2 29 30 GND
73 I2C6_SDA SPI2_RXD GPIO2_B1 31 32 GPIO3_C0 SPDIF_TX UART3_CTSn 112
76 SPI2_CSn GPIO2_B4 33 34 GND
133 I2S1_LRCK_TX GPIO4_A5 35 36 GPIO4_A4 I2S1_LRCK_RX 132
158 GPIO4_D6 37 38 GPIO4_A6 I2S1_SDI 134
GND 39 40 GPIO4_A7 I2S1_SDO 135

More details about 40-pin Header

  • Function marked with color orange is the default function of this pin.
  • Except Pins for power supply, all pins are laid out directly to Soc RK3399.
  • For pin 3, 5, 27, 28, 29 and 31, each pin is connected to the 3.0V supply through a 4.7K pull-up resistor.
  • Pin 19, 21, 23, 24 are laid out directly to the pins of SPI device on board.
  • Pin 7 is laid out directly to the pin of MIPI CSI on board.
  • UART
    • UART2 is enabled as U-boot and Linux serial console by default. Check Rockpi4/dev/serial-console to use. Check Rockpi4/hardware/devtree_overlays to disable serial console on UART2.
    • UART2 & UART4 support a wide range of baud rate. It includes but not is not limited to the following baud rates. For instance, 115200bps. 500000bps, 1500000bps and so on.
    • For v1.4 and later hardware, on board SPI flash is soldered, UART4 PINs are used as SPI function.
  • For I2C-2 and I2C-7
    • We have do the test using the i2c device e2prom. We need to open the i2c device file, and then do the read or write operation.


IO Voltage

RK3399 have three IO voltages, 1.8V/3.0V/3.3V. For ROCK Pi 4, below is the default voltage:

| GPIO       | Voltage Level | Tolerance |
| ---------- | ------------- | --------- |
| GPIO3_C0   | 3.3V          | 3.465V    |
| ADC_IN0    | 1.8V          | 1.98V     |
| Other GPIO | 3.0V          | 3.14V     |



GPIO number

Rockchip RK3399 GPIO has 5 banks, GPIO0 to GPIO4, each bank has 32pins, naming as below:

   GPIO0_A0 ~ A7 
   GPIO0_B0 ~ B7
   GPIO0_C0 ~ C7
   GPIO0_D0 ~ D7
   
   GPIO1_A0 ~ A7
   ....
   GPIO1_D0 ~ D7

For Rockchip 4.4 kernel, the GPIO number can be calculated as below, take GPIO4_D5 (PIN22 on 40PIN GPIO) as an example:

   GPIO4_D5 = 4*32 + 3*8 + 5 = 157
   (A=0, B=1, C=2, D=3)

Screenshot 2020-04-12 01-06-09.png

To set GPIO4_D5 output

   cd /sys/class/gpio
   echo 157 > export
   cd gpio157
   echo out > direction
   echo 1 > value     # output high
   echo 0 > value     # output low

GPIO Libraries/API

Install Libmraa