【MS51】程序里启动I2C后等不到SI。

I2C
chrishu |浏览344次
收藏|2022/09/07 14:34

满意回答

2022/09/07 16:53

可能原因

  1. 开漏没接上拉(一直低)。

  2. 发送起始信号后被中断打断,再回来清掉SI,然后再去等SI,就等不到了。

set_I2CON_STA;    /* 执行完此语句 ===》响应别的中断===》中断返回===》此时启动信号已经成功发送出去==>SI=1 */

clr_I2CON_SI;//此时再清除掉的中断标志位是本次的中断标志,而非上一次的中断标志建议将此句放在STA

while (!SI);       /*SI已经被清除掉,无法等到  */

建议在起始信号阶段disable其他中断。

nuvoton2022

其他回答(0)
0人关注该问题
+1
 加载中...