APP下载

一种非声传感器信号自适应传输方案

2020-04-10蔡侃侃

声学与电子工程 2020年1期
关键词:波特率字节串口

蔡侃侃

(第七一五研究所,杭州,310023)

声呐基阵中的各类非声学传感器信号(如深度传感器、航向传感器)能够实时反映基阵位置及所处的水文环境,对发射阵所处环境评估及安全性监测有重要意义。然而,不同类型传感器传输信号的数据格式和波特率各不相同[1-2],导致接收信号时,不同传感器的信号传输端口不可互换[3]、兼容性较差、可靠性不足[4-5]。本文提出一种传感器信号自适应接收传输方案,该方案使得不同类型传感器传输端口可任意互换,方便工程上设备安装,快速故障定位;也可运用端口冗余增加系统设计的可靠性,给水下非声传感器信号传输带来诸多便利。

1 硬件设计

在某拖体声呐基阵中,水下传感器单元信号传输链路如图1所示,该拖体需要向干端传输三种传感器信号,分别是温深传感器信号、航向倾角传感器信号、高度传感器信号。

图1 水下传感器单元信号传输链路

图中的三种传感器都是使用RS422接口,分别通过三路连接器将信号发送到信号汇聚舱内的传感器信号汇聚板上。汇聚板共有4个信号输入端口,其中3个端口分别用来接收三路传感器信号,留下一个输入端口用作备用信号传输。信号汇聚板上的FPGA将接收到的所有信号整理打包并通过RS422接口输出给接收设备。所有传感器使用相同型号的连接器和电平标准(RS422接口电平标准),且连接器的端子定义相同,从而保证了各个传感器能够连接任意一个输入端口。

2 软件设计

在本传感器信号传输单元中,航向倾角传感器输出信号波特率为 115 200 bps,每个数据包 108 Byte,数据包发包频率10 Hz;温深传感器输出信号波特率为9 600 bps,每个数据包30 Byte,数据包发包频率4 Hz;高度传感器输出信号波特率为9 600 bps,每个数据包9 Byte,数据包发包频率8 Hz。由此可见,各个端口需要自适应不同波特率、数据宽度、发包频率。本设计自适应识别、传输各类非声传感器的方案如图2所示。

图2 非声传感器信号传输方案

在传感器信号汇聚板上,通过FPGA内部DCM模块倍频产生一个144 MHz的高频时钟,由于高频时钟的频率远高于各类传感器输出信号波特率,高频采集可以快速判断传感器信号的边沿变化,从而按照9 600 bps和115 200 bps完整还原出各类传感器的输出信号。故可以通过高频时钟采集各类传感器输出信号来达到波特率自适应目的。

方案串口总线上传输每个字节用 10位表示。依次是1位起始位、8位数据位、1位停止位。起始位为“0”(低电平),停止位为“1”(高电平)。当 144 MHz的高频时钟检测到串口起始位的下降沿后,分别在起始位时间段内按照不同波特率分别均匀采集5次起始位信息(即以一个144 MHz时钟周期为1节拍,对于波特率9 600 bps,每隔3 000节拍采集一次;对于波特率115 200 bps,每隔250节拍采集一次)。若5次采集中有4次采集电压均为低电平,则判断起始位有效。之后按照两种不同波特率采集串口上每一位信息。当采集到字节终止位时,为防止汇聚板上时钟与传感器内部时钟的频率或相位累加偏差过大,输出需要进行字节对齐操作,即串口输出字节的停止位(高电平)与下一字节的起始位(低电平)之间必然会有一个下降沿,可以通过跟踪该下降沿校准汇聚板上本地时钟与传感器内部时钟的频率或相位偏差。本方案的具体做法是运用 144 MHz的高频时钟检测前字节停止位与后字节起始位之间的下降沿,在下降沿后即判断后一字节已经开始。若在当前字节停止位出现后高频时钟连续 3 bit时间范围内均采集不到下一字节的起始位信号,则判断当前数据包结束。

图3 串口字节数据帧格式

为防止总线信号抖动产生乱码,分别按照波特率9 600 bps和115 200 bps存储3 Byte(共30位数据)。若接收有效信号,则该信号必然符合串口协议,即该信号第1、11、21位均为低电平信号、第10、20、30位均为高电平信号。若接收信号不符合串口协议,则丢弃。

在符合串口协议的基础上,检查传感器输出信号与协议是否一致。三种输出信号协议格式见表1。输出数据均含有固定不变的字节信息,如航向倾角传感器及温深传感器都有固定不变的数据帧头、高度传感器第3、7、8、9字节为固定字节。以9 600 bps及115 200 bps波特率分别获取传感器输出的前9 Byte,包含协议中固定不变的字节信息,将它们与传感器信号传输协议对比,从而识别该数据为何种传感器的发送数据。流程如图4所示。

图4 判别传感器类型流程图

判别传感器类型后,为保证传输信号的可靠性,需要判断传感器输出信号的字节数是否与表 1中的协议字节总数一致,按照图3示意方案每次捕捉到1 Byte后,FPGA内部计数器加1。当数据包结束时,内部计数器可以统计该数据包的字节数。将该字节数与表1协议中相应传感器的字节总数对比,判断当前传感器输出数据包的字节总数是否正确,若其字节总数与协议不一致,则将该数据包丢弃。

由以上分析可知,当汇聚板完整接收到数据包后,即可判断该数据包对应的传感器类型。按照图1的硬件连接传感器信号传输单元,由于汇聚板上FPGA与每一个端口相连的引脚各不相同,通过FPGA引脚的物理分布即可判断发包传感器连接的端口号。FPGA抓取每个数据包中的传感器信号,并将这些信号按照表2所示的输出协议将所有信号打包上传。分别用单字节11、22、33、44(十六进制数)代表信号汇聚舱的端口1、端口2、端口3、端口 4。通过汇聚板信号输出协议,可以在信号接收端了解到各个传感器信号连接的端口位置。若某种传感器信号未连接或该传感器信号发送数据错误,汇聚板在当前帧中将该传感器数据置零。

表1 传感器输出信号协议

表2 汇聚板信号输出协议 Byte

实现的时序控制逻辑如图5所示,采用同源高频时钟作为时钟信号,在其上升沿判断3路传感器信号的串口协议、数据协议、字节总数是否符合要求。当被判定符合要求后,在该时钟上升沿将数据写入寄存器。同源时钟经过分频得到周期为0.1 ms的低频时钟,在该低频时钟上升沿将寄存器中数据输出给串口。

图5 时序控制逻辑

3 实测数据

按照图1的端口连接方法,在串口调试助手软件上测得的数据如图7所示。为了验证本文提出的非声传感器信号自适应传输方案的可实现性,按照图6的端口连接方法,将航向倾角传感器连接到端口 2,温深传感器连接到端口 3,高度传感器连接到端口1,测得的数据如图8所示。

图6 水下传感器单元输入信号更改后的传输链路

图7 第1组实测数据

图8 第2组实测数据

对比图7及图8可知,无论汇聚板输入端口连接何种传感器,无论汇聚板输入端口波特率、数据长度、数据协议有何不同,汇聚板均可按表2所示的协议将接收的所有传感器数据打包上传,即实现了非声传感器信号的自适应传输。

4 总结

本方案通过传感器信号自适应传输技术增加了电路单元的兼容性、易操作性与可维修性。通过串口格式检测、串口协议检测和数据包长度检测增加了单元的可靠性。实验室及项目实际验证,该方案可实现传感器信号的自适应传输,且工作稳定、可靠性高。在硬件接口通用的条件下,本方案可推广用于输出信号协议、波特率、数据长度等各异的信号传输体系。

猜你喜欢

波特率字节串口
UART 波特率检测电路的FPGA 设计算法与实现
No.8 字节跳动将推出独立出口电商APP
浅谈AB PLC串口跟RFID传感器的通讯应用
CAN 总线波特率自适应程序设计
No.10 “字节跳动手机”要来了?
可以同时应用于不同终端设备的波特率发生器
基于MSP430的四旋翼飞行器的S-BUS通信协议的设计与实现
波特率自适应的CAN驱动在嵌入式Linux下的实现①
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索