当前位置: 代码迷 >> 单片机 >> PC端波特率可否精确调整
  详细解决方案

PC端波特率可否精确调整

热度:190   发布时间:2016-04-28 14:50:35.0
PC端波特率能否精确调整
         本人在做一套测试设备,使用的是485通讯系统。主机有两种:(1)使用STM32构造的人机界面显示终端,以下简称STM终端;(2)使用LABVIEW实现的虚拟仪器测试终端,以下简称上位机软件。这两种主机都是通过串口接一个232、485转换器来控制从机。
         测试系统总共有8个从机,使用的都是PIC16F887单片机作为主控芯片,且使用的是4M的内部晶振。这样就会存在一个问题,无法产生精确的能让电脑识别的波特率,如PC端常用的波特率是9600,而该单片机只能产生9615的波特率。
           整个系统使用的是modbus通讯协议,STM终端可以产生9615的波特率,所以控制这8个从机是毫无问题的。但是上位机软件因为和电脑的串口相连,所以只能产生9600的波特率。
           使用上位机软件控制8个从机,在1~2小时之内还可以勉强工作,工作时间过长以后,通讯就会产生非常严重的问题。通过串口调试助手回传的数据显示从机的回应信号开头多了2~4个字节的干扰信号,通常是“FF,FC”这样的。
           我分析原因是从机随着工作时间的增加,内部晶振产生温度漂移,本来波特率就不是很匹配,时间越长,误码率就会越来越大,因为STM32主机长时间通讯是毫无问题的。
          不知道我的分析是否正确,如果是这样的原因,是否可以精确调整PC端的波特率,或者还有其它什么办法对软件进行调整?
------解决思路----------------------
有些串口软件的波特率是可以进行自定义设置的 

楼主出现这样的现象也有可能是485转换器的问题
------解决思路----------------------
9600 和 9615,这点误差应该不会产生误码。你可以降低波特率测试来确认。
更可能是出现了误触发,即信号干扰形成假起始位,从而读到多余数据。
你的数据没错,只是有多余数据,对吧?

RS485 总线存在全静默的时刻,即所有设备都处于侦听状态,没有设备驱动总线,总线处于悬浮状态,这时容易受干扰而产生假数据。解决方法可以在数据线之间加终端电阻,还不行可以分别加 上拉/下拉 电阻到数据线+/- 端
------解决思路----------------------
9600 和 9615,这个误差率连1%都不到,应该是可以接受的。误码严重时候量下波形吧,看看脉宽多少
------解决思路----------------------
楼主,你的问题刚刚提问,很好。

首先漂移之类的大概是猜想。第一次听说。
但我宁愿相信是你用的232转485的转换器出了问题。
真是漂移,大概晶振质量太差,或电路之类有问题。那只有降低波特率。
如4800。串口助手可以选择sscom,聂小猛的。这个几乎是网上最厉害的助手了。简单好用。反应快,不丢包。

=====================
我刚才又看了一下上面这些回复,感觉你的STM32软件可能写的有问题。485切换的时候要注意。

  相关解决方案