嵌入式开发者社区

标题: gpio无法正常操作 [打印本页]

作者: bit0rain    时间: 2016-4-26 09:59
标题: gpio无法正常操作
修改设备树文件.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
发现无法改变对应管脚的输出状态,请问问题出在哪里谢谢。

作者: bit0rain    时间: 2016-4-26 21:13
追加问题:am437x的核心板,那些管脚是可以复用为gpio的?是不是gpmc的所有管脚都不能复用为gpio?谢谢
作者: teddy    时间: 2016-4-27 09:57
可以复用成gpio。
echo 48 > export
报错,设备忙,写入失败
估计是gpio在内核里面有注册使用了。
作者: bit0rain    时间: 2016-4-27 10:42
teddy 发表于 2016-4-27 09:57
可以复用成gpio。
echo 48 > export
报错,设备忙,写入失败

但是我用gpio1【17】,配置都是成功的,但是改变外部状态,相应管脚没有电平变化,是为什么?
作者: bit0rain    时间: 2016-5-17 11:09
自己来结贴吧,把不用的设备都注释掉,其他什么都不要改,也不要把你想用做gpio的管脚设置为mode7,保存,编译即可,可以试试,命令行下进行目标管脚测试,只要系统没有占用,妥妥的可以用




欢迎光临 嵌入式开发者社区 (https://51ele.net/) Powered by Discuz! X3.4