freewing 发表于 2021-6-3 09:02:03

如何将被驱动占用引脚配置为普通GPIO

【导语】本文使用的是TQIMX6Q_coreC,CPU是IMX6Q,内核版本4.1.15,以下使用 EIM_D28接口为例介绍修改一个已经被驱动占用的管脚,将其配置为普通可控GPIO。天嵌其他NXP系列板卡GPIO修改方式基本一致,供参考。具体步骤如下:1. 查看底板原理图,EIM_D28为核心板175引脚,搜索可知其为UART功能2. 打开内核源码arch/arm/boot/dts/imx6q-pinfunc.h,搜索EIM_D28,看出其对应的GPIO是GPIO3_IO28管脚,复制MX6QDL_PAD_EIM_D28__GPIO3_IO283. 打开arch/arm/boot/dts/目录下的,imx6qdl-sabresd.dtsi(imx6q corec板卡使用)、e9v2qdl-sabresd.dtsi(e9v2 板卡使用)、e9v3qdl-sabresd.dtsi(e9v3板卡使用)设备树文件,搜索 EIM_D28pinctrl_uart2: uart2grp {             fsl,pins = <               MX6QDL_PAD_EIM_D26__UART2_TX_DATA0x1b0b1               MX6QDL_PAD_EIM_D27__UART2_RX_DATA0x1b0b1                      MX6QDL_PAD_EIM_D28__UART2_CTS_B0x1b0b1            MX6QDL_PAD_EIM_D29__UART2_RTS_B0x1b0b1 可知EIM_D28被配置为UART2搜索pinctrl_uart2将其注释掉或者将ststus修改为disabled&uart2 {       pinctrl-names = "default";       pinctrl-0 = <&pinctrl_uart2>;       status = "disabled";};4.搜索imx6qdl-sabresd,在组里面添加步骤1搜索到的GPIO配置,MX6QDL_PAD_EIM_D28__GPIO3_IO28imx6qdl-sabresd{       pinctrl_hog: hoggrp {            fsl,pins= <            ..                     MX6QDL_PAD_EIM_D28__GPIO3_IO280x80000000   /*AWDEIM_D28*/                     MX6QDL_PAD_EIM_D29__GPIO3_IO290x80000000   /*AWDEIM_D29*/                     MX6QDL_PAD_SD3_DAT2__GPIO7_IO060x80000000/*AWDSD3_DAT2*/                     MX6QDL_PAD_SD3_DAT3__GPIO7_IO070x80000000/*AWDSD3_DAT3*/                     MX6QDL_PAD_SD3_CMD__GPIO7_IO02 0x80000000   /*AWD SD3_CMD*/                     MX6QDL_PAD_EIM_A25__GPIO5_IO02 0x80000000    /*AWD EIM_A25*/                     MX6QDL_PAD_SD3_CLK__GPIO7_IO03 0x80000000    /*AWD SD3_CLK*/                     MX6QDL_PAD_SD3_DAT0__GPIO7_IO040x80000000/*AWDSD3_DAT0*/                     MX6QDL_PAD_SD3_DAT1__GPIO7_IO050x80000000/*AWDSD3_DAT1*/                     MX6QDL_PAD_SD1_DAT1__GPIO1_IO170x80000000       /*AWDPWM3*/                     MX6QDL_PAD_SD1_CMD__GPIO1_IO18 0x80000000   /*AWD PWM4*/            >;       };5.重新编译,替换修改后的设备树到板子即可6.编号计算:引脚编号 = 控制引脚的寄存器基数 + 控制引脚寄存器位数举例:GPIO为GPIO1_28,引脚编号为32*(1-1)+28=28GPIO为GPIO3_28,引脚编号为32*(3-1)+28=92应用层命令测试:echo 92 > /sys/class/gpio/export                         //将引脚导入应用层,生成相应gpio节点echo "out" >/sys/class/gpio/gpio92/direction       //设置输入输出方向,out为输出,in为输入echo 1 > /sys/class/gpio/gpio92/value                  //设置输出高电平echo 0 > /sys/class/gpio/gpio92/value                  //设置输出低电平使用万用表测量设置输出电平是否有效,测量与输出电平一致说明该GPIO引脚可控。
页: [1]
查看完整版本: 如何将被驱动占用引脚配置为普通GPIO