APP下载

一种串口波特率匹配方法研究与实现

2023-03-22陈文印吴同德陈亚平吴科甲

物联网技术 2023年3期
关键词:机侧机设备波特率

汤 婕,陈文印,吴同德,陈亚平,胡 超,吴科甲

(福建信息职业技术学院,福建 福州 350000)

0 引 言

串口通信是芯片或者设备的重要通信方式之一,具有结构简单并且能够实现远距离通信等优点,应用广泛。常见的芯片都集成有串口外设,通信双方的通信参数需完全匹配,才能正常交互数据。其中波特率、停止位、校验位以及数据位是串口的几个参数指标[1-3]。

国际上规定了一个标准波特率系列,常用的波特率有1 200、1 800、2 400、4 800、9 600、19 200 和 115 200 等。在工程实践中,有些工控PLC、智能接口等会规律地向外发送一些固定的字符或数据,然后等待外部设备向它们输入期待中的握手信号,大部分485控制采集设备只会被动应答。

无论采用哪种方式,由于设备的波特率是可配置的,在未告知设备实际工作的波特率情况下,如何快速获取并修改设备波特率等通信参数,成为项目实施的一个重要问题。

针对上述问题,本文创新地提出一种只需普通调试工具也能在短时间内进行参数匹配的方法,该方法代码门槛低、容易实现,对嵌入式芯片无特殊要求,本文还给出了主机侧和从机侧的实现工作流程。

1 研究现状

目前有不少研究人员对波特率等通信参数的自动识别进行研究,可以归为以下几种方法[4-10]:

(1)标准波特率穷举法。该方法要求从机侧的波特率必须在有限的几个固定数值之间变化,如300~115 200之间的标准值,且从机侧的工作振荡频率稳定。主机启动通信程序后,逐个尝试以不同的波特率接收从机发出的特定字符,直到能正确接收为止。该方法操作简单,但连接时间长,局限于只能在固定数值间变化。

(2)码元宽度实时检测法。该方法要求从机按照约定发送某一数据,主机通过嵌入式芯片定时器测量RXD引脚上输入数据的码元宽度,而后计算出待测系统通信的波特率。该方法目前应用比较广泛,但对主机侧性能要求较高,需要能够测试出码元宽度。例如,某GSM模块在设计时为了适应各种通信波特率,要求其通信的系统首先发送AT指令,它就是依靠AT指令的码元宽度计算出对方波特率的。

(3)固定波特率法。该方法在主机侧默认一个波特率,收到不同波特率发出的特定指令并解析出来,以十六进制进行比较,分析出从机侧发送的波特率,随后即可进行通信。该方法理论上没有可靠的保证,在实际应用中匹配不成功的概率较高。

2 方法原理

2.1 总体流程

从机设备在上电后,以特定波特率保持一小段时间,此时从机若接收到主机以相同波特率发送的特定指令,从机设备就维持该波特率。主机设备此时可以发送修改或者读取串口通信参数的配置指令。修改后重启从机设备,从机设备按照设置后的参数运行,从而达到串口通信匹配的过程,如图1所示。

图1 波特率匹配流程

具体流程可分为如下三个阶段:

第一阶段为握手阶段,主机侧设置为默认参数运行,例如“9600,8,N,1”,并按照一定周期发送保持波特率指令“#keepbaud”,此时命令发送周期应小于1 s,确保从机侧能收到指令。重启从机设备,从机设备在重启后2 s内按照默认参数运行,能接收到主机侧发送的指令;收到指令后,从机应及时返回应答指令“#ok”。主机收到应答指令,就可以判断与从机握手成功。

第二阶段为调试阶段,从机收到主机发送的保持波特率指令后继续保持默认参数运行,并且处理主机后续发送的其他指令。在这个阶段,主机可以发送指令读取或者修改串口运行配置参数,例如“#115200,8,N,1”,从机收到指令后返回应答指令。

第三阶段为重启运行阶段。主机侧此时不能发送保持波特率指令,若主机侧发送了其他指令,例如ModBus指令,从机侧应忽略这些指令。重启2 s后,设备将以修改之后的波特率运行,处于正常的工作状态。如果设备被设计为ModBus设备,可以使用该协议对设备进行调试。

2.2 主机侧工作流程

主机侧一般为个人电脑或者专用的配置设备,不论设备能否运行一些高级的语言,只需要有定时器和串口外设,就能实现主机侧相关功能。参考工作流程如图2所示。

图2 工作流程

首先,主机侧应不断发送保持波特率指令“#keepbaud”,时间间隔可以取0.5 s左右,时间间隔要保证从机侧在等待的过程中至少收到一条指令。发送的总时间长度可以取5 s,给操作人员足够的操作时间。5 s后,发送握手指令“#echo”,查询从机侧是否处于配置模式,若未处于配置工作模式,则回到第一步。最后,发送串口参数配置指令,例如“#115200,8,N,1”,收到从机的应答则整个配置流程结束。

2.3 从机侧工作流程

从机侧一般为单片机等嵌入式系统。从最简单的51系列到复杂的ARM系列,嵌入式系统功能差别巨大,性能参差不齐。但是不论功能如何,一般都有定时器外设和串口外设,只要有这两种外设,就可以实现从机侧工作流程。具体工作流程如图3所示。

图3 从机侧工作流程

嵌入式系统上电后,首先打开串口功能,跟主机侧一样,以默认参数运行,保持接收状态延时2 s。若此时主机侧发送保持波特率指令“#keepbaud”,2 s后从机收到保持波特率指令,则进入到配置模式,反之则进入正常工作模式。进入配置工作模式时,串口仍然保持默认参数运行,保证收到后续的指令。进入正常工作模式,串口则根据配置参数运行,匹配现场实际工作环境。进入配置工作模式后,串口保持接收状态。接收到数据后,首先判断是否为“#echo”回显指令,若为回显指令,返回应答包。回显指令主要用于测试判断从机侧是否处于配置工作模式。若不是回显指令,从机应继续判断指令是否为配置指令;若为配置指令,将收到的配置参数写入FLASH或者E2PROM中并应答。掉电重启后进入正常工作模式时,从存储外设中读取出相关配置参数。

3 测试与验证

3.1 Arduino参考代码

采用本方法测试验证时,使用乐鑫的ESP32开发板,并通过开源电子平台Arduino软件搭建ESP32开发环境。根据上述流程,采用C++语言对其进行测试验证,Arduino部分参考代码如下:

3.2 测试与验证

如图4所示,采用乐鑫的ESP32开发板、温湿度传感器以及自主设计的拓展开发板来搭建硬件测试环境。将ESP32开发板插到拓展板上,然后通过杜邦线将拓展板和温湿度传感器连接,最后用USB数据线将ESP32连接到电脑。这样就可以实现对设备的串口波特率的修改和匹配。

图4 实物接线示意图

采用串口调试助手进行联调,从主机端向从机发送指令,从机设备接收到指令后进行应答。接收到应答信号后主机端向从机发送修改指令,从机设备接收到指令后保存并应答。实现效果如图5所示。

图5 波特率匹配示意图

4 结 语

本文利用485通信协议的特点,提出了一种容易实现、对设备芯片无特殊要求、可以广泛使用的匹配方法,可利用普通的串口调试助手在较短的时间内完成参数匹配过程。文中对主从机侧软件的流程进行了详细说明,并给出了ESP32的参考代码。该方法经过多种软硬件联合调试和验证,方法简单可靠,取得了很好的效果。该方法不仅能够大大减少调试过程中的工作量,还能在短时间内快速识别设备的波特率。

猜你喜欢

机侧机设备波特率
基于滑模观测器的直驱PMSG机侧控制算法研究与应用
4.3米顶装焦炉机侧烟气治理设计与实践
PMSM四象限驱动系统的自适应滑模和反步控制
基于FPGA的异步串行通信波特率容错设计
浅谈煤炭生产企业综机设备管理问题与优化策略
陶瓷工程中冷等静压机设备的监造工作
论港机设备状态检测预知维修与管理
钢管倒棱机设备及专业技术水平简介
C*Core芯片SCI串口波特率容限优化
计算机多设备接口波特率不匹配的研究