跳到主要内容

pinmux

注意,Duo 系列的很多引脚功能是复用的,在使用应用程序(比如 wiringX, pinpong)来控制 Duo/Duo256M/DuoS 各引脚的功能时,要先确认一下引脚当前的状态是不是自己需要的功能, 如果不是,可以用duo-pinmux命令来切换为所需功能。

Duo/Duo256M 的引脚名

Duo 引脚可复用的功能请参考:Duo GPIO 引脚分配

Duo256M 引脚可复用的功能请参考:Duo256M GPIO 引脚分配

PIN NAMEPin#Pin#PIN NAME
GP0
1
40
VBUS
GP1
2
39
VSYS
GND
3
38
GND
GP2
4
37
3V3_EN
GP3
5
36
3V3(OUT)
GP4
6
35
GP5
7
34
GND
8
33
GND
GP6
9
32
GP27
GP7
10
31
GP26
GP8
11
30
RUN
GP9
12
29
GP22
GND
13
28
GND
GP10
14
27
GP21
GP11
15
26
GP20
GP12
16
25
GP19
GP13
17
24
GP18
GND
18
23
GND
GP14
19
22
GP17
GP15
20
21
GP16
 
GP25
LED

DuoS 的引脚名

DuoS 引脚可复用的功能请参考:DuoS GPIO 引脚分配

排针 J3

排针 J3 上的 GPIO 使用 3.3V 逻辑电平。

PIN NAMEPIN#PIN#PIN NAME
3V3
1
2
VSYS(5V)
B20
3
4
VSYS(5V)
B21
5
6
GND
B18
7
8
A16
GND*
9
10
A17
B11
11
12
B19
B12
13
14
GND
B22
15
16
A20
3V3
17
18
A19
B13
19
20
GND
B14
21
22
A18
B15
23
24
B16
GND
25
26
A28

GND*:引脚 9 在 DuoS V1.1 版本硬件中是一个低电平的 GPIO,在 V1.2 及更高版本硬件中为 GND。

排针 J4

排针 J4 上的 GPIO 使用 1.8V 逻辑电平。

该排针上的大部分引脚都有其专用功能,如 MIPI DSI 信号,触摸屏信号以及音频信号,如非特殊需求,不建议使用该排针上的引脚做为 GPIO 使用。

PIN NAMEPIN#PIN#PIN NAME
VSYS(5V)
52
51
AUDIO_OUT_R
B1
50
49
AUDIO_OUT_L
B2
48
47
AUDIO_IN_R
B3
46
45
AUDIO_IN_L
E2
44
43
3V3
E1
42
41
C18
E0
40
39
C19
GND
38
37
GND
C20
36
35
C16
C21
34
33
C17
GND
32
31
GND
C14
30
29
C12
C15
28
27
C13

引脚复用配置

以下以 Duo 为例介绍如何配置引脚复用。Duo256M 中使用的引脚名与 Duo 一致,DuoS 中使用的引脚名不同,参考上面表格。

直接执行 duo-pinmux 命令可以看该命令的使用方法

[root@milkv-duo]~# duo-pinmux
pinmux for duo
duo-pinmux -p <== List all pins
duo-pinmux -l <== List all pins and its func
duo-pinmux -r pin <== Get func from pin
duo-pinmux -w pin/func <== Set func to pin

比如 Duo 的物理1脚,想查看其复用状态,首先要知道该引脚的名字,在上图中已有标注,1脚的名字是GP0,查看其复用状态,用duo-pinmux -r后面加上引脚名字

[root@milkv-duo]~# duo-pinmux -r GP0
GP0 function:
[ ] JTAG_TDI
[ ] UART1_TX
[ ] UART2_TX
[ ] GP0
[v] IIC0_SCL
[ ] WG0_D0
[ ] DBG_10

可以看到当前功能为IIC0_SCL,是 I2C0 的 SCL 功能,如果要把 1 脚配置成 GPIO,可以通过以下命令设置,duo-pinmux -w 引脚名字/功能

duo-pinmux -w GP0/GP0

此时再次查看该引复用状态

[root@milkv-duo]~# duo-pinmux -r GP0
GP0 function:
[ ] JTAG_TDI
[ ] UART1_TX
[ ] UART2_TX
[v] GP0
[ ] IIC0_SCL
[ ] WG0_D0
[ ] DBG_10

看到已经配置为GP0

同样,如果要配置 1 脚为串口 UART1 的 TX,需执行

duo-pinmux -w GP0/UART1_TX

检查复用状态

[root@milkv-duo]~# duo-pinmux -r GP0
GP0 function:
[ ] JTAG_TDI
[v] UART1_TX
[ ] UART2_TX
[ ] GP0
[ ] IIC0_SCL
[ ] WG0_D0
[ ] DBG_10

符合预期

  • carbonfix
  • logan-milkv