点板

156 阅读2分钟

GPIO

操作前准备:

  1. 根据pin list excel中的pin name,在原理图中找到soc pin name,确认GPIO direction
  2. 确认当前pin default是不是GPIO,如果不是可以先在./u-boot/board/cvitek/cv18xx/board.c中透过PINMUX_CONFIG将pin切成GPIO function mode,或者也可以透过write register方式切PIN-MUX
  3. 根据soc pin name,在cv18xx_pinout_cn确定对应的GPIO number,由此透过shell command直接操作GPIO
  4. pin number枚举在gpio.h中

操作流程:

  1. 在控制台使用echo命令将要操作的GPIO编号export

    echo N > /sys/class/gpio/export
    
  2. 在控制台使用echo命令设置GPIO方向

    echo in > /sys/class/gpio/gpioN/direction or echo out > /sys/class/gpio/gpioN/direction
    
  3. 在控制台使用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
    
  4. 在控制台使用echo命令将操作的GPIO编号unexport

    echo N > /sys/class/gpio/unexport
    

验证:

  • 透过shell comman对GPIO设下去的value,使用示波器或万用表确认

点板

相关文档:

  1. 板子原理图及位号图
  2. 板子pin list excel
  3. cv182x or cv183x datasheet
  4. 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

image.png