摘? 要: 系統(tǒng)采用Winbond的W78E58P單片機為控制中心,處理DTMF信號和FSK信號的接收發(fā)送、信息顯示和存儲,并依據CTSI協(xié)議與服務器通信。著重論述鏈路層" title="鏈路層">鏈路層的控制技術" title="控制技術">控制技術,包括數據控制和電話控制兩個方面。該方案具有良好的靈活性、可升級性等特點。
關鍵詞: 雙音多頻(DTMF)? 頻移鍵控(FSK)? CTSI? 鏈路層? 數據包
?
隨著中文短消息" title="短消息">短消息逐步為大家熟知,短消息的使用者越來越多,使用量越來越大,應用范圍也越來越廣。中文短消息正以其特有的快捷和方便,影響人們日常生活的許多方面。但你有沒有想過有一天用家里的固定電話來發(fā)送中文短消息呢?這樣的愿望很快就要實現(xiàn)。中國電信已在北京、上海、廣州等城市推出此項業(yè)務,相關標準也已經出臺,中興、貝爾等國內大型通信公司提供了支持中文短消息傳送的服務器,固網短信已經開始進入百姓生活,短消息電話在今后的一段時間將會有更大的市場。
本文提及的短消息電話是在能接收來電顯示的普通電話基礎上實現(xiàn)的。本系統(tǒng)主要由DTMF信號接收發(fā)送電路、FSK信號接收發(fā)送電路、存儲器電路、顯示LCD電路和微控制器電路組成。通過電話線與支持固定網短消息業(yè)務的服務器連接,實現(xiàn)短消息的傳輸。本文著重從數據鏈路層探討有關數據通信的控制技術。
1 系統(tǒng)構成
1.1 系統(tǒng)的硬件組成
短消息電話是指具有短消息發(fā)送和接收功能的電話。短消息服務器和短消息電話之間采用半雙工通訊方式,通過FSK(頻移鍵控)信號和DTMF(雙音多頻)信號進行數據傳輸,采用交互操作方式。短消息電話除了具有普通電話的通話功能外,還有中文顯示、信息存儲、DTMF信號、FSK信號發(fā)送接收等功能。短消息電話的功能框圖如圖1所示。
?
?
各模塊的功能如下: CMX605、CMX602模塊與電話機電路提供了DTMF和FSK信號的物理通道,實現(xiàn)DTMF和FSK信號的發(fā)送和接收及電話的通話功能;W78E58P單片機為控制中心,協(xié)調和控制各模塊正常工作;SST28SF020存儲器用來存儲程序代碼、用戶輸入的信息以及短消息中心傳送的消息;62256為系統(tǒng)正常運行提供內存;LCD顯示器和鍵盤掃描電路實現(xiàn)人機交互,提供友好操作界面;為了調試方便,增加了與PC串口的接口電路,使得編寫的程序可直接到目標機的RAM中運行;此外,PS2接口電路使得用戶可以利用PC機鍵盤進行中英文輸入。
1.2 系統(tǒng)的信號流程
短消息系統(tǒng)主要是在話音頻率內傳送數據消息,下行信號(短消息中心到短消息終端)采用半雙工頻移鍵控FSK信號調制方式;上行信號(短消息終端到短消息中心)采用DTMF信號模式或FSK信號調制方式。上行信號采用的方式由當地服務器決定,而DTMF信號模式又分為編碼方式和非編碼方式,由具體的短消息協(xié)議確定。
短消息電話接收短消息建立在來電顯示號碼是短消息中心號碼的基礎上;發(fā)送短消息是在用戶設定了短消息中心號碼之后,所發(fā)送的信息發(fā)送到所設定的短消息中心。通信過程如下:首先建立物理鏈接通路,然后與交換機建立普通話音通道,接著通過中心號碼與短消息中心建立信息通道,短消息中心和短消息終端就可以通過消息包進行交互式通信。
短消息電話與服務器的信息交互都由服務器發(fā)送CTSI命令開始,即終端通過解釋、執(zhí)行CTSI命令并回送返回值的方式進行交互。終端不主動發(fā)送內容給服務器,即使終端的主動服務申請,也是通過服務器發(fā)出服務詢問命令后遞交的。
2 數據鏈路層
2.1 數據鏈路層的功能
數據鏈路層提供可靠的數據傳送,主要是將有噪聲的物理信道變成無傳輸差錯的通信通道,提供數據成幀、差錯控制和流量控制等。短消息電話中的鏈路層在電話通信方面,要實現(xiàn)對電話語音通路的控制、電話的來電顯示和通話等功能;在數據控制方面,完成數據包的組包和解包,控制終端和短消息中心交互時序,對數據包進行糾錯并對出錯數據包進行重發(fā)處理;在電話機控制方面,解析應用層的命令,實現(xiàn)對物理層的控制以及對數據包的自動接收和存儲功能。
2.2 數據鏈路層的協(xié)議
短消息電話中數據鏈路層采用的差錯控制類似于停止等待協(xié)議,并采用重發(fā)機制保障終端和服務器在偶然的故障后仍有機會保持連接。數據鏈路層完成了規(guī)定次數的重發(fā)后仍然出錯時,服務器則斷開與終端的連接。
數據鏈路層的上行FSK數據包和下行FSK數據包格式如圖2所示,一個鏈路層FSK數據包包括六部分:同步引導串,由82bit交替的“01”加8bit“1”構成,具體參見CTSI協(xié)議,對于短消息電話(終端)本身來說只要讀到至少50bit交替出現(xiàn)的“01”以及同步結束字符后,即可以認為同步建立;消息類型,指明信息內容的類型,根據協(xié)議規(guī)定分為一般類型和特殊類型,終端根據不同的類型進行相應的處理;消息長度,指消息特征號的字節(jié)數(=1)加消息層信息內容的字節(jié)數;信息特征號,目前僅使用十六進制01一種消息特征號,其余保留以利于拓展新的電信業(yè)務;消息層信息內容,由消息層負責解析,包含一條CTSI操作命令,最大長度不大于254字節(jié);校驗和,用于數據傳送過程中的糾錯,取值為該數據包中除同步引導串值外的所有字節(jié)的和,按256取模,再取補后得到的值。
?
?
由于終端還可以DTMF形式上送數據,因此DTMF數據包又分為:編碼格式的DTMF上行命令響應信息包" title="信息包">信息包、非編碼格式的DTMF上行命令響應信息包和非編碼格式的DTMF上行信令包。上行DTMF命令響應消息包(編碼方式)是終端對SMC的FSK數據的響應信息包;上行DTMF命令響應信息包(非編碼方式)也是終端對SMC的FSK數據的響應信息包,主要采用了非編碼方式,此種返回信息包目前只用于信息下載指令中,用于描述指令的解釋執(zhí)行情況,具體內容詳見協(xié)議;上行DTMF上行信令包(非編碼方式)是終端對SMC的信令響應,具體的信令如表1所示。
?
?
2.3 數據鏈路層的電話功能
短消息電話的鏈路層要實現(xiàn)電話功能,因此基本的電話功能都由鏈路層和物理層處理,主要分為:來電顯示功能、短消息數據包的接收、連接到服務器、基本的電話通話功能和按鍵撥號功能。同時要配合電話不同功能的界面顯示。
來電顯示功能和短消息數據包的接收都是對FSK數據包的解析,兩者的不同之處在于具體的數據格式:來電顯示數據是在第一聲和第二聲振鈴之間傳過來的FSK數據,而短消息數據包是在建立了短消息通信通道后在線路上傳輸的FSK數據包。這里主要針對符合Bell202標準的FSK來電顯示信號進行闡述。FSK來電顯示信號數據包有兩種格式:單制式信息包括日期、時間、電話號碼;復合制式信息包括日期、時間、電話號碼、姓名。在第一聲與第二聲振鈴之間將數據包解析,并將日期、時間、電話號碼等信息在LCD上顯示,實現(xiàn)來電顯示功能。
連接到服務器,由軟件控制電話機摘機、撥號到服務器,服務器摘機響應撥號,建立物理通路的連接。當服務器摘機并發(fā)出回應信號CAS音,在規(guī)定時間內終端回應DTMF的“A”信號,與服務器建立數據通路,進行數據包的交互通信。然后解析服務器的數據,執(zhí)行服務器下行的信令,與用戶進行交互。
基本的電話通話功能和按鍵撥號功能是一部電話必須具備的功能,主要由電路硬件完成。鏈路層主要控制液晶屏顯示與之相配合的操作界面。當用電話撥號時,屏幕彈出電話撥號界面,有按鍵按下時控制發(fā)送相應的DTMF音,同時在屏幕上顯示按下的按鍵值。在電話處于通話狀態(tài)時,屏幕顯示相應的界面,提示用戶通話時間及撥入或撥出電話的號碼等信息。
3? 數據鏈路層中的控制技術
3.1 數據鏈路層的數據控制技術
數據鏈路層的數據分為上行和下行數據,本系統(tǒng)中將其分開處理,上行數據在主函數中循環(huán)調用處理,而下行數據在中斷中處理。
上行數據包處理流程圖如圖3所示。對數據的處理是在主函數中,因此可有適當的等待和延遲,但必須在協(xié)議規(guī)定的時間內完成對數據包的處理,它對時間的要求不如中斷對時間要求那么苛刻。因為上傳數據包的過程是終端主動上載數據信息,鏈路層對數據包的多少十分清楚,而且在服務器接收到數據包后,肯定應答數據說明數據包傳輸是否正確,而服務器應答數據包是下行數據在中斷中處理。因此,在上傳一個數據包后可以等待服務器的應答信號,以確定是否要重發(fā)當前數據包。整個處理過程主要應當處理好與中斷服務程序的配合,以及用戶界面的操作,控制相對比較簡單。
?
?
下行數據包處理流程圖如圖4所示,處理過程比較復雜。由于服務器隨時都有呼叫終端的可能性,使得下行數據傳輸具有隨機性。因此這種情況最適于在中斷中進行處理。中斷處理又有其自身的特點,如中斷函數" title="中斷函數">中斷函數不能進行參數傳遞并且沒有返回值;中斷函數中調用其他函數時,被調用函數所使用的寄存器組必須與中斷函數相同等。這就決定了中斷函數中的處理技術與主函數中的處理技術相比受到了很大的限制。中斷函數首先對鏈路層各個狀態(tài)下的超時定時器進行處理,當有定時器超時時,根據協(xié)議規(guī)定進行相應的超時處理,通常的處理是控制終端掛機;數據包處理過程中,與物理層建立循環(huán)隊列緩沖區(qū),每10毫秒中斷時從緩沖區(qū)中取數據,如果緩沖區(qū)中有數據則連續(xù)地取出數據直到隊列中的數據取完,而當循環(huán)隊列緩沖區(qū)沒有數據時,則直接退出中斷程序,等待下次中斷再進行取數據處理;按協(xié)議規(guī)定方式從物理層中取出完整數據包后,通過校驗和對數據包進行校驗,如果數據包傳輸不正確,則向服務器應答“D0”,請求服務器重發(fā),當數據包傳輸正確時,則向服務器應答“D1”,發(fā)完應答數據后將終端置于接收數據狀態(tài)并啟動重發(fā)超時定時器。中斷處理數據過程中,要與主函數進行配合在液晶屏上顯示用戶提示信息。另外在中斷函數中最好不進行液晶以及FLASH存儲器的操作,因為容易導致函數的雙重調用,這是由中斷處理的自身特點決定的。
?
?
3.2 數據鏈路層的電話功能控制技術
短消息電話中數據鏈路層的控制技術包括對各種電話功能的控制,例如按鍵、摘機、掛機、重撥、免提等電話功能的軟件功能都在鏈路層實現(xiàn)。由于電話功能的控制不是本文的論述重點,在此僅以摘機撥打電話過程為例。在掛機狀態(tài)下,當鏈路層檢測到摘機信號時,鏈路層控制液晶顯示撥出電話界面,然后在中斷中檢測按鍵并將按鍵值以DTMF信號發(fā)送到交換機,同時界面顯示用戶按下的按鍵值。而話音信號處理主要由物理電路和交換機來完成,當檢測到掛機信號時,鏈路層控制終端進行軟件掛機,對使用過的變量進行初始化,回到掛機狀態(tài),完成了電話的撥號、通話和掛機的過程。其它的電話功能主要根據實際操作中的需要進行相應的處理,包括鏈路層中對FLASH存儲器的操作這些過程,主要注意與其他程序模塊的配合以及符合實際處理的需求。
此方案的短消息電話在實踐中證明是可行的,已經在南京、上海、深圳等地與當地的短消息服務器進行調試,調試結果證明工作正常。另外,此方案使用的外圍器件還比較多,如果采用針對短消息電話開發(fā)的專用芯片可以大大簡化外圍器件,節(jié)約生產成本。整個開發(fā)過程采用C語言,將整個工程移植到其他的硬件,只需要替換工程中硬件的驅動程序即可。開發(fā)過程中,采用軟硬件開發(fā)同步進行,在PC機上搭建軟件仿真環(huán)境,軟件開發(fā)可以不需要完全依賴硬件開發(fā)的進度,大大縮短了開發(fā)周期,且有利于多人合作。
?
參考文獻
1 徐愛鈞,彭秀華.單片機高級語言C51應用程序設計[M].北京:電子工業(yè)出版社,1998:133~247
2 陸坤,席大順,李之權.電子設計技術 [M]. 成都:電子科技大學出版社,1997:554~580
3 基于電話網的信息終端及綜合平臺技術規(guī)范中文信息終端服務接口規(guī)范v1.2 [S]. 北京:中國電信集團,2001:1~81
4 洪志全,洪學海. 現(xiàn)代計算機接口技術[M]. 北京:電子工業(yè)出版社,2000:91~101
5 Winbond, Selection Guide and Data Book. [DB/CD] 2001
6 馬忠梅, 籍順心, 張 凱. 單片機的C語言應用程序設計[M].北京:北京航空航天大學出版社,1999:255~265
7 Andrew S. Tanenbanm. Computer Network ( Third Edition)[M]. 北京:清華大學出版社,1998:131~181