A40i/T3pro 从应用层利用debugfs动态配置GPIO

先说结论,利用debugfs进行操作

1. 挂载及进入挂载的路径

mount -t debugfs debug /proc/sys/debug
cd /proc/sys/debug/sunxi_pinctrl

2. ls看一下

 
# ls -l

-rw-rw-r--    1 root     root             0 Jan  1  1970 data
-rw-rw-r--    1 root     root             0 Jan  1  1970 dlevel
-rw-rw-r--    1 root     root             0 Jan  1  1970 function
-rw-rw-r--    1 root     root             0 Jan  1  1970 platform
-rw-rw-r--    1 root     root             0 Jan  1  1970 pull
-rw-rw-r--    1 root     root             0 Jan  1  1970 sunxi_pin
-rw-rw-r--    1 root     root             0 Jan  1  1970 sunxi_pin_configure

节点介绍:

data                              // 引脚当前的电平状态(一般情况下,0为低电平,1为高电平)

                                        但有些芯片配置,起来时会将0和1所代表的的状态进行改变。

dlevel                            // 引脚的驱动等级(结合芯片手册,A40i/T3pro驱动等级为0,1,2,3)

function                         // 引脚的功能配置(结合芯片手册, 0为输入\ 1位输出 \ 其他功能复用)

platform                        // 当前平台

pull                                // 上下拉功能配置(此处的上下拉指引脚内部的上下拉配置,不是

                                        指输出的高低电平)

sunxi_pin                       // 指定引脚

sunxi_pin_configure      // 引脚所有的配置信息

3. 以PH6为例:要修改PH6时, 先指定PH6脚,写到sunxi_pin里

echo PH6 > sunxi_pin

 注:此时操作的就是PH6,每次只能单独操作某一个IO口。

        引脚的选定具有时效性,过一会当前选定引脚就会变为非选定状态。

        但是已经设置的引脚状态不会被改变。如果需要重新操作该引脚,就需要重新选定。

4. 如要修改PH6对应的参数,则将想要的参数写到对应的节点

以下是一些操作示例,以PH6为例:
#======================================================
echo PH6 > sunxi_pin         // 标识选定PH6引脚
cat sunxi_pin                // 查询当前选定引脚
查询结果: PH6

#======================================================
echo PH6 1 > data            // 配置引脚输出高电平
echo PH6 0 > data            // 配置引脚输出低电平
cat data                     // 查询当前引脚电平状态
查询结果: pin[PH6] data: 0
          pin[PH6] data: 1

#======================================================
echo PH6 1 > pull            // 表示拉高(指内部上拉)
cat pull                     // 查询当前上下拉状态
查询结果: pin[PH6] pull: 0
          pin[PH6] pull: 1

#======================================================
echo PH6 2 > dlevel          // 表示输出驱动能力改为2
cat dlevel                   // 查询输出驱动能力
查询结果: pin[PH6] dlevel: 0
          pin[PH6] dlevel: 1
          pin[PH6] dlevel: 2
          pin[PH6] dlevel: 3

#======================================================
echo PH6 0 > function        // 配置引脚功能为输入
echo PH6 1 > function        // 配置引脚功能为输出
echo PH6 2 > function        // 配置引脚功能为3所代表的复用功能(需要查询芯片手册)
cat function                 // 查询选定引脚功能值
查询结果: pin[PH6] funciton: 0
          pin[PH6] funciton: 1
          pin[PH6] funciton: 2
          其他

#======================================================
cat platform                 // 查询当前芯片平台
查询结果:SUN8IW50P1

#======================================================
cat sunxi_pin_configure      // 查询当前选定引脚所有配置信息
查询结果: pin[PH6] funciton: 1
          pin[PH6] data: 0
          pin[PH6] dlevel: 3
          pin[PH6] pull: 1

#======================================================

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值