嵌入式爱好者

uboot2009复用gpio后并设置默认状态为高电平的时候会出现低电平脉冲

2023-10-31 10:42| 发布者: 金色田野的灿烂| 查看: 52| 评论: 0

类目: 知识库  >  I.MX6系列产品     文档编号: 1181

  问题现象:

  1. 1、在上电一段时间(毫秒级)后才出现了一个低电平(持续800ns左右),这个时候的电源是稳定的;
  2. 2、上电后在用POR引脚复位核心板,也是会出现这个脉冲的;
  3. 3、在软件上把这个引脚的配置去掉之后就没有这个脉冲了,但是过几秒之后这个电平会变成低电平;
  4. 4、将该引脚悬空,现象相同;
  5. 5、注释掉设置状态的代码,GPIO口会持续为低(ms级),注释掉配置GPIO口的代码后,会持续为高电平;
  6. 6、客户使用老版本资料uboot2015的时候就没有出现过脉冲的情况
  7. 排查根本原因:

    以下以GPIO9为例

    	imx_iomux_v3_setup_pad(MX6Q_PAD_GPIO_9__GPIO_1_9);
    	gpio_direction_output(IMX_GPIO_NR(1, 9),1);
    

    实际测试与排查,该800ns脉冲与pin_mux的配置函数无关,因为适当在两个函数间加延时,测量会发现,800ns会累加到延时之后。所以800ns的延时是gpio_direction_output函数造成的。

    先看uboot2016和uboot2015的实现逻辑

    

        

可以通过以上知道,uboot2009有脉冲的原因是,在执行完成mxc_gpio_direction函数设置好gpio输出方向后再设置value值,gpio_set_value之前的这段时间没有需要输出的value值导致的,就默认拉低。uboot2015/uboot2016没有脉冲是因为他的操作是关闭gpio方向为输入的使能后,设置好value值,再设置方向为输出模式,中间没有间断。

可以知道这部分的区别已经在高版本的uboot中使用最新的方式了。由于uboot2009太老了,当时提供的mxc_gpio_direction函数本身就是存在这种问题的。


已解决

未解决

只是看看

最新评论

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2024-5-4 08:14

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

返回顶部