小梁小梁气宇轩昂~ 2023-04-06 11:29 采纳率: 0%
浏览 83
已结题

hi3798mv200调控gt911遇见的几个无法解决的问题

1)首先第一个问题是gt911的从机地址每次上电都会随机在5d和14之间随机变化,不受我设备树所填的属性影响。我在内核中添加了几处打印,我自己编写的设备树节点属性是通过i2c_probe匹配到了,没有动其他的代码,不知道为什么gt911的从机地址会每次上电都自动随机变化,打印信息如下:
·下图是设备树中GT911节点reg属性修改为0x15后内核打印,可以看到是匹配成功了:

img

但是在arm平台通过i2c-tools扫描到的却是5d,感觉好像和我设备树没有关联一样;

img

2)第二个问题是i2c_transfer发送信息函数执行失败;内核打印开看报错提示是-6;通过查询得知是没有这个设备或地址;但可以通过i2c-tools的i2cdetect扫描到i2c的设备地址,很奇怪。又因为gt911的寄存器地址是16位的,暂时没有搞明白i2c-tools的i2ctransfer可执行程序的命令行用法,所以判断不了这个i2c-tools扫描到的从机地址是否可以读写:打印信息如下:
下图中good开头是我添加的打印信息;Goodix是系统打印:

img


下图是goodix部分驱动代码:

img


下图是通过i2c-tools扫描到的gt911从机地址(0x5d或者0x14):

img

求有经验或者明白问题可能出在哪儿的牛人解惑;

  • 写回答

5条回答 默认 最新

  • Leodong. 2023-04-06 13:45
    关注

    该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:

    针对第一个问题,GT911从机地址每次上电随机变化的问题,可能是由于以下原因:
    
    1. 设备树中的reg属性设置错误,没有正确匹配到GT911设备。
    
    2. GT911芯片本身就存在从机地址随机变化的问题。
    
    针对第一个可能的原因,可以检查设备树中的reg属性是否正确设置为GT911的从机地址。可以尝试在设备树中添加“compatible”属性,将其设置为“goodix,gt911”,看是否能够正确匹配到GT911设备。另外,也可以查看内核代码,确认是否正确处理了设备树中的reg属性。
    
    针对第二个可能的原因,可以参考GT911的相关文档,查看是否存在从机地址随机变化的问题,并尝试寻找解决方案。
    
    
    针对第二个问题,i2c_transfer发送信息函数执行失败的原因可能有多种,可以尝试以下方法进行排查:
    
    1. 检查i2c_transfer函数的参数设置是否正确,特别是从机地址是否正确。
    2. 检查i2c驱动是否正确加载,并且设备节点是否正确创建。
    3. 检查GT911芯片是否正确连接到i2c总线上,特别是SDA和SCL线是否连接正确。
    4. 检查i2c总线上是否存在其他设备占用了GT911的从机地址。
    5. 检查i2c总线的电气特性是否满足GT911芯片的要求,例如时钟频率、上拉电阻等。
    
    针对GT911芯片的寄存器地址是16位的问题,可以参考GT911的相关文档,了解其寄存器映射表,并根据需要设置正确的寄存器地址和数据。可以尝试使用i2c-tools中的i2cdump命令,读取GT911芯片的寄存器值,确认i2c-tools是否可以正确读写GT911芯片。
    
    注:如果以上检查都没有问题,您可以尝试使用i2c-tools中的i2ctransfer工具来测试GT911芯片的读写功能。具体来说,您可以使用以下命令来测试:
    
    sudo i2ctransfer -y <i2c-bus> w<address> <register> <value>
    

    如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

    评论

报告相同问题?

问题事件

  • 系统已结题 4月14日
  • 创建了问题 4月6日