最近在调试全志T527的触摸功能时,发现GT911触摸芯片的I2C地址有时是0x5d,有时又识别成0x14,不知道大家有没有遇到过类似这个情况。
虽然最后使用0x5d地址调通了触摸功能,但是一直还是很困惑,为什么会出现0x14和0x5d两个i2c地址呢?
于是开始在GT911芯片规格书寻找答案...
查阅规格书发现,原来GT911会根据RTS和INT的开机时序来决定I2C地址是0x14还是0x5d。
在通信中GT911始终作为从设备,其I2C设备地址由7位设备地址加1位读写控制位组成,高7位为地址,bit0为读写控制位。GT911有两个从设备地址可供选择, 如下表:
每次上电或复位时需要使用 INT 脚进行I2C地址设置,如下是设定不同I2C地址的时序图。
设定地址为 0x28/0x29 的时序:
设定地址为 0xBA/0xBB 的时序:
在实际应用中,Linux内核提供的gt9xx.c触摸驱动默认时序设定的I2C地址为0x5d,调试中偶尔出现0x14地址,多数情况是由于dts的RTS或INT引脚配置不正确导致。
至于GT911为什么要有两个I2C地址,下回分解。
欢迎关注“嵌入式分享”,持续更新!