czdspeed 发表于 2024-3-8 10:11:38

乘风飞扬 发表于 2024-3-7 16:55
1. I2C从机模式没必要设置SPEED参数




我早上有参考昨天发的程序稍微整理了一下,用逻辑分析仪看可以接到addr和data了。但是中断里面I2CRXD这个获取data的地方进不了。
我查了逻辑分析仪,ACK这里是低电平,stop也接到了。这里不知道为啥没有进去

   if (I2CSLST & 0x40)
    {
      I2CSLST &= ~0x40;                     //´¦ÀíSTARTʼþ

    }
    else if (I2CSLST & 0x20)
    {
      I2CSLST &= ~0x20;                     //´¦ÀíRECVʼþ
      if (isda)
      {
            isda = 0;                           //´¦ÀíRECVʼþ£¨RECV DEVICE ADDR£©
      }
      else if (isma)
      {
            isma = 0;                           //´¦ÀíRECVʼþ£¨RECV MEMORY ADDR£©
            addr = I2CRXD;
            I2CTXD = buffer;

      }
      else
      {
//这里获取data的地方不能进
                               
            buffer = I2CRXD;            //´¦ÀíRECVʼþ£¨RECV DATA£©
                                        //ÏȰÑbuf½ÓÊÕÂú
                                                                                       
                                                remote_an_time = I2CRXD;
                                                       

czdspeed 发表于 2024-3-8 10:12:11

我从逻辑分析仪里面看接收的逻辑没问题

乘风飞扬 发表于 2024-3-8 10:59:30

czdspeed 发表于 2024-3-8 10:11
我早上有参考昨天发的程序稍微整理了一下,用逻辑分析仪看可以接到addr和data了。但是中断里面I2CRXD这个 ...

在获取data的地方加个IO口翻转,烧录到芯片里面,用示波器/逻辑分析仪测量脚位电平判断是不是真的没进去。

czdspeed 发表于 2024-3-8 15:10:36

乘风飞扬 发表于 2024-3-8 10:59
在获取data的地方加个IO口翻转,烧录到芯片里面,用示波器/逻辑分析仪测量脚位电平判断是不是真的没进去 ...

有反转,我这里看了一下可能是我那串口仿真器的速度不够没有跟踪到。通过IO方式验证了,buf已经接到了

方成 发表于 2025-1-23 22:00:05

我也发现只要加上代码I2CCFG = 0x80,后续再操作P5.4 P5.5就无效了,始终输出为高电平,去掉后,P5.4 P5.5的输出立即生效,原因不明
页: 1 [2]
查看完整版本: 初始化了P5.0端口后, I2C总线进不了中断了,请问一下有什么原因会导致这个问题