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 I2C Controlled Keypad 'cross-talk' intermittent problem

Other Parts Discussed in Thread: TCA8418

Hello all, 

As an adviser, I have been asked to look into an irritating problem as follows:

On a keyboard design using TCA8418RTWR driven with NXP LPC1778, a customer has found a problem as follows:

When pressing the C2R0 button several times repeatedly at random number of strokes, another key (always C1R0) will be activated.
This phenomenon repeat itself on many boards (not all). Note, these are adjacent columns, same row!)
We checked and excluded the keyboard itself, the connections and the PCB (including X-ray), and replacement of the device, but the problem remains.

I suspected a leak on the board (could not find any!. Isolation was always > 8 MOhm) or a driver marginal timing issue.  

Next we will have to dig into the software driver, but before we do that (it is software written by unknown with poor documentation) I want to ask if anyone has encountered a similar problem or have an idea what the source of the problem can be or any idea on what to check further.

Thanks in advance,

SamTal 

  • Hello Samuel,

    We have seen issues similar to this as a result of high capacitance load with no external resistors used. Basically, the TCA8418 has 100k internal pull-up resistors (high value to keep power consumption down) which works well for most keyboards. But in some designs, where there is a larger capacitive load, the 100k pull-up resistors might be too weak to raise the signal on the row before the scanning algorithm that the TCA8418 performs gets to another row. This results in a false button press.

    I would suggest that you try adding external pullup resistors on your rows to supplement your 100k pull-up resistor and just make sure that this isn't your issue before you dive into the software. If you don't encounter this all the time, you are likely on the edge of hitting your VIH. You could wire in a 50k pull-up resistor to VCC on each row line for the keypad to assist the integrated 100k and then test again.

    Best Regards,
    Jonathan
  • Thanks Jonathan.

    In fact, as I suspected the pull-ups are insufficient ( I thought more of low-quality PCB that may leak) , I prepared 100K resistors to be installed, but I needed some experienced person to confirm, which you absolutely did.

    You suggested 50K, which together with the built-in parallel 100K will lower the overall resistance to 33K. As I have no concerns about power consumption, it is OK, unless it may affect some other parameters (affect the debaunce time?).

    I will try it very soon and will let you know the outcome. In any case, thank you very much.

    Sam
  • Hello Sam,

    Debouncing is handed via the TCA8418 hardware. When debouncing is enabled, it is done by using 2 d latches, which requires the same signal for two clocks to trigger, so you don't have to worry about that if you are using the TCA8418 debouncing functionality (which is actually enabled by setting the bits in the register to 0)

    Thank you,
    Jonathan
  • Hello Jonathan, 

    At last I can clearly state that adding a 56K pull-up resistor to the most sensitive row completely solved the cross-talk problem.

    Analyzing the circuit I noticed that the keypad line to the one key (#3) with the problem is very long, and together with the common row (row 0 in our case) caused the cross-talk.
    My understanding is that due to the capacitance, the key signal was 'stretched' to become longer than the standard scan time, which caused the signal's 'tail' to be sensed as the next scanned key.

    A more comprehensive solution would be adding pull-ups to all rows, but as the problem was marginal, the customer did not want to make the hassle, and thus added only one resistor to solve the problem.

    Thank you Jonathan for your idea and support. It was a good lesson to learn and I hope it can serve others as well.

    Sam