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 -中断标志-由于 UCTXIFG0在 UCRXIFG0之前置1而可能发生冲突

Guru**** 2555630 points
Other Parts Discussed in Thread: MSP430FR2433

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/831160/msp430fr2433-i2c---interrupt-flag---possibility-of-conflict-due-to-uctxifg0-set-before-ucrxifg0

器件型号:MSP430FR2433

我正在处理来自主机处理器的 MSP-I2C 通信。

MSP430是从器件、主机处理器是主器件。

我的 i2c 通信计划如下:

  1. 我正在实施从主机处理器进行 i2c 读取。
  2. 主器件接收到开始/从器件地址时、MSP430中的 UCTXIFG0标志被置位。
  3. 当一个字节(寄存器地址值)从主机处理器接收到  MSP430中的接收缓冲寄存器 UCBxRXBUF 时、UCRXIFG0标志被置位。
  4. 根据中断优先级、UCRXIFG0标志被首先处理。
  5. 在中断处理程序中、 在对应于 USCI_I2C_UCRXIFG0 (0x16)的开关情况下、我计划 读取接收缓冲寄存 器 UCBxRXBUF 中存在的数据、根据该值、另一个相应的值存储在一个称为"TXData"的变量中。
  6. 在 UCBxRXBUF 寄存器中读取数据后、UCRXIFG0标志被清零。
  7. 这只会将 UCTXIFG0标志保留为挂起。
  8. 在对应 于 USCI_I2C_UCTXIFG0 (0x18)的开关情况下、变量"TXData"中的值被写入发送缓冲寄存器(UCBxTXBUF)。

从第2点和第3点可以看到、在从主器件接收数据字节之前会接收到起始/从器件地址。 因此、很显然、UCTXIFG0标志在 UCRXIFG0标志之前置1。

因此、我的问题是、在 UCRXIFG0标志之前设置 UCTXIFG0标志是否会导致在向发送缓冲寄存器(UCBxTXBUF)写入正确数据时发生冲突。

根据我的逻辑、当从主器件接收到的数据被首先处理时、变量"TXData"将具有正确的值、并且与之相对应的值被存储在"TXData"中。

我是否需要担心垃圾值被复制到发送缓冲寄存器(UCBxTXBUF)的可能性。