基于ARM 的來電號(hào)碼顯示器的實(shí)現(xiàn)方法
本文介紹基于ARM 的來電號(hào)碼顯示器的實(shí)現(xiàn)方法。利用CID 芯片HT9032C 來解調(diào)FSK 碼,同時(shí)可實(shí)現(xiàn)液晶顯示、E2PROM存儲(chǔ)和語音播報(bào)電話主叫號(hào)碼等功能,以SPI 串行接口智能顯示鍵盤控制芯片ZLG7289A 為核心設(shè)計(jì)的鍵盤電路可實(shí)現(xiàn)查閱、刪除信息。文章詳細(xì)介紹了系統(tǒng)的硬件電路設(shè)計(jì)和軟件流程。實(shí)踐表明,顯示器外圍器件少,抗干擾能力強(qiáng),使用方便。
目前我國電話網(wǎng)交換機(jī)傳送主叫識(shí)別信息CID(Calling Identity Delivery) 有兩種方式,較常用的是FSK(頻移鍵控) 方式,另一種是DTMF(雙音多頻) 方式。通過掌握相應(yīng)的協(xié)議標(biāo)準(zhǔn)和數(shù)據(jù)格式,可通過ARM 控制芯片HT9032C 實(shí)現(xiàn)解調(diào)FSK 格式的來電信息,通過E2PROM存儲(chǔ)器存儲(chǔ)來電信息,并利用液晶顯示,同時(shí)控制ISD1402 語音芯片播放來電號(hào)碼。以SPI 串行接口智能顯示鍵盤控制芯片ZLG7289A 為核心設(shè)計(jì)的鍵盤電路實(shí)現(xiàn)查閱、刪除來電信息。
1 系統(tǒng)硬件設(shè)計(jì)
1.1 系統(tǒng)總體設(shè)計(jì)
整個(gè)系統(tǒng)由5 部分組成,分別是: (1) FSK 信號(hào)解調(diào); (2) 來電號(hào)碼語音播報(bào); (3) 顯示來電; (4) 存儲(chǔ)來電信息; (5) 按鍵控制部分。具體如圖1 所示。
圖1 系統(tǒng)組成框圖
1.2 系統(tǒng)各組成部分設(shè)計(jì)
?。?) FSK 信號(hào)解調(diào)。
CID 芯片HT9032C解調(diào)器是臺(tái)灣HOLTEK 公司生產(chǎn)的雙列直插、低功耗的接收物理層主叫識(shí)別信息的CMOS集成電路FSK 解調(diào)芯片,它能滿足Bell 202 和CCITT V.23 標(biāo)準(zhǔn),實(shí)現(xiàn)1200 波特率FSK數(shù)據(jù)傳輸標(biāo)準(zhǔn),且能檢測(cè)鈴流和載波,電話線經(jīng)過接口電路接到HT9032C 的TIP,RING,RDET1 和RDET2腳,當(dāng)有振鈴信號(hào)來時(shí),HT9032C 的RDET 腳觸發(fā)下降沿。在第一次和第二次振鈴之間HT9032C 把邏輯"1" (1200 ± 12)Hz、邏輯"0" (2200 ± 22) Hz、傳輸速率為1200 bit /s 的FSK 信號(hào)解調(diào)成串行異步二進(jìn)制數(shù)據(jù)。當(dāng)檢測(cè)到有效載波信號(hào),CDET 觸發(fā)下降沿。在DOUT 腳輸出包括信道占用信號(hào)、標(biāo)志信號(hào)和主叫識(shí)別信號(hào)的所有信號(hào); 在DOUTC 腳只輸出主叫識(shí)別信號(hào)。
HT9032C 與ARM9 的具體硬件連線如圖2 所示。
圖2 CID 芯片HT9032C 與ARM9 的硬件連線
HT9032C 的RDET 引腳接MCU 的外部中斷0,當(dāng)有振鈴信號(hào)時(shí),RDET 腳觸發(fā)外部中斷0 服務(wù)程序。
HT9032C 的CDET 引腳接MCU 的外部中斷1,當(dāng)檢測(cè)到有效解調(diào)后的主叫識(shí)別信號(hào),CDET 腳觸發(fā)外部中斷1 程序。HT9032C 的DOUTC 引腳接MCU 的串行中斷。當(dāng)檢測(cè)到振鈴和有效載波信號(hào),便打開串口中斷,接收解調(diào)的FSK 信號(hào),得到來電信息。
?。?) 來電號(hào)碼語音播報(bào)。
采用錄放一體化的高保真單片固態(tài)語音集成電路ISD1420 實(shí)現(xiàn)自動(dòng)語音播放來電號(hào)碼。其內(nèi)部有128K 的E2PROM 用于存放語音信息,并可分成160段,每段信息為0.125 s,總共可存儲(chǔ)20 s 的信息。語音分段的信息是由ISD1420 的地址線A0 ~ A7 的值決定的。在錄制過程中將可能要播放的語音庫按每個(gè)0. 5 s 的單位進(jìn)行錄制,每個(gè)漢字或數(shù)字的語音信息對(duì)應(yīng)到一個(gè)地址。在檢測(cè)到來電號(hào)碼后,依次給定A0 ~A7 的值就能構(gòu)成一句話,播放來電號(hào)碼。
(3) 顯示來電。
液晶顯示模塊LCD用來顯示主叫號(hào)碼、日期、時(shí)間等信息。LCD 接收到來電信息后即依次取出各個(gè)信息并進(jìn)行顯示。
?。?) 存儲(chǔ)來電信息。
采用允許三總線工作的串行外設(shè)接口(SPI) 芯片X25045 作為存儲(chǔ)器。此芯片把看門狗定時(shí)器、電壓監(jiān)控和E2PROM 集成在單個(gè)封裝內(nèi),降低了系統(tǒng)成本并減少了對(duì)電路板空間的要求; 其看門狗功能提供了對(duì)微控制器的保護(hù),通過編程監(jiān)控系統(tǒng),當(dāng)系統(tǒng)發(fā)生故障時(shí)自動(dòng)以RESET 信號(hào)作出響應(yīng); X25045 的存貯器部分是CMOS的4096 bit(512 × 8) 串行E2PROM.
(5) 按鍵控制部分。
采用ZLG7289A 控制3 個(gè)按鍵: "DEL"、上"UP"、下"DOWN"分別用于刪除、查閱主叫信息。
2 主叫識(shí)別信息的兩種數(shù)據(jù)格式
終端交換機(jī)向該被叫用戶傳送主叫識(shí)別信息數(shù)據(jù)傳送時(shí)序如圖3 所示。
圖3 主叫識(shí)別信息數(shù)據(jù)傳送時(shí)序
符號(hào)時(shí)間值:
A-0.5 ~ 1.5 s 第一次振鈴結(jié)束與數(shù)據(jù)傳送開始之間的時(shí)間間隔。
B + C-2.9 s 傳送數(shù)據(jù)的時(shí)間包括信道占用信號(hào)Channel Seizure Signal 和標(biāo)志信號(hào)Mark Signal.
D-0.2 s 數(shù)據(jù)傳送結(jié)束與第二次振鈴開始之間的時(shí)間隔。
E-1 s 鈴流。
B + C + D-3.1 s 各時(shí)段可根據(jù)具體情況定。
信道占用信號(hào)和標(biāo)志信號(hào)的目的是提示電話終端準(zhǔn)備接收數(shù)據(jù),校驗(yàn)字是用作差錯(cuò)檢查。信道占用信號(hào)是由一組300 個(gè)連續(xù)的"0"和"1"交替的位組成,其第一個(gè)比特為"0",最后一個(gè)比特為"1".在通話狀態(tài)下,信道占用信號(hào)不發(fā)送。標(biāo)志信號(hào)是由180 個(gè)(在掛機(jī)狀態(tài)下) 或80 個(gè)(在通話狀態(tài)下) 標(biāo)志位(邏輯"1") 組成,標(biāo)志位由0 ~ 10 個(gè)邏輯"1"組成。
每個(gè)數(shù)據(jù)字之前先行一位"0"作為起始位,在最后加一位"1"作為結(jié)束位,每個(gè)數(shù)據(jù)字的最低位先發(fā)送。這樣,實(shí)際每個(gè)字占10 bit,即1PXXXXXXX0 (P為奇偶校驗(yàn)位) .數(shù)據(jù)傳送時(shí),信道占用信號(hào)發(fā)送后接收標(biāo)志信號(hào)。主叫識(shí)別數(shù)據(jù)格式有兩種: 單數(shù)據(jù)消息格式(SDMF) 和復(fù)合數(shù)據(jù)消息格式(MDMF) .
(1) 單數(shù)據(jù)消息格式(SDMF)。
單數(shù)據(jù)消息格式由消息頭和消息體組成,這種格式的結(jié)構(gòu)簡(jiǎn)單,可容納的信息內(nèi)容較少,如: 呼叫序號(hào)、呼叫建立日期和時(shí)間及主叫號(hào)碼。消息頭由消息類型和消息長(zhǎng)度組成,它們均為8 bit.消息類型的值用來識(shí)別消息的特征,消息長(zhǎng)度指明后面所跟的消息字的長(zhǎng)度。消息體包括交換機(jī)需傳給終端用戶的消息,消息體可容納1255 個(gè)8 bit 的消息字,每個(gè)字用8 bit 帶校驗(yàn)位的7 位編碼字符集表示。其消息格式如圖4 所示。
圖4 單數(shù)據(jù)消息格式組成圖
?。?) 復(fù)合數(shù)據(jù)消息格式(MDMF)。
這種格式的結(jié)構(gòu)比較復(fù)雜,可傳送的信息包括除單數(shù)據(jù)格式內(nèi)容外還有主叫用戶的姓名等。復(fù)合數(shù)據(jù)消息格式也是由消息頭和消息體組成,不同的是,復(fù)合數(shù)據(jù)的消息體由一個(gè)或多個(gè)小的參數(shù)消息組成,參數(shù)消息也具有參數(shù)頭和參數(shù)體。參數(shù)頭包括參數(shù)類型和參數(shù)長(zhǎng)度,它們均為8 bit,參數(shù)類型值用來識(shí)別后續(xù)參數(shù)字,參數(shù)長(zhǎng)度指明參數(shù)體中參數(shù)字的數(shù)目。復(fù)合數(shù)據(jù)消息格式允許不同特征產(chǎn)生的不同消息在同一個(gè)幀中傳送。在此不再詳述。
3 系統(tǒng)軟件流程設(shè)計(jì)
系統(tǒng)軟件由四部分組成,分別為主程序,中斷0 程序,中斷1 程序和串口中斷程序。
主程序及各程序功能介紹如下。
?。?) 主程序開始初始化系統(tǒng)各功能芯片,設(shè)置串行通信的波特率,從E2PROM 中讀存儲(chǔ)的來電信息,并顯示最后一條信息; 然后開中斷0 循環(huán)等待振鈴信號(hào)。程序流程圖如圖5 所示。
圖5 主程序流程圖
?。?) 外部中斷0 服務(wù)程序。
當(dāng)有振鈴信號(hào)來時(shí),便觸發(fā)外部中斷0 服務(wù)程序。
若判斷為第一次振鈴,則開外部中斷1,判斷是否有有效解調(diào)FSK 信號(hào)。
(3) 外部中斷1 服務(wù)程序。
當(dāng)判斷有有效信號(hào)來時(shí),便觸發(fā)外部中斷0 服務(wù)程序。若判斷為第一次振鈴,則打開串口中斷,準(zhǔn)備接收解調(diào)為串行異步二進(jìn)制數(shù)據(jù)的來電信息。
?。?) 串口中斷程序。
在串口服務(wù)程序中不斷記錄緩沖器SUBF 中的數(shù)據(jù),存儲(chǔ)并顯示當(dāng)前信息。
4 實(shí)驗(yàn)數(shù)據(jù)分析
串口輸出的字符串為: 0x80 0x18 0x32 0x00 0x310x31 0x30 0x38 0x33 0x30 0x31 0x30 0x33 0x34 0x300x31 0x35 0x32 0x31 0x36 0x37 0x36 0x30 0x31 0x360x37 0xEF經(jīng)過分析,0x80 表示此消息數(shù)據(jù)為復(fù)合數(shù)據(jù)消息格式,0x18 表示數(shù)據(jù)長(zhǎng)度,后面則表示時(shí)間為2011 年08 月30 日10 時(shí)34 分,來電號(hào)碼為01521760167,校驗(yàn)字為0xEF.所有數(shù)據(jù)和(包括校驗(yàn)位) 按256 的模求和為00,證明收到的數(shù)據(jù)完全正確。