通過電平轉換電路轉換成可以外圍標準電平,考慮到保證音質效果,在此電路上加入低通濾波電路,去除外界雜質,降低阻抗,最終接入標準的外部音箱和MIC單元。其作用是預存語音導航音頻,當進行導航時被調用并通過音箱發出導航語音;CAN通信系統負責車輛狀態數據的傳輸,控制器采用帶有SPI接口的MCP2515,完全支持CAN V2.0B技術規范。收發器采用的是CTM1050T高速CAN隔離收發器,具備電磁輻射低,電磁抗干擾EMI性強,不上電時成無源特性,功耗低,電氣隔離功能和ESD保護功能。
[0045]圖2所示為全圖形化虛擬儀表的整體界面設計。Android系統借助了 Java的UI設計思想,為用戶提供了豐富的可視化界面組件,對于用戶界面(UI)的設計,Android系統為用戶提供了豐富的可視化界面組件,我們可以根據需要,選擇恰當的視圖組件來完成個性化的布局設計。界面的控制主要有三種方式:使用xml布局文件、使用Java代碼以及兩者的結合。此外,還可借助Android系統的強大的圖形處理能力(包括2D和3D)進行界面的優化設計,圖形的特效處理以及圖像的紋理渲染,還可借助OpenGL ES來開發獨居特色的3D效果。
[0046]該設計具有多種模式,靈活性強,用戶可根據個人喜好選擇。其中覆蓋的車輛狀態信息包括車速、里程、發動機轉速、發動機高溫警示、燃油液位、制動液位、機油油位、冷卻液液位以及狀態指示燈的相關提示等。此外,當發生故障時,還可顯示故障原因、故障部位以及維修建議、保養信息等。
[0047]圖3所示為車輛數據信息采集流程圖。具體工作流程如下:首先對主控器以及CAN節點進行初始化(包括中斷的設置、定時器的設置、CAN工作模式的設置、波特率的設置等),然后按照固定的周期以及規定的CAN總線通信協議讀取CAN信息幀,并通過幀標識符(ID)來判斷數據類型:若為車輛運行狀態數據,則把信息做歸一化處理,提取有效的數據,并進行信息處理、波動幅度抑制等操作,最后將完整的車輛行駛狀態信息發送給LCD液晶屏,并以圖形化虛擬儀表的方式進行顯示;若為故障碼信息,則根據優先級原則,直接進入車輛健康狀況診斷操作模式。
[0048]作為CAN主站的信息采集裝置及自診斷系統與各個傳感器及電控單元(ECT)實時通信,其中,信息采集裝置按照固定周期向作為從站的CAN通訊裝置的主控器發送數據,自診斷系統則實時監控各傳感器及ECU的工作狀態,若在此期間發生故障或出現異常,自診斷系統立即向主控器發送故障碼。
[0049]具體的CAN通信機制:
[0050](I)主控器的CAN節點為從站,信息采集裝置和汽車自診斷裝置為主站;
[0051](2) CAN通訊數據分為兩類:分別為汽車自診斷系統故障碼數據、汽車運行狀態數據;
[0052](3) CAN幀格式:具有11位標識符的標準幀;
[0053](4) ID分配:汽車自診斷系統故障碼數據ID為100H、汽車運行狀態數據ID為102H。,一旦出現故障,系統優先發送優先級高的故障碼;
[0054](5)主站(信息采集裝置)按照固定周期向從站發送數據,若在此期間發生故障,則汽車自診斷裝置立即向主控器發送故障碼數據;
[0055](6)主站、從站之間通訊的數據區長度固定為8字節,如傳輸數據長度大于8字節,則順序采用分配的下一個可以使用的Class ID;
[0056](7) CAN通訊部分數據傳送采用高位節優先傳送原則。
[0057]圖4所示的是CAN通信系統整體框架圖,該部分設計的最大亮點是采用了一款帶隔離的高速CAN收發器芯片CTM1050T,該芯片除了繼承了 CJA1050的所有優點外,內部還集成了必需的CAN隔離及CAN收、發器件,并且具有DC 2500V的隔離功能及ESD保護作用,與控制器MCP2515有良好的兼容性。與常規的CAN總線通信設計相比,省去了光電耦合器(6N137)和電源隔離器(ZY0505BS),避免了設計的繁瑣性,并且參加了抗干擾能力以及運行的穩定性和安全性。
[0058]具體的硬件連接:主控器ARM的接收引腳XspiMISO接MCP2515的發送引腳S0,ARM的發送引腳XspiMOSI接的是主控器的SI腳;同步時鐘SPICLK由主控器提供;MCP2515的片選信號CS由主控器的SPI模塊的XspiCS控制,CAN總線控制器MCP2515的中斷引腳與主控器的外部中斷XEINTO連接。采用中斷的方式接收數據。
[0059]圖5所示為Android下的CAN總線通信開發流程圖。Android下的CAN總線通信開發步驟如下:
[0060]第一步:Android下CAN驅動的開發:傳統的CAN驅動是基于字符設備的。這種方式只能針對某一具體硬件的設備驅動,提供的功能比較少,且同一時刻只支持單進程訪問。而基于網絡設備的Socket CAN驅動則可以克服以上不足。這種建于Linux網絡層之上的協議族實現了用戶空間的socket接口,CAN控制器的設備驅動將自己作為一個網絡設備注冊進Linux的網絡層,CAN控制器收到的CAN幀可以傳輸給高層的網絡協議和CAN協議族,反之,發送的幀也會通過高層給CAN控制器。
[0061]首先是ARM處理器的SPI總線的加載和聲明,CAN控制器的初始化、讀寫等操作。然后,將CAN驅動以模塊化的方式編譯進Android內核中,這種方式可以縮短開發周期,減少工作量。
[0062]第二步:CAN測試工具的編譯:在Vmware的Linux環境下編譯測試工具--
canutils,主要用到的命令有ifconfig命令負責CAN節點的開啟與關閉,candump命令負責CAN節點的接收,cansend命令負責CAN節點的發送,canecho命令負責對波特率等的設置。
[0063]第三步:CAN通信的測試:此步驟主要是為驗證CAN驅動的正確性,主要進行CAN總線的收發實驗。首先是CAN通信系統測試環境的搭建(見附圖6),中,終端調試工具為SecureCRT。然后通過上一步編譯的腳本命令來控制主控器的CAN節點動作,從而測試通信是否正常。
[0064]第四步:Android HAL層的調用:由于Android上層的Applicat1n和Applicat1n Framework都是使用Java編寫,底層包括系統和使用眾多的LIiraries都是C/C++編寫的。所以上層Java要調用底層的C/C++函數庫必須通過Java的JNI來實現。
[0065]第五步:Android上層軟件的設計:運用JAVA語言設計用戶軟件。
[0066]圖7所示為車載網絡及通訊服務框圖。在有無線網絡覆蓋的情況下,可wifi模塊實現無線上網;還將手機與車載系統連接到同一 wifi網絡下,實現局域網的信息交互,從而實現文件的傳輸,界面的相互映射與控制;也可將手機或車載系統設置成便攜式的WLAN熱點,發射無線網絡信號,供對方使用,實現網絡的共享。
[0067]藍牙通訊方面,首先可以通過藍牙通訊技術實現主控器與手機等藍牙設備之間的文件傳輸與共享;車載主控器通過藍牙HCI指令和AT指令對藍牙模塊進行操作,在主控器的LCD上實現電話的接聽,也可以通過位于方向盤上的快捷鍵實現電話的接聽。藍牙模塊的語音信號輸出接到藍牙耳機上,車主在行車過程中可以方便的實現語音通話功能。
[0068]3G/4G網絡服務可以實現上網功能,比如新聞瀏覽,電子郵件,資源下載,甚至是視頻觀看等。此外,車載主控器還是有借助3G/4G網絡與后臺服務器進行通訊,實現車輛的故障的報警及健康狀況診斷等服務(下部分內容介紹)。
[0069]圖8所示為車輛健康狀況診斷示意圖。該診斷服務主要分為兩大部分,即基于CAN總線的離線診斷服務和基于3G網絡的在線診斷服務。
[0070]首先看基于CAN總線的離線診斷服務。由于Android系統提供了基于SQLite的嵌入式數據庫管理系統,因此,可以借助SQLite來建立故障診斷系統的后臺數據庫,即維修手冊,并完成數據的查詢,新增,刪除,修改等操作。車載故障診斷系統的數據庫系(見附圖9)統包括兩個數據庫文件,分別為故障碼庫和汽車運行數據存儲數據庫。其中,故障碼庫包括有兩個數據表,一個為故障碼表(存儲所有的故障碼以及相關維修信息,即維修手冊),一個為實時故障碼表(實時保存汽車產生的故障碼);汽車運行數據庫包括一個車輛運行數據表,存儲