编辑: hyszqmzc | 2019-07-30 |
1 基于 基于 基于 基于 HT95R5x/6x 的的的的FSK Decoder 功能 功能 功能 功能的 的的的使用 使用 使用 使用 方法 方法 方法 方法 简介 简介 简介 简介 CID (Calling Identity Delivery),电话主叫识别讯息发送,也称为来电显示,是电信局向被 呼叫的电话终端提供的一种的服务.
CID 将主叫的电话号码、用户姓名和呼叫时间等信息 发给被呼叫端,被呼叫端接收并储存这些信息,以便用户查阅. 来电显示实现的一般方法是,发送端的程控交换机将主叫的电话号码等相关信息通过局间 指令系统传递给终端交换机,终端交换机再将主叫讯息以 FSK (Frequency-shift Keying)或DTMF (Dual Tone Multi-Frequency) 方式,在第一次和第二次振铃间隔期前传送给被呼叫 用户终端设备.中国的通信行业,采用 FSK 方式提供来电显示服务,当然被呼叫用户之前 须申请这项服务. 盛群半导体推出的 CID Phone 8-Bit MCU -- HT95R5x/HT95R6x,内置 FSK Decoder,本 文将介绍如何使用 HT95R5x/HT95R6x 及其 FSK Decoder 实现来电显示功能. 工作原理 工作原理 工作原理 工作原理 CID 有Bell
202 FSK 和ETSI V.23 FSK 等多种规格. 其中 Bell
202 是由 Bell 实验室所制订 的FSK CID 规范,主要在中国、新加坡和美国等国家使用,本文介绍的是 Bell
202 FSK 的 规格. 程控交换机传输 CID 数据的参数如下所示: 调制类型:BFSK (Binary Frequency-Shift Keying) Mark (Logic 1) :
1200 ± 12Hz Space (Logic 0) :2200 ± 22Hz 传输速度 :
1200 ± 12bps CID 数据的传输可分为两类,一类是在电话机 On-hook (挂机) 状态下传输,另一类是在电 话机 Off-hook (摘机) 状态下传输.On-hook 状态的 CID 数据传输又可分为两种,一种是 联合振铃的,另一种是不联合振铃的.下图是 On-hook 状态下联合振铃的 CID 数据传输时 序. 文件编码:AN0228S 基于 基于 基于 基于 HT95R5x/6x 的的的的FSK Decoder 功能 功能 功能 功能的 的的的使用方法 使用方法 使用方法 使用方法
2 FSK Data 包含 Channel Seizure Signal、Mark Signal、Message 和Checksum. ? Channel Seizure Signal 这是发送 CID 信息时首先要发送的信号,由一组
300 个连续的 ″0″ 和″1″ 交替组成. 其第一位为 ″0″,最后一位为 ″1″. ? Mark Signal 由180 个″1″ 组成. ? Message Message 的格式有两种,分别是 SDMF (Single Data Message Format) 和MDMF (Multiple Data Message Format).程控交换机向客户端传送的信息是 8-bit 的ASCII 格 式的数据. ? Checksum 一个字节的数据,Message 的所有数据与 Checksum 相加,结果的最后一个字节为 0. SMDF 和MDMF 数据格式如下图所示. 下面是一组 FSK SDMF 资料: 04H,0FH,30H,31H,32H,33H,31H,36H,35H,39H,35H,36H,33H,31H, 39H,39H,39H,39H,D8H. 上述资料中: ? 04H 表示 Message Type,是SDMF ? 0FH 表示 Message Length ? 30H、31H、32H、33H 表示日期
01 月23 号?31H、36H、35H、39H 表示时间 16:59 基于 基于 基于 基于 HT95R5x/6x 的的的的FSK Decoder 功能 功能 功能 功能的 的的的使用方法 使用方法 使用方法 使用方法
3 ? 35H、36H、33H、31H、39H、39H、39H、39H 表示电话号码
5631999 ? D8H 是Checksum,用于校验 CID 资料 HT95R5x/HT95R6x 内置 FSK decoder,支持 Bell
202 和ETSI V.23 两种 CID 的规格,具有Ring 和Line Reversal 的侦测功能.FSK Decoder 支持四种能够产生外设中断的中断 源,分别是 FSK RAW Data 的下降沿、Ring 或Line Reversal 侦测、FSK 载波侦测和 FSK 数据封包. Ring 或Line Reversal 发生时, 内部信号 R_DET 变低, 当控制器侦测到 R_DET 的下降沿, FSKS 寄存器的标志位 RDETF 会被设定为 1.当控制器侦测到 FSK 载波信号,标志位 CDETF 被设定为 1.参考线路如下图所示: HT95R5x/6x 与FSK 相关的寄存器有 FSKC、FSKS、FSKD、PERIC. FSKSEL:选择被封包的 FSK 数据来源,1 为DOUTC,0 为DOUT. CMSK:FSK 载波侦测中断使能,1 为除能,0 为使能. RMSK:Ring 或Line Reversal 侦测引起的中断使能,1 为除能,0 为使能. FMSK:FSK 资料封包引起的中断使能,1 为除能,0 为使能. F_PWDN:FSK Decoder 电源控制位,1 为断电模式,0 为工作模式. RINGF:振铃信号到来的标志位,只读,不能被软件修改. FSKF:FSK 数据封包中断标志位,1 为FSK 数据封包动作就绪,0 为未就绪. DOUTC:FSK Decoder COOK 数据输出,只读,不能被软件修改. DOUT:FSK RAW 数据输出,只读,不能被软件修改. CDETF:FSK 载波侦测中断标志位,1 表示侦测到合法的 FSK ″0″、″1″信号,0 表示非法 的FSK 信号. RDETF:Ring 或Line Reversal 侦测引起的中断标志位,1 表示有侦测到 Ring 或Line Reversal,0 表示没有侦测到. 基于 基于 基于 基于 HT95R5x/6x 的的的的FSK Decoder 功能 功能 功能 功能的 的的的使用方法 使用方法 使用方法 使用方法
4 FSKD 是放置 FSK 封包的数据. FSKDF:FSK RAW 数据下降沿引起的中断标志位,中断发生时,设定为 1. DTMFF:DTMF 接收器中断标志位. EFSKDI:FSK RAW 资料下降沿引起中断的使能,1 为使能,0 为除能. EDTMFI:DTMF 接收器中断使能,1 为使能,0 为除能. 需要注意的是,EFSKDI 使能时,控制器会自动将 RMSK、CMSK 和FMSK 除能.如果中 断允许,FSKDF、RDETF、CDETF 和FSKF 都会引起中断入口地址为 10H 的外设中断, 且退出中断服务子程序时,不会被硬件清除为 0,需用软件清除为 0,否则不能进入下一次 的中断. HT95R5x/6x 的FSK Decoder 模块解析电话线 TIP 和RING 上的 FSK 信号, 并且可产生两 种格式的数据,分别是串行数据和 8-bit Packet 数据.为了 FSK Decoder 能够正常工作, 需将寄存器 FSKC 中的 F_PWDN 位清除为 0.串行的 FSK 数据用两种格式表示,分别是 RAW Data 和COOK Data,并且分别可用标志位 DOUT 和DOUTC 监视.当Decoder 处 于工作模式时,标志位 DOUT 指示 Decoder 的输出,输出的数据流包括 Channel Seizure Signal (由0和1交替组成)和Message;
标志位 DOUTC 指示 Decoder 的输出与 DOUT 的相似, 但不包括 Channel Seizure Signal. 若FSK 信息没有被侦测到, 则DOUT 和DOUTC 都保持高电平.因此用户可用标志位 DOUT 和一个定时器用软件实现的 FSK 译码功能. 除了串行数据的方式外,Decoder 也提供 FSK Packet 数据.当Decoder 接收到一个 FSK 信号时,Decoder 把10-bit 的资料打成一个 8-bit 的packet 数据,10-bit 数据中的第一位和 第十位都被忽略.当8-bit Packet 数据有效时,会被储存到 FSK 数据寄存器 FSKD 中,并且FSK Packet 数据中断标志位 FSKF 会被设定为 1.如果 FSKC 寄存器的 FMSK 为0, 且外设中断得到允许,这会引起一个外围中断.FSK Decoder 可以将 DOUT 的数据封包, 也可将 DOUTC 的数据封包,这由 FSKC 的FSKSEL 位决定.需要注意的是能够被封包的 10-bit 数据的第一位必须为 0,因而 Mark Signal 的数据不会被封包. 为了能够侦测 FSK 载波信号、解析出串行数据和将 10-bit 数据转成一个 8-bit 的数据包, 控制器的必须工作在 Normal 模式.当工作在 Green 和Sleep 模式时,FSK Decoder 将解 出错误的数据,但Ring 和Line Reversal 的侦测功能仍然有效. 基于 基于 基于 基于 HT95R5x/6x 的的的的FSK Decoder 功能 功能 功能 功能的 的的的使用方法 使用方法 使用方法 使用方法
5 FSK Decoder 时序如下图所示. 应用电路图 应用电路图 应用电路图 应用电路图 K e y M a t r i x V D D
3 0
0 k W
0 .
1 m F I / O I / O
2 5
8 0
3 6
9 #
1 4
7 * / T K e y
1 K e y
2 K e y
3 K e y
4 K e y
5 K e y
6 K e y
7 K e y
8 K e y
9 K e y
1 0 K e y
1 1 K e y
1 2 D T M F V P V N G S V R E F R T / G T E S T X
1 X
2 3
2 7
6 8 H z X C
3 n F
4 7 n F
1 5 k W V S S T i m e r
1 T i m e r
0 E x t e r n a l I n t e r r u p t T M R
1 T M R
0 I N T H K S H F I H D I T e l e p h o n e C i r c u i t a n d S p e e c h N e t w o r k V D D
5 .
1 V
1 0
0 m F
0 .
1 m F D T M F A U D V D D V D D
1 0
0 k W
0 .
1 m F R E S D T M F O u t p u t P C
1 ~ P C
4 , P C
6 P C
0 P C
5 P C
7 0 .
1 m F E x t r a I / O I n t e r r u p t I / O M E M O R Y D I A L I N G S T O R E H O L D A M P M A B R M O N T U E W E D T H R F R I S A T S U N L C D P a n n e l H T
1 6
2 x
1 0
0 k W
1 0
0 k W T i p
0 .
2 m F
2 0
0 k W
0 .
0 1 m F T I P R i n g
0 .
2 m F
3 3 k W
0 .
0 1 m F
4 7
0 k W R D E T
1 R I N G
2 0
0 k W C P T V R E F C P T S I N + -
0 .
0 1 m F
1 0
0 k W
0 .
0 1 m F
1 0
0 k W
1 0
0 k W
0 .
1 m F
2 0 p F
4 7
0 k W
1 0
0 k W T I P R I N G I / O I / O C P T E N V C P T E N C P T X
1 C P T X
2 3
2 7
6 8 H z A M P S P I / I C
2 F l a s h M e m o r y (参考 HT95R5x data sheet) FSK Decoder 基于 基于 基于 基于 HT95R5x/6x 的的的的FSK Decoder 功能 功能 功能 功能的 的的的使用方法 使用方法 使用方法 使用方法
6 S/W S/W S/W S/W 流程图 流程图 流程图 流程图 程序说明 程序说明 程序说明 程序说明 程序设定在 On-hook 状态下接收 SDMF 和MDMF 格式的 CID 数据, 并处理、 保存在 RAM Bank1中. SDMF的数据包括时间 (如03月17日, 16时18分) 和电话号码 (如5551212) ;
MDMF 的数据包括时间、电话号码和姓名 (如John Smith). 程序范例 程序范例 程序范例 程序范例 ;
Option: WDTDisable includeHT95R55.inc ds .section '
data'
VAR0 DB ? RX DB 40DUP(0) ;
save CID information COUNT0 DB ? COUNT1 DB ? COUNT2 DB ? LENGTH DB ? ;
CID Length from CID LENGTH1 DB ? ;
LENGTH1=LENGTH+3,(Comparedwith LENGTH, Add message type, ;
message length and checksum) FLAG_S DBIT ;
Receive SingleData Message Format Flag FLAG1 DBIT ;
Finish receiving flag FLAG0 DBIT ;
Receive channel seizure signal 55H FLAG_MDBIT ;
Receive MultipleData Message FormatFlag cs .section '
code'
ORG 0000H JMP MAIN_START ORG 0004H RETI 基于 基于 基于 基于 HT95R5x/6x 的的的的FSK Decoder 功能 功能 功能 功能的 的的的使用方法 使用方法 使用方法 使用方法
7 ORG 0008H RETI ORG 000CH RETI ORG 0010H JMP FSK_INT ORG 0014H RETI ORG 0018H RETI ORG 0020H MAIN_START: SET UPEN CALLDELAY_20MS SET MODE1 CLR F0 CLR F1 ;
SystemClock:HCLK 3.58MHz CALLCLEAR_RAM0 MOV A, 01H MOV BP, A CALLCLEAR_RAM1 ;
ClearRAM bank0 and bank1 MOV A, OFFSET RX MOV MP0, A MOV A, 40H MOV MP1, A CLR F_PWDN ;
FSK decoder work at operation mode CLR CMSK ;
enableCarrier detect interrupt CLR RMSK ;
enableRing or line reversal detect interrupt CLR FMSK ;
enable FSK packet data interrupt CLR EFSKDI ;
disable FSK RAW data falling edge interrupt CLR FSKSEL ;
select FSK packet datasource DOUT SET EMI SET EPERI ;
enable peripheral interrupt L0: SZ FLAG_S JMP L1 SZ FLAG_M JMP L1 JMP L0 L1: SNZ FLAG1 JMP L0 CLR EPERI MOV A, 01H MOV BP, A MOV A, OFFSET RX MOV MP0, A L2: MOV A, IAR0 MOV IAR1, A ;
store the CID fromRX to ram bank1 INC MP0 INC MP1 INC COUNT0 MOV A, LENGTH1 SUB A, COUNT0 SNZ C JMP L3 MOV A, COUNT0 基于 基于 基于 基于 HT95R5x/6x 的的的的FSK Decoder 功能 功能 功能 功能的 的的的使用方法 使用方法 使用方法 使用方法
8 XOR........