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.

[参考译文] TCA9539-Q1:如何设置读取和写入命令

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1465184/tca9539-q1-how-to-set-read-and-write-commands

器件型号:TCA9539-Q1
主题中讨论的其他器件:TDA4VM

工具与软件:

嗨、团队:
   目前、TDA4VM 与 TDA4VM_SDK_10.05的 SDK 版本一起使用(mcu1_0)。
   I2C 地址为0x74、这可能是一个错误

  1、当我想把 P00设置为输出高电平时、我需要发送的命令是
     写入命令:0x74、0x06、0xFE
     写入命令:0x74、0x02、0x01
  2、当 我要将  P10设置为输入时、我需要发送的命令是
     写入命令:0x74、0x07、0x01
  3、当 INT 发生变化时,需要发送的命令为
     写入命令:0x74、0x01
     读取命令:0x74、读取数据
   我上面提到的发送命令的格式是否正确?
BR
付国嘉
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    该地址有七位、为1110100。 μ I²C 事务的第一个字节包含地址和 R/W 位、因此必须为0xE9或0xE8。 (我不知道该库是如何处理地址的。)

    您应该在配置寄存器之前写入输出端口寄存器、以便引脚在短时间内不会输出旧值。

    当中断发生时、您应该读取这两个输入端口寄存器。

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

      1、当我想把 P00设置为输出高电平时、我需要发送的命令是
         写入命令:0xE8、0x02、0x01
         写入命令: 0xE8、0x06、0xFE
      2、当 我要将  P10设置为输入时、我需要发送的命令是
         写入命令:0xE8、0x07、0x01
      3、当 INT 发生变化时,需要发送的命令为
         写入命令:0xE8 0x01
         读取命令:0xE9、读取 PORT0、读取 端口1
       我上面提到的发送命令的格式是否正确?
      顺便说一下、当输入端口发生变化、并且 INT 端口从高(H)变为低(L)时、INT 端口是否会在我完成数据读取后从低(L)变为高(H)?
      如果我没有使用中断方法读取输入端口的值、是否可以改用轮询方法?
    BR
    付国嘉
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    正确。 (每个寄存器写入都会影响八个引脚;我假设其他七位是正确的。)

    当所有更改的位均已读取后、中断输出将停用。

    如果 MCU 没有可用于中断信号的 GPIO、则可以改用轮询。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当读取完所有更改的位后、中断输出将被停用。

       发生这种情况时、INT 引脚是否会从低电平(L)变为高电平(H)? 我的意思是、如果我使用轮询方法、只需要在 INT 为低电平(L)时读取寄存器数据。

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

    是;未激活的中断信号为高电平。

    当/INT 为高电平时、您知道没有输入引脚发生变化。