Raspberry Pi GPIO的编号规范

树莓派和普通电脑不一样的地方在于它还带了17个可编程的GPIO(General Purpose Input/Output),可以用来驱动各种外设(如传感器,步进电机等)。但GPIO的编号方法有些混乱,不同的API(如wiringPi,RPi.GPIO等)对GPIO的端口号编号并不一样,下面则用图表标明了对应的叫法,这样在看程序例子的时候可以确定物理是哪个接口。

GPIO库

  1. wiringPi C,有Perl, PHP, Ruby, Node.JS和**Golang**的扩展,支持wiringPi Pin和BCM GPIO两种编号
  2. RPi.GPIO Python,支持Board Pin和BCM GPIO两种编号
  3. Webiopi,Python, 使用BCM GPIO编号
  4. WiringPi-Go, Go语言,支持以上三种编号

编号规范

  1. 第一列是wiringPi API中的缺省编号,wiringPiSetup()采用这列编号
  2. 第二列(Name)往往是转接板的编号
  3. 第三列是树莓派板子上的自然编号(左边引脚为1-15,右边引脚为2-26),RPi.GPIO.setmode(GPIO.BOARD)采用这列编号
  4. 树莓派主芯片提供商Broadcom的编号方法,相当于调用了WiringPiSetupGpio()RPi.GPIO.setmode(GPIO.BCM)采用这列编号
wiringPi PinNameBoard PinBCM GPIO
0GPIO 01117
1GPIO 11218
2GPIO 21321
3GPIO 31522
4GPIO 41623
5GPIO 51824
6GPIO 62225
7GPIO 774
8SDA30
9SCL51
10CE0248
11CE1267
12MOSI1910
13MISO219
14SCLK2311
15TXD814
16RXD1015

Rev.2 新增的引脚:

wiringPi PinNameBoard PinBCM GPIO
17GPIO 828
18GPIO 929
19GPIO1030
20GPIO1131

GPIO转接板

GPIO转接板通过彩虹排线可将树莓派的GPIO引脚转接到面包板上,方便试验,下图是一个相应的产品,可以看到每个引脚标都已标注好了名称,查上表就知道代码里该用哪个编号做参数了。

物理左排针脚说明

PinRaspberry PiBroadcom names
13.3V3.3V
3SDA0I2C0 SDA
5SCL0I2C0 SCL
7GPIO 7GPIO 4
9DNCDNC
11GPIO 0GPIO 17
13GPIO 2GPIO 21 (rev2) / GPIO 27 (rev1)
15GPIO 3GPIO 22
17DNCDNC
19SPI MOSISPI MOSI
21SPI MOSOSPI MOSO
23SPI SCLKSPI SCLK
25DNCDNC

物理左排针脚说明

PinRaspberry PiBroadcom names
25V5V
4DNCDNC
6GNDGND
8TXUART TxD
10RXUART RxD
12GPIO 1GPIO 18
14DNCDNC
16GPIO 4GPIO 23
18GPIO 5GPIO 24
20DNCDNC
22GPIO 6GPIO 25
24SP10 CEO NSP10 CEO N
26SP10 CE1 NSP10 CE1 N

Notes:

  • all the UART, SPI and I2C pins can be reconfigured as GPIO if needed.

参考

  1. http://elinux.org/RPi_Low-level_peripherals
  2. https://projects.drogon.net/raspberry-pi/wiringpi/pins/

See also