树莓派和普通电脑不一样的地方在于它还带了17个可编程的GPIO(General Purpose Input/Output),可以用来驱动各种外设(如传感器,步进电机等)。但GPIO的编号方法有些混乱,不同的API(如wiringPi,RPi.GPIO等)对GPIO的端口号编号并不一样,下面则用图表标明了对应的叫法,这样在看程序例子的时候可以确定物理是哪个接口。
GPIO库
- wiringPi C,有Perl, PHP, Ruby, Node.JS和Golang的扩展,支持wiringPi Pin和BCM GPIO两种编号
- RPi.GPIO Python,支持Board Pin和BCM GPIO两种编号
- Webiopi,Python, 使用BCM GPIO编号
- WiringPi-Go, Go语言,支持以上三种编号
编号规范
- 第一列是wiringPi API中的缺省编号,
wiringPiSetup()
采用这列编号 - 第二列(Name)往往是转接板的编号
- 第三列是树莓派板子上的自然编号(左边引脚为1-15,右边引脚为2-26),
RPi.GPIO.setmode(GPIO.BOARD)
采用这列编号 - 树莓派主芯片提供商Broadcom的编号方法,相当于调用了
WiringPiSetupGpio()
或RPi.GPIO.setmode(GPIO.BCM)
采用这列编号
wiringPi Pin | Name | Board Pin | BCM GPIO |
0 | GPIO 0 | 11 | 17 |
1 | GPIO 1 | 12 | 18 |
2 | GPIO 2 | 13 | 21 |
3 | GPIO 3 | 15 | 22 |
4 | GPIO 4 | 16 | 23 |
5 | GPIO 5 | 18 | 24 |
6 | GPIO 6 | 22 | 25 |
7 | GPIO 7 | 7 | 4 |
8 | SDA | 3 | 0 |
9 | SCL | 5 | 1 |
10 | CE0 | 24 | 8 |
11 | CE1 | 26 | 7 |
12 | MOSI | 19 | 10 |
13 | MISO | 21 | 9 |
14 | SCLK | 23 | 11 |
15 | TXD | 8 | 14 |
16 | RXD | 10 | 15 |
Rev.2 新增的引脚:
wiringPi Pin | Name | Board Pin | BCM GPIO |
17 | GPIO 8 | 28 | |
18 | GPIO 9 | 29 | |
19 | GPIO10 | 30 | |
20 | GPIO11 | 31 |