This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TCA8418:已按多个键,意外行为。

Guru**** 2538930 points
Other Parts Discussed in Thread: TCA8418

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/780303/tca8418-multiple-keys-pressed-unexpected-behavior

器件型号:TCA8418

你(们)好

我在这里看到了很多有关按下多个键时 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);           //读取密钥事件

因为,过去三年,这个问题不再出现。  

此致。