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