This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DM8168的GPIO输出高电平时只保持1s,后被拉低



我使用的是DM8168,芯片版本是1.1

linux系统是2.6.37,来自ezsdk psp00.04.00.12

想在LINUX系统启动过程中,点亮一个led灯。

方法:

首先保证该GPIO被正确复用为GPIO模式。

其次:在linux内核配置中保证gpio驱动已经加载。

最后,调用如下语句:

gpio_request(21,"led");

gpio_direction_ouput(21,1);

当执行到此语句后,测量21管脚,发现只被拉高到3.3V,只维持了1S,后恢复成低电平。

如果将代码改为:

gpio_request(21,"led");

ssleep(2);

gpio_direction_ouput(21,1);

可正常输出高电平。

已经看了gpio_request,gpio_direction_output的实现,暂时没发现需要sleep的需要。

不知道原因是什么?

  • 你好,

    看起来似乎是有代码吧配置修改了。

    你可以把相关pinmux和gpio寄存器前后都打印一下看看吗?

  • 谢谢你的建议,很久没有来看这个问题了,只是作为遗留问题留下了。

    因为一般情况下,gpio_request请求一个gpio后,不会立即调用gpio_directio_output函数,所以就没有这个问题。

    我以前打印过你说的这些寄存器,我再看看,好好分析一下。

    pinmux是gpio的复用很早就做了,和其他的复用在一个文件中一起做的,我检查过。

    等定位了此问题,给予你回馈,谢谢啊