摘要:介绍基于ARM 的来电号码显示器的实现方法。利用CID 芯片HT9032C 来解调FSK 码,同时可实现液晶显示、E2PROM存储和语音播报电话主叫号码等功能,以SPI 串行接口智能显示键盘控制芯片ZLG7289A 为核心设计的键盘电路可实现查阅、删除信息。文章详细介绍了系统的硬件电路设计和软件流程。实践表明,显示器外围器件少,抗干扰能力强,使用方便。
0 引言
目前我国电话网交换机传送主叫识别信息CID(Calling Identity Delivery)有两种方式,较常用的是FSK(频移键控)方式,另一种是DTMF(双音多频)方式。通过掌握相应的协议标准和数据格式,可通过ARM 控制芯片HT9032C 实现解调FSK 格式的来电信息,通过E2PROM 存储器存储来电信息,并利用液晶显示,同时控制ISD1402 语音芯片播放来电号码。以SPI 串行接口智能显示键盘控制芯片ZLG7289A 为核心设计的键盘电路实现查阅、删除来电信息。
1 系统硬件设计
1.1 系统总体设计
整个系统由5 部分组成,分别是: (1)FSK 信号解调;(2)来电号码语音播报;(3)显示来电;(4)存储来电信息;(5)按键控制部分。具体如图1 所示。
图1 系统组成框图
1.2 系统各组成部分设计
(1)FSK 信号解调。
CID 芯片HT9032C 解调器是台湾HOLTEK 公司生产的双列直插、低功耗的接收物理层主叫识别信息的CMOS 集成电路FSK 解调芯片,它能满足Bell 202 和CCITT V.23 标准,实现1200 波特率FSK数据传输标准,且能检测铃流和载波,电话线经过接口电路接到HT9032C 的TIP,RING,RDET1 和RDET2脚,当有振铃信号来时,HT9032C 的RDET 脚触发下降沿。在第一次和第二次振铃之间HT9032C 把逻辑"1" (1200 ± 12)Hz、逻辑"0" (2200 ± 22)Hz、传输速率为1200 bit /s 的FSK 信号解调成串行异步二进制数据。当检测到有效载波信号,CDET 触发下降沿。在DOUT 脚输出包括信道占用信号、标志信号和主叫识别信号的所有信号;在DOUTC 脚只输出主叫识别信号。
HT9032C 与ARM9 的具体硬件连线如图2 所示。
图2 CID 芯片HT9032C 与ARM9 的硬件连线
HT9032C 的RDET 引脚接MCU 的外部中断0,当有振铃信号时,RDET 脚触发外部中断0 服务程序。
HT9032C 的CDET 引脚接MCU 的外部中断1,当检测到有效解调后的主叫识别信号,CDET 脚触发外部中断1 程序。HT9032C 的DOUTC 引脚接MCU 的串行中断。当检测到振铃和有效载波信号,便打开串口中断,接收解调的FSK 信号,得到来电信息。
(2)来电号码语音播报。
采用录放一体化的高保真单片固态语音集成电路ISD1420 实现自动语音播放来电号码。其内部有128K 的E2PROM 用于存放语音信息,并可分成160段,每段信息为0.125 s,总共可存储20 s 的信息。语音分段的信息是由ISD1420 的地址线A0 ~ A7 的值决定的。在录制过程中将可能要播放的语音库按每个0. 5 s 的单位进行录制,每个汉字或数字的语音信息对应到一个地址。在检测到来电号码后,依次给定A0 ~A7 的值就能构成一句话,播放来电号码。
(3)显示来电。
液晶显示模块LCD 用来显示主叫号码、日期、时间等信息。LCD 接收到来电信息后即依次取出各个信息并进行显示。
(4)存储来电信息。
采用允许三总线工作的串行外设接口(SPI)芯片X25045 作为存储器。此芯片把看门狗定时器、电压监控和E2PROM 集成在单个封装内,降低了系统成本并减少了对电路板空间的要求;其看门狗功能提供了对微控制器的保护,通过编程监控系统,当系统发生故障时自动以RESET 信号作出响应;X25045 的存贮器部分是CMOS 的4096 bit(512 × 8)串行E2PROM.
(5)按键控制部分。
采用ZLG7289A 控制3 个按键: "DEL"、上"UP"、下"DOWN"分别用于删除、查阅主叫信息。
2 主叫识别信息的两种数据格式终端交换机向该被叫用户传送主叫识别信息数据传送时序如图3 所示。
图3 主叫识别信息数据传送时序
符号时间值:
A-0.5 ~ 1.5 s 第一次振铃结束与数据传送开始之间的时间间隔。
B + C-2.9 s 传送数据的时间包括信道占用信号Channel Seizure Signal 和标志信号Mark Signal.
D-0.2 s 数据传送结束与第二次振铃开始之间的时间隔。
E-1 s 铃流。
B + C + D-3.1 s 各时段可根据具体情况定。
信道占用信号和标志信号的目的是提示电话终端准备接收数据,校验字是用作差错检查。信道占用信号是由一组300 个连续的"0"和"1"交替的位组成,其第一个比特为"0",最后一个比特为"1".在通话状态下,信道占用信号不发送。标志信号是由180 个(在挂机状态下)或80 个(在通话状态下)标志位(逻辑"1")组成,标志位由0 ~ 10 个逻辑"1"组成。
每个数据字之前先行一位"0"作为起始位,在最后加一位"1"作为结束位,每个数据字的最低位先发送。这样,实际每个字占10 bit,即1PXXXXXXX0 (P为奇偶校验位).数据传送时,信道占用信号发送后接收标志信号。主叫识别数据格式有两种: 单数据消息格式(SDMF)和复合数据消息格式(MDMF).
(1)单数据消息格式(SDMF)。
单数据消息格式由消息头和消息体组成,这种格式的结构简单,可容纳的信息内容较少,如: 呼叫序号、呼叫建立日期和时间及主叫号码。消息头由消息类型和消息长度组成,它们均为8 bit.消息类型的值用来识别消息的特征,消息长度指明后面所跟的消息字的长度。消息体包括交换机需传给终端用户的消息,消息体可容纳1255 个8 bit 的消息字,每个字用8 bit 带校验位的7 位编码字符集表示。其消息格式如图4 所示。
图4 单数据消息格式组成图
(2)复合数据消息格式(MDMF)。
这种格式的结构比较复杂,可传送的信息包括除单数据格式内容外还有主叫用户的姓名等。复合数据消息格式也是由消息头和消息体组成,不同的是,复合数据的消息体由一个或多个小的参数消息组成,参数消息也具有参数头和参数体。参数头包括参数类型和参数长度,它们均为8 bit,参数类型值用来识别后续参数字,参数长度指明参数体中参数字的数目。复合数据消息格式允许不同特征产生的不同消息在同一个帧中传送。在此不再详述。
3 系统软件流程设计
系统软件由四部分组成,分别为主程序,中断0 程序,中断1 程序和串口中断程序。
主程序及各程序功能介绍如下。
(1)主程序开始初始化系统各功能芯片,设置串行通信的波特率,从E2PROM 中读存储的来电信息,并显示最后一条信息;然后开中断0 循环等待振铃信号。程序流程图如图5 所示。
图5 主程序流程图
(2)外部中断0 服务程序。
当有振铃信号来时,便触发外部中断0 服务程序。
若判断为第一次振铃,则开外部中断1,判断是否有有效解调FSK 信号。
(3)外部中断1 服务程序。
当判断有有效信号来时,便触发外部中断0 服务程序。若判断为第一次振铃,则打开串口中断,准备接收解调为串行异步二进制数据的来电信息。
(4)串口中断程序。
在串口服务程序中不断记录缓冲器SUBF 中的数据,存储并显示当前信息。
4 实验数据分析
串口输出的字符串为: 0x80 0x18 0x32 0x00 0x310x31 0x30 0x38 0x33 0x30 0x31 0x30 0x33 0x34 0x300x31 0x35 0x32 0x31 0x36 0x37 0x36 0x30 0x31 0x360x37 0xEF经过分析,0x80 表示此消息数据为复合数据消息格式,0x18 表示数据长度,后面则表示时间为2011 年08 月30 日10 时34 分,来电号码为01521760167,校验字为0xEF.所有数据和(包括校验位)按256 的模求和为00,证明收到的数据完全正确。