本站小編為你精心準備了談CAN總線的智能小車通信系統設計參考范文,愿這些范文能點燃您思維的火花,激發您的寫作靈感。歡迎深入閱讀并收藏。
摘要:設計了一種基于can總線的智能小車通信系統。以CAN總線控制器SJA1000芯片為控制核心,通過CAN總線收發器TJA1050實現了智能小車的數據通信。給出了CAN總線控制器SJA1000的初始化、發送和接收模塊程序的設計方法。實際應用表明,該通信系統較好地解決了智能節點的通信要求。
關鍵詞:CAN總線;智能小車通信系統;CAN總線控制器
智能車系統是利用傳感器技術與通信技術綜合集成的控制系統。它是集車輛工程技術和通信技術于一體的綜合技術,是車輛工程領域發展的趨勢。CAN(ControllerAreaNetwork)總線[1]是一種支持分布式和實時控制的串行通信網絡。常用的CAN汽車總線是實現汽車數字網絡化的基礎,主要應用于自動控制系統和汽車網絡的通信,具備通信實時性和可靠性等優點。CAN總線控制器SJA1000能夠完成通信系統的物理層與數據鏈路層的功能。CAN總線采用載波監聽多路訪問的方式對媒體進行訪問,類似于以太網的媒體訪問機制;使用CANH和CANL傳輸數據信號,采用差分傳輸方式,具備較強的抗干擾能力。CAN總線控制器連接總線收發器模塊和隔離電路模塊就可以建立一個CAN總線通信節點。
1CAN通信系統的硬件設計
基于CAN總線通信系統的硬件設計主要包括單片機控制模塊、CAN總線控制器模塊、CAN總線收發器隔離電路模塊和CAN收發器TJA1050模塊。基于CAN總線通信系統總體工作原理框圖如圖1所示。
1.1CAN總線的工作原理
汽車上的控制器都是由電子裝置控制的,為了將各個電路單元統一管理,實現車內速度、溫度等狀態信息通信的共享,在汽車通信網絡內部利用CAN總線進行數據通信。基于CAN總線的數據傳輸通信具有實時性,在汽車CAN通信網絡內部,任意一個節點都可以在任意時刻主動向網絡上的其他節點發送信息,可以多主方式工作。CAN總線的通信協議分為應用層、對象層、傳輸層和物理層。傳輸層是CAN通信協議的核心,將接收到的報文傳輸給對象層,并接受來自對象層的報文,主要負責故障界定、仲裁、應答等;對象層的功能是報文濾波和報文處理;物理層的作用是信號電平和位表示,必須支持CAN總線中隱性位和顯性位的狀態特征。報文傳輸由數據幀、遠程幀、錯誤幀和過載幀4個不同的幀類型來表示。數據幀和遠程幀分別通過幀間空間與其他各幀分開。數據幀由7個不同的位場組成,其中數據場是由數據幀中的待發送數據組成,可以為0~8個字節,每個字節包含8個位[1]。CAN總線的通信協議采用短幀格式,以實現汽車通信網絡中工作狀態與實時控制命令相符的要求。CAN總線傳輸信息的方式為:采用高低電平表示字符編碼,采用串行數據傳輸,以1Mb/s的波特率在雙絞線或光纜上通信。CAN總線的通信協議采用CRC碼檢驗并提供對應的錯誤處理功能,以實現數據通信的可靠性。在CAN總線通信系統中,通常只設置單個主節點,完成主節點向從節點發送配置數據、主節點向從節點請求當前工作狀態以及數據管理等功能。從節點根據工業應用的需要完成不同的功能,如汽車狀態數據的采集、設備的控制等,并實現發送數據和接收數據等通信功能。
1.2CAN總線接口電路設計
CAN總線接口電路主要由微控制器AT89C51,CAN總線控制器SJA1000芯片、CAN總線收發器TJA1050和高速光電耦合器6N137器件等組成。SJA1000芯片的主要引腳及其功能[2]如表1所示。在CAN總線接口電路設計中,單片機AT89C51是CAN節點的核心控制模塊,主要用于處理智能小車行駛速度、溫度等狀態數據的通信。其中單片機AT89C51P3口作為AT89C51的一些特殊功能口。P3.6WR為低電平有效,外部數據存儲器寫選通,P3.7RD為低電平有效,外部數據存儲器讀選通。P0~P2口是8位雙向I/O口,連接CAN總線控制器SJA1000芯片的數據接口AD0~AD7,它輸入信號給通信模塊,并發送到CAN總線上。接收過程則反之,通過通信模塊接收CAN總線上的數據,并通過這些數據控制輸出端口[3-5]。設計系統主要接口電路如圖2所示。單片機AT89C51控制SJA1000的初始化,控制SJA1000實現汽車狀態信息的接收和發送等通信功能。將CAN總線控制器SJA1000的8位數據總線AD0~AD7連接到單片機AT89C51的P0口。CAN總線控制器CS片選信號連接單片機AT89C51的P2.0口,為低電平有效。當P2.0為低電平時,單片機選中芯片SJA1000,可對CAN總線控制器實現讀寫操作功能。芯片SJA1000的中斷引腳INT可以選擇連接單片機AT89C51的INT0引腳。本電路中,單片機AT89C51通過中斷方式訪問芯片SJA1000。芯片SJA1000的RD,WR,ALE分別與單片機AT89C51的相應引腳相連。
1.3CAN總線收發器隔離電路模塊設計
在CAN總線收發器隔離電路模塊設計中,CAN總線控制器SJA1000采用隔離電路模塊光電耦合芯片6N137連接CAN總線,實現總線上各CAN節點間的電氣隔離。因此,在SJA1000與TJA1050之間采用隔離電路模塊,能夠提高其抗干擾的能力。隔離電路模塊一般采用光電耦合芯片6N137來設計隔離電路。其具備電流限制的功能,可以進一步提高對CAN總線的保護[6-7]。CAN總線收發器采用收發器TJA1050。它是CAN總線控制器與CAN物理總線之間的接口。TJA1050使用兩路CANH和CANL傳輸數據信號,為CAN總線提供差動發送性能與接收性能。TJA1050的通信波特率在60Kb/s以上,在CAN總線錯誤時能快速切斷錯誤信號,能保證正常的汽車電子通信。不上電時,TJA1050可使CAN物理總線表現為無源特性。在電路設計中,收發器TJA1050由引腳S控制,分為高速和靜音兩種工作模式。
2智能小車CAN通信系統的軟件設計
基于CAN總線協議的通信系統軟件設計主要包括:CAN節點初始化、狀態數據發送單元和數據接收單元。CAN節點初始化包括SJA1000初始化與單片機初始化。對CAN總線控制器SJA1000的初始化可在復位模式下進行。通過節點初始化、數據發送以及數據接收,完成單片機控制SJA1000傳輸數據至CAN總線。圖3CAN通信系統的初始化流程示意單片機初始化主要包括工作方式的設置、波特率參數設置和中斷允許寄存器的設置等。CAN總線控制器芯片SJA1000的初始化,包括選擇工作模式、確定通信波特率、設置輸出模式等內容。在CAN發送函數中,通過SJA1000可以將智能小車系統狀態數據傳輸到CAN總線上。對CAN總線上傳輸的信息,通信系統設計采用中斷方法。系統每接收到一次CAN信息,產生一次中斷,以觸發單片機AT89C51產生中斷信號。CAN通信系統數據的發送程序包括CAN總線發送和串口發送函數等內容;通信數據的接收程序包括串口接收和CAN總線接收等函數。其主要工作過程為:CAN節點從單片機中斷期間接收狀態信息,然后封裝汽車狀態數據,再通過CAN總線控制器SJA1000傳輸至CAN物理總線上。運用同樣原理,CAN通信網絡數據的接收程序則包含了串口接收和CAN總線接收。其工作過程為:CAN節點于單片機中斷時接收汽車狀態信息數據,然后將數據封裝成幀,用符合CAN總線協議的方式進行接收。CAN通信系統的數據發送和接收單元以采集智能小車行駛速度數據為設計目的,并通過CAN節點通信實現共享小車速度數據的功能。基于CAN協議的數據發送程序如圖4所示。CAN總線控制器模塊使用中斷方式來接收CAN報文,因為中斷方式適用于對實時性要求高的汽車數據應用場合。數據發送單元選擇車速采集通道,用于采集車速數據,最后傳輸符合CAN通信協議的小車行駛速度數據。運用同樣原理可設計接收子程序。
3結語
本文設計的CAN通信系統以CAN總線控制器SJA1000芯片為核心,通過CAN總線收發器TJA1050,實現了智能小車速度數據的通信。實際應用表明,CAN總線具有組網自由、自動錯誤界定、實時性良好等優點,解決了智能小車速度數據通信的實時性問題。因此,基于CAN總線的智能小車通信系統的設計開發具有一定的實用價值。
作者:林建宇 單位:上海電力大學 電子與信息工程學院