This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

28035SCI实现MODBUS通讯时字节数少的时候正常 字节数大的时候(71bytes)-----



在实现MODBUS通讯时遇到问题,请高手指点。谢谢!

1.协议偶 8 1,中断接收中断发送(后来改查询发送,效果一样)。SCI配置:

SciaRegs.SCICTL1.bit.RXENA=1;
SciaRegs.SCICTL2.bit.RXBKINTENA = 1;
 SciaRegs.SCICTL1.bit.SWRESET=1;

2 问题:上位机标准MODBUS设备(触摸屏)。字节数少(13bytes)正常。发送字节较多时(实例71字节),通过中断查看发送前缓存数据表正常,继续发送后串口助手接收到的数据经常少一个(触摸屏也不能正常接收),而且数据内容在35字节后出现错误。

3查询发送在main函数主循环中:

if(DIR==1)
{
      if(UARTa.TxNUM>0)
      {
          while(SciaRegs.SCICTL2.bit.TXRDY==0){}
         SciaRegs.SCITXBUF=UARTa.Buff[UARTa.TxCount];    
         UARTa.TxNUM--;
        UARTa.TxCount++;
      }
      else
      {
        DIR = 0;
        SciaRegs.SCICTL1.bit.TXENA=0;
        SciaRegs.SCICTL1.bit.RXENA=1;
        UARTa.RxCount = 0;
        UARTa.TxNUM   = 0;
      }

}

  • 请问您的波特率设置是多少?
    串口的tx与rx以及gnd的接线是双绞屏蔽线么?
  • 感觉上是时间片的问题。
    波特率是多少,理论计算一下发送最长字节需要的时间,如果时间过长是否会导致系统中其他中断将发送中断打断,或者CPU时间片轮转不过来。
    另外,当接收端发现缺少字节,CRC校验有问题后,是否会频繁要求重发。有些情况下接收端会设置时间看门狗,时间范围内如果没有接收完,或者CRC不对会立刻要求重发,这样可能发送端一直无法发送完一整帧长帧。最好用串口监控抓一下数据包分析一下来往数据。
  • 波特率19200 非严格通讯连接方式。实验室调试状态:线长1米左右4个设备,3#站、本机4#站、USB485转换器、上位机。双绞屏蔽线菊连方式。