明教教主 发表于 2023-6-2 10:01:39

求助,串口异常

使用的是STC8A8K64D单片机,使用串口4转485和电脑通讯时通讯正常;

但和另一个单片机通讯时数据进入单片机后有时会发生变化,导致数据会掉帧;
以下是接收程序

      if(S4CON & 0X01)//接收中断
      {
                S4CON &= 0XFE;
               
                Uart4_RXArr = S4BUF;
                uart4RxCount++;
               
                if(uart4RxCount == 1)
                {
                        if(Uart4_RXArr != 0x68)
                        {
                              uart4RxCount = 0;
                        }
                }
               
                else if(uart4RxCount == 2)
                {
                        if(Uart4_RXArr != 0x50)
                        {
                              uart4RxCount = 0;
                        }
                }
//                uart4RxFlag = 3;
                if(uart4RxCount == 8)
                {
                        uart4RxCount = 0;
                        uart4RxFinish = 1;
                }
      }

有大佬遇到这种情况吗

神农鼎 发表于 2023-6-2 10:40:55

1,原理图要对,PCB 要对; 把详细的原理图PDF贴出来大家帮你分析
2,下面有通用的正确的程序


【新提醒】求STC8系列4个串口同时通信的程序,Modbus 演示程序 - 串行口,DMA支持的4组串口 - 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)

明教教主 发表于 2023-6-2 10:55:39

作为从机,和电脑通讯时1S发送一条数据,一晚上没有掉帧。和另外一个单片机通讯时会偶尔丢失一帧数据

明教教主 发表于 2023-6-2 11:51:57

问题找到了,波特率太快了,波特率改小一半就好了

神农鼎 发表于 2023-6-2 12:42:44

波特率越快,能传输的距离越短,具体实际验证
页: [1]
查看完整版本: 求助,串口异常