LinuxGPIO操作和MTK平台GPIO
发布日期:2021-06-30 18:45:07 浏览次数:3 分类:技术文章

本文共 1744 字,大约阅读时间需要 5 分钟。

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_gpioPIN: [MODE] [DIR] [DOUT] [DIN] [PULL_EN] [PULL_SEL] [IES] [SMT] [DRIVE] ( [R1] [R0] )0: 2100101001: 2100101002: 0100101003: 0001111004: 2100101005: 2100101006: 2100101007: 0111101008: 0000001009: 01111010010: 010010100.......................119: 100111112 01120: 100111112 01121: 00001010ffffffff122: 10001010ffffffff123: 10001010ffffffff124: 10001010ffffffff

#所有的GPIO口配置信息都能看到,其中每一位的含义如下

  • [MODE]:每个GPIO可以配置的模式可以参考这个头文件kernel-4.4/arch/arm64/boot/dts/mediatek/mt8167-pinfunc.h

  • [DIR]:0=输入;1=输出

  • [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 R00 1表示disable R1,enable R01 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学习资料

转载地址:https://linus.blog.csdn.net/article/details/105760139 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Linux cpu亲和力
下一篇:让这个该死的服务跑起来了~

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年04月18日 03时28分43秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

企业邮箱如何申请注册,邮箱申请如何免费注册? 2019-04-30
微信企业邮箱,手机邮箱格式地址怎么写? 2019-04-30
公司如何申请企业邮箱,公司邮箱怎么申请,公司企业邮箱哪个好? 2019-04-30
电子邮箱账号怎么申请,怎样申请邮箱账号呢 2019-04-30
邮箱怎么发邮件,邮件发信量多少,职场新人怎么发汇报邮件呢? 2019-04-30
maven 多层次pom 新引入包,编译成功,还是没有将包引入到本地 2019-04-30
leetCode2 两数相加 2019-04-30
【工具使用】使用pip与conda安装、更新与卸载Pytorch和torchvision 2019-04-30
【深度学习笔记】batchsize, time step(iteration), epoch 区别与联系 2019-04-30
【解决错误】ModuleNotFoundError No module named matplotlib 2019-04-30
【工具使用】Google免费云环境Colaboratory使用 2019-04-30
【深度学习笔记】卷积层,全连接层,池化层的相关输出参数计算 2019-04-30
【NLP学习笔记】文本分类概述 2019-04-30
【深度学习笔记】文本分类 2019-04-30
【转载】炼丹实验室:深度学习网络调参技巧 2019-04-30
【论文阅读笔记】Graph Convolutional Networks for Text Classification 2019-04-30
【论文阅读笔记】文本分类论文汇总 2019-04-30
【论文阅读笔记】Convolutional Neural Networks for Sentence Classification 2019-04-30
【NLP学习笔记】One-hot encoding:独热编码 2019-04-30
【工具使用】CSDN编辑器markdown字体、颜色与字号的设置 2019-04-30