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.

[参考译文] IO-Expander-EVM能否独立工作?

Guru**** 2455560 points
Other Parts Discussed in Thread: TCA9539, TCA6424

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/624428/can-the-io-expander-evm-work-as-a-stand-alone

线程中讨论的其他部件:IO-expander-EVMTCA9539TCA6424

  我正在尝试利用IO-Expander-EVM来扩展另一个板的GPIO引脚。 我想利用该主板的I2C功能来显示I2C命令可以传输到主板并打开连接到GPIO引脚的LED。 我已经阅读了数据表(SLVUA59A),它在5.1 2 (第4页)中指出,IO扩展器EVM可单独用于LaunchPad,但我不了解如何执行此操作。 有人能告诉我一个资源来解释这一点吗?

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

    设备的SDA和SCL线路分别连接至连接器J2的引脚6和引脚7。 接头J8上也有断开的接头。 如果您不想使用LaunchPad,您可以将I2C主控制器连接到其中任何一个连接器,以将其直接与IO扩展器连接。

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

    感谢您的回复。 我将尝试此操作并报告结果。

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

    按照上述方法连接针脚后,我将GPIO针脚称为什么? C或Python的数字是多少? 或者我是否使用GUI软件设置(我将其连接到Raspberry Pi)?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Brian,

    您应该查看主板上安装的任何IO扩展器设备的文档,并了解如何通过I2C接口对其各种GPIO端口进行寻址和控制。 然后,您可以对Raspberry Pi进行编程,以发送正确的I2C命令来访问应用程序所需的GPIO。 (这是GUI的基本功能。)

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

    最大

    我已经查看了数据表,并在我的Raspberry Pi "sudo i2cdetect -y 1"上运行,并且有两个I2C设备的地址为0x22和0x77。 我正在使用python编写代码,但无法访问GPIO。我的代码如下所示:

    导入smbus

    导入时间

    导入系统

    总线= smbus.SMBUS (1)

    Device77 = 0x77

    设备22 = 0x22

    bus.write_byte_data (设备77,0x00,0xff)

    根据数据表,我使用了Device77和Device22,并通过了十六进制针脚地址,但没有LED亮起。 我是否误解了针脚的十六进制地址,或者我的代码是否不正确? 感谢您的帮助。

    Brian

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

    最大,

    我已经弄清楚了代码,现在尝试找出GPIO引脚。 python中的代码为:

    导入smbus
    导入时间
    导入系统

    REG_Input_0 = 0x00 #输入端口0
    REG_Input_1 = 0x01 #输入端口1
    REG_Output_0 = 0x02 #输出端口0
    REG_Output_1 = 0x03 #输出端口1
    REG_POLICAL_0 = 0x04 #极性反转端口0
    REG_POLICS_1 = 0x05 #极性反转端口1
    REG_Direction_0 = 0x06 #配置端口0
    REG_Direction_1 = 0x07 #配置端口1

    In = 0 # Input (输入= 0 #输入)
    输出= 1 #输出

    总线= smbus.SMBUS (1)#这是I2C总线

    Device77 = 0x77 #这是U2上设备的地址(即TCA9539)
    Device22 = 0x22 #这是U1上设备的地址(即TCA6424)

    bus.write_byte_data (设备77,REG_Direction_0,输出)
    bus.write_byte_data (设备77,REG_POLICAL_0,0)
    bus.write_byte_data (Device77,REG_Output_0,0x02)#此指示灯在P00亮起

    定时睡眠(1)

    bus.write_byte_data (设备77,REG_POLICAL_0,0)
    bus.write_byte_data (Device77,REG_Output_0,0x01)#此灯在P01上亮起LED

    定时睡眠(1)

    bus.write_byte_data (设备77,REG_POLICAL_0,0)
    bus.write_byte_data (Device77,REG_Output_0,0x07)#此灯在P02上亮起LED

    定时睡眠(1)

    bus.write_byte_data (设备77,REG_POLICAL_0,0)
    bus.write_byte_data (Device77,REG_Output_0,0x0B)#此灯在P03上亮起LED

    定时睡眠(1)

    我正在尝试找出哪个十六进制将点亮哪个LED的模式。 您对此有什么信息吗?


    Brian

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

    TCA9539数据表的表1中提供了引脚到位映射(参见第20页底部)。

    如果您遵循此映射而没有获得预期的结果,则最好通过写入和读取到读/写寄存器(如TCA9539上的0x06)来验证您的写入和读取函数是否正常工作。 您应该能够读回写的相同值。

    然后,您可能需要验证代码的每一行都在执行您所期望的操作。 例如,您的第一个命令是:

    bus.write_byte_data (设备77,REG_Direction_0,输出)

    我不是Python专家,但这看起来将写入值1 ("out (输出)"变量)以注册0x06。 这似乎会导致寄存器值0.0001万,这意味着端口0上总共8个GPIO中的7个应配置为输出,最后一个为输入。 这是否正确? 如果是,您的目的是什么?

    我还注意到了其他一些类似打字错误的东西:

    REG_POLICS_1 = ox05 #极性反转端口1 (使用o而不是0)
    REG_Direction_1 = 0x06 #配置端口1 (应为0x07)。

    希望这能有所帮助! 如果您仍有问题,请告诉我。

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

    感谢您的帮助。 是的,您是正确的,通过仅发送值1 (0b0.0001万或0x01),无法激活所有PIN。 我终于完成了代码,能够激活各种GPIO引脚和相关LED。 一旦清除了代码,我将很高兴在这里分享它,以便将来任何人都能看到和使用它,以防他们希望在没有TI MSP430启动板的情况下使用IO扩展器EVM板。 感谢您的帮助并感谢您的帮助。

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

    很高兴听到一切都在为您服务!

    最大