基于CAN總線的礦用語音廣播對講系統設計
3 軟件設計
3.1 終端軟件設計
對于語音傳輸系統而言,實時性是一個重要的評價指標。在該語音終端的軟件設計中,引入了事件池的思想。事件池在具體軟件實現上是一個封裝好的結構體數組,數組的大小為事件池中能同時容納的事件的個數,即在同一時刻,系統中允許最多發生事件的個數。
本系統軟件設計中,響應外中斷和功能函數的方式有兩種:
①依據外部中斷的類型或者功能函數的返回值,在結構體數組中依據事件參數初始化一個結構體變量,即在事件池中產生了一個待處理的事件。
②在結構體數組(即事件池)中,依據事件參數遍歷查詢相應的結構體,即依據事件參數遍歷查詢相應事件是否發生,并調用相應的功能函數;依據事件參數對該結構體進行處理,即對發生的事件進行處理;一個事件(結構體)處理成功結束后,重新初始化結構體中的事件參數,即把處理完的事件在事件池中銷毀,如果事件處理失敗,則不改變事件參數,等待下一輪的處理。
這樣,微處理器在循環不斷地處理事件(結構體)時,其實就是對系統中實時發生的各種情況進行快速響應,把封裝好的結構體作為系統中各類事件的數學模型。本文引用地址:http://www.104case.com/article/154096.htm
圖4為系統終端進行語音數據流收發和編解碼的軟件事件池示意圖。在本系統終端的軟件設計中,按鍵掃描模塊、CAN總線收發模塊、語音編解碼芯片CMX7261與LPC1768進行SPI數據通信等各種外部觸發都采用了中斷方式,減少了處理器的等待時間。在具體的軟件設計上,在CAN總線的收發控制中設定了兩級緩存,每級緩存都有對應的PUSH和POP兩個變量來實時地作為收發緩存填充的標志,語音數據流在收發過程中做到了非阻塞,提高了語音數據流的傳輸效率和語音編解碼效率。
當發生某一種特定的條件后,終端處理器并不是立馬去執行相應的操作程序,而是產生相應的事件,初始化事件參數,放入軟件事件池中。語音終端的軟件設計由事件池作為系統軟件的協調者,簡化了軟件的開發流程,使得軟件開發層次清晰,效率高。
3.2 CAN總線應用層協議設計
CAN總線的底層硬件工作于OSI的數據鏈路層和物理層,CAN總線網絡通信協議僅解決了數據發送、接收、錯誤處理等底層硬件數據傳輸問題,對于應用層數據并沒有規定相應的解析協議,應用層協議需要開發人員自定義,主要應考慮以下三個方面:數據幀格式確定、總線資源的分配、發送接收數據幀的分配。
該系統中,CAN應用層協議需要由開發人員進行設之間進行安全穩定通信的關鍵。所以,CAN總線技術,特別是CAN總線應用層協議是該系統設計中的一個關鍵點和難點。現在國內外存在一些現有的CAN總線應用層協議標準(CANopen、CANbus),本系統以這些應用層協議標準作為參考,結合本系統的功能設計出適用于該系統的CAN總線應用層通信協議。
本系統在CAN應用層協議的設計中,對于單個終端節點而言,在收到CAN總線語音數據的條件下(有CAN總線中斷)沒有發送語音的權利,即接收的優先級比發送的優先級高,這樣就很好地避免了一條總線上語音數據流的沖突問題。在同一時間,整條CAN總線上最多只能有一對節點在進行語音數據的傳輸。
地面調度上位機在整個系統中是處于優先級最高的地位,當井下終端節點在進行廣播通話的過程中接收有調度上位機的語音數據后,發送終端應該及時作出判斷,關閉發送功能,轉為接收調度上位機的語音數據。
在CAN總線的各個終端之間在進行數據發送接收工作時,調度上位機的控制信息仍然可以在總線中進行傳輸,不影響終端的語音傳輸的功能。終端節點在接收到調度上位機的控制信息后,應在空閑時進行相應的操作和回應。
結語
本文給出了基于G.729A語音編解碼技術的煤礦井下語音傳輸系統構架、終端的軟硬件設計方案和CAN總線應用層協議設計方案,用事件池的軟件沒計思路實現了G.729A壓縮編碼的語音數據流在井下CAN總線的實時安全傳輸,實現了話音和高質量語音信號在窄帶寬的CAN總線上實時傳輸的功能。本系統的方案新穎,成本低,實現簡單,對于煤礦井下語音傳輸系統的設計和開發有很好的借鑒意義。
評論