Am335x 之GPIO控制

 转载请注明原处,谢谢。QQ:343556608

 参考:http://processors.wiki.ti.com/index.php/GPIO_Driver_Guide

 目前还没有涉及到代码(后续会有新的博客更新),仅关注到用户空间对GPIO的控制。

 1.执行下面的命令,可以显示目前驱动已经申请到的IO状态

 $ mount -t debugfs debugfs /sys/kernel/debug
 $ cat /sys/kernel/debug/gpio
 
 root@am335x-evm:/# cat /sys/kernel/debug/gpio
 GPIOs 0-31, gpio:
  gpio-2   (volume-up           ) in  hi
  gpio-3   (volume-down         ) in  hi
  gpio-6   (mmc_cd              ) in  hi
 
 GPIOs 32-63, gpio:
  gpio-48  (wlan_en             ) out lo
  gpio-53  (matrix_kbd_col      ) out hi
  gpio-54  (matrix_kbd_col      ) out hi
  gpio-57  (matrix_kbd_row      ) in  lo
  gpio-58  (matrix_kbd_row      ) in  lo
  gpio-59  (matrix_kbd_row      ) in  lo
 
 GPIOs 64-95, gpio:
 
 GPIOs 96-127, gpio:
  gpio-114 (mmc_wp              ) in  lo
  gpio-117 (bt_en
               ) out lo

 2,重新申请一个新IO,但注意看一下原理图,最好是没有使用的IO,如果本身的IO在其它地方使用的话,有可能申请不到或是破坏设备。
  下面我们申请118,并且查看有没有申请成功
  root@am335x-evm:/# echo 118 > /sys/class/gpio/export
  root@am335x-evm:/# ls /sys/class/gpio
  export      gpiochip0   gpiochip64  unexport
  gpio118     gpiochip32  gpiochip96

  root@am335x-evm:/# cat /sys/kernel/debug/gpio
  GPIOs 0-31, gpio:
   gpio-2   (volume-up           ) in  hi
   gpio-3   (volume-down         ) in  hi
   gpio-6   (mmc_cd              ) in  hi
  
  GPIOs 32-63, gpio:
   gpio-48  (wlan_en             ) out lo
   gpio-53  (matrix_kbd_col      ) out hi
   gpio-54  (matrix_kbd_col      ) out hi
   gpio-57  (matrix_kbd_row      ) in  lo
   gpio-58  (matrix_kbd_row      ) in  lo
   gpio-59  (matrix_kbd_row      ) in  lo
  
  GPIOs 64-95, gpio:
  
  GPIOs 96-127, gpio:
   gpio-114 (mmc_wp              ) in  lo
   gpio-117 (bt_en
                ) out lo
   gpio-118 (sysfs               ) in  lo


  3,改变IO为输出:
  root@am335x-evm:/# echo "out" > /sys/class/gpio/gpio118/direction
  使IO的输出为高:
  root@am335x-evm:/# echo 1 > /sys/class/gpio/gpio118/value
  root@am335x-evm:/# cat /sys/kernel/debug/gpio
  GPIOs 0-31, gpio:
   gpio-2   (volume-up           ) in  hi
   gpio-3   (volume-down         ) in  hi
   gpio-6   (mmc_cd              ) in  hi
  
  GPIOs 32-63, gpio:
   gpio-48  (wlan_en             ) out lo
   gpio-53  (matrix_kbd_col      ) out hi
   gpio-54  (matrix_kbd_col      ) out hi
   gpio-57  (matrix_kbd_row      ) in  lo
   gpio-58  (matrix_kbd_row      ) in  lo
   gpio-59  (matrix_kbd_row      ) in  lo
  
  GPIOs 64-95, gpio:
  
  GPIOs 96-127, gpio:
   gpio-114 (mmc_wp              ) in  lo
   gpio-117 (bt_en
                ) out lo
   gpio-118 (sysfs               ) out hi
  
   4,释放IO,
   root@am335x-evm:/# echo 118 > /sys/class/gpio/unexport

 

总结:这种模式我觉得在调试某些简单IO控制的一些设备的时候很方便,比如硬件用到一个IO开关某一设备,那么就几条命令就可以控制好了。如果用做学习,大家可以手工来点灯。
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要配置am335xGPIO为可输入也可输出,可以通过以下步骤实现: 1. 确认所需GPIO号码 首先,需要确定要配置的GPIO号码。可以在AM335x芯片的数据手册中找到每个GPIO管脚的编号和功能。 2. 设置GPIO控制寄存器 将GPIO管脚设置为输入或输出模式,需要配置GPIO控制寄存器。控制寄存器包括3个寄存器,分别是GPIO_OE、GPIO_DATAIN和GPIO_DATAOUT。 GPIO_OE寄存器是用来设置GPIO管脚方向的,将对应的位设置为1时,表示该管脚为输入模式,设置为0时,表示该管脚为输出模式。 GPIO_DATAIN寄存器是用来获取GPIO输入状态的,读取该寄存器可以得到GPIO管脚的输入电平状态。 GPIO_DATAOUT寄存器是用来控制GPIO输出状态的,向该寄存器写入数据可以改变GPIO输出状态。 3. 配置GPIO管脚 在设置完GPIO控制寄存器后,需要使用GPIO库函数来进行GPIO管脚的配置。例如,可以使用beaglebone的GPIO库来控制am335xGPIO管脚。以下是一些示例代码: ``` #include "gpio.h" #define GPIO_PIN_NUM 10 // 例如,设置GPIO10 int main() { gpio_export(GPIO_PIN_NUM); // 导出GPIO管脚 gpio_direction_output(GPIO_PIN_NUM, 0); // 将GPIO管脚设置为输出模式,并输出低电平 gpio_direction_input(GPIO_PIN_NUM); // 将GPIO管脚设置为输入模式 gpio_set_value(GPIO_PIN_NUM, 1); // 将GPIO管脚输出高电平 int value = gpio_get_value(GPIO_PIN_NUM); // 获取GPIO管脚的输入状态 gpio_unexport(GPIO_PIN_NUM); // 取消导出GPIO管脚 return 0; } ``` 以上代码演示了如何将GPIO10设置为可输入也可输出模式,并对其进行控制。需要注意的是,不同的GPIO管脚可能有不同的控制寄存器地址和控制寄存器位,需要根据具体的GPIO管脚进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值