KERNEL Q&A


Q1:设置gpio管脚复用不生效

  1. 排查所用padmux.dtsi(比如mercury6-ssc016a-s01a-demo-padmux.dtsi)是否有其它地方同样设置了管脚复用;注意如果复用功能有多个引脚,每个引脚都要排查,只要有一个脚被占用都不行。

  2. 排查所用dts文件(比如mercury6-ssc016a-s01a-demo.dts)看相关引脚是否有做其它控制用。

  3. 确定设的mode是否有生效。比如设置PAD_PM_GPIO0~3为spi2 mode1。

    对应寄存器103CD1 bit2:0应该为1,注意这里寄存器是8bit,通过riu_r命令读到的是16bit,需要转换,即0xD½ = 0x68 bit15:8。

  4. 确定代码有没有哪个地方写死占用(这个概率很低,可以全局搜索确认)。

  5. 设置相关引脚为gpio mode看是否能正常使用。

  6. 如果上面都没问题,需要确认硬件接法。