gpio无法正常操作 - AM437x - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3733|回复: 4

gpio无法正常操作

[复制链接]

10

主题

33

帖子

1193

积分

金牌会员

Rank: 6Rank: 6

积分
1193
发表于 2016-4-26 09:59:25 | 显示全部楼层 |阅读模式
修改设备树文件.dts如下:
#include "am437x-gp-evm.dts"
#include <dt-bindings/sound/sii9022-audio.h>

&am43xx_pinmux {
        gpio1_pins: gpio1_pins {
                pinctrl-single,pins = <
                        0x040 (PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpio1_16 */
                        0x044 (PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpio1_17 */
                        0x048 (PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpio1_18 */
                        0x04C (PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpio1_19 */
                        0x050 (PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpio1_20 */
                        0x054 (PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpio1_21 */
                        0x058 (PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpio1_22 */
                        0x05C (PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpio1_23 */
                       
                >;
        };
       
        gpio4_pins: gpio4_pins {
                pinctrl-single,pins = <
                        0x1b0 (PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpio4_0 */
                        0x1b4 (PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpio4_1 */
                        0x1b8 (PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpio4_2 */
                        0x1bc (PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpio4_3 */
                        0x1c0 (PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpio4_4 */
                        0x1c4 (PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpio4_5 */
                        0x1c8 (PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpio4_6 */
                        0x1cc (PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpio4_7 */
                        0x1d0 (PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpio4_8 */
                        0x1d4 (PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpio4_9 */
                        0x1d8 (PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpio4_10 */
                        0x1dc (PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpio4_11 */
                        0x1e0 (PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpio4_12 */
                        0x1e4 (PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpio4_13 */
                        0x1e8 (PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpio4_14 */
                        0x1ec (PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpio4_15 */
                        0x1f0 (PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpio4_16 */
                        0x1f4 (PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpio4_17 */
                        0x1f8 (PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpio4_18 */
                        0x1fc (PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpio4_19 */
                        0x200 (PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpio4_20 */
                        0x204 (PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpio4_21 */
                        0x210 (PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpio4_24 */
                        0x214 (PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpio4_25 */
                        0x218 (PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpio4_26 */
                        0x21c (PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpio4_27 */                       
                >;
        };

};

&gpio1 {
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&gpio1_pins>;
       
        status = "okay";
};

&gpio4 {       
  pinctrl-names = "default", "sleep";
        pinctrl-0 = <&gpio4_pins>;

        status = "okay";
};

重新编译内核及设备树
实际使用过程中,发现管脚gpio1[16]无法配置,配置命令行如下:
echo 48 > export
报错,设备忙,写入失败
配置gpio1[17]成功:
echo 49 > export
cd gpio49
echo "out" > direction
echo 1 > value
echo 0 > value
发现无法改变对应管脚的输出状态,请问问题出在哪里谢谢。
回复

使用道具 举报

10

主题

33

帖子

1193

积分

金牌会员

Rank: 6Rank: 6

积分
1193
 楼主| 发表于 2016-5-17 11:09:29 | 显示全部楼层
自己来结贴吧,把不用的设备都注释掉,其他什么都不要改,也不要把你想用做gpio的管脚设置为mode7,保存,编译即可,可以试试,命令行下进行目标管脚测试,只要系统没有占用,妥妥的可以用
回复 支持 1 反对 0

使用道具 举报

10

主题

33

帖子

1193

积分

金牌会员

Rank: 6Rank: 6

积分
1193
 楼主| 发表于 2016-4-26 21:13:06 | 显示全部楼层
追加问题:am437x的核心板,那些管脚是可以复用为gpio的?是不是gpmc的所有管脚都不能复用为gpio?谢谢
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
发表于 2016-4-27 09:57:12 | 显示全部楼层
可以复用成gpio。
echo 48 > export
报错,设备忙,写入失败
估计是gpio在内核里面有注册使用了。
回复 支持 反对

使用道具 举报

10

主题

33

帖子

1193

积分

金牌会员

Rank: 6Rank: 6

积分
1193
 楼主| 发表于 2016-4-27 10:42:00 | 显示全部楼层
teddy 发表于 2016-4-27 09:57
可以复用成gpio。
echo 48 > export
报错,设备忙,写入失败

但是我用gpio1【17】,配置都是成功的,但是改变外部状态,相应管脚没有电平变化,是为什么?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2024-3-29 17:08 , Processed in 0.038140 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表