我正在处理来自主机处理器的 MSP-I2C 通信。
MSP430是从器件、主机处理器是主器件。
我的 i2c 通信计划如下:
- 我正在实施从主机处理器进行 i2c 读取。
- 从主器件接收到开始/从器件地址时、MSP430中的 UCTXIFG0标志被置位。
- 当一个字节(寄存器地址值)从主机处理器接收到 MSP430中的接收缓冲寄存器 UCBxRXBUF 时、UCRXIFG0标志被置位。
- 根据中断优先级、UCRXIFG0标志被首先处理。
- 在中断处理程序中、 在对应于 USCI_I2C_UCRXIFG0 (0x16)的开关情况下、我计划 读取接收缓冲寄存 器 UCBxRXBUF 中存在的数据、根据该值、另一个相应的值存储在一个称为"TXData"的变量中。
- 在 UCBxRXBUF 寄存器中读取数据后、UCRXIFG0标志被清零。
- 这只会将 UCTXIFG0标志保留为挂起。
- 在对应 于 USCI_I2C_UCTXIFG0 (0x18)的开关情况下、变量"TXData"中的值被写入发送缓冲寄存器(UCBxTXBUF)。
从第2点和第3点可以看到、在从主器件接收数据字节之前会接收到起始/从器件地址。 因此、很显然、UCTXIFG0标志在 UCRXIFG0标志之前置1。
因此、我的问题是、在 UCRXIFG0标志之前设置 UCTXIFG0标志是否会导致在向发送缓冲寄存器(UCBxTXBUF)写入正确数据时发生冲突。
根据我的逻辑、当从主器件接收到的数据被首先处理时、变量"TXData"将具有正确的值、并且与之相对应的值被存储在"TXData"中。
我是否需要担心垃圾值被复制到发送缓冲寄存器(UCBxTXBUF)的可能性。