最近在調試全志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地址,下回分解。
歡迎關注“嵌入式分享”,持續更新!