新闻  |   论坛  |   博客  |   在线研讨会
如何配置GPIO为中断功能
TQwangbin | 2023-10-26 17:41:37    阅读:133   发布文章

本例以触摸屏中断PE18为例1.利用 sunxi_pinctrl 的 debug 节点  

挂载文件节点,并进入相应目录:mount -t debugfs none /sys/kernel/debug            
cd /sys/kernel/debug/sunxi_pinctrl            

1.1查看 pin 的配置:  

echo PE18 > sunxi_pin            
cat sunxi_pin_configure            
图片可以看见PE18被配置为中断执行下面命令cat /proc/interrupts            
   
这里可以显示从开机到现在注册的中断以及其触发次数找到gt911中断(即PE18),此处显示,开机到现在有117次中断触发:图片点击屏幕然后再次输入指令:cat /proc/interrupts            
可以看到中断次数增加图片

1.2修改 pin 为中断  

每个 pin 都有四种属性,如复用 (function),数据 (data),驱动能力 (dlevel),上下拉 (pull),    当 (function) 为0时,表示输入, 为1输出,其它功能请具体请参考《T5_Series_User Manual_V1.0(Draft).pdf》中的<10.6 port control>小节。另外,不是所有引脚都有中断功能,中断一般是(function)6执行下面命令cat /proc/interrupts            
这里可以显示从开机到现在注册的中断以及其触发次数找到gt911中断(即PE18),此处显示,开机到现在有117次中断触发:图片点击屏幕然后再次输入指令:cat /proc/interrupts            
可以看到中断次数增加    图片将PE18修改为输出模式:echo PE18 1 > function  //将PE18设置成输出            
cat sunxi_pin_configure  //查看修改情况            
点击屏幕然后再次输入指令:cat /proc/interrupts            
发现中断次数不再变化图片将PE18修改为中断模式:    echo PE18 6 > function  //将PE18设置成输出            
cat sunxi_pin_configure  //查看修改情况            
点击屏幕然后再次输入指令:cat /proc/interrupts            
发现中断次数变化图片

2.在设备树中  

gpio口对应手册《T5_Series_User Manual_V1.0(Draft).pdff》的<10.6port control>小节,请参考手册来阅读。对应驱动为与 dts 为:kernel/linux-4.9/arch/arm64/boot/dts/sunxi/sun50iw9p1-pinctrl.dtsi            
kernel/linux-4.9/drivers/pinctrl/sunxi/pinctrl-sun50iw9p1.c            
kernel/linux-4.9/drivers/pinctrl/sunxi/pinctrl-sun50iw9p1-r.c            
kernel/linux-4.9/drivers/pinctrl/sunxi/pinctrl-sunxi.c            
   
要添加或者修改 io 口时,可以通过 dts 文件, 一般在 dts 中引脚以以下方式出现 :goodix_int = <&pio PE 18 1 0 1 0>;            
其具体格式为:name = <&pio P[A-I] [0-32]   func  drv_level pull value>;            
其中: name:驱动中使用的名子  [A-I]:表示端口号 [0-32]:表示此端口中的引脚号 <func>:表示此引脚要用作的功能,0 为输入,1 为输出,其它功能请具体请参考《T5_Series_User Manual_V1.0(Draft).pdf》中的<10.6 port control>小节。另外,不是所有引脚都有中断功能,中断一般是 func6,具体见手册。当找不到对应功能时(如常见的 func 7)表io disabled。 <pull>:是否使用上拉,0:不上下拉,1:上拉,2:下拉 <drv_level>:驱动能力(上下拉力度),可取值 0~3,越高驱动能越高。 <value>:io 的初始值如果把引脚配置为中断功能,一般在上写上6。另外,不是所有引脚都有中断功能,中断一般是 func6,具体见手册。图片下图是触摸屏中断引脚配置图片图片图片


-END-


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客