你(们)好
我在这里看到了很多有关按下多个键时 TC8418出现意外行为的问题。
我想分享我的问题解决方案。
几年前我遇到了这个问题。
同时按下多个键或快速按下键时、控制器 TCA8418开始发送不正确的数据(按下一个键、但控制器发送另一个键的代码)、并继续发送不正确的代码、直到控制器复位。
我想问题是 TCA8418与 FIFO 一起工作时的状态机。 通过 I2C 长消息(FIFO--)同时发送并保存到 FIFO 新按键(FIFO+)。
我发现、无论 TCA8418的 FIFO 中有多少个事件、该解决方案都只从 TCA8418读取一个事件一次:
//读取 KBC 密钥事件计数器
i2cWrBuffer[0]= 3;
i2cTransaction.writeCount = 1;
i2cTransaction.ReadCount = 1;
I2C_TRANSFER (i2cHandle、&i2cTransaction); //读取关键事件数
J = i2cRdBuffer[0]& 0x0F; //关键事件的数量
//读取始终只有一个密钥事件,否则 KBC 可能会发送错误的数据
i2cWrBuffer[0]= 4;
i2cTransaction.writeCount = 1;
i2cTransaction.ReadCount = 1;//j;
I2C_transfer (i2cHandle、&i2cTransaction); //读取密钥事件
因为,过去三年,这个问题不再出现。
此致。