PC端波特率能否精确调整

萧凯 2014-10-31 03:27:21
本人在做一套测试设备,使用的是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端的波特率,或者还有其它什么办法对软件进行调整?
...全文
593 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
萧凯 2014-11-04
  • 打赏
  • 举报
回复
引用 6 楼 u012586257 的回复:
9600 和 9615,这点误差应该不会产生误码。你可以降低波特率测试来确认。 更可能是出现了误触发,即信号干扰形成假起始位,从而读到多余数据。 你的数据没错,只是有多余数据,对吧? RS485 总线存在全静默的时刻,即所有设备都处于侦听状态,没有设备驱动总线,总线处于悬浮状态,这时容易受干扰而产生假数据。解决方法可以在数据线之间加终端电阻,还不行可以分别加 上拉/下拉 电阻到数据线+/- 端
今天又测试了一下,发现是485集线器存在问题,有一个从机端口损坏导致从机回传信号存在干扰。
unsv29 2014-11-01
  • 打赏
  • 举报
回复
楼主,你的问题刚刚提问,很好。 首先漂移之类的大概是猜想。第一次听说。 但我宁愿相信是你用的232转485的转换器出了问题。 真是漂移,大概晶振质量太差,或电路之类有问题。那只有降低波特率。 如4800。串口助手可以选择sscom,聂小猛的。这个几乎是网上最厉害的助手了。简单好用。反应快,不丢包。 ===================== 我刚才又看了一下上面这些回复,感觉你的STM32软件可能写的有问题。485切换的时候要注意。
falloutmx 2014-11-01
  • 打赏
  • 举报
回复
9600 和 9615,这个误差率连1%都不到,应该是可以接受的。误码严重时候量下波形吧,看看脉宽多少
萧凯 2014-11-01
  • 打赏
  • 举报
回复
引用 6 楼 u012586257 的回复:
9600 和 9615,这点误差应该不会产生误码。你可以降低波特率测试来确认。 更可能是出现了误触发,即信号干扰形成假起始位,从而读到多余数据。 你的数据没错,只是有多余数据,对吧? RS485 总线存在全静默的时刻,即所有设备都处于侦听状态,没有设备驱动总线,总线处于悬浮状态,这时容易受干扰而产生假数据。解决方法可以在数据线之间加终端电阻,还不行可以分别加 上拉/下拉 电阻到数据线+/- 端
楼主说的没错,果然不是波特率的问题。我使用的是1转8的485集线器,昨天我不接从机,利用串口调试助手,发送主控信号,该设备居然给我返回了2~4个字节的数据,数据大概是“FF,FC”这样的。您觉得这个设配算正常吗?,另外在从机端485端口,添加匹配电阻可以解决这个问题吗? 还有一个问题,为什么我STM32终端可以不受这些信号的干扰呢?
schlafenhamster 2014-11-01
  • 打赏
  • 举报
回复
"如PC端常用的波特率是9600,而该单片机只能产生9615的波特率" 可以有3%的误差.
mangoalx 2014-10-31
  • 打赏
  • 举报
回复
9600 和 9615,这点误差应该不会产生误码。你可以降低波特率测试来确认。 更可能是出现了误触发,即信号干扰形成假起始位,从而读到多余数据。 你的数据没错,只是有多余数据,对吧? RS485 总线存在全静默的时刻,即所有设备都处于侦听状态,没有设备驱动总线,总线处于悬浮状态,这时容易受干扰而产生假数据。解决方法可以在数据线之间加终端电阻,还不行可以分别加 上拉/下拉 电阻到数据线+/- 端
dceacho 2014-10-31
  • 打赏
  • 举报
回复
似乎可以重写PC端的串口驱动,PC处理速度快,让PC端改波特率的话更可靠. 但对PC端的驱动一窍不通,如果楼主认识写PC驱动的人可以了解下
woshi_ziyu 2014-10-31
  • 打赏
  • 举报
回复
引用 3 楼 wxh751117 的回复:
[quote=引用 1 楼 woshi_ziyu 的回复:] 有些串口软件的波特率是可以进行自定义设置的 楼主出现这样的现象也有可能是485转换器的问题
能否给推荐几个这样的串口软件,还有关于485转换器的问题,能否详细的讲一下。[/quote] 可以试试 友善串口调试助手
萧凯 2014-10-31
  • 打赏
  • 举报
回复
引用 1 楼 woshi_ziyu 的回复:
有些串口软件的波特率是可以进行自定义设置的 楼主出现这样的现象也有可能是485转换器的问题
能否给推荐几个这样的串口软件,还有关于485转换器的问题,能否详细的讲一下。
萧凯 2014-10-31
  • 打赏
  • 举报
回复
能否给推荐几个这样的串口软件,还有关于485转换器的问题,能否详细的讲一下。
woshi_ziyu 2014-10-31
  • 打赏
  • 举报
回复
有些串口软件的波特率是可以进行自定义设置的 楼主出现这样的现象也有可能是485转换器的问题

27,373

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧