jkeeawoq 发表于 2025-11-14 16:15:10

求助 STC8H8K64U IIC 从机模式通讯问题

1. STC8H8K64U 作为从机与其它单片机通讯时,某一字节的最高位发送1时,数据存在延迟!!
具体表现为:当从机发送{2, 2, 254, 2, 254, 254}时,最高位每次由0变为1时,都存在延迟,如图所示,这是为什么呢?

jkeeawoq 发表于 2025-11-14 16:22:10

目前速率是160kHz,当速率为200kHz时,延迟导致误认为STOP,从而导致IIC传输故障

神农鼎 发表于 2025-11-14 19:04:51

把你硬件原理图 贴出来,另外 I2C 要加上拉电阻,I/O模式设置为开漏

DebugLab 发表于 2025-11-15 15:17:39

可能是上拉不足导致的上升沿速度慢,上拉电阻(单片机内部的4K上拉或外部上拉电阻)是如何设置的?

jkeeawoq 发表于 2025-11-17 10:45:49

神农鼎 发表于 2025-11-14 19:04
把你硬件原理图 贴出来,另外 I2C 要加上拉电阻,I/O模式设置为开漏

开漏,外部上拉2K 电阻

jkeeawoq 发表于 2025-11-17 10:46:01

DebugLab 发表于 2025-11-15 15:17
可能是上拉不足导致的上升沿速度慢,上拉电阻(单片机内部的4K上拉或外部上拉电阻)是如何设置的? ...

开漏,外部上拉2K 电阻

jkeeawoq 发表于 2025-11-17 10:48:38

jkeeawoq 发表于 2025-11-17 10:46
开漏,外部上拉2K 电阻

应该是主机释放ACK后,STC单片机的发送数据还没准备好导致的

jkeeawoq 发表于 2025-11-17 10:50:49


这是IIC 中断代码:

void I2C_Isr() interrupt 24
{
    if (I2CSLST & 0x40)
    {
      I2CSLST &= ~0x40; //处理START事件
      isda = 1;   //若为重复起始信号时必须作此设置
      write_count = 0;
    }
    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;
            current_addr = addr;
            I2CTXD = iic_buffer;
      }
      else //处理RECV事件(RECV DATA)
      {
            iic_buffer = I2CRXD;            //处理RECV事件(RECV DATA)
      }
    }
    else if (I2CSLST & 0x10)
    {
      I2CSLST &= ~0x10;                     //处理SEND事件
      if (I2CSLST & 0x02)
      {
            I2CTXD = 0xff;                      //接收到NAK则停止读取数据
      }
      else
      {
            I2CTXD = iic_buffer[++addr];            //接收到ACK则继续读取数据
      }
    }
    else if (I2CSLST & 0x08)
    {
      I2CSLST &= ~0x08;                     //处理STOP事件
      if (iic_stop_callback != NULL) {
            iic_stop_callback(current_addr, write_count);
      }
      isma = 1;
      isda = 1;
    }
}

神农鼎 发表于 2025-11-21 10:27:53

https://www.stcaimcu.com/data/download/Datasheet/STC8H.pdf

先用 2个 STC8H8K64U 实现下:







jeremyleung 发表于 2025-12-5 15:16:45

请问解决了吗
页: [1]
查看完整版本: 求助 STC8H8K64U IIC 从机模式通讯问题