plz4920 发表于 2024-2-19 22:48:48

用两片8H8K64U芯片做主从机I2C通信,从机接到数据都会*2

两片8H8K64U芯片做主从机I2C通信,从机接到数据都会*2   主机发1从机收到2   主机发2从机收到4   主机发4从机收到8,都会大两倍,有没有大师碰到过

LAOXU 发表于 2024-2-20 08:22:38

降低通讯速率,或 加上拉电阻,

21cnsound 发表于 2024-2-20 08:55:36

代码发上来让大家一起看看啊

国学芯用 发表于 2024-2-20 08:59:23

来自STC8H8K64U实验箱9.6   https://www.stcaimcu.com/forum.php?mod=attachment&aid=ODg3MnwwZDc4OTI3ZnwxNjk4ODkxMzUxfDE3fDE1MjU=

kksk 发表于 2024-2-20 10:14:19

检查你的代码逻辑是不是哪里多了一个乘法或移位

plz4920 发表于 2024-2-20 20:02:45

LAOXU 发表于 2024-2-20 08:22
降低通讯速率,或 加上拉电阻,

内置上拉电阻

plz4920 发表于 2024-2-20 20:03:53

21cnsound 发表于 2024-2-20 08:55
代码发上来让大家一起看看啊

是官方测试代码

plz4920 发表于 2024-2-20 20:04:38

kksk 发表于 2024-2-20 10:14
检查你的代码逻辑是不是哪里多了一个乘法或移位

没有呢,我用官方测试代码

plz4920 发表于 2024-2-20 20:29:57

I2CCFG = 0x97;//12M速度配612/0.4/2-5 /2//使能I2C从机模式
    I2CSLADR = 0x5a;                        
    I2CSLST = 0x00;
    I2CSLCR = 0x00;                           //禁止从机模式中断

   

    while (1)
    {
      if (I2CSLST & 0x40) //处理START事件STAIF:
      {
            I2CSLST &= ~0x40;                   //处理START事件
      if (I2CSLST & 0x20)   //处理RECV事件
      {
            I2CSLST &= ~0x20;                   //处理RECV事件
         
         buffer = I2CRXD;
                       
                               
                               
                                }
            if (I2CSLST & 0x10)
                                                                      
       {
            I2CSLST &= ~0x10;                   //处理SEND事件
          if (I2CSLST & 0x02)//接收到NAK则停止读取数据
         {
                        
      
                                I2CSLST &= ~0x02;


                                       }
         
       }
      
                               
                               
                                }
      


                       if (I2CSLST & 0x08)
      {
            I2CSLST &= ~0x08;                   //处理STOP事件
            isda = 1;
            isma = 1;
      }
   
          Dis_seg_buff();        //1638显示函数


               
               
                }

plz4920 发表于 2024-2-20 20:31:00

        void i2c_hs_xie(void)//写
{

I2CCFG = 0xff;
// I2CCFG = 0xd7;            // 1100 000+01 011140M速度配2340/0.4/2-5 /2   //使能I2C主机模式
   I2CMSST = 0x00;

   Start();                                    //发送起始命令
   SendData(0x5a);                           //发送设备地址(010_1101B)+写命令(0B)
   RecvACK();

   
       SendData( iic_sz_rt);                           //写测试数据1
                        //写测试数据2
   RecvACK();
   Stop();                                     //发送停止命令




}       
       

主机程序 晶振40M
页: [1]
查看完整版本: 用两片8H8K64U芯片做主从机I2C通信,从机接到数据都会*2