基于汽車CAN總線的老化測試系統的設計
0 引言
汽車上用的電子設備的可靠工作與優良性能關系者駕駛者的生命安全。車用電子設備出廠前要求對設備內部電路板進行長時間老化測試,以檢測電路板在高溫環境和各種輸入信號條件下,是否仍正常工作。只有經過老化測試的電路板才能出廠。由于需要老化測試的電路板數量巨大,要求該系統能同時老化測試許多塊被檢測電路板,因此設計了本老化測試系統。整個老化測試由 1個通信模塊、 10個測試模塊、1個溫控模塊及上微機軟件構成。本老化檢測系統的系統結構圖如圖 1所示。
圖 1 系統結構圖在本系統中,每個檢測模塊最多可同時檢測 10塊電路板,共有 10個檢測模塊,因此,整個系統在一次老化檢測過程可以同時檢測100塊電路板。檢測模塊將檢測的數據通過 CAN通信送給通信模塊,由通信模塊通過串行通信發送給上位機,由上位機軟件對檢測數據進行解析,判斷被測電路板的工作狀態,顯示每一塊被測電路板的工作狀態,存儲每塊被測電路板的檢測數據,生成歷史報表。上位機軟件還向操作員提供良好而方便的人機交互界面,操作員通過該界面,可以設置系統老化的時間、溫度與測試模式。
1 通信模塊設計
通信模塊在老化系統中處于核心地位,它完成兩方面的任務:一方面,通過串行異步通信與上位機通信,接收用戶通過上位機發來的控制命令,向上位機發送檢測的數據。另一方面,通過 CAN通信方式與 10個檢測模塊及 1個溫控模塊通信,向檢測設備發送命令和采集數據。通信模塊的硬件系統框圖如圖 2所示。
1.1 硬件設計
通信模塊采用 C8051F040作為核心。C8051F040具有許多優點。1.采用高速 8051微控制器內核,流水線結構,大部分指令的執行時間為一或兩個系統時鐘周期。
2.有 4352字節的內部 RAM和 64K字節的 FLASH,滿足大多數應用設計對存儲空間的需要,無需外接存儲器,因而了簡化系統設計。
3.配置多種端口,如 SPI、SMBus和 UART。
4.C8051F040內置標準 CAN控制器,只要外接 CAN通信接口芯片就可以進行通信,方便實現 CAN總線通信,提高通信的可靠性。
由于 C8051F040集成的是 CAN控制器,要使實現 CAN總線通信,還需要外接 CAN總線收發器,常用的 CAN總線收發器有 Philips公司的 PCA82C250收發器、高速 TJA1050收發器等。本設計采用了 TJA1050高速 CAN收發器,TJA1050具有電磁輻射低、防短路、不上電時對總線無影響等特點。為了進一步提高系統的抗干擾能力,C8051F040的 CAN控制器引腳CANTX、CANRX和收發器 TJA1050之間并不直接相連,而是通過由高速光耦 6N137構成的隔離電路后再與 TJA1050相連,這樣就可以很好的實現了 CAN總線上各節點的電氣隔離。增加隔離電路雖然增加了節點的復雜性,但它卻提高了節點的穩定性和安全性。此外,為避免信號反射,導致通信的可靠性與抗干擾能力下降,甚至無法通信,因此,在 CAN總線的兩端需要加有 2個 120歐姆的總線阻抗匹配電阻。由于 C8051F040的端口電壓為 3.3V,串行通信電路采用的電平轉換芯片為 MAX3232。
1.2 軟件設計
1.2.1 串行通信程序設計
通信模塊一方面通過串行通信接收上位機的命令,主要命令有啟動、停止和參數設置命令。用戶通過參數設置命令為系統設置不同參數,可以保證老化的正確進行。另一方面通過串行通信向上位機發送檢測到的數據。為簡化設計,通信模塊和上位機的串行通信采用固定長度的信息幀格式,一幀信息包括幀頭、有效數據或命令、 CRC16校驗位等。通信模塊接收上位機信息通過中斷方式實現。在中斷服務程序中,每接收到一個幀頭后,開始接收后面若干字節的信息,經 CRC16校驗有效后,就認為是一個有效的信息幀,按照約定的串行通信協議解析該信息幀,取出其中的有效命令。通信模塊每收到一個有效命令幀,向上位機發送一幀應答信息。為保證通信正確,上位機軟件對通信采用超時機制。如果上位機在發出一
由于通信模塊接收命令和處理命令速度的不同步,為保證上位機發來的每條命令得到執行,需要將有效命令放入到命令緩存隊列的隊尾。該命令緩存隊列采用環形結構,接收的有效命令被放到隊尾,而主程序從命令緩存隊列的頭部取出一條命令,進行后期處理。為方便從命令緩存隊列存放或存取一條命令,在實現命令緩存隊列時,采用了二維數組結構,即數組的每一個元素為一條固定長度的有效命令。通過選取適當的隊列長度,可以保證在正常工作中,保證命令緩存隊列不會產生溢出。本設計中,命令緩存隊列的數據結構如下:
unsigned char s_queue[QUEUE_LEN][CMD_PACK_LEN];
unsigned char s_front;
unsigned char s_rear;}
通信模塊向上位機發送檢測數據時,按照約定的串行通信協議把一組完整的檢測數據組裝成一個信息幀發送。為簡化設計,該信息幀的發送不采用中斷方式,而是采用查詢方式完成。為減少 C8051F040的等待時間,結合 C8051F040的時鐘頻率,串行通信采用了的波特率為 57600bps。經過在現場測試,在此波特率下進行串口通信,沒有引起通信的錯誤。
評論