基于音頻接口的數(shù)據(jù)傳輸模塊設計
摘要 由于移動終端數(shù)據(jù)接口各不相同,使數(shù)據(jù)交換不便利。為了嘗試拓展音頻接口的應用,文中設計了一種通信協(xié)議以保證模擬信號的可靠傳輸。開發(fā)了可下載手機軟件,通過程序?qū)囊纛l輸入接口采集到的音頻信號進行差分曼徹斯特解碼,并送到音頻輸出接口。程序由3個線程構(gòu)成,當數(shù)據(jù)傳輸服務程序在手機上啟動后形成,應用嵌入式系統(tǒng)和控制軟件實現(xiàn)數(shù)字數(shù)據(jù)的編解碼,數(shù)據(jù)信號在主控模塊中進行編解碼處理,再通過控制裝置讀取、寫入外部介質(zhì),并存儲數(shù)據(jù),設計中對線程設計、傳輸算法和協(xié)議格式進行了研究。實驗證明,設計能滿足串行通信的同步要求,保障了數(shù)據(jù)傳輸?shù)姆€(wěn)定性。
關鍵詞 音頻接口;數(shù)據(jù)傳輸;模塊設計;數(shù)據(jù)格式
移動終端操作系統(tǒng)應用軟件功能強大,智能手機應用已超出通話的原始功能,各種移動應用的開發(fā)更充分體現(xiàn)了智能化、開放式的趨勢。在移動應用中,如果要與外部設備交換信息,要通過專用的數(shù)據(jù)接口,但手機廠商的數(shù)據(jù)接口各不相同,外部設備難以兼顧,一些廠家限制數(shù)據(jù)接口的開放,或收取高昂的使用費,或?qū)ν庠O生產(chǎn)方有嚴格的資質(zhì)要求,種種限制,制約了智能終端與外部設備的直接交流。
1 數(shù)據(jù)傳輸模塊的結(jié)構(gòu)設計
接口是智能終端系統(tǒng)與外界的連接電路,具有如下功能:(1)尋址能力。對送來的片選信號進行識別。(2)輸入/輸出功能。根據(jù)讀/寫信號決定當前進行的是輸入操作還是輸出操作。(3)數(shù)據(jù)轉(zhuǎn)換功能。并行數(shù)據(jù)與串行數(shù)據(jù)的轉(zhuǎn)換或兩種不同數(shù)據(jù)格式之間的轉(zhuǎn)換。(4)信號識別。識別就緒信號、忙信號等。(5)中斷管理。發(fā)出中斷請求信號、接收中斷響應信號、發(fā)送中斷類型碼的功能。(6)復位。接收復位信號,從而使接口本身以及所連的外設進行重新啟動。(7)可編程。用軟件來決定其工作方式,用軟件來設置有關的控制信號。(8)檢測信息。一些接口還可根據(jù)具體情況設置其檢測信息。
基于音頻輸入輸出接口的數(shù)據(jù)傳輸方法可以彌補數(shù)據(jù)接口不一致的缺點,并擴充音頻接口的應用。在實現(xiàn)傳輸音頻模擬信號的系統(tǒng)上交換數(shù)字信號,設計難點是如何通過模擬信號進行數(shù)據(jù)通信,需要專門設計一種嚴格的通信機制或通信協(xié)議,保證基于手機音頻輸入輸出接口的數(shù)據(jù)傳輸可靠。
如果把終端作為主導裝置,由其產(chǎn)生位時鐘信號、命令選擇信號和數(shù)據(jù),但在綜合系統(tǒng)中,識別發(fā)送端比較困難。設計采用差分曼徹斯特編碼的數(shù)據(jù)傳輸協(xié)議,開發(fā)了可下載手機軟件,并為外設存儲設備設計了實現(xiàn)編解碼及傳輸協(xié)議的嵌入式系統(tǒng)。模塊結(jié)構(gòu)示意如圖1所示。
外部裝置通過音頻輸入輸出接口與智能終端進行數(shù)據(jù)通信,數(shù)據(jù)信號在主控模塊中進行編解碼處理,再通過控制裝置讀取、寫入外部介質(zhì),并存儲數(shù)據(jù)。數(shù)據(jù)傳輸?shù)木唧w方式中,外設裝置通過插入手機外置話筒音頻輸入接口或音頻線路輸入接口的連接線發(fā)送數(shù)據(jù)信號給手機,外設裝置通過插入手機的外置耳機音頻接口或音頻線路輸出接口的連接插線,接收手機發(fā)送出的數(shù)據(jù)信號。
2 數(shù)據(jù)傳輸模塊的硬件設計
外部數(shù)據(jù)傳輸裝置由濾波電路、主控模塊、編解碼電路、讀寫裝置組成。濾波電路分離固定頻率交流信號與數(shù)據(jù)信號;讀寫裝置包含一個標準曼徹斯特編解碼電路,讀寫解碼電路采用BS730Q讀寫專用解碼芯片,采用單軌道讀寫;實現(xiàn)的主控模塊電路選用低功耗的ARM微控制器,內(nèi)部有可編程工作寄存器,可以方便地與主機通信,但要有自己的數(shù)據(jù)協(xié)議,主控模塊對雙向信號進行編解碼處理的過程是:(1)主控電路模塊將讀寫裝置傳入的曼徹斯特編碼數(shù)據(jù)信息解碼成國標數(shù)據(jù),再編碼為差分曼徹斯特編碼數(shù)據(jù)信號,送到連接手機話筒接口或線路音頻輸入接口的傳輸線上。(2)主控電路模塊從連接手機耳機接口或線路音頻輸出接口的傳輸線上接收差分曼徹斯特編碼數(shù)據(jù)信號,解碼成國標數(shù)據(jù),再編碼為標準曼徹斯特編碼數(shù)據(jù)信息,送入讀寫裝置。電路設計如圖2所示。
3 數(shù)據(jù)傳輸模塊的軟件設計
3.1 設計線程
通信雙方的手機終端采用軟件方法實現(xiàn),結(jié)構(gòu)如圖3所示。通過程序?qū)囊纛l輸入接口采集到的音頻信號進行差分曼徹斯特解碼,并送到音頻輸出接口,程序由3個線程構(gòu)成,當數(shù)據(jù)傳輸服務程序在手機上啟動后形成3個線程:(1)創(chuàng)建一個音頻交流發(fā)送線程,負責設置輸出最大音量,生成固定頻率音頻交流信號并發(fā)送到音頻輸出線路上。(2)創(chuàng)建一個監(jiān)聽音頻輸入接口數(shù)據(jù)的線程,負責對從音頻輸入接口采集到的音頻信號,進行差分曼徹斯特解碼,解碼輸出數(shù)據(jù)存放在接收數(shù)據(jù)緩存,通過調(diào)用外部業(yè)務程序注冊的回調(diào)函數(shù),通知外部業(yè)務程序注冊取得傳入的數(shù)據(jù)。(3)主線程循環(huán)等待發(fā)送數(shù)據(jù)緩存中的數(shù)據(jù)存入事件,當外部業(yè)務程序在數(shù)據(jù)要發(fā)送時,將要發(fā)送的數(shù)據(jù)放入共享的發(fā)送數(shù)據(jù)緩存時,數(shù)據(jù)存入事件發(fā)生,所述的主線程取到要發(fā)送的數(shù)據(jù),進行差分曼徹斯特編碼,再用操作系統(tǒng)的音頻控制接口函數(shù)發(fā)送到音頻輸出接口。
3.2 數(shù)據(jù)格式
音頻輸入輸出線路上傳輸?shù)臄?shù)據(jù)信號采用差分曼徹斯特編碼,不進行載波調(diào)制與解調(diào),直接在音頻線路上傳輸數(shù)據(jù)編碼信號。具體協(xié)議機制如下:
(1)基于音頻輸入輸出接口的數(shù)據(jù)傳輸方法是一種串行通訊方法,參考標準同步串行通訊協(xié)議,采用差分曼徹斯特編碼,其特點為每發(fā)送一位至少有一個跳變,以適應在只能傳輸交流的音頻輸入輸出線路上傳輸數(shù)據(jù)。通信信號中使用中間時刻的跳變來表示發(fā)送的0或1,第一個跳變的如果是正跳變表示1,如果是負跳變表示0,之后的跳變與前一個跳變進行差分,由相比較的結(jié)果決定是1或0,如果當前位跳變方向與前一位的跳變方向相同,則表示為0,否則表示為1。采用差分曼徹斯特編碼,通信雙方的同步允許差半位時間,同步差半位時間內(nèi)接收的數(shù)據(jù)也不受影響。
(2)數(shù)據(jù)傳輸是雙工方式,從手機輸出數(shù)據(jù)的傳輸使用音頻輸出線路,進入手機的數(shù)據(jù)傳輸使用音頻輸入線路,發(fā)送數(shù)據(jù)前讓總線空閑準備,提示接收方做好接收準備??偩€空閑準備是用連續(xù)發(fā)送8位以上的0來表示。
(3)串行通訊采用幀起始標志進行同步,幀起始可以從任意一位開始,串行通訊的幀起始標志采用與標準串口通信同步中一樣的標識,即連續(xù)發(fā)送6個1,即發(fā)送字符0x7e表示發(fā)送了幀起始標志。
(4)串行通訊采用幀結(jié)束標志表示本次數(shù)據(jù)發(fā)送結(jié)束,進入總線空閑狀態(tài)。連續(xù)發(fā)送7個1,即發(fā)送字符0x7f表示發(fā)送了幀結(jié)束。串行通訊中,線路上傳輸?shù)臄?shù)據(jù)的單位為位,發(fā)送Byte時首先發(fā)送最高位,最后發(fā)送最低位,發(fā)送數(shù)據(jù)時字節(jié)間沒有間隔。發(fā)送數(shù)據(jù)時,數(shù)據(jù)中很可能有連續(xù)的6個1,這與幀起始標志和幀結(jié)束標志相同,會造成通訊歧義。為消除歧義,規(guī)定當發(fā)送數(shù)據(jù)時,連續(xù)發(fā)送5個1后,必須發(fā)送一位無效的0,再接著發(fā)送其他數(shù)據(jù)。而接收到連續(xù)的5個1后,需要刪除接著收到的0。這連續(xù)的5個1并非一定在1個Byte中,例如,兩個Byte 0x0f和0xc0,每個Byte都沒有連續(xù)的5個1,但先發(fā)送0x0f后發(fā)送0xc0時,就有連續(xù)的5個1了,需要動態(tài)插入、刪除一位0。
(5)所述基于音頻輸入輸出接口的串行通訊中,編碼信息流一般以塊形式表示,一個信息流塊包含:塊頭和塊負載信息,線路上傳輸?shù)臄?shù)據(jù)幀格式如圖4所示。
4 結(jié)束語
根據(jù)嵌入式開發(fā)的一般原理,設計了數(shù)據(jù)傳輸模塊的結(jié)構(gòu),進而完成數(shù)據(jù)傳輸模塊的硬件設計,軟件設計中完成了主控系統(tǒng)、各相關電路的控制程序,采用差分曼徹斯特碼傳輸數(shù)據(jù),能滿足串行通信的同步要求,保障了數(shù)據(jù)傳輸?shù)姆€(wěn)定性。