imx6用文件io操作gpio

具体请参考: http://blog.csdn.net/u014213012/article/details/53140781

这里要注意的是:

要让linux支持文件io方式操作gpio,首先驱动必须得支持,也就是说设备树上必须先配置好gpio模式,然后参照以上链接去实现gpio操作

这里举例来说:hud项目中(imx6dl平台),有一个蓝牙电源的使能受GPIO1_IO30的控制,所以我们必须得在设备树上配置这个pad为GPIO模式

1.配置gpio模式

现在需要在设备树上配置GPIO1_IO32用于gpio, 在配置之前需要确定该pad为哪个pad, 经原理图可知为ENET_TXD0/GPIO1_IO30, 然后在imx6dl规格书上第四章External Signals and Pin Multiplexing章节查找到ENET_TXD0, 可以看出该pad可以复用成三种功能(ENET_TX_DATA0, ESAI_TX4_RX1, GPIO1_IO30), 这些宏定义在imx6dl-pinfunc.h文件中, 然后在用到的设备树上(imx6dl-hud.dtsi)上查找是否已经有用到其他功能(现在要配置成gpio功能, 若已经配置成ENET_TX_DATA0则要删除它)

MX6QDL_PAD_ENET_TXD0__GPIO1_IO30    0x80000000  /* bluetooth power enable */

这样就配置好了gpio模式

然后使用文件io操作gpio:

2.计算gpio号:

nr=(P -1)* 32 + N; gpioP_N;

这里nr=(1-1)*32 + 30=30

3.io文件操作gpio

echo 30 > /sys/class/gpio/export

echo out > /sys/class/gpio/gpio30/direction

echo 1 > /sys/class/gpio/gpio30/value    ---> 写高电平

echo 0 > /sys/class/gpio/gpio30/value    ---> 写低电平

posted @ 2017-06-16 20:09  大海中的一粒沙  阅读(4622)  评论(0编辑  收藏  举报