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.

[参考译文] Linux/TCA9539:学生

Guru**** 1640390 points
Other Parts Discussed in Thread: TCA9539, DM3730, PCA9539, TCA8418E, TCA8418
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/824134/linux-tca9539-student

器件型号:TCA9539
主题中讨论的其他器件: DM3730PCA9539TCA8418ETCA8418

工具/软件:Linux

你(们)好

我使用两个 tca9539器件具有20个输入密钥、这两个器件 通过 i2c 连接到 dm3730。 Linux 内核为2.6.3。 但是,内核只有驱动程序 pca953x.c、所以我在 pca953x.c 中添加了一些代码:

静态常量结构 i2c_device_id pca953x_id[]={
"pca9534"、8、}、
{"pca9535"、16、 }、
{"pca9536"、4、}、
{"pca9537"、 4、}、
{"pca9538"、8、}、
{"pca9539"、16、}、
{"pca9554"、8、 }、
{"pca9555"、16、}、
{"pca9556"、 8、}、
{"pca9557"、8、}、

{"max7310"、8、}、
{"max7315"、8、 }、
{"pca6107"、8、}、
{"tca6408"、 8、}、
{"tca6416"、16、}、
{"tca9539"、16、}、/*由 ME-20190723*/*
nyet:{"tca6424"、24、}、*/
{}
}; 

此外、我还在 board-omap3devkit8500.c 中添加了一些代码:


静态结构 pca953x_platform_data gpio_tca9539[]={ [0]={ .gpio_BASE = 500、 }、 [1]={ .gpio_BASE = 550、 }、 }; 静态结构 i2c_board_info __initdata devkit8500_i2c3_boardinfo[]={"i2c_board_info" 、0x9539 (tca9539) .platform_data =&GPIO_tca9539[0]、 } 、{ I2C_Board_info ("tca9539"、0x76)、 .platform_data =&gpio_tca9539[1]、 }、 }; static int __init omap3_devkit8500_i2c_init (void) { omap_register_i2c_bus (1、2600、devkit8500_i2c1_boardinfo、 array_size (devkit2c_i2c1_boardinfo )、i8500 400、devkit8500_i2c2_boardinfo、 array_size (devkit8500_i2c2_boardinfo)); //将总线3连接到 DVI 端口、其中诸如 pico DLP *投影仪的设备无法在400kHz 下可靠运行*//omap_register_i2c_bus (3、100、NULL、0); iomap_register 3c (3); 100、devkit8500_i2c3_boardinfo、 array_size (devkit8500_i2c3_boardinfo)); 返回0; }

 我不知道两个 tca9539器件20个键 GPIO_base、因此我给出了500和550、  

在 make menuconfig 中、我有 include

[*]/sys/class/gpio/...(syses 界面)

<*>pca953x、pca955x、tca64xx 和 max7310 I/O 端口

<*>映射 i2c 适配器

问题是  

1) 1)我是否正确配置了 tca9539驱动程序?

2)如何在 用户级别使用这20个密钥?

请告诉我,非常感谢。

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

    您好,user6044731,

    "1)我配置 tca9539驱动程序是否正确?"

    我们通常不为器件提供编码级支持、而是提供模拟级支持。 (我的专业知识不在编码方面、因此我可能无法对您编写的代码进行评论)。 [我不知道什么是 GPIO 基号,如果您解释一下它是什么,我可能会帮助假设它需要我们的设备提供信息......]

    我看到您有一些来自 PCA9539的预编写代码。 我们的 TCA9539是 PCA9539的直接引脚对引脚替代产品、因此适用于 PCA9539的任何驱动程序都适用于 TCA9539。

    "2)如何在 用户级别使用这20个密钥?"

    如果您尝试获取用户级输入、则可能需要尝试改用 TCA8418/TCA8418E 等键盘器件。

    我们的 I/O 扩展器不会锁存 INT 引脚、如果位发生翻转、则没有存储器、 例如、如果输入为"1"、然后用户按下按钮使其变为"0"并释放、然后由于上拉电阻器、信号返回到"1"、则可以读取器件的输入、 它会告诉您输入仍然为"1"。 如果该位翻转、则该器件中没有存储器。 这就是为什么 TCA8418具有 FIFO (存储器)、因此可能是更适合此类应用的器件。

    这是否有帮助?

    -Bobby

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

    您好、Boddy:

    "然后读取器件的输入"的含义是什么。 如何读取器件寄存器? 使用 i2c?  我认为正确的方法是在 用户按下按钮时检查/sys/class/gpio 中的中断。 大多数人按照我说过的方式处理 GPIO 输入。

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

    用户好、

    我是从器件的角度而不是从编码级别的角度讲的。 您需要足够快地读取器件的内部寄存器以捕获按键事件、因为器件内部没有 FIFO。

    -Bobby