主题中讨论的其他器件:MSP430FR2476
您好!
我将 MSP430作为具有多个读取/写入寄存器的 I2C 从器件来实现。 出于某种原因、I2C 时钟保持低电平、主器件无法再与从器件通信。
为了处理这个问题、我启用了 I2C 时钟低电平超时中断。 正在触发中断、可以在切换 LED 上看到这种情况。
现在、我要重置中断处理程序内的 I2C 模块。 参考
24.3.7.3时钟低电平超时
UCCLTOIFG 中断允许软件在时钟低电平时间超过定义的时间时做出反应。 是的
当一个时钟被一个主器件或从器件扩展了太长的时间时、有可能检测到这种情况。 。
例如、用户可以通过使用 UCSWRST 位来复位 eUSCI_B 模块。
使用 UCCLTO 位启用时钟低电平超时功能。 可以从三个选项中选择一个
时钟低电平超时的预定义时间。 如果时钟处于低电平的时间长于中定义的时间
UCCLTO 位和 eUSCI_B 主动接收或发送、UCCLTOIFG 置1、然后是
如果 UCCLTOIE 和 GIE 也被置位、就会产生中断请求。 UCCLTOIFG 只设置一次、
即使时钟扩展了 UCCLTO 中定义的时间的倍数。
我将在中断处理程序中添加以下行
UCB0CTLW0 = UCSWRST;
UCB0CTLW0 &=~UCSWRST;
它不会复位 I2C 模块。
在中断处理程序内可以执行什么操作来重新启动 I2C 模块?