?

CAN總線通信接口設計

2010-12-19 10:36張建文李百余
關鍵詞:流程圖寄存器報文

張建文, 馮 林, 李百余

(東華理工大學,江西撫州 344000)

CAN總線通信接口設計

張建文, 馮 林, 李百余

(東華理工大學,江西撫州 344000)

提出了一種用單片機 STC89C52及 SJA1O00總線控制器組成CAN總線智能節點的設計方案,給出了硬件電路,并詳細介紹了 SJA1000初始化、接收及發送數據程序的框圖及程序設計。設計中程序均已通過調試,介紹的設計方法易于掌握且具有較強的靈活性和通用性,方便使用者學習和掌握。

CAN總線;STC89C52單片機;SJA1O000控制器;PCA82C25;通信

CAN-bus(Controller Area Net work),即控制器局域網,是國際上應用最廣泛的現場總線之一。CAN-bus是一種多主方式的串行通訊總線,基本設計規范要求有高的位速率,高抗電磁干擾性,而且能夠檢測出產生的任何錯誤。當信號傳輸距離達到 10 km時,CAN-bus仍可提供高達 5 kbps的數據傳輸速率。作為一種技術先進、可靠性高、功能完善、成本合理的遠程網絡通訊控制方式,CAN-bus已被廣泛應用到汽車電子、自動控制、智能大廈、電力系統、安全監控等各領域的自動化控制系統中。

本設計是基于 SJA1000的 CAN總線通信模塊的設計,可以完成在 CAN總線上的信息通信,筆者對CAN總線節點的硬件和軟件設計作了詳細的介紹。

1 CAN系統硬件設計

CAN總線系統節點硬件電路如圖 1所示,從圖中可以看出,電路主要由 MAX232、微控制器89C52、獨立 CAN通信控制器 SJA1000、CAN總線驅動器 PCA82C250、高速光電耦合器 6N137、8位拔動開關和 2個發送按鍵構成。當有兩個或多個CAN節點時,可構成一個 CAN互聯網絡,網絡中的任一節點均可向其他節點發送報文,網絡中的任一節點也可向其他節點發送遠程請求幀,請求對方發送本節點所需的報文。為了方便測試,將已接收的數據通過 RS232串口發送到計算機,通過計算機調試軟件進行測試。串口與單片機接線電路采用的常規接線法,串口初始化程序、串口發送程序在此也不做介紹。

本系統通信方式為:按 K1鍵啟動一次點到點通信,按指定 I D號向指定節點發送一幀報文,按K2鍵啟動一次請求數據操作,本節點可獲得指定I

D節點的數據。用戶通過 8位開關設置節點 I D號,I D號由 P1口讀入。輸入的 8位 I D值分兩部分:低 4位為本節點自身的 I D值;高 4位為點到點通信時接收節點的 I D值,可見,總線上最多可設置16個不同 I D值的節點 (饒運濤,2003)。

2 CAN節點軟件設計

本文 CAN總線智能節點的軟件程序設計主要包括:主程序、CAN節點初始化、數據的發送、數據的接收、RS232數據發送等程序(鄒繼軍等,2001)。

2.1 主程序設計

主程序設置為一個死循環,循環中要不停地檢測發送按鍵 K1和 K2是否按下,調用接收子程序,查詢接收緩沖器中是否有數據。主程序流程如圖 2所示。

主程序如下:

圖1 CAN總線通信接口電路Fig.1 Communication interface circuit of CAN bus

圖2 主程序流程圖Fig.2 The fl ow chart ofmain program

2.2 初始化程序設計

對 SJA1000進行初始化實際上就是通過單片機向其片內的各個寄存器寫入控制字的過程。本設計采用了Basic CAN模式。SJA1000的初始化只有在復位模式下可以進行。初始化主要包括時鐘分頻寄存器設置、驗收屏蔽寄存器設置、驗收代碼寄存器設置、總線定時寄存器設置和輸出模式寄存器設置等。初始化設置完成以后,SJA1000就可以進入工作狀態,進行正常的通訊工作(韓黨群,2003)。本設計的初始化時,要注意驗收代碼寄存器和驗收屏蔽寄存器的設置。其流程圖如圖3所示。初始化程序如下:

圖3 CAN控制器初始化流程圖Fig.3 The flow chart of CAN controller initializati on

2.3 發送程序設計

發送程序負責節點報文的發送,發送程序分發送數據幀和遠程幀兩種,兩種程序基本相同,只是遠程幀無數據域。發送過程可由 CAN控制段的查詢狀態標志位控制。通過查詢 CAN控制器的狀態寄存器,得到發送緩沖器的狀態,當發送緩沖器可以被訪問時,微處理器將要發送的數據從其數據存儲區中取出,與主機的 I D地址一起組成信息幀,按CAN報文結構發送到發送緩沖器中,并置位發送請求位,啟動發送命令,最后由硬件完成數據的發送(鄭勇蕓等,2004)。發送的標識碼 I D需做一些運算,使報文能通過接收節點驗收濾波器的測試,CAN發送程序流程圖如圖 4所示。

圖4 CAN發送程序流程圖Fig.4 The fl ow chart of transm itting data program

發送數據幀程序如下:

2.4 接收程序設計

SJA1000的報文接收可采用中斷接收方式或查詢接收方式。在通訊實時性要求不高的情況下可以用查詢方式接收,兩種接收方式編程的思路基本相同。本程序采用查詢接收方式。CPU在檢測到接收緩沖器中存在有效報文后,如接收到的是數據幀,則將接收緩沖器中的內容讀入 CPU的數據存儲區,并將接收到的數據通過串口在 PC機串口調試助手上顯示出來;如接收到的是遠程請求幀,則調用發送程序,發送對方請求的數據 (宋清昆,2009)。接收程序流程圖如圖 5所示。

接收程序如下:

圖5 CAN接收程序流程圖Fig.5 The flow chart of receiving data program

3 結束語

本文詳細地給出了基于單片機實現 CAN總線通信的軟硬件的設計,同時在節點設計中加入了基于 RS-232總線的數據通信功能。設計中程序都已經通過調試,調試結果證實了該方案的實用性和可靠性。CAN總線是一種功能強大、應用廣泛的現場總線,它的優異性能使得其越來越受到關注,被認為是最有前途的現場總線通信技術。

韓黨群.2003.CAN控制器 SJA1000及其應用[J].電子技術應用,29(1):66-69.

饒運濤.2003.現場總線CAN原理與應用技術[M].北京:北京航空航天大學出版社:224-227.

宋清昆,蔣繼成.2009.基于AT89C52單片機CAN總線節點的設計[J].自動化技術與應用,28(5):55-58.

鄭勇蕓,饒運濤,鄒繼軍,等.2004.現場總線 CAN通信中多線程的應用[J].東華理工學院學報,27(2):196-200.

鄒繼軍,饒運濤.2001.基于 SJA1000的 CAN總線智能節點設計[J].單片機與嵌入式系統應用,(12):26-31.

Design of Communication I nterface Based on CAN

ZHANG Jian-wen, FENGLin, L IBai-yu
(East China Institute of Technology,Fuzhou,JX 344000,China)

The communication based on the CAN bus has better merits in reliability and flexibility compared to general serial bus and the infor mation based on the CAN bus can be transmitted ti mely.This paper introduces one design method of the CAN intelligent node which use the STC89C52 and CAN controller SJA 1 000 as its core,it also gives the designing chart of hardware.The flow chart of soft ware and the program of initialization,transmitting and receiving are described in detail.The method of design in this paper is easy to grasp and is flexibility and versatility,itwill help readers to learn and master the application about the CAN bus.

CAN bus;STC89C52;SJA1000 controller;PCA82C25;communication

TP273

A

1674-3504(2010)03-293-04

10.3969/j.issn.1674-3504.2010.03.14

2010-05-01

張建文 (1966—),男,副教授,主要從事電子技術的教學與研究工作。

猜你喜歡
流程圖寄存器報文
基于J1939 協議多包報文的時序研究及應用
STM32和51單片機寄存器映射原理異同分析
CTCS-2級報文數據管理需求分析和實現
Lite寄存器模型的設計與實現
淺析反駁類報文要點
專利申請審批流程圖
專利申請審批流程圖
ATS與列車通信報文分析
寧??h村級權力清單36條
《天津醫藥》稿件處理流程圖
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合