关键词:单片机 电话主叫信息识别 FSK 数据通信
电话主叫识别信息发送及接收(俗称来电显示),简称CID(Calling Identify Delivery),是电信局向被叫电话用户提供的一种服务项目,是指在被叫用户终端设备上显示主叫电话号码、主叫用户姓名、呼叫日期和时间等主叫识别信息并进行存储,以供用户查阅的服务项目。被叫用户根据显示的主叫识别信息而决定是否接听电话,可以避开一些不愿接听或不友好的电话。利用这个功能可以进行FSK信息解码的电话网数据通信,应用于实际生活中。
1 电话主叫识别原理和传送协议
实现电话主叫信息识别业务的基本方法是,发端程序交换机将主叫电话号码等信息通过局间指令系统传磅给终端交换机,终端交换机再将主叫识别信息以移频键控FSK(Frequency-Shift Keying)或双音多频DTMF(DualToneMulti-Frequency)方式,在第一次振铃或第二次振铃间隔期前传送给被叫用户终端设备。我国的通信行业标准明确规定,统一采用FSK方式提供主叫电话来显示服务。在一次呼叫中,若被叫用户申请了CID业务,则电信局的终端交换机就会向该被叫用户传送主叫识别信息数据。传送流程与时序如图1所示。
其中A、B、C、D、E为数据传送时的状态持续时间,各段时间值如表1所列。在数据传送前或传送过程中,如果用户摘机,则传送停止,但呼叫处理正常进行。
表1 CID信号传送各段时间值
符 号 | 时 间 值 |
说 明 |
tA | 1s | 第一次铃流信号 |
tB | 0.5s<tB<1.5s | 第一次振铃结束与数据传送开始之间的时间间隔 |
tC | ≤2.9s | 传送数据的时间,包括信道占用信号和标志信号 |
tD | ≥200ms | 数据传送结束与第二次振铃开始的时间间隔 |
tE | 1s | 第二次铃流信号 |
tB+C+D | ≤3.6s | 各时段可根据具体情况确定 |
2 主叫识别信息数据格式
FSK主叫识别信息数据的传输格式有两种:单数据消息格式SDMF(Single Data Message Format)和复合数据消息格式MDMF(Multiple Data Message Format)。前者的结构简单,可容纳的信息内容较少,如主叫号码、日期和时间;后者的结构比较复杂,可容纳的信息长度较长,除单数据格式内容以外还可以主叫用户的姓名等。本文主要介绍FSK主叫信息数据格式的接收。
单数据消息格式由消息头和消息体组合,消息头由消息类型和消息长度组成,它们均为8位字。消息类型的值来识别消息的特征;消息长度指明后面所跟消息字的长度。消息体包括交换机需传给终端用户的消息。消息体可容纳1~255个8位的消息字。每个字用8位带校验位的7位ASCII编码字符集表示。
一个完事的消息帧由信道占用信号、标志信号、数据信息和校验字组成。信道占用信号和标志信号用来提示电话终端准备接收数据;校验字用来作差错检查,如图2所示。
①信道占用信号。这是发送主叫信息时要首先发出的头标志,由一组300个连续的“0”和“1”交替地组成。其第一个位为“0”,最后一个位为“1”。在通话状态下,此信号不发送。
②标志信号。在挂机状态下,程控交换机向用户发送主叫信息时要先发送的第二个标志信号,由180个标志位(逻辑“1”)组成。在通话状态下,此信号不发送。
③标志位。程控交换机根据线路使用情况随机插入的标志位,由0~10个逻辑“1”组成。
④数据字。主叫信息,每个数据字之前先行一次“0”作起始位,在最后加一位“1”作结束位,每个数字的最低位先发送。这样,实际每个字为10位,即1PXXXXXXX0,其中P为奇偶校验位。
电话主叫信息数据传送时,信道占用信号首先发送,后接标志信号,最后连续发送数据字。根据数据传送情况,间隔地插入一些标志位。一般标志位会加在如下字的传送之间:
a. 消息类型字与消息长度之间;
b. 消息长度字与第一个参考数字或消息字之间;
c. 参数类型字与相应的参数长度字之间;
d. 参考长度字与第一个参考字之间;
e. 最后一个参数字与下一个参数类型字之间;
f. 最后一个参考字或消息字与校验字之间。
单数据消息格式数据传送按消息类型(04H)、消息长度、消息字、月、日、时、分、主叫号码(或“O”或“P”)的顺序排列组成消息进行传送。所有的消息字和参数字都有奇数偶校验位,采用奇偶校验的方式传送。
3 电话FSK信息通信电路设计
本文以FSK信息解调器SM8220P芯片与单片机及外电路接口为例,介绍FSK信息的通信接收方法。SM8220P解调器是日本NPC公司生产的双列直插、低功耗CMOS集成电路FSK解调芯片,其解调器的引脚功能如表2所列。
表2 SM8220P引脚功能
符 号 | 引 脚 |
功 能 |
TIP-RING | 1,2 | 电话信号输入端。信号输入必须隔直流 |
AGND | 3 | 模拟地,要通过一个电容接地 |
RDIN | 4 | 振铃检测输入。要把振铃信号经衰减后连接到此引脚 |
RDRC | 5 | 振铃检测RC延时电路,低电平有效 |
RDET | 6 | 振铃检测输出,内部接施密特触发电路。当为低电平时,表明检测到振铃信号输入;不用时应接地 |
PWDN | 7 | 掉电控制,平时应保持为低电平。若为高电平,进入掉电工作模式,COSCOUT、CDET和DOUT自动被设置成高电平,AGND、FOUT被设置成高阻抗状态 |
GND | 8 | 器件地 |
OSCIN/CLKIN | 9 | 振荡放大器输入,外部振荡放入器信号经此引脚输入 |
OSCOUT | 10 | 振荡放大器输出,使用外部振荡信号时必须开路 |
CDET | 11 | 载波检测输出端,低电平有效。为低电平时,表明此时有FSK载波信号输入 |
NC | 12 | 空脚 |
DOUT | 13 | 数据输出,平时为高电平。当CDET=0时,表明此时电话经上有一个有效的FSK信号输入,经解调后由该脚输出 |
DMIN | 14 | 解调器输入端 |
FOUT | 15 | FSK带通滤波器输出端,通过一个电容耦合连接到DMIN |
VDD | 16 | 电源正极(3~5.5V) |
SM8220P遵循Bell 202和ITU-T V.23协议标准,以连续二进制脉冲频移键控信号的方式传输,传输速率为1200bps。支持FSK号码显示和姓名显示等多种功能;芯片内部包含电源掉电检测电路、振铃检测电路和载波检测电路;信号输入检测灵敏度高,电源工作电压较宽(3~5.5V),是进行电话FSK信息解码通信的较好的集成芯片。
为实现电话FSK信息的接收,采用P87LPC764单片机控制SM8220P电路,以完成电话FSK信息解码通信的工作。电话FK信息通信具体电路如图3所示。
从图3中可知,对于从电话线上传输来的FSK信号,信号传送在第一次振铃和第二次振铃之间。振铃信号经过整流、分压,加到TIL113光电耦合器件的发射管上,使发射管有电流通过而发光,照射到光敏三极管的基极,臻使光敏三极管饱和导通。在R6上得到大于1V的脉冲信号,输入到单片机外部中断0,唤醒单片机准备接收。0.5s后FSK信号经过C3、C4、R1、C2的隔直和衰减,输入到FSK接收器SM8220P的差分输入端TIP和RING脚,将FSK信号读取解调后从DOUT脚输出ASCII码的串行序列,由P87LPC764单片机接收处理,提取出相应的电话FSK信息,发到多功能LED显示模块MAX7219驱动数码显示和24C64保存。
4 FSK信息接收通信软件设计
单片机对SM8220P输出的ASCII码串行序列的识别过程,由接收和数据整合两部分组成。由于FSK信号波特率为1200bps,每发1位的时间是833us,因此,可以设定定时器每833us接收1位,每10位提取出1个数字。如此反复循环,直到接收完全FSK信息。当有电话来时,在第一声振铃后,单片机开始准备检测接收信号,SM8220P开始接收300个由0、1组成的频率为1200Hz的信道占用信号和180个“1”标志信号,紧接着接收主叫号码和时间。每收到1个数字,SM8220P都把它变换成10位(1PXXXXXXXX0)的串行序列,由13脚输出传送给P87LPC764单片机,P87LPC764经过精确的定时编程将其检测整合出相应的FSK号码、时间等数据,完成FSK信息解码、接收通信、接收到的电话号码可以保存在24C64串行E2PROM中,也可以输出到LCD上显示。SM8220P的11脚用来提示电话线上是否有新的FSK信息的输入。若有新的FSK信息输入,此引脚将产生低电平。单片机接收FSK主叫信息可以采用定时中断方式,也可以采用延时查询的办法进行。电话FSK信息接收通信程序流程如图4所示。
结语
近几年来,我国电信网络基础建设发展很快,电话普及率逐年提高。通过调查显示,用户迫切需要利用电话来传递更多的信息。利用SM8220P与单片机的结合,可以很方便地实现电话FSK信息的解码、接收通信,实现用电话网进行用户远程自动抄表等功能。
注:调试通过的FSK信息的解码、接收通信的汇编程序见网站www.dpj.com.cn。