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.

[参考译文] MSP430FR2676:带延迟的 I2C 从器件读取

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1223506/msp430fr2676-i2c-slave-read-with-delay

器件型号:MSP430FR2676

您好!

我正在尝试将 MSP430FR2676设置为 I2C 从设备、以便与主机 MPU 通信。 我已经使 I2C 从器件能够成功地读取和写入基本数据。 我还在 MSP430上设置了 I2C 主设备、与一些一直运行良好的外部传感器和驱动器通信。 我现在试图进行稍微复杂一点的 I2C 从设备读取、因为它需要在读取过程中提供延迟。 下面是我需要做什么的分步说明:

  1. MPU 向 MSP430发送 I2C 从设备读取命令、以便从传感器读取值
  2. MSP430进入 I2C 从器件中断以处理来自 MPU 的调用
  3. MSP430向传感器发送 I2C 写入命令以便启动测量
  4. MSP430 I2C 从器件进程必须等待1秒、以便完成传感器测量( 这是我在挣扎的地方 )
  5. MSP430向传感器发送 I2C 读取命令以检索测量结果
  6. MSP430将测量数据发送回 MPU

我现在要研究的是如何在 I2C 从进程中运行延迟、同时允许 MSP430中的其他进程运行。 我知道__delay_cycles 命令、但我知道会导致 MSP430停止运行所有其他进程。 是否有办法在延迟的同时仍允许其他进程运行?

谢谢!

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

    我对您所说的"流程"您是否在使用 RTOS 感到困惑? (如果是、哪一个)或者仅仅是中断处理程序?

    https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/303024/how-__delay_cycles-works

    计时器是更友好的处理器方法。

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

    尊敬的 Keith:

    我主要使用 MSP430FR2676运行 CapTIvate 流程来测量电容式触控传感器。 我不希望在读取传感器时这些传感器停止运行1秒。

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

    使用 I2C 硬件的各种可用中断是一种处理需要很长时间的目标的更好方法。 实际上、最好的方法是让目标具有一个输出、可以将其连接到 GPIO 以在数据就绪时发出信号。

    这就是 MSP430应该如何处理 MPU 读取、而不是(显然)使 I2C 事务挂起。

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

    尊敬的 David:

    我确实有一个 GPIO 连接到了我们的 MPU、以便向它指示 MSP430上发生了电容式触控事件。 我可以使用同一个 GPIO 向 MPU 指示数据已就绪。 在我看来,这似乎是最好的选择。 我将继续并执行该操作。