工具/软件:Code Composer Studio
我正在 I2C 从模式下使用 MSP430G2553、 并且已经启用 UCB0TXIE 位、现在主器件可以从从从从器件接收正确的数据、 但我发现、当我使用主器件时、从器件一次从从器件获取数据、从器 件将进入 TX 中断服务两次。
这是正常的、还是没有正确的配置?
谢谢!
这是 I2C 配置:
P1SEL |= SDA_PIN + SCL_PIN;//将 I2C 引脚分配给 USCI_B0
P1SEL2 |= SDA_PIN + SCL_PIN;//将 I2C 引脚分配给 USCI_B0
UCB0CTL1 |= UCSWRST;//启用 SW 复位
UCB0CTL0 = UCMODE_3 + UCSYNC;// I2C 从机、同步模式
UCB0I2COA = SLAVE_ADDRESS;//设置自有(从器件)地址
UCB0CTL1 &=~UCSWRST;//清除 SW 复位,恢复运行
IE2 |= UCB0TXIE + UCB0RXIE;//启用 TX 中断
UCB0I2CIE |= UCSTTIE;//启用 STT 中断
TI_START_CALLBACK = SCallback;
TI_Receive_callback = RCallback;
TI_transmit 回调= Tcallback;
这是中断服务代码:
#pragma vector=USCIAB0TX_vector
_interrupt void USCI_i2c_data_ISR (void)
{
IF (IFG2 & UCB0TXIFG)
TI_Transmit 回调(&UCB0TXBUF);
其他
TI_Receive_callback (UCB0RXBUF);
}
