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复用功能。