引言
雙音多頻(DTMF)信號由貝爾實驗室發(fā)明,最初是用于電話系統(tǒng)中電話機與交換機之間的一種用戶信令,通常用于發(fā)送被叫號碼。DTMF信號由高頻群和低頻群組成,高、低頻群各包含四個頻率。一個高頻信號和一個低頻信號疊加組成一個組合信號,代表一個數(shù)字。DTMF信令有16個編碼。雙音多頻的撥號鍵盤是4×4的矩陣。每按一個鍵就發(fā)送一個高頻和低頻的正弦信號組合,因為任何2個頻率之間沒有諧波干擾,因此其抗干擾能力很強,遠程傳輸之后的誤判率很低。
交換機中DTMF、解碼芯片采用CM8870實現(xiàn)通訊線路上雙音多頻信號的解碼功能,該芯片將偵聽到的雙音多頻信號轉換為二進制四位代碼,發(fā)往單片機,為單片機提供數(shù)據(jù)流的目的信息。雙音多頻信號是一組由高頻信號與低頻信號疊加而成的組合信號。雙音多頻信號解碼是交換機中非常重要的組成部分,是否能夠準確地解碼出線路發(fā)送來的雙音多頻信號是建立通信鏈路的關鍵,它的工作情況直接決定了遠程數(shù)據(jù)通訊的可靠性。本系統(tǒng)采用的雙音頻解碼芯片CM8870集成了頻帶分離濾波器和數(shù)字解碼器,可以將接收到的DTMF信號轉換成8421碼。
1 CM8870解碼功能實現(xiàn)
1.1 CM8870芯片簡介
CAMD公司的CM8870雙音多頻信號解碼器為單片18腳DIP封裝芯片,該芯片內(nèi)含濾波器與數(shù)據(jù)解碼功能,可濾除340~3 400 Hz外的非音頻信號,同時將音頻信號轉換為二進制4位數(shù)字信號,內(nèi)部CMOS工藝大大降低了芯片功耗,功耗僅為35 mW。CM8870內(nèi)置一個差分輸入放大器、一個時鐘產(chǎn)生器及一個三態(tài)鎖存接口總線,減少了芯片外圍組件,只需要接一個普通晶振即可正常工作。其特點如下:提供DTMF信號分離濾波和譯碼功能;功耗低于35 mW;可以工作在工業(yè)溫度范圍內(nèi);可外接晶振,且內(nèi)含震蕩器產(chǎn)生基準頻率信號;采用18引腳DIP,EIAJ,OIC,PLCC封裝。
CM8870電路的基本特性是提供DTMF信號分離濾波和譯碼功能,輸出相應的16種DTMF頻率組合的4位并行二進制碼。電路輸出的二進制碼D1~D4由數(shù)據(jù)輸出允許段TOE控制,當TOE為高電平時,D1~D4輸出與當前輸入的DTMF信號相對應的二進制碼;當TOE為低電平時,D1~D4端呈高阻狀態(tài)。運放和R1,R2,C1組成一反相放大器,對輸入的DTMF信號進行隔離放大,其增益.K=-R2/R1,改變R2的值可改變增益的大小,VREF為基準電壓輸出端,取VDD/2=2.5 V;INH和PD為內(nèi)部電路連接點,應接地;OSCl和OSC2為振蕩器輸入輸出端,外接3.58 MHz晶振與內(nèi)部振蕩器產(chǎn)生基準頻率信號;STD為延遲控制輸出端,當一組有效的雙音頻信號被接收時輸出“1”,否則輸出“O”;ESt為初始控制輸出端,若電路檢測出可識別的單音對,則此端變成高電平,若無輸入信號或連續(xù)失真,則ESt返回低電平;SI/GT為控制輸入端/時間監(jiān)測輸出端。功能框圖如圖1所示。
雙音多頻信號是用兩個不同頻率的信號組合來表示一個字符或數(shù)字。這兩個頻率一個選自低頻段,一個選自高頻段,每個頻段分別包含四個不同的頻率,因而總共可以組合成16種選擇,而常用的只有12種,它們是O~9,以及#號和*號。CM8870能將DTMF信號譯碼成4位二進制碼。
1.2 CM8870的收號過程
CM8870組成收號電路,它的輸入為來自模擬用戶接口雙音多頻信號,輸出為4位二進制數(shù)據(jù),供處理器從數(shù)據(jù)總線口讀入。其收號過程如下:模擬信號從IN一腳引入后,經(jīng)雙音濾波器初步濾除帶外干擾信號,隨后,此濾出信號在經(jīng)高群濾波器和低群濾波器分別濾出其中的高頻和低頻分量,這兩種分量分別通過過零檢測后送給數(shù)字檢測計算電路;該電路對音頻信號進行進一步的優(yōu)化,能排除外部噪聲因偶然含有某些特定頻率而被編碼器編碼,或者影響編碼器的編碼,從而引起后續(xù)的收號錯誤。當高、低頻組信號同時被編碼器檢測到時,ESt腳將輸出高電平作為有效檢測DTMF信號的標志,而當DTMF信號消失時,ESt腳將輸出低電平。為了防止外部噪聲被CM8870誤編碼,編碼器要求被編碼的音頻信號能維持一段時間,這段時間由外部的一個RC電路來決定。如前所述,當音頻信號被檢測到時,ESt輸出高電平1,電容放電,VC上的電壓值上升(假設信號在整個要求時間內(nèi)部存在),VC升到一個門限值Vrst時,該音頻信號被編碼,變成了數(shù)字信號,該數(shù)字信號將被鎖存起來,此時,GT就為高,使VC點的電壓由門限值升到VDD,此后,只要ESt仍保持為高,GT就為高,外部的RC電路回到初始狀態(tài),隨后,經(jīng)過一段鎖存操作引起的延時后,STD腳輸出高電平,表示信號鎖存完畢。這時,若要從Q1~Q4上讀這4位編碼,應使TOE為高,打開鎖存器,就完成了DTMF的收號任務。
2 單片機控制CM8870設計
2.1 SM895l控制框圖
SM8951外圍電路連接如圖2所示,單片機通過P1.4管腳與模擬摘掛機電路相連,有設備呼叫通信時,單片機會通過該管腳檢測到線路上有摘機動作,然后單片機控制鈴流發(fā)生器向呼叫方發(fā)送撥號音,收到號碼后,將該號碼用DTMF、解碼器解碼并經(jīng)過P2.7腳發(fā)給單片機,單片機對該號碼進行分析,確定主叫方呼叫的對象,而后單片機摘機,判定終端交換機是否空閑,若空閑則發(fā)送呼叫號碼,收到回應后,給被叫方發(fā)送振鈴音,給主叫方發(fā)送回鈴音,被叫一旦摘機,則單片機馬上退出操作,完成呼叫轉移。
CM8870與SM8951單片機的接口電路如圖3所示。SM8951單片機的PO.O~PO.3讀取CM8870的譯碼數(shù)據(jù),當CM8870接收到一個有效DTMF信號后,ESt端首先變?yōu)楦唠娖?,?jīng)積分電路使控制輸入端SI電平升高,若SI端電平高于門限電平,CM8870內(nèi)部的4位二進制碼被更新,STD端變?yōu)楦唠娖?,SM8951單片機通過P2.7口檢測到這一信息后就開始接收。若CM8870無DTMF信號輸入或DTMF信號連續(xù)失真,則ESt端為低電平,SI端為低電平,STD端輸出低電平。
雙音頻解碼電路如圖4所示。雙音頻信號輸入點與一個三極管的集電極V1相連接,當V1導通時,從電話線上送來的雙音頻信號進入CM8870。如果CM8870接收到的是有效的DTMF信號,便解碼出對應的8421碼從數(shù)據(jù)輸出端Q1~Q4輸出,該數(shù)據(jù)進入單片機PO.0~P0.3口,完成數(shù)據(jù)采集、判斷和處理。另外,從CM8870的第15腳出來的狀態(tài)信號進入單片機的P2.7端口,通知單片機讀取數(shù)據(jù)。
2.2 單片機控制過程
單片機控制交換機通信時要時時監(jiān)控通信鏈路中是否有摘機、掛機動作。摘機、掛機電路其實就是一個電子開關,控制電路板和電話線之間的連接。平時這個開關應該處于斷開的狀態(tài),以免造成電話線占線;當需要實現(xiàn)遠程控制時,如果振鈴響5次而無人接聽,這時就需要讓電路板和電話線路接通,即完成摘機動作。V1就是一個電子開關,該開關的導通與否受到單片機P1.4口的控制。摘機掛機電路如果用繼電器設計,電路要簡單一些,但在實用中發(fā)現(xiàn)耗電大,5 V的繼電器吸合電流高達30μA,另外繼電器也容易產(chǎn)生火花干擾。采用晶體管摘機掛機電路克服了這些問題。
軟件設計流程圖如圖5所示。
當單片機控制CM8870作為主叫方時,單片機要先對CM8870進行初始化,然后控制摘機電路摘機,收到被叫方的撥號音后,單片機控制鈴流發(fā)生器產(chǎn)生振鈴,作為主叫方呼叫。等待一段時間后,看對方有沒有接機。若對方摘機,則通信開始,否則掛機,通信結束。
當中繼作為被叫方時,啟動單片機后,程序要首先對CM8870進行初始化,然后隨時檢測是否有振鈴音,如果有,由單片機控制摘機電路主動摘機,等待一段時間,確保已經(jīng)摘機后,單片機控制鈴流發(fā)生器產(chǎn)生振鈴,作為主叫方呼叫。等一段時間后,完成呼叫轉移功能,掛機,結束通信。
3 結語
本系統(tǒng)基于SM8951單片機與CM8870雙音多頻解碼芯片實現(xiàn)小型工控交換機功能,該小型交換機可用于以電力線或雙絞線為傳輸載體的工控網(wǎng)絡遠程數(shù)據(jù)傳輸,依據(jù)PSTN公共電話交換網(wǎng)絡協(xié)議與信令標準,采用電路交換原理實現(xiàn)交換功能。該小型交換機可置于網(wǎng)絡通信的中繼器中,也可置于末端的數(shù)據(jù)處理器中,通常,該交換機只負責轉發(fā)數(shù)據(jù),為數(shù)據(jù)通信建立傳輸鏈路,數(shù)據(jù)在交換機中的傳輸是雙向的。交換機不是數(shù)據(jù)的最終目的地,而只是一個“驛站”。雖然隨著數(shù)字通信技術的發(fā)展,交換技術日趨復雜,交換功能日益完善,但對于工控網(wǎng)絡來說,基于有線網(wǎng)絡的電路交換技術仍以其低成本,易實現(xiàn)、安全可靠性高等優(yōu)點而被廣泛使用。