基于双单片机的数据通信模块的设计
高红红
(西安工业学院 陕西西安 710032)
摘 要:介绍一种基于双单片机技术的数据通信模块,他主要由2个AT89C2051单片机,调制解调芯片和RS485总线接口芯片构成。该模块通过普通铁路电话线实现了车站信号的接力式传输,通过软件模拟SPI总线实现了两单片机之间的数据通信。该设计方法不仅简化了系统结构,分散了单片机的工作任务,而且增强了系统的实时性和可靠性,提高了通信效率。
关键词:单片机;SPI总线;数据通信;调制解调中图分类号:
文献标识码:TP274
文章编号:B
1004373X(2005)2307602
DesignofDataCommunicationModuleBasedonDoubleSCM
GAOHonghong
(Xi′anInstituteofTechnology,Xi′an,710032,China)
Abstract:AkindofdatacommunicationmodulebasedondoubleSCM(singlechipmicrocontroller)isintroduced,whichismadeupoftwoSCM,MODEMchipandinterfacechipofRS485Bus.ItrealizedrelaytransmissionofsignalsbetweenstationsbycommontelephonelineandserialdatacommunicationbetweentwoSCMbysimulatedSPIBus.Thisdesignnotonlysimplifiessystemconfigu-rationanddecentralizesassignmentofSCM,butalsoboostsuprealtimeperformanceandreliabilityofthesystem,thusitimprovescommunicationefficiency.
Keywords:SCM;SPIBus;datacommunication;modulationanddemodulation
在远程测控系统中,通常采用工业控制计算机系统进行数据的收发通信,但在工业现场环境较恶劣且要求长时间连续工作的情况下,工控机的可靠性不高,尤其是硬盘、风扇、内存等很容易出现问题,导致整个系统通信中断。经过实验,以铁路电话线作为通信介质,利用单片机和调制解调芯片MSM7512B可以实现总距离达90km的铁路车站信号的接力式传输,而且可靠性较高。各数据通信模块组成站间级联系统(见图1),完成本站数据的收发和以下各站数据的收发以及这二者之间的协调工作,起到信号再生中继的作用。
如图1所示,89C2051(A)简称CPU(A)负责接收本站采集的数据,89C2051(B)简称CPU(B)负责接收下线车站数据,并且发送下线车站和本站数据。
图1 数据通信模块站间连接图
1 数据通信模块的双单片机结构及其工作原理
数据通信模块既要通过RS485总线接口接收本站采集的数据,又要接收下线(远离终点站方向)车站发送的数据,还要将这些数据向上线(接近终点站方向)车站发送,如果只用一个单片机,则硬件方面串口不够,软件方面单片机要处理的任务过多,影响系统的实时性。因此,该数据通信模块采用双单片机结构,其中一个单片机负责车站间数据通信,另一个负责本站数据采集。两个单片机之间的数据传输通过软件模拟SPI总线来实现,从而避免了扩展其他外围接口芯片,提高了系统的实时性和稳定性。
收稿日期:
200509
15
CPU(A)通过RS485总线接收信号采集模块的数据,通过模拟SPI总线将本站数据发送给CPU(B)。CPU(B)是该模块的核心,他接收下线车站数据和向上线车站发送数据是通过两个调制解调(Modem)芯片MSM7512B来实现,其中一个Modem芯片对下线车站数据接收后解调,另一个Modem芯片对下线车站及本站数据调制后发送。因此,车站数据通信模块相当于一个再生中继器,将接收的下线车站信号解调成原始形式后,再重新调制、放大发送出去,这种方式噪声不积累,适合信号的远距离传输。因为CPU(B)要发送下线多个车站的数据,所需时间远大于CPU(A)采集本站数据所需时间,所以在CPU(B)发送下线车站的数据时,CPU(A)就将本站数据采集进来,这种并行工作方式就避免了等待下线车站数据发送完再采集本站数据所带来
76《现代电子技术》2005年第23期总第214期的冗余时间消耗,提高了系统的通信效率。
OKI公司的调制解调芯片MSM7512B具有抗干扰能力强、功耗低、外围电路简单、可靠性高等优点。他采用单电源供电(+3~+5V),内带发送和接收带通滤波器,具有载波检测和自环测试功能,同时内部提供输出信号放大驱动电路,其数据接口与TTL电平兼容,可与大多数微处理器连接。图2是其用作解调芯片的外围电路接法,电话线上的模拟信号通过前端的耦合变压器T1进行耦合输入,再经过电容C1隔离输入信号中的直流成分,电阻R1将输入电压钳位在2.5V左右,从而使MSM7512B内部的前置放大电路使用单一+5V电源。MSM7512B采用ITU
TV.23标准,他有2个工作模式选择端MOD1和
MOD2,可选择4种工作模式,其中模式0是1200b/s半双工发送方式,模式1是1200b/s接收和75b/s发送方式,图2的解调电路采用模式1(1200b/s接收方式)将电话线上的信号解调后通过RD端发送给单片机的串口输入端RXD。
6测试·测量·自动化4
与RS485总线接口,用来接收本站多个数据采集模块的
数据;89C2051(B)的串口与Modem芯片接口,用来接收下线车站数据和向上线车站发送数据。
图3 数据通信模块的双单片机结构简图
此外,89C2051(B)通过P1口的2根口线(P1.7和P1.6)与IC总线(SCL和SDA)接口的芯片CAT1161构成看门狗电路,两CPU的复位端RST接在一起,使得他们可以同时复位;两CPU各通过P1口的一根口线外接一个发光二极管,指示该CPU是否正常工作,若正常工作,则程序间隔地给这根口线高、低电平,使发光二极管处于闪烁状态,以便程序调试。因此,串口已不能用于两单片机间的数据传输,又由于本系统对二者之间的通信速度要求不太高,所以简单有效的方法是通过模拟串口来实现两单片机间的通信。经过实验发现模拟SPI串行总线是实现双CPU之间数据通信的一种行之有效的方法,SPI总线只需要片选、串行时钟、数据输入和数据输出4根线就可以完成两CPU间的数据交换,因此采用SPI总线接口可以节省I/O口线和系统资源、简化电路设计、提高系统的可靠
2
图2 MSM7512B解调电路设计
性。由于AT89C2051单片机不带SPI串行总线接口,所以要用软件来模拟SPI的操作。2个CPU需要两根片选线,但时钟线和数据线可以共用,所以本系统中,两个89C2051通过4根口线(P1.0~P1.3)相连进行数据的双向传输。
2 模拟SPI总线实现双单片机间的数据通信
为了提高测控系统对多个事件的响应速度和控制能力,经常需要多个单片机来分工协调工作,这就要求各个单片机在完成自己任务的同时,还要同其他单片机进行数据通信。由单片机构成的双CPU系统中,两单片机间的数据传输通常是采用并行口进行并行通信或利用串口、串行总线(SPI,I2C等)进行串行通信,还有通过共享I/O接口芯片、共享存储器(RAM)等方式通信。若利用两单片机的串口进行串行通信,则必须保证二者的串口都可用,而51系列单片机只有1个串口,如果系统还要与其他外围设备进行数据通信,则串口被占用,此时要实现两单片机间的通信就得考虑其他的方法;若采用并行通信方式,则至少需要8根并行数据线、2根控制信号线(对于双机单向并行通信),如果是双向并行通信,则需要的控制信号线就会更多,这就对单片机的可用I/O口线提出了要求,而且并行通信要求两CPU的时钟同步,硬件设计相对复杂;若采用共享I/O接口芯片或共享存储器方式通信,则需增加外围接口芯片,使得硬件结构更复杂。
该数据通信模块采用的双单片机结构及其连接如图3所示,其中,单片机89C2051(A)的串口(RXD和TXD)
图4 SPI串行总线典型时序图
在实际应用中,对于不同的SPI接口芯片,他们的工作时序不同。本模块采用图4所示的时序进行软件模拟SPI的操作,即在时钟信号的上升沿输入(接收)数据,下降沿输出(发送)数据。其中,Din和Dout分别用于串行数据输入和输出,片选线CS用于控制数据传输的开始和结束,时钟线CLK用于同步主从设备间的数据传输。SPI串行总线有主次之分,即只有在主机选通从机的片选线之后,当时钟出现上升沿时,接收CPU的数据;当时钟出现下降沿时,向CPU发送数据,并遵循“高位(MSB)在前,低位(LSB)在后”的数据传输格式,用软件模拟SPI接
(下转第84页)
77
测控技术
Q<=\"000\";
INRCO<=NOTINRCO; ELSEQ<=Q+1; ENDIF; ENDIF;
ENDPROCESS;
郑应民:CPLD在电子测时仪的应用
明了,非常便于阅读。在本设计中,由于存在大量的锁存器、计数器和译码器,如使用原理图设计将很复杂。而使用VHDL语言描述数字逻辑则简单了许多,同样实现了原电路的功能,且程序便于阅读。而使用CPLD器件,使电子测时仪更加小型化,集成化。可靠性得到有效的提高。
参 考 文 献
[1]孔德仁,朱蕴璞,狄长安.工程测试与信息处理[M].北
京:国防工业出版社,2003.
[2]潘松.VHDL实用教程[M].成都:电子科技大学出版社,
2000.
[3]侯伯亨,顾新.VHDL硬件描述语言与数字逻辑电路设计
[M].修订版.西安:西安电子科技大学出版社,1995.[4]徐惠民,安得宁.数字逻辑设计与VHDL描述[M].北
京:机械工业出版社,2002.
程序中,可以使用FORCOMPONENT语句循环6次,将6个模10计数器实体化,并相互连接得到所要求的分频器。鉴于篇幅的限制,时基脉冲模块和自检模块中其他的子程序和语句不再详叙。
4 结 语
VHDL作为一种硬件描述语言,以其灵活、完善和强大的功能得到了广泛的运用。特别是在使用CPLD器件实现比较复杂的数字电路时,可以方便地使用VHDL语言,运用自顶向下的设计方法描述电路的数字逻辑。程序简单
作者简介 郑应民 男,1961年出生,南京理工大学,工程师。(上接第77页)
口必须依照SPI总线的时序进行编程。这种串行总线除片选线需要专用口线外,其他I/O口线可以复用。
模块的性价比较高,在远距离接续式数据传输中具有一定的推广使用价值。
参 考 文 献
[1]李华.单片机应用技术选编[M].北京:北京航空航天大
学出版社,1993.
[2]杨亚江,李国阳,韦巍.基于SPI总线技术的双CPU系统
设计在多路电能表电量采集器中的应用[J].机电工程,2002,19(5):
4144.
809812.
[3]郝迎吉,高红红,王燕.远距离水位智能监控系统的研究
与实现[J].仪器仪表学报,2004,25(6):模式[J].现代电子技术,2002,25(3):
[4]罗冯涛,王渝.双单片机系统中一种简单的并行数据传输
1112,13.
3 结 语
在普通铁路电话线上,该数据通信模块利用单片机AT89C2051和调制解调芯片MSM7512B成功地实现了各车站信号的再生中继和远距离稳定传输,不仅充分利用了现有资源,而且为远距离数据通信提供了一种可行的解决方案;模块的双单片机结构特别适用于多任务系统,用来分散CPU的任务,提高系统的实时性;软件模拟SPI总线实现双单片机之间的串行通信,不仅简化了电路结构,而且便于协调数据的收发,提高设计的可靠性。因此,该
作者简介 高红红 女,1978年出生,助教。2004年硕士毕业于西安科技大学,现在西安工业学院工作,主要从事计算机测量
与控制技术的研究和教学。
(上接第81页)
系统采用C/S和B/S混合架构的体系,如图6所示。
保证了测量结果的可靠性。本系统在东莞新科科技开发有限公司得到了实际应用,并取得较好效果。灵活、快速是本系统的最大特点之一。模块化设计方便了系统的修改和扩展,改进后的系统还可使用于其他类型电源模块的测试。
参 考 文 献
[1]张毅刚,乔立岩.LabWindows/CVI6.0编程指南[M].
北京:机械工业出版社,2002.
[2]李行善,左毅.自动测试系统集成技术[M].北京:电子
工业出版社,2004.
图6 C/S,B/S混合架构体系
[3]陈燕昌.通信电源设备检测技术探讨[EB/OL].http://
www.knowsky.com/2005214.
[4]张国君,王学礼.现代电力电子及电源技术的发展[EB/
OL].http://www.dt365.com/2004619.
5 结 语
本系统的操作简单,最大程度地减少了操作员的介入,
84
因篇幅问题不能全部显示,请点此查看更多更全内容