我们基于AM437x SDK v5.2x在Linux平台下做开发,现有一设备复位pin接到GPIO4_20,复位信号低电平有效;
我们希望在系统启动时,将该GPIO配置为输出高电平,我们参考默认的DTS配置,使用PinMux tool配置该GPIO输出高,但是系统启动后,读取该电平状态为输入低。
DTS配置如下:
…
&am43xx_pinmux {
…
mygpio4_pins_default: mygpio4_pins_default {
pinctrl-single,pins = <
0x200 ( PIN_OUTPUT_PULLUP | MUX_MODE7 ) /* (AD23) cam1_data6.gpio4[20] */
>;
};
};
…
&gpio4 {
status = "okay";
pinctrl-names = "default", "sleep";
pinctrl-0 = <&my_gpio_4_pins_default>;
};
…
系统启动后读取GPIO状态如下:
root@am437x-evm:~# cd /sys/class/gpio
root@am437x-evm:/sys/class/gpio# echo 148 > /sys/class/gpio/export
root@am437x-evm:/sys/class/gpio# cd gpio148
root@am437x-evm:/sys/class/gpio/gpio148# cat direction
in
root@am437x-evm:/sys/class/gpio/gpio148# cat value
0
参考论坛中AM335x系列有类似问答
e2echina.ti.com/…/159814
工程师解答说在DTS中无法配置GPIO输出高电平,现问题如下
1.如果DTS中无法配置GPIO输出高电平,那么pinmux配置中0x200 ( PIN_OUTPUT_PULLUP | MUX_MODE7 )的PIN_OUTPUT_PULLUP又做了什么呢?
2.请问我们该如何做,才能将该GPIO在系统启动过程中保持输出高电平呢?
user5232010:
回复 Shine:
谢谢解答