基于音頻接口的數據傳輸模塊設計
3.2 數據格式
音頻輸入輸出線路上傳輸的數據信號采用差分曼徹斯特編碼,不進行載波調制與解調,直接在音頻線路上傳輸數據編碼信號。具體協議機制如下:
(1)基于音頻輸入輸出接口的數據傳輸方法是一種串行通訊方法,參考標準同步串行通訊協議,采用差分曼徹斯特編碼,其特點為每發送一位至少有一個跳變,以適應在只能傳輸交流的音頻輸入輸出線路上傳輸數據。通信信號中使用中間時刻的跳變來表示發送的0或1,第一個跳變的如果是正跳變表示1,如果是負跳變表示0,之后的跳變與前一個跳變進行差分,由相比較的結果決定是1或0,如果當前位跳變方向與前一位的跳變方向相同,則表示為0,否則表示為1。采用差分曼徹斯特編碼,通信雙方的同步允許差半位時間,同步差半位時間內接收的數據也不受影響。
(2)數據傳輸是雙工方式,從手機輸出數據的傳輸使用音頻輸出線路,進入手機的數據傳輸使用音頻輸入線路,發送數據前讓總線空閑準備,提示接收方做好接收準備。總線空閑準備是用連續發送8位以上的0來表示。
(3)串行通訊采用幀起始標志進行同步,幀起始可以從任意一位開始,串行通訊的幀起始標志采用與標準串口通信同步中一樣的標識,即連續發送6個1,即發送字符0x7e表示發送了幀起始標志。
(4)串行通訊采用幀結束標志表示本次數據發送結束,進入總線空閑狀態。連續發送7個1,即發送字符0x7f表示發送了幀結束。串行通訊中,線路上傳輸的數據的單位為位,發送Byte時首先發送最高位,最后發送最低位,發送數據時字節間沒有間隔。發送數據時,數據中很可能有連續的6個1,這與幀起始標志和幀結束標志相同,會造成通訊歧義。為消除歧義,規定當發送數據時,連續發送5個1后,必須發送一位無效的0,再接著發送其他數據。而接收到連續的5個1后,需要刪除接著收到的0。這連續的5個1并非一定在1個Byte中,例如,兩個Byte 0x0f和0xc0,每個Byte都沒有連續的5個1,但先發送0x0f后發送0xc0時,就有連續的5個1了,需要動態插入、刪除一位0。
(5)所述基于音頻輸入輸出接口的串行通訊中,編碼信息流一般以塊形式表示,一個信息流塊包含:塊頭和塊負載信息,線路上傳輸的數據幀格式如圖4所示。
4 結束語
根據嵌入式開發的一般原理,設計了數據傳輸模塊的結構,進而完成數據傳輸模塊的硬件設計,軟件設計中完成了主控系統、各相關電路的控制程序,采用差分曼徹斯特碼傳輸數據,能滿足串行通信的同步要求,保障了數據傳輸的穩定性。
評論