只做GPIO扩展不做键盘的话,应该怎么配置寄存器初始化。主要是CFG不知道该怎么配置。现在的配置如下
error = tca8418_write_byte(chip,REG_CFG,CFG_OVR_FLOW_IEN);if (error < 0) return -ENODEV;error = tca8418_write_byte(chip,REG_KP_GPIO1,0);error = tca8418_write_byte(chip,REG_KP_GPIO2,0);error = tca8418_write_byte(chip,REG_KP_GPIO3,0);error = tca8418_write_byte(chip,REG_GPIO_DIR1,0);error = tca8418_write_byte(chip,REG_GPIO_DIR2,0);error = tca8418_write_byte(chip,REG_GPIO_DIR3,0);
,然后去读取寄存器GPIO_DATA_STAT1,GPIO_DATA_STAT2,GPIO_DATA_STAT3。读出来的分别一直是ff,ff,03,在外围电路改变引脚点平,读到的值依旧没有变化
user151383853:
感觉你还没有验证通信时序吧, 先检查一下通信的时序波形, 有正确回应后再调试程序和控制比较好
Kailyn Chen:
是的,还是先要验证时序,从而缩小问题范围,主控发送一个命令或者data,看是否收到应答以及正确读出数据。
haibo hao:
回复 Kailyn Chen:
linux内核中使用i2c_check_functionality(client->adapter, I2C_FUNC_SMBUS_BYTE)是通过的