基于STC10F04EX的多串口数据收发系统
寄存器AUXR1,地址A2H。其中的D7位关系到单片机内在的串口切换。例如:
3.2 数据存储及转发
STC10F04EX单片机,内部数据存储器为256 B,片上扩展的外部数据存储器为256 B,共计512 B,数据空间紧凑。程序运行中的一些变量需要占用一部分数据空间,因此只能开辟约220个字节作为缓存空间,暂存接收到的来自串口设备的数据。如果一次接收的数据量小于缓存空间,则不会导致数据溢出;如果外部设备需传送的数据量较大,则必须与外部设备建立联络控制发送,以使每次传来的数据小于系统缓存,避免数据丢失现象的发生。
所建立的水质监测系统中,“光谱仪”给出的数据量较大,因此“多串口收发控制系统”分时连接到“光谱仪”时,采用命令应答方式控制光谱仪的数据发送,分批多次传送。单片机将UART指向光谱仪,首先向光谱仪发送命令,指明数据来源和传送的数据量(例如200个字节);其次等待光谱仪的响应并将传来的200个字节的数据暂存在所开辟的缓冲区中;然后再将UART切换至无线模块通道,将单片机缓存中的数据写入无线模块转发出去;重复进行上述步骤直至接收到光谱仪的全部数据。
水质监测系统中的另外2种设备的数据量相对较小,可以一次性接收/转发。
3.3 接收/转发控制流程
根据设备的不同数据周期,以时间为线索,为相应的设备分配接收/发送时间(图2),在所分配的时间里,单片机要进行UART通道切换:指向串口设备接收或发送数据、指向无线设备发送数据。
程序采用中断方式处理定时、串口的数据接收/发送、键盘输入等过程。以中断方式运行,提高了程序的执行效率。图3为定时中断服务程序流程图。该水质监测过程,就是循环扫描3个水监测设备,获取数据并进行无线转发。
3.4 主要的程序功能模块说明
串口驱动程序为分析判断数据来源,并调用相应的函数,完成对不同串口设备的数据接收和发送。将接收到的数据暂时保存于缓存中;将缓存中的数据进行转发;定时中断程序为周期性地切换UART通道,分别连接到外部的3个串口设备上和无线发射模块上。切换串口通道的同时,调整串口通信参数,以适应不同的串口设备。触发串口发送过程,将缓存中的数据写入无线模块转发;INT0中断服务程序为及时响应键盘操作,然后调用相应的函数,完成参数设置等控制任务;显示程序为控制7279A.驱动LED数码管,显示系统状态等信息。
4 结语
多串口数据收发控制系统,已应用于水环境监测的数据转发,工作稳定,数据收发可靠。
本系统为采用一片单片机控制的单核心结构,与采用多核结构相比,尽管只能分时使用UART,但数据协调相对容易,并且在设计时已考虑了数据衔接问题,不会导致数据丢失现象的发生;与采用多串口卡的方案相比,本系统可以脱离计算机独立工作,因此现场不需要一台计算机参与数据接收;无线方式数据传送,传送距离相对更远;系统占用资源少,维护成本降低。
该系统还可应用于其他的多串口数据收发场合。经过扩展,可连接的串口数目可以进一步扩大。
收发器 相关文章:
- 藏在系统核心芯片中的DRAM控制器(12-10)
- 面向信号处理与通信系统的下一代设计流程(08-22)
- 为什么应该阻止静电放电?(05-28)
- 快速通往量产的四个步骤:利用基于模型的设计开发软件定义无线电(02-29)
- 一文打尽嵌入式系统设计中常用总线和接口(05-18)
- FPGA系统设计原则和技巧之:FPGA系统设计的3种常用IP模块(06-05)