野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14602|回复: 3

485通信从机端

[复制链接]
发表于 2016-9-14 14:01:06 | 显示全部楼层 |阅读模式
485通信从机端,等待接收指令完成后,发送应答指令前应加相应延时,这个问题一直困扰着我,原本以为是时序的问题。今天,我就按照火哥的程序修改调试,发现当接收一个字节数据后,发送应答指令不用加延时就可以正常发送;如果接收两个或以上字节后,发送同样的应答指令就需要加延时处理才能正常发送出去。这是为什么呢?大家有遇到类似的问题吗?有没有好的解决方案?
ps:火哥的程序里是接收一个字节数据后再发送数据的。
回复

使用道具 举报

发表于 2016-9-14 14:18:14 | 显示全部楼层
暂时没,你就按照这样的协议来。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-14 15:14:28 | 显示全部楼层
fire 发表于 2016-9-14 14:18
暂时没,你就按照这样的协议来。

假设从机端等待主机端发送命令,这条命令有5个字节,接收完毕后,将最后一个字节数据返回给主机。代码根据火哥的程序进行了修改,通过串口调试助手测试,发送一帧十六进制数据:01 02 03 04 05;此时就不能正常发送数据,必须要加延时;如果是利用定时发送一个字节(05H)处理,当串口调试助手发送字节为5时,接收到一个字节数据05H。求解,有什么可以替代延时吗?比如标志位判断什么的。
代码如下所示:
  1.   while(1)
  2.   {
  3.     GPIO_ResetBits(mac485REDE_PORT,mac485REDE_PIN); //½øÈë½ÓÊÕģʽ
  4.     do
  5.                 {
  6.                         while(        USART_GetFlagStatus(USART2,USART_FLAG_RXNE)!= SET);//ÂÖѯֱµ½485½ÓÊÕµ½Êý¾Ý
  7.                         temp[cnt] = USART_ReceiveData(USART2);
  8. cnt++;
  9.                 }while(cnt<5);
  10.                 if(cnt >= 5)
  11.                 cnt = 0;

  12. GPIO_SetBits(mac485REDE_PORT,mac485REDE_PIN); //&frac12;&oslash;&Egrave;&euml;·&cent;&Euml;&Iacute;&Auml;&pound;&Ecirc;&frac12;
  13.     USART_SendData(USART2, temp[4]);         //·&cent;&Euml;&Iacute;&Ecirc;&yacute;&frac34;&Yacute;
  14.     while (USART_GetFlagStatus(USART2,USART_FLAG_TC) !=SET);//&Acirc;&Ouml;&Ntilde;&macr;&Ouml;±&micro;&frac12;·&cent;&Euml;&Iacute;&Ecirc;&yacute;&frac34;&Yacute;&Iacute;ê±&Iuml;
  15.     printf("\r\n·&cent;&Euml;&Iacute;&Ecirc;&yacute;&frac34;&Yacute;&sup3;&Eacute;&sup1;&brvbar;&pound;&iexcl;\r\n");
  16.   }
复制代码

回复 支持 反对

使用道具 举报

发表于 2016-9-14 15:41:22 | 显示全部楼层
可心827 发表于 2016-9-14 15:14
假设从机端等待主机端发送命令,这条命令有5个字节,接收完毕后,将最后一个字节数据返回给主机。代码根 ...

没有,必须要加下延时。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-23 07:38 , Processed in 0.035638 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表