单主机环境IIC在启动时会有总线冲突吗?

2020-02-08 09:31发布

dspic33fj64gp706的IIC1口连接RTC的IIC,然后有上拉,硬件就这么简单,
程序在发送启动条件后就发生总线冲突(单步执行发现I2C1STATbits.BCL为1),怎么回事?

I2C1STATbits.BCL为1表示:主器件工作期间检测到了总线冲突

1:I2C1CONbits.SEN = 1;    //使能启动
2:while (I2C1CONbits.SEN);//等待启动完成,程序执行到这一步时I2C1STATbits.BCL为1,

3:I2C1STATbits.I2COV = 0; //接收溢出标志   
4:I2C1STATbits.IWCOL = 0; //写冲突标志

如果在第2步后面用第3或者第4句I2C1STATbits.BCL就会为0,这是怎么回事呢,没搞过IIC,头都大了
(IIC占用RG2/3两脚,关掉IIC模块,用2/3两脚的IO模拟IIC,可以读RTC时间,真是奇了怪了)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。