LinuxGPIO操作和MTK平台GPIO
GPIO口配置是一个历史性的问题,不管我们使用什么MCU,单片机也好,ARM也好,都离不开驱动GPIO口。Linux下有一个宏,GPIO_GPIO_SYSFS,打开这个宏后,编译烧录到设备端,去看看sys/class/gpio/这个目录。你会发现很多惊喜。
虽然是一个小知识点,但是我觉得对做Linux和安卓驱动开发的同学非常有用,当别人问你怎么操作一个GPIO口的时候,你不妨直接把这个链接发给他。
#GPIO_GPIO_SYSFS打开后,GPIO基本操作
导出 /sys/class/gpio# echo 12> export
设置方向 /sys/class/gpio/gpio12# echo out > direction
查看方向 /sys/class/gpio/gpio12# cat direction
设置输出 /sys/class/gpio/gpio12# echo 1 > value
查看输出值 /sys/class/gpio/gpio12# cat value
取消导出 /sys/class/gpio# echo 12> unexport
#MTK平台提供节点给我们在命令行下对GPIO口进行配置,节点如下
MTK的GPIO口有点奇怪,他需要一个excel表格来对比后才能知道GPIO口是哪个。
比如:
AB2对应的是UART1的RX,对应的GPIO口编号是64。这个EXCEL表格我就不给出来了,因为不同的CPU的GPIO口标号也是有所不同。
mtk8167_bsp:/sys/devices/platform/soc/1000b000.pinctrl # cat mt_gpio PIN: [MODE] [DIR] [DOUT] [DIN] [PULL_EN] [PULL_SEL] [IES] [SMT] [DRIVE] ( [R1] [R0] ) 0: 210010100 1: 210010100 2: 010010100 3: 000111100 4: 210010100 5: 210010100 6: 210010100 7: 011110100 8: 000000100 9: 011110100 10: 010010100 ....................... 119: 100111112 01 120: 100111112 01 121: 00001010ffffffff 122: 10001010ffffffff 123: 10001010ffffffff 124: 10001010ffffffff
#所有的GPIO口配置信息都能看到,其中每一位的含义如下
- [p][MODE]:每个GPIO可以配置的模式可以参考这个头文件kernel-4.4/arch/arm64/boot/dts/mediatek/mt8167-pinfunc.h
- [DIR]:0=输入;1=输出[/p]
[DOUT]:作为输出引脚的高低电平,0=低;1=高
[DIN]:输入引脚的电平
[PULL_EN]:是指GPIO是否使能上拉或下拉,只有当GPIO作为输入模式时才生效
[PULL_SEL]:上面只设置了是否使能上拉或下拉,但并没有指出到底是上拉还是下拉。0=下拉;1=上拉
[IES]:输入使能,控制输入是否有效。
[SMT]:是否使能斯密特触发器
[DRIVE]:驱动能力,一般可取值0~7
( [R1] [R0] ):
当前GPIO pin的(上下拉)并联电阻的使能状态
1 0表示enable R1,disable R0 0 1表示disable R1,enable R0 1 1表示enable R1, enable R0不打印出来,表示当前的GPIO pin不支持PUPD状况,即只有一个上拉电阻、一个下拉电阻。
#示例
一般作为GPIO模式的时候,可以这么调试:
echo mode 66 0 > mt_gpio /*设置66号位IO模式*/ echo dir 66 1 > mt_gpio /*设置66号 io为输出方向*/ echo out 66 1 > mt_gpio /*拉高66号io*/回复「 篮球的大肚子」进入技术群聊
回复「1024」获取1000G学习资料 写代码的篮球球痴 博客专家 原创文章 435获赞 1136访问量 90万+ 关注 他的留言板
- A10平台linux下操作GPIO的两种方法(python库)
- linux下i386平台gpio端口操作
- 这一个在OMAP3530/DM3730 ARM A8平台上,LINUX系统下,对GPIO的操作
- linux下操作gpio寄存器的方法
- 三星s3c24xx平台GPIO操作详解
- MTK MODEM(1)--- MTK平台NV基本功能与操作
- MySQL命令操作(Linux平台)
- LINUX 2440-GPIO操作 .
- Linux下用文件IO的方式操作GPIO(/sys/class/gpio)
- Linux下s3c6410的GPIO操作(4)
- linux中通用GPIO接口的操作--文件IO方式
- MySQL命令操作(Linux平台)
- 嵌入式 Linux平台mysql相关操作
- 在Linux平台中调试C/C++内存泄漏方法 (腾讯和MTK面试的时候问到的)
- Linux 下操作GPIO(两种方法,驱动和mmap)(转载)
- MTK平台查看修改GPIO状态
- Linux应用层直接操作GPIO
- MySQL命令操作(Linux平台)
- 嵌入式linux下操作GPIO
- LINUX 2440-GPIO操作