基于STC10F04EX的多串口数据收发系统
扫描二维码
随时随地手机看文章
引言
RS 232串口通信是一种常用的通信方式,许多数字化设备、测量仪器都具有串行接口。这些设备可以方便地与PC、PLC等控制器连接进行数据交换,从而组成一个测试检测/监测系统。
目前安装在江、河、湖等水体现场的不同种类的水环境监测设备,通过采集水样,周期性地生成一组数据通过串口向外传送。如果在现场需配置一台或多台PC,既不经济,又难以维护。本文介绍的基于单片机的多串口数据收发控制系统,可以同时连接多台不同类型的水质监测设备,现场接收采集的数据并通过无线模块向远端控制中心传递,转发传送的距离约为3 000 m,远远大于直接的RS 232互连。多串口数据收发控制系统不同于多串口卡,可以脱离计算机独立工作,是计算机串口扩展、延伸的一种全新方法。
用多串口数据收发控制系统取代计算机安置于监测现场,将来自于不同设备的数据进行初步整合,再通过无线方式向远离现场的中央控制室进行传送,则监测系统的可靠性、实时性、易维护性都大为增强。
1 水质监测系统的构成
本文所提及的水质监测系统,由光谱分析仪、水毒性分析仪、生物状态分析仪等组成,这些设备都具有RS 232接口,但是接口参数不尽一致,传送的数据格式也差别极大(见表1)。
这些位于水体现场的测试设备,需要及时地将测量数据传递给远端的中央控制室。
2 多串口数据收发控制系统
2.1 多串口数据收发控制系统工作原理
多串口数据收发控制系统,以单片机STC10F04EX为控制核心,扩展出多个全双工异步串行口(UART),用以同时连接多个外部串口设备。该系统既可独立地与所连接的设备交换数据,又能起到数据中继的作用,将来自上位端的命令传递到指定的串口设备上,或将接收到的来自不同串口设备上的数据经过初步整理后发送到上位端。
由于要连接多个下位端执行设备,但STC10F04EX的独立UART只有一个,因此,必须对该单片机的UART进行扩展,才能连接多台串口设备。经过扩展的各路UART不能同时工作,必须在I/O的配合下选择对应通道分时工作。
被监测的对象所发生的变化是个缓变过程,监测系统中的各个分析仪器所要传送的数据量有限,并且接收端大部分时间处于等待阶段,控制程序在设计时已充分考虑到数据的衔接和每种设备的采样和转换周期。因此,分时连接不会造成数据丢失导致失准,可以满足监测要求。
图1显示了多串口收发控制系统的结构框图以及与3个外部串口设备的连接。该系统既可以将接收到的数据通过无线方式对外发送,也可以用有线的方式直接传递给本地电脑。
2.2 多串口数据收发控制系统硬件组成
多串口数据收发控制系统,采用型号STC10F04XE的单片机为控制核心,外加7279A键盘及数码管驱动电路,TTL-RS232电平转换电路MAX
232,4052双4选1模拟开关,无线收发模块等组成。
STC11F04XE的单片机,以8051为内核,并具有以下鲜明特点:抗干扰能力强,1T周期CPU,独立波特率发生器,2个可切换串口,在系统可编程(ISP),片上扩展XRAM等。
单片机STC10F04EX的UART可在P1口的P1.6/P1.7(UART2)和P3口P3.0/P3.1(UART1)间切换,可以分时当2个串口使用,这为调试系统和扩展串口带来了方便。由于该系列单片机支持在系统可编程(ISP),因此系统中的UART1通过电平转换电路,直接连接到PC机的一个串口上,用于对单片机的程序下载和调试。单片机正常工作时,可将串口设置在UART2上。
采用双4选1模拟开关4052,将单片机的UART2扩展为4路。其中,单片机端的RxD/TxD分别接到4052的公共端,扩展端再由MAX232电平变换连接到外部具有串口的测量设备上。STC10F04EX的2个I/O引脚P1.1,P1.0与4052的通道选择线B、A分别相连,UART2的具体指向由这2条I/O选择控制。扩展的串口只能分时工作,具体分配见表2。[!--empirenews.page--]
由于连接的不同串口设备的通信参数不完全相同,STC10F04EX必须根据设备指向动态调整串口参数以适合外部串口设备。
显示芯片7279A可以驱动8位共阴LED数码管并可采集64个键盘位置信号。该系统通过数码管显示工作状态(收发,等待,时间,通道号,参数等);通过键盘不仅可以设置“多串口数据收发控制系统”自身参数和调节自身状态,还可修改/设置所连接的外部设备的传送参数。CPU通过4个I/O引脚与7279A的4条控制线CS、DATA、CLK、KEY连接,就可驱动8位数码管并对按键进行监控。为了响应及时,采用中断方式响应按键状态,因此将KEY连接到P3.2(int0)上。
无线收发模块,嵌入高性能射频芯片,采用高效循环交织纠检错编码,发送距离可达3 000 m。模块具有TTL电平的UART口,因此可以很方便地与单片机的一个扩展的UART连接。向无线收发模块写入和读出数据,与一般的串口操作基本一样。无线收发模块频点、空中速率、本地串口速率、校验方式等参数可以在线设置或通过厂家提供的程序进行设置。
系统中无线收发模块本地串口通信参数设为(9 600,8,N,1),数据被调制在434 MHz进行发送和接收,空中速率9 600 b/s,发射功率100 mW。
该无线收发模块,收到数据后通常延时几十到几百毫秒才发送,所带缓存256 B。若本地串口速率大于等于空中速率,则存在数据流量问题,可能会出现数据溢出导致丢失现象。因此若传送数据超过256 B,要进行数据分割,插入等待周期,采用分次发送的方式以避免数据丢失。本系统所连接的光谱仪数据量较大,因此单片机接收光谱仪数据后再经无线转发,要采用分段接收/转发方式,每次的数据量要小于256 B,多次重复,直至全部数据。
3 软件设计
3.1 有关寄存器的说明
程序运行时首先进行初始化设置,其中涉及到几个比较特别的寄存器,其定义不同于其他51系列的单片机。
寄存器AUXR,地址8EH。关系到独立波特率发生器,STC10F04EX既可以采用定时器1作为波特率发生器,又可以采用独立波特率发生器以释放定时器1,见表3说明。
寄存器AUXR1,地址A2H。其中的D7位关系到单片机内在的串口切换。例如:
3.2 数据存储及转发
STC10F04EX单片机,内部数据存储器为256 B,片上扩展的外部数据存储器为256 B,共计512 B,数据空间紧凑。程序运行中的一些变量需要占用一部分数据空间,因此只能开辟约220个字节作为缓存空间,暂存接收到的来自串口设备的数据。如果一次接收的数据量小于缓存空间,则不会导致数据溢出;如果外部设备需传送的数据量较大,则必须与外部设备建立联络控制发送,以使每次传来的数据小于系统缓存,避免数据丢失现象的发生。[!--empirenews.page--]
所建立的水质监测系统中,“光谱仪”给出的数据量较大,因此“多串口收发控制系统”分时连接到“光谱仪”时,采用命令应答方式控制光谱仪的数据发送,分批多次传送。单片机将UART指向光谱仪,首先向光谱仪发送命令,指明数据来源和传送的数据量(例如200个字节);其次等待光谱仪的响应并将传来的200个字节的数据暂存在所开辟的缓冲区中;然后再将UART切换至无线模块通道,将单片机缓存中的数据写入无线模块转发出去;重复进行上述步骤直至接收到光谱仪的全部数据。
水质监测系统中的另外2种设备的数据量相对较小,可以一次性接收/转发。
3.3 接收/转发控制流程
根据设备的不同数据周期,以时间为线索,为相应的设备分配接收/发送时间(图2),在所分配的时间里,单片机要进行UART通道切换:指向串口设备接收或发送数据、指向无线设备发送数据。
程序采用中断方式处理定时、串口的数据接收/发送、键盘输入等过程。以中断方式运行,提高了程序的执行效率。图3为定时中断服务程序流程图。该水质监测过程,就是循环扫描3个水监测设备,获取数据并进行无线转发。
3.4 主要的程序功能模块说明
串口驱动程序为分析判断数据来源,并调用相应的函数,完成对不同串口设备的数据接收和发送。将接收到的数据暂时保存于缓存中;将缓存中的数据进行转发;定时中断程序为周期性地切换UART通道,分别连接到外部的3个串口设备上和无线发射模块上。切换串口通道的同时,调整串口通信参数,以适应不同的串口设备。触发串口发送过程,将缓存中的数据写入无线模块转发;INT0中断服务程序为及时响应键盘操作,然后调用相应的函数,完成参数设置等控制任务;显示程序为控制7279A.驱动LED数码管,显示系统状态等信息。
4 结语
多串口数据收发控制系统,已应用于水环境监测的数据转发,工作稳定,数据收发可靠。
本系统为采用一片单片机控制的单核心结构,与采用多核结构相比,尽管只能分时使用UART,但数据协调相对容易,并且在设计时已考虑了数据衔接问题,不会导致数据丢失现象的发生;与采用多串口卡的方案相比,本系统可以脱离计算机独立工作,因此现场不需要一台计算机参与数据接收;无线方式数据传送,传送距离相对更远;系统占用资源少,维护成本降低。
该系统还可应用于其他的多串口数据收发场合。经过扩展,可连接的串口数目可以进一步扩大。