信息电话机关键模块的应用
本装置利用来电显示服务,通过FSK解码芯片MC14LC5447完成对来电显示数据的解码;使用AT89C2051单片机进行数据采集和数据存储;通过DLL动态链接库控制USB203(8位并行输入USB传输模块),完成对存储数据的传输,并对该数据进行分析处理。通过本装置,可完成对来电数据的采集、分析与处理,使用改进后的软件接口进行数据传输,且提供可用于VC、VB和DELPHI语言编程环境的接口函数。
关键词 主叫号码显示 移频键控(FSK) 单片机 USB接口设计 USB203
来电显示是近年来电信部门推出的一种新的业务——显示被叫方的电话号码和呼叫时间等信息。来电显示电话机和来电显示器产品应用十分广泛,其技术也相当成熟。
传统的来电显示信息电话仅将数据显示在自身的话机上,而无法将数据提供给计算机或其他设备。所以,开发来电显示电话与计算机的接口和相关的数据采集系统是十分必要的,也是有实用价值的。
本装置共分为4个子模块设计,分别为来电显示信号解码模块、信号采集模块、电话信号处理模块、USB传输模块。其中USB传输模块通过接口函数调用,且通过接口函数即可得到来电显示号码。
1 来电显示信号解码模块设计
来电显示信号解码模块主要采用FSK解码芯片MC14LC5447实现,其原理如图1所示。来电显示输出有两路信号,分别为DOC、DOR。其数据格式不同的地方在于,DOC处理了来电显示的信道占用信号(由前导的300个连续的0、1交替的位组成),而DOR为芯片解码后的数据,没有删减。由于两路信号的差别仅在于信道占用信号的不同,那么,使用DOC将比DOR方便,因为DOC的数据流即为来电显示的数据流。
数据检测有两路,分别为RDO与CDO。RDO为振铃检测输出,在没有振铃的情况下,RDO输出高电平,当有振铃时,RDO输出低电平直到振铃结束;CDO为载波检测输出,在没有载波时,CDO输出高电平,当有载波时,CDO输出低电平直到载波结束。RDO不受芯片开关(PWRUP)信号的限制,而在芯片开关为高电平时,无论是否检测到载波信号,都将始终保持高电平。
TIP和RING为电话线,连接无要求,可随意连接。TIP线与RING线的区别在于承载的电压不同,TIP线电压为负电压,RING线电压为正电压。两线路之间的压差为60 V或48 V(地区差异)。
PWRUP信号接地可以作为测试端(PWRUP接地使芯片始终处于打开状态),DOR信号在本测试中始终存在干扰信号,但当有来电时,信号正常。为了提高系统的稳定性,一般不使用DOR作为数据信号输出。CDO需要PWRUP支持,如果使PWRUP接地,并使芯片始终处于工作的状态,则CDO可做触发信号使用。考虑到系统的低功耗要求,必须使芯片在不使用的状态下关闭;但芯片在关闭状态下,CDO无任何信号发出,而RDO不受电源控制,更容易使用。另外,将芯片关闭也可以增强系统的稳定性,同时提高数据的安全可靠性。
图2是DOC信号的测试结果(数字示波器中采集结果)。由于分时分段采集,仅作数据参考,时间帧和校验帧不为一次采集的结果。图3是经过图形化处理后的时序。
由采样时序图可知,来电显示波形按异步串行数据格式排列,以0作为起始位,1作为终止位;但与多种资料不同的是,无字段校验位,按排列应是每个数据包的第9位,类型字段和长度字段以及最后的校验字段除外。可以看到,采集的数据均无校验位。来电显示数据包的速率为1 200 bps,由数字示波器测量也可得到,每位数据占用时间为830 μs(由于数字示波器的时间精度不能准确地调整到1 μs,所以只能精确到830 μs),基本与1 200 bps的速率相同(1 s÷1 200位≈833.333 μs),所以来电数据是稳定的。需要指出的是,在来电数据包结束后,即在本采样包81H结束后,实际上还有数据信号,每位信号占用的时间为410 μs,数据速率为2 400 bps。此信号是空闲信号,所以在采集时需要通过滤波器进行滤除。
2 信号采集模块方案设计
作为对输出数据的研究,经由MC14LC5447解调后的信号为异步串行信号,而且数据速率为1 200 bps,可使用单片机的串口模式1来进行数据接收,算法请见参考文献[1]。单片机除了进行数据采集,将串行数据包解包外,还将数据复原。
主中断程序大部分都在循环等待串口程序的中断响应,首先需要接收的是来电显示包的长度字段,接收到长度字段的好处就在于可以动态地接收来电数据包,而不必每次都等待接收固定的长度。虽然来电显示包长度不可能大于某个固定长度,但根据来电数据包的长度字段,动态接收数据,使采集的数据更容易处理,而且位于数据包尾的干扰信号也可以再次滤除,从而减轻其他程序的负荷。
当然,在此也可以通过单片机将数据分离出来并进行处理,但为了包的可分析性,单片机除了数据采集外,不做其他的工作。
某一次获取的数据如下:
图4给出了数据采集模块的原理,MC14LC5447的DOC信号输出连接到AT89C2051的第2引脚处(串行输入端口);MC14LC5447的RDO信号输出连接到AT89C2051的第6引脚处(AT89C2051的外部中断0);AT89C2051的第9引脚连接到MC14LC5447的第7引脚(PWRUP),来控制MC14LC5447的开与关。AT89C2051第7引脚连接到USB设备状态输出口,第1引脚也连接到USB设备的状态输出口, 第11引脚连接到USB设备的状态输入口,数据线连接到USB设备的并行数据输入口。其中第12、第13引脚需要外接上拉电阻。
利用单片机实现的方案较数字逻辑电路的方案有许多优点。主要有出错几率小,有存储控制功能,方便,更换灵活等。
利用存储转发方案提高了数据传输的安全性。由于USB203无USB的中断功能,所以接收数据只能用程序循环的方式来实现,但不恰当地使用循环会增加系统的负担。
3 电话信号处理模块设计
摘挂机信号可以由电话机叉簧线路取得。
经过检测,叉簧上共有两路信号: 一路为22~27 V的正弦波信号,位于叉簧第5、6引脚;另一路为15~20 V的负正弦波信号,位于叉簧第3、4引脚。第1、2引脚为信号输出。当叉簧上的弹片没有被压下时,第1、2引脚与第5、6引脚连通,信号为正交流信号,此时表示摘机;当挂机时,叉簧上的弹片被压下,此时,第1、2引脚与第3、4引脚连通,第1、2引脚上的信号为负交流信号。将此信号转换为逻辑0、1电平,即摘机时信号为逻辑1,挂机时信号为逻辑0,电路原理如图5所示。
通过分压电路与二极管进行滤波,负半周信号将被二极管滤除。由于10 MΩ的电阻分压,使得输出电平在1 V左右。经过测试,USB状态输入引脚需要1.6 V以上才认为输入信号为逻辑1,而低于1.6 V的将被认为是逻辑0。
摘机输入信号为正弦波,通过整流滤波电路后,能输出2.6 V左右的电平信号给USB设备,信号为稳定的逻辑1。
挂机信号为负值的正弦波,通过整流滤波电路后,能输出260 mV的电平信号给USB设备,信号为稳定的逻辑0。
4 USB传输模块设计
USB传输模块使用USB203作为传输接口,如图6所示。使用此模块的好处是,它为并串转换的传输模块,而且有4位控制信号输入和4位控制信号输出,并提供了DLL库文件,为二次开发提供了方便;但是此设备并没有使用中断控制方式,因此读取数据将是本系统的瓶颈。然而在本系统内并未用到大量的数据采集,数据长度仅仅为26位,即使为其他长度的复合来电显示数据包,长度也不会大于1 000位,所以是否为高速传输在此并不重要。本系统使用USB的原因在于,USB的简单易用和支持热插拔,这对于使用RS232通信口的设备较有优势;另外USB使用5 V电源,可以为外接设备提供电源,节省了外接设备的电源部分,从而减小了外接设备的体积。
在DLL中需要建立USB_CID函数,无参数,直接返回处理后的来电数据包中的来电号码,而且在无号码时将相应的错误代码返回。在此要注意的是,虽然单片机程序为可变长度存储,但依然有错误产生,原因是来电显示数据包的发送。当一次来电时,数据包会在第一和第二振铃间,如果呼叫者挂断电话,那么来电数据包将不再发送;或者被叫者拿起电话也将丢失来电数据包,那么来电包将被存储一部分,单片机在不重启的情况下将继续等待接收。当下一个来电到达时,这个新的来电数据包将被继续存储,直到满足第一个来电数据包的长度时,才结束接收,那么整个数据包将被接口程序获取并判断是否出错。如果是复合包,那么在来电号码数据包前出错的情况将被排除,但是如果在来电数据号码数据包内出错,那么接收到的号码将被发送,显示的可能是乱码,其算法流程如图7所示。表1给出了状态字的定义。
5 结论
信息电话USB接口设计,是来电显示电话与计算机的接口和相关的数据采集系统,是运用接口技术、计算机软件技术实现来电号码等相关信息在计算机上的显示或存储,并可以根据基本信息进行来电号码的分类统计。这些数据对相关部门服务质量和效率的提高将起到重要的作用,同时还可以为相关决策部门及时提供参考信息。
本装置完成数据采集和数据传送,而且通过软件接口完成对相关数据的分离。详细地研究了来电显示技术,单片机程序编制和使用VC++编写DLL。本装置不但可以嵌入到电话内,还可以作为单一的模块来使用,所以该系统有广泛的实用价值。
评论
查看更多