之前有很多开发者在使用rk3568平台适配gt911触摸屏时,i2c通信存在问题到社区求助,在给开发者指明了具体的配置引脚的位置后,仍有部分开发者在具体值的配置时遇到问题,前不久在逛Laval社区时,发现在https://laval.csdn.net/user/discuss/677e2469911edf5f3bfbfb5c的问题讨论中,@J_1592385427提供了详细的引脚值配置说明,特将内容整理到此篇文章,给更多的开发者提供更细节的说明。

如下图中所示,本文将说明gt911 i2c时钟线和数据线的引脚复用如何配置。

img

需要用到Rockchip RK3568 TRM Part1 V1.1-20210301.pdf文档,在第3章,先找到SYS_GRF的地址是0xfdc60000

img

然后以gpio4B为例,切换到3.7章,找到gpio4B的iomux对应寄存器偏移:是0x006c或0x0068:

img

在3.7.2节,找到GRF_GPIO4B_IOMUX_H/L,gpio4 B4/5在H里main,所以IOMUX的地址是0xfdc6006c,然后B4B5要复用成I2C2,也就是11,(设置为0x3311,是因为在设置之前读取寄存器的值是33xx,15:8位的值不做修改,只修改后7:0,只改需要改的,不必要改的不动)

img

gpio4B5的iomux寄存器地址是:SYS_GRF地址 + 偏移 (SYS_GRF的地址是基地址,基地址也能在TRM的pdf中查到) 也就是0xfdc6006c,先去调试串口,用devmem 0xfdc6006c命令,会输出目前寄存器中的值,只改你需要改的位,比方说gpio4b5的功能改为I2c2(这里gpio4b5对应的 i2c clk )

 

rk3568 pin config中框起来的两条不需要修改,对应的函数会判断,如果是瑞芯微的板子,直接返回success然后跳出函数,不会按照写的寄存器地址设置值

对应的驱动在://drivers/hdf_core/framework/model/input/driver/hdf_touch.c中

img

InputPinMuxCfg函数中的条件判断:

#if defined(CONFIG_ARCH_SPRD) || defined(CONFIG_ARCH_ROCKCHIP) || defined(LOSCFG_PLATFORM_STM32MP157) || \             defined(CONFIG_ARCH_MESON) || defined(CONFIG_ARCH_NXP_TOUCH) 
    return HDF_SUCCESS; 
#endif 

CONFIG_ARCH_ROCKCHIP满足条件会直接退出。

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐