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:无法读取 KEY 中断

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1162821/tca8418-unable-to-read-the-key-interrupt

器件型号:TCA8418

您好 TI  

  无法读取 KEY 中断、INT 引脚(输入、上拉)未更改、RST (输出、高电平)、请检查原理图和程序以了解任何问题、

  谢谢。

:μ m

Key_buff [0]= 0xc0;

HAL_I2C_Mem_Write (&hi2c2、0x68、0x2C、I2C_MEMADD_SIZE、8位、key_buff [0]、1、100);

Key_buff [0]= 0xf0;

HAL_I2C_Mem_Write (&hi2c2、0x68、0x2C、I2C_MEMADD_SIZE、8位、key_buff [0]、1、100);

Key_buff [0]= 0x00;

HAL_I2C_Mem_Write (&hi2c2、0x68、0x2C、I2C_MEMADD_SIZE、8位、key_buff [0]、1、100);

Key_buff [0]= 0x05;

HAL_I2C_Mem_Write (&hi2c2、0x68、0x01、I2C_MEMADD_SIZE、8位、key_buff [0]、1、100);

HAL_I2C_MEM_READ (&hi2c2、0x69、0x02、I2C_MEMADD_SIZE、&key_buff [1]、1、100);//INT_STAT 寄存器

if (key_buff [1]=0x1||key_buff [1]=0x2)

HAL_I2C_Mem_Read (&hi2c2、0x69、0x03、I2C_MEMADD_SIZE_8BIT、&KEY_buff [2]、1、100);//密钥锁定和事件计数器寄存器

if (key_buff [2]>0)

{  

key_buff [2]=(key_buff [2]<<4)>4;

for (uint8_t i=0;<key_buff[2];i++)

HAL_I2C_MEM_READ (&hi2c2、0x69、0x04、I2C_MEMADD_SIZE、_buff、3、1、100);//key_event_A

if (key_buff [3]>8);

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

    I²C Ω 线路上的上拉电阻器缺失。

    代码将三次写入寄存器0x2C。 这可能不是目的。

    如果设置了两个位、则条件"key_buff [1]=0x1||key_buff [1]=0x2"将失败;最好使用"(key_buff [1]& 0x03)!= 0"。

    我希望软件的初始化和读取部分不会同时执行?

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

    你好 、克莱明

       感谢您的支持、我将进行检查。

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

    你好  、克莱明

        屏幕截图中未显示 I2C 总线上拉电阻、但实际可用;Ω

       2. 软件修改了;

       3.否

    Q θ:

      1. ROW 和 COL 引脚未连接、您是否需要上拉电阻? 默认电阻上拉? 如何设置0x2C-0x2E?

       2、 复位被初始化为低电平、无论是否需要更改为高电平?

      3. INT 电路连接是否正确。 如果正确、则将其上拉、下拉并下拉、而不将其上拉都是高电平。 按键时是否会变成低电平? 实际的钥匙测试不会变为低电平。

        

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

    只要启用内部上拉电阻、未使用的行和 COL 引脚就可以保持断开状态。

    2./RESET 必须为高电平才能使器件正常工作。

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

    雨天好、

    明天下午4点前我会回来。  

    此致、

    Tyler

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

    你(们)好   

    上述建议已经被改变、但是在按照以下软件执行后没有读取中断。 请帮助检查。 谢谢你。

    HAL_GPIO_WritePin (GPIOA、KEY_RST_Pin、GPIO_PIN_SET);

     

    while (1){

       

    HAL_I2C_MEM_READ (&hi2c2、0x69、0x02、I2C_MEMADD_SIZE、_buffer[1]、1、0xFFFF);//INT_STAT 寄存器

     

    if ((key_buff [1]&0x03)!=0)

    HAL_I2C_MEM_READ (&hi2c2、0x69、0x03、I2C_MEMADD_SIZE、_buffer[2]、1、0xFFFF);//密钥锁定和事件计数器寄存器

    key_buff [2]=(key_buff [2]<<4)>4;

    if (key_buff [2]>0)

    执行{

     

    HAL_I2C_MEM_READ (&hi2c2、0x69、0x04、I2C_MEMADD_SIZE、_buffer[3]、1、0xFFFF);//key_event_A

    if (key_buff [3]>8) key_buff [3]-=8;

     

    }while (key_buff [3]!=0);

    Key_buff [1]=0x3;

    HAL_I2C_Mem_Write (&hi2c2、0x69、0x02、I2C_MEMADD_SIZE_8BIT、KEY_BUFF[1]、1、0xFFFF);

     

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

    复位会清除所有寄存器、从而禁用中断。

    您必须先清除复位、然后配置寄存器、然后等待事件。

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

    需要为初始化配置哪些寄存器? 是否有参考?的演示

    现在、我想检查寄存器是否配置正确、谢谢。

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

    这取决于您要执行的操作。 至少应配置行/列引脚并启用所需的中断。

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

    雨天好、

    请查看数据表的第29页第8.6.2.1节。 在这里、您可以向配置寄存器写入要设置器件的方式。 GPI 事件模式、溢出模式、中断配置、溢出中断使能、键盘锁定中断使能、GPI 中断使能到主机处理器、密钥事件中断使能到主机处理器:

    在尝试从 INT_STAT、KEY_LCK_EC 和 KEY_EVENT_A 寄存器进行读取之前配置这些位。  

    此致、

    Tyler