2. cvi_pinmux工具¶
cvi_pinmux工具是算能查看和设置引脚复用工具,因为算能的引脚复用是在uboot进行初始化的,不是在设备树上进行配置,如果需要在应用层修改引脚复用就需要修改对应的寄存器,而寄存器操作比较麻烦,一不小心还可能会弄崩系统,用cvi_pinmux则能很方便且安全地切换引脚复用。
2.1. cvi_pinmux工具参数说明¶
终端命令行执行cvi_pinmux可以查看工具参数说明
1 2 3 4 5 6 7 8 | #查看参数
cvi_pinmux
#信息输出如下
./cvi_pinmux -p <== List all pins
./cvi_pinmux -l <== List all pins and its func
./cvi_pinmux -r pin <== Get func from pin
./cvi_pinmux -w pin/func <== Set func to pin
|
-p参数是列出所有引脚
-l参数是列出所有引脚复用
-r参数是获取指定引脚复用功能
-w参数是设置指定引脚复用功能
以上引脚指定是引脚总称,如下22pin引脚图:
如果是其他引脚可以通过cvi_pinmux工具或者板卡原理图进行查看。
2.1.1. 列出全部引脚¶
可以通过cvi_pinmux工具列出全部引脚,列出的是引脚的总称。
1 2 3 4 5 6 7 8 9 10 11 12 | #列出全部引脚
sudo cvi_pinmux -p
#部分输出如下
Pinlist:
CAM_MCLK0
CAM_PD0
CAM_RST0
CAM_MCLK1
CAM_PD1
IIC3_SCL
IIC3_SDA
|
2.1.2. 列出全部引脚的复用功能¶
可以通过cvi_pinmux工具列出全部引脚复用功能
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #列出全部引脚的复用功能
sudo cvi_pinmux -l
#部分输出如下
CAM_MCLK0 function:
[ ] CAM_MCLK0
[ ] AUX1
[v] XGPIOA_0
CAM_PD0 function:
[ ] IIS1_MCLK
[v] XGPIOA_1
[ ] CAM_HS0
CAM_RST0 function:
[v] XGPIOA_2
[ ] CAM_VS0
[ ] IIC4_SCL
|
带v的就是当前引脚复用的功能,例如引脚总称为CAM_MCLK0的引脚当前复用功能为XGPIOA_0,做gpio功能使用。
2.1.3. 获取指定引脚复用功能¶
例如获取22pin引脚总称为PWR_GPIO0的引脚当前的复用功能。
1 2 3 4 5 6 7 8 9 10 11 12 | #获取指定引脚复用
sudo cvi_pinmux -r PWR_GPIO0
#信息输出如下
PWR_GPIO0 function:
[v] PWR_GPIO_0
[ ] UART2_TX
[ ] PWR_UART0_RX
[ ] PWM_8
register: 0x30010a4
value: 0
|
可以看到PWR_GPIO0引脚当前复用为PWR_GPIO_0,做gpio功能,并且输出了该引脚复用寄存器对应的地址0x30010a4,寄存器值为0,对应复用func0。
2.1.4. 设置指定引脚复用功能¶
例如设置22pin引脚总称为CLK25M的引脚复用功能。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #查看引脚可以复用哪些功能
sudo cvi_pinmux -r CLK25M
#信息输出如下
CLK25M function:
[ ] CLK25M
[ ] AUX1
[ ] CV_4WTDO_CR_2WTMS
[v] PWR_GPIO_11
[ ] PWM_3
[ ] KEY_COL1
[ ] CAM_MCLK1
[ ] DBG_1
register: 0x30010b4
value: 3
|
设置该引脚功能为PWM_3,命令格式是cvi_pinmux -w 引脚总称/复用功能
1 2 3 4 5 6 7 8 | #设置CLK25M功能为PWM_3
sudo cvi_pinmux -w CLK25M/PWM_3
#信息输出如下
pin CLK25M
func PWM_3
register: 30010b4
value: 4
|
可以看到该引脚复用寄存器值修改为4,对应func4,PWM_3复用功能。