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.

[参考译文] MSP430FR2433:I2C -从模式-从同一寄存器地址读取/写入

Guru**** 2555220 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/831859/msp430fr2433-i2c---slave-mode---read-write-from-same-register-address

器件型号:MSP430FR2433

MSP 是 i2c 从器件。

主机处理器是 i2c 主器件。

主器件需要在需要时对同一寄存器地址执行读取/写入操作。

我的问题是、相同的从寄存器地址(由主器件通过 i2c 传输)不能同时用于读取和写入操作。

请建议一个我可以使用的逻辑。

是否有任何方法可以获得与从器件地址一同提供的读取/写入位值、以便我可以实现对该位的逻辑读取。

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

    您好!

    感谢您使用 MSP430。 但我不太理解您的意思。

    寄存器是什么意思? MSP430的外设寄存器?

    为什么 同一从机寄存器地址不能同时用于读写操作?

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

    对于 i2c 协议、通常在主器件发送从器件地址后紧跟"寄存器地址"时进行通信。

    这个概念("寄存器地址")就是我的寄存器意思。

    根据它是读取还是写入操作、写入或读取该从器件的指定寄存器地址。

    在我收集的 MSP I2C 从设备示例代码中、我可以理解、每当 MSP 收到0x01等此类寄存器地址时、只执行 i2c 读取操作。 代码设计结构的方式是、如果主器件发送0x01、则无法执行 i2c 写入。 执行 i2c 写入时、使用另一个寄存器地址(命令)。

    我的用例是、如果我从主器件获取了一条类似0x01的命令、并且它是写入操作、那么从 i2c 获取的下一个字节应存储到全局变量中(这是 i2c 写入操作)。 如果在下一个 i2c 通信中再次收到0x01命令、并且它是 i2c 读取操作、则应将全局变量中的值复制到传输缓冲区、以便主器件读取。

    这可以在 MSP i2c 从器件代码中实现。

    如果有任何示例代码、请提供一些示例代码。

    此外、是否有任何方法可以读取从器件地址的第8位、从而确定 i2c 操作是否被读取/写入。

    谢谢

    Rejath

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

    您好!

    我已经实现了这个设计、读取 UCBxCTLW0寄存器的 UCTR 位。 希望这是一种可靠的方法。