gpio的复用

2020-10-30 13:47| 发布者: xhh| 查看: 1878| 评论: 0

类目: i.MX8MM系列产品  >  Linux     文档编号: 432

以复用UART3的TXD复用成GPIO

步骤1:

到imx8mm/OK8MM-linux-sdk/OK8MM-linux-kernel/include/dt-bindings/pinctrl/pins-imx8mm.h

文件中找打要复用的引脚的宏定义,如下

UART3_TXD是原本的引脚功能名字,GPIO5_IO27是它要复用的引脚功能名字

步骤2:

在设备树添加选项:需要手动添加图中的pinctr_hog_1函数,函数体中的变量就是上一步找到的宏定义,后跟的值是根据您的需求设置的

这个值的设置的是根据核心板手册,搜索IOMUXC——SW_PAD_CTL_PAD_UART3_TXD,此章节有寄存器的设置

步骤3:

把设备树中复用了UART3_TXD的引脚的函数都disable了

步骤4:

编译、烧写

步骤5:测试

a. 计算对应 sys/class/gpio 的值 :GPIOn_IOx = (n-1)*32 + x

如GPIO5_IO27,则利用上公时计算:GPIO5_IO27=(5-1)*32+27= 155

b.将 GPIO5_IO27 设置为输出。

echo 155 > /sys/class/gpio/export 用于通知系统需要导出控制的 GPIO 引脚编号

echo "out" > /sys/class/gpio/gpio155/direction 控制为输出

echo "1" > /sys/class/gpio/gpio155/value 输出为高电平

或者 echo "0" > /sys/class/gpio/gpio155/value 输出为低电平

echo 155 > /sys/class/gpio/unexport 通知系统取消导出

c 将 GPIO5_IO27 设置为输入。

echo 155 > /sys/class/gpio/export 用于通知系统需要导出控制的 GPIO 引脚编号

echo "in" > /sys/class/gpio/gpio155/direction 控制为输入

这时给该引脚接高电平,输入即为高电平,反之为低电平

echo 155 > /sys/class/gpio/unexport 通知系统取消导出

d 另外客户可以自己通过 shell 文件来控制多个 gpio 做为输入或者输出


已解决

未解决

只是看看

最新评论