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