根据某工业现场电子设备数据记录的要求,设计了一种基于近距离无线通信的嵌入式数据记录系统。该系统分为数据存储和数据下载两大功能组成部分:数据存储部分利用DSP和FPGA完成信号的采集和处理,并将其存储到CF卡中;数据下载部分利用红外和蓝牙无线接口,在DSP的控制下实现数据的无线下载。
引言
“黑匣子”是比较流行的电子记录设备之一,广泛应用于实时记录飞机、船舶、汽车等行进过程中的重要数据。记录仪的数据下载方式通常有两种:通过传输线缆下载和通过插拔存储卡下载。
本文依据某工业现场电子设备数据记录的需求,提出了一种基于近距离无线通信的数据记录设备。该设备以红外或蓝牙方式下载数据,与传统的数据下载方式相比,下载数据时既不需要拆卸设备连接线缆或插拔存储卡,又减少了连线和插拔存储卡可能导致的接触故障。
1 设计需求
在某工业现场电子设备工作过程中,要求记录系统能够实时记录设备的各种电气信号及其工作时序,用于事后设备运行状况的分析以及故障排查、定位。需要实时采集记录的信号包括2路ARINC429信号、10路TTL数字信号以及16路模拟信号。采样频率应大于或等于1 kHz,记录时间为1 h左右。根据信号通道数量、数据采集速率和数据记录时间,可估算出记录系统的存储容量应大于500 MB。通常,微处理器内部的存储空间有限,故需要将采集到的数据存储到存储容量大、具有非易失性的外部存储器中。本系统使用Sandisk公司的1 GB工业级CF卡作为存储设备。
2 系统总体设计方案
系统采用DSP和FPGA协同控制的方案,总体设计方案如图1所示。DSP主要完成数据的实时采集和控制,FPGA的数据传输,以及与无线通信模块的数据传输;FPGA则实现数据缓存和读写CF卡的逻辑时序控制。
DSP是主控制器。选用TI公司的16位定点DSP芯片TMS320F240。它的指令周期为50 ns,内部具有544字的RAM、224K字的可寻址存储空间、双10位模/数转换器、28个独立可编程的多路复用I/O引脚、1个异步串行通信口(SCI),以及1个同步串行通信口(SPI)。其内部资源可以满
足系统对TTL信号和模拟信号的采集需求,通过外接ARINC429、红外和蓝牙专用接口芯片,实现ARINC429数据信号的采集和两种无线方式的通信。
FPGA是辅助控制器,其核心为FIFO和逻辑控制电路,用于完成DSP和CF卡间数据传输。选用Altera公司CyclonelI系列的FPGA芯片EP2C20-Q240C8。它具有142个用户可使用I/O引脚、52个M4K嵌入式阵列块和18752个逻辑单元。DSP和FPGA丰富的内部资源很好地满足了系统设计的需要。
系统主要包括数据存储和数据下载两大功能:
①数据存储。DSP实现对2路ARINC429信号、16路模拟信号和10路数字信号的实时采集,并将数据实时存入FPGA的FIFO中。当FIFO存储了一定量数据时,FPGA控制逻辑电路自动将FIFO中的数据写入CF卡中。
②数据下载。首先,DSP将系统的蓝牙和红外模块设置为从设备。当接收到工作人员所持的带有蓝牙或红外接口的地面设备发出的连接请求后,先进行鉴权,鉴权通过后与其建立连接。然后,FPGA控制逻辑电路读出CF卡中数据并存人FIFO,DSP通过查询或中断方式将FIFO中的数据通过无线通信模块发送给地面设备。
3 各功能模块设计
3.1 FPGA功能模块设计
使用FPGA实现异步FIFO模块和CF卡读写模块,是本设计的重点,也是难点。3.1.1异步FIFO模块
数据记录设备的实时性强、数据量大。为了提高数据传输速度、避免数据堵塞,利用FPGA硬件设计上的灵活性,在其内部构建了一个宽度为16位、深度为512的异步FIFO模块,作为DSP与CF卡之间数据传输的中继站。
异步FIFO的结构图如图2所示。它包括4个模块:数据存储模块、写地址产生模块、读地址产生模块和标志位产生模块。FIFO的读写采用读时钟和写时钟两个时钟。写时钟同步的信号有写地址产生模块生成的写请求和写地址;读时钟同步的信号有读地址产生模块生成的读请求和读地址。写使能和读使能分别由DSP与FPGA数据传输控制逻辑和CF卡读写控制逻辑生成。标志位产生模块由读写地址关系生成FIFO存储状态标志,并反馈给主机DSP。DSP通过查询该标志来控制与FPGA的数据传输。
3.1.2 CF卡读写模块
CF卡读写模块分为CF卡读控制模块和CF卡写控制模块。CF卡读或写模块的设计具有相似性。这里仅介绍写CF卡的工作过程。
首先,设置CF卡的属性寄存器。CF卡有4个属性寄存器,通常只需设置“配置选择寄存器”以选择CF卡的读写模式。CF卡的读写模式有3种:I/O模式、Memory模式和True IDE模式。本设计使用16位的Memory模式读写CF卡。Memory模式是CF卡默认的读写模式,所以在CF卡初始化过程中不需要设置“配置属性寄存器”。
其次,设置CF卡的任务文件寄存器。本设计中使用的任务文件寄存器有:数据寄存器、扇区数寄存器、扇区号寄存器、低柱面号寄存器、高柱面号寄存器、驱动器选择/磁头寄存器和状态/命令寄存器。对它们进行没置,可选择扇区寻址方式,设定每次读写的扇区数和逻辑寻址地址,并获取CF卡状态以及输入读写命令。
CF卡的寻址方式与计算机的硬盘操作方式类似。扇区的寻址方式有两种:物理寻址方式(CHS)和逻辑寻址方式(LBA)。本设计使用LBA寻址,对应28位LBA地址。
磁头寄存器存放LBA地址的27~24位;柱面号寄存器存放LBA地址的23~8位;扇区号寄存器存放LBA地址的7~0位。
写CF卡一个扇区的流程如图3所示。每次向CF卡存储数据时,应该先获取上次存储到的扇区的LBA地址,从而获得此次存储的起始扇区地址。为了记录每次存储到的扇区的地址,将LBA地址为0的扇区保留,专用于记录扇区地址。在开始一次写操作之前,应该先读取LBA地址为O的扇区,获得上次存储的LBA地址;然后加1获得此次写操作的LBA地址,并向指定的扇区写数据。
利用QuartusII作为FPGA开发平台,使用VHDL硬件描述语言实现了FPGA与DSP的接口、异步FIFO的存储以及CF卡的读写逻辑。在QuartusII自带仿真工具下得到的写CF卡时序仿真结果如图4所示。
3.2 无线通信模块设计
3.2.1蓝牙模块设计
蓝牙模块采用BTM0604C2P。它内嵌蓝牙芯片BlueCore4-Ext,兼容蓝牙2.0+EDR规范,最高支持3 Mbps的数据速率,外置天线,有效距离为10 m,具有标准的UART接口。
DSP与蓝牙模块之间通过HCI协议层建立连接。HCI(Host Controller Interface,主机控制器接口)协议,为DSP提供了一个访问蓝牙模块内部基带控制器和链路管理器的命令接口,可以获取蓝牙芯片的配置参数。
本设计中,DSP和蓝牙模块之间采用UART方式进行通信。DSP使用的控制信号除了异步串行通信收发信号SCIRXD和SCITXD外,还有4个控制信号,分别与蓝牙模块的LNK、CLR、RTS和CTS引脚相连。其中,LNK脚用于指示蓝牙主机和从机连接是否建立,地面设备PC机为蓝牙主机,DSP作为蓝牙从机;CLR脚用于切换蓝牙模块的工作模式,包括参数设置模式和数据传输模式;RTS和CTS脚为“请求发送”和“清除发送”引脚,用于实现DSP和蓝牙模块之间的对话,使数据正常传输。
蓝牙模块的SLEEP引脚,既可以使蓝牙模块在休眠和唤醒状态间切换,也可以用于清除蓝牙模块内嵌芯片记忆的配对主机地址。这些功能的实现由按键控制,通过区别按键的时长加以区分所需实现的功能。蓝牙模块的复位信号RESET输入低电平脉冲时有效,而且要求脉冲宽度大于5 ms。
3.2.2 红外模块设计
红外模块采用HP公司的红外收发器芯片HSDL_1001和红外编解码器芯片HSDL_7001,二者均遵循IrDA 1.O协议。红外信号的收发使用PWM方案,采用RZI编码调制解调,调制脉冲宽度为3/16位,调制频率为38 kHz。由于硬件接口的限制,嵌入式系统中红外通信的速率为9 600~ll5200 bps。红外数据的传输以帧为基本单位,传输过程中采用1 6位的CRC码进行数据校验。
系统采用Maxim公司的芯片MAX3110作为DSP的SPI接口和HSDL_7001的UART接口之间的转换芯片。MAX3110和HSDL_7001均使用外部无缘晶体振荡电路供电,所用的晶振大小分别为1.843 2 MHz和3.686 4 MHz。需要下载的数据,首先经过红外编解码器编码,再通过红外收发器上集成的发光二极管以红外光信号的形式向PC机发送。
4 系统软件设计
系统的功能时序流程如图5所示。DSP部分程序用C语言编写,结合硬件电路对数据采集、数据传输进行处理和控制。主要的中断应用有
ARlNC429信号采集中断和红外通信请求中断。系统的工作流程以时序控制流程为主线。系统初始化之后,进行任务选择与执行。若特定的I/O口置1,则进入数据存储程序,采集数据并存至CF卡;若I/O口置O,则进入数据下载程序,等待主设备的连接请求,鉴权并建立相应的连接,读取CF卡数据,并通过无线通信模块向主设备发送。
结语
该系统利用DSP与FPGA协同控制方式实现数据的采集和存储,利用红外和蓝牙模块实现数据的无线下载;用红外和蓝牙代替有线线缆和插拔存储卡等传统数据下载方式,操作方便,避免了传统方式可能造成的机械故障。