IO口冲突处理

高阻态处理

有些芯片一个引脚中绑定了两个IO口,需要做以下处理:

杰理AC690X---引脚使用冲突处理

 

假设要使用三号管脚的PC3来做输出输入,则需要把USBDM引脚置高阻态;假设要把USBDM拿来做输出输入,则需要把PC3置高阻态。

其他双绑引脚也是一样的,如第五号管脚,假设要用5号管脚来做MIC输入,则需要把PB13和PA3都置高阻态。置高阻态的语句如下:

普通GPIO

JL_PORTB->DIR |= BIT(3);

JL_PORTB->PU  &= ~BIT(3);

JL_PORTB->PD  &= ~BIT(3);

JL_PORTB->DIE  |= BIT(3);

USB口

USB_DM_PU(0);

USB_DM_PD(0);

USB_DM_DIR(1);

 

PR口

PORTR_PU(PORTR1,0);

PORTR_PD(PORTR1,0);

PORTR_DIR(PORTR1,1);

PORTR_DIE(PORTR1,1);

 

引脚使用冲突

有时候我们在调程序,上板发现IO口并没有按我们设定的状态运行,这个时候如果排查完确定不是引脚原因的话, 就可以看看是不是软件上多出使用了同一个IO口造成的。主要有以下位置可以检查:

  1. Led灯引脚配置

杰理AC690X---引脚使用冲突处理

  1. 按键引脚配置

杰理AC690X---引脚使用冲突处理

杰理AC690X---引脚使用冲突处理

杰理AC690X---引脚使用冲突处理

  1. 串口打印引脚冲突

杰理AC690X---引脚使用冲突处理

  1. AUX检测引脚冲突

杰理AC690X---引脚使用冲突处理

  1. Mute引脚冲突

杰理AC690X---引脚使用冲突处理

  1. LED数码管引脚冲突

杰理AC690X---引脚使用冲突处理

  1. LCD引脚

杰理AC690X---引脚使用冲突处理

找不到怎么办

假设你使用了PA0这个引脚,但是你按照上面的位置都检查了一遍,依然发现这个引脚还是不工作,那么有以下可能:

  1. 开发板芯片烧坏了,刚好PA0这个引脚烧坏了,换个口试试
  2. PA0代码配置有问题,看看上下拉和引脚上面有没有冲突,或者看看输入输出的配置有没有问题,最直接的就是换口测试,因为不可能所有的口都不行。
  3. 全局搜索PA0这个引脚,看看除了以上位置,还有没有在其他地方呗调用。

 

全局搜索技巧:

杰理AC690X---引脚使用冲突处理

杰理AC690X---引脚使用冲突处理

以上截图都是基于本人自己整理的SDK,使用公版SDK的情况下,道理是一样的,只是sdk_cfg.h里面没有截图中的那些我自己整理的宏定义。

相关文章:

  • 2022-01-21
  • 2021-10-13
  • 2022-01-06
  • 2022-01-08
  • 2022-12-23
  • 2021-12-29
  • 2022-01-19
猜你喜欢
  • 2021-05-05
  • 2022-12-23
  • 2021-10-24
  • 2022-03-12
  • 2022-12-23
  • 2022-12-23
  • 2021-11-14
相关资源
相似解决方案