pinmux
注意,Duo 系列的很多引脚功能是复用的,在使用应用程序(比如 wiringX, pinpong)来控制 Duo/Duo256M/DuoS 各引脚的功能时,要先确认一下引脚当前的状态是不是自己需要的功能, 如果不是,可以用duo-pinmux
命令来切换为所需功能。
Duo/Duo256M 的引脚名
Duo 引脚可复用的功能请参考:Duo GPIO 引脚分配
Duo256M 引脚可复用的功能请参考:Duo256M GPIO 引脚分配
PIN NAME | Pin# | 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 NAME | PIN# | 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 NAME | PIN# | 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
符合预期