Starmoon 发表于 2023-11-3 16:22:18

硬件I2C问题,在线等

void Wait()
{
          unsigned int WaitTime=1000;
       
    while ((!(I2CMSST & 0x40))&(0 != (--WaitTime)));   //MISF of I2CMSST is 1? or waitime=0?

    I2CMSST &= ~0x40;                                  //MISF of I2CMSST reset
}

硬件I2C运行到上面子程序,MISF of I2CMSST没有自动置1,每次都有等到waitime减到0才退出WHILE;
规格书里751页
芯片用8H1K28;仿真用STC-USB LINK1D
其他的都正常
在线求解决方法
{:4_196:}



AI-32位8051 发表于 2023-11-3 16:50:20

可以先确定下IIC接线有没有问题?上拉电阻?,还有IO模式?

乘风飞扬 发表于 2023-11-3 16:54:15

I2CMSST的MISF标志需要执行MSCMD命令后硬件才会自动置1。
所以执行wait函数前需要先执行I2C命令程序。
另外如果是使用仿真验证的话,需要保证使用硬件仿真,软件模拟仿真是收不到硬件标志的。

Starmoon 发表于 2023-11-3 18:43:28

接线没有问题啊,I2C负载都是可以传数据的,OLED负载。就是仿真看不到MISF标志变化
有两组I2C,另一组接触摸IC,开始是发现触摸IC I2C通信时MISF标志不变化,回头再看OLED的通信,也是一样,MISF标志不变化,但是OLED通信是正常的

jkernet 发表于 2023-11-11 11:01:54

mark一下.
页: [1]
查看完整版本: 硬件I2C问题,在线等