GPIO
操作前准备:
- 根据pin list excel中的pin name,在原理图中找到soc pin name,确认GPIO direction
- 确认当前pin default是不是GPIO,如果不是可以先在./u-boot/board/cvitek/cv18xx/board.c中透过PINMUX_CONFIG将pin切成GPIO function mode,或者也可以透过write register方式切PIN-MUX
- 根据soc pin name,在cv18xx_pinout_cn确定对应的GPIO number,由此透过shell command直接操作GPIO
- pin number枚举在gpio.h中
操作流程:
-
在控制台使用echo命令将要操作的GPIO编号export
echo N > /sys/class/gpio/export -
在控制台使用echo命令设置GPIO方向
echo in > /sys/class/gpio/gpioN/direction or echo out > /sys/class/gpio/gpioN/direction -
在控制台使用cat或echo命令查看GPIO输入值或设置GPIO输出值
cat /sys/class/gpio/gpioN/value or echo 0 > /sys/class/gpio/gpioN/value or echo 1 > /sys/class/gpio/gpioN/value -
在控制台使用echo命令将操作的GPIO编号unexport
echo N > /sys/class/gpio/unexport
验证:
- 透过shell comman对GPIO设下去的value,使用示波器或万用表确认
点板
相关文档:
- 板子原理图及位号图
- 板子pin list excel
- cv182x or cv183x datasheet
- cv18xx_PINOUT_CN excel
原理图与位号图:
- 根据原理图可以review GPIOx与各个外设的网络连接
- 根据网络名定位到SOC pad name,再根据SOC pad name在cv18xx_pinout_cn中可以找到这跟pin的register address
板子pin list:
-
pin list档案中一般有三个工作表:
- GPIO List:可以看到要bring-up外设所使用的GPIO
- I2C Mapping:可以知道使用哪一组I2C Bus
- MIPI Lane Mapping(sensor、Panel):可以直到MIPI Lane ID相关的配置
cv18xx_pinout_cn:
- 从这份文档可以看到soc pin可以支持哪些特殊功能(管脚信息表@description)、default function是什么以及pinmux对应的ID
- 如果我们需要切换pin function,可以直接操作fmux_gpio_REG_xxx,例如:devmem 0x03001188 32 0x03,三个参数分别表示:寄存器地址、位数、function从这份文档我们还可以根据pin name定位到pin number,例如下图中的pin number为GPIOC_30