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端的波特率,或者还有其它什么办法对软件进行调整?