1 、前言
CAN 是國際上應用很廣泛的一種現場總線,MCS96 系列單片機是目前在工業界推廣應用較廣泛的嵌入式控制器,其87C196CA 單片機內核本身帶有CAN 控制器,支持標準和擴展的信息幀,即遵循CAN2.0A 和CAN2.0B 協議。由此而構成的CAN 總線支持分布式控制和實時控制,其串行通信方式靈活可靠,傳輸距離較遠。由于CAN 總線具有通信速率高、工作可靠性高、現場抗干擾能力強、網絡連接方便和性能價格比高等優點,在汽車發動機控制部件、汽車抗滑系統、工業自動化、機床、電梯控制等領域得到了較為廣泛的應用。
2 、硬件構成
2. 1 CAN 總線連接
基于CAN 總線的兩個87C196 單片機網絡聯接時,分別將單片機的CAN接收、發送兩根線通過PCA82C250 CAN總線收發器聯接到CAN總線上,構成多微控制器CAN總線連接。通信介質可以是雙絞線、同軸電纜或光纖,其總線連接如圖1 所示。
該網絡最高通信速率為1Mbit/s ,當傳輸速率為5Kbit/s時,最大通信距離可達10Km。在其CAN 總線上可掛接多達110 個網絡節點,而網絡上任意一個節點均可以在任意時刻主動地向網絡上的其他節點發送信息。其數據傳輸和接收可以是點對點、一點對多點或全局廣播等方式進行。
2. 2 87C196CA 單片機
87C196CA 是集成CAN2.0B總線控制器的高性能16 位微處理器,特別適用于現場實時事件控制和分布式控制。片內的CAN 控制器與Intel 82527獨立CAN 控制器在軟件上是兼容的,每個CAN 控制器的輸入、輸出引腳由二根雙絞線聯接到CAN總線上。CAN 控制器由一個輸入引腳(RXCAN) 、一個輸出引腳( TXCAN) 、控制和狀態寄存器,錯誤探測和管理邏輯組成。圖2 為CAN 控制器方框圖。
2. 3 CAN 總線收發器
PCA82C250 是CAN協議控制器和物理傳輸線路之間的接口,是影響網絡性能的關鍵因素。它對總線提供差動發送能力,并對CAN控制器提供差動接收能力,其最高傳輸速率可達1Mbit/s。其主要特點是芯片內部具有限流電路,可以防止輸出級對電源、地或負載短路;由于采用差動接收發方式,因此有較強的抗電磁干擾能力;具有低電流節電待機工作模式;該CAN總線收發器至少可以連接110個節點。利用PCA82C250還可以方便地在CAN控制器與驅動器之間建立光電隔離, 以實現總線上各節點間的電氣隔離。[page]
3 、通訊軟件
對于通過CAN 總線連接的單片機之間的通訊軟件編程需要定義一系列的控制字,并在兩個單片機上進行配置。即首先進行上電初始化,定義CAN控制寄存器,定義位定時寄存器選擇CAN 的通訊速率,定義信息體屏蔽寄存器選擇接收對象。其次對信息體進行初始化,分別定義兩個信息體工作模式、發送字節數、選擇CAN2.0A 或CAN2.0B 方式。其程序代碼:
/ *CAN 控制器初始化*/
can_con = 0x41 ; / *CAN 控制器CCE 位置1 ,
則可以定義CAN 定器* /
can_ btime0 = 0x41 ; /* 定義CAN 定時器為
250 Kb/ s * /
can_btime1 = 0x67 ;
can_con = 01 ; / *允許對CAN 控制器進行軟
件初始化* /
can_sgmsk = 0x0 ; / * 定義標準CAN 通訊格
式的屏蔽控制字,所有位都不濾紙*/
can_msg1con0 = 0x55 ; / * 信息體1 控制器0
初始化* /
can_msg1con1 = 0x55 ; / * 信息體1 控制器1
初始化* /
can_msg1cfg = 0x88 ; / *定義信息體1 為發
送,發送8 字節,標準CAN 格式* /
can_msg1id = 0xc8c8c8c8 ; / * 信息體1 標識
寄存器初始化標識符為c8c8c8c8 ;
can_ msg1con0 = ox95 ; / * 信息體1 控制器
0MSGVAL 位置1 ,標明信息體1 有效* /
can_msg2con0 = 0x55 ; / * 信息體2 控制器0
初始化* /
can_msg2con1 = 0x55 ; / *信息體2 控制器1
初始化* /
can_msg2cfg = 0x80 ; / *定義信息體2 為接
收,接收8 字節,標準CAN 格式* /
can_msg2id = 0xc8c8c8c8 ; / *信息體2 標識
寄存器初始化標識符為c8c8c8c8 */
can_ msg2con0 = ox95 ; / * 信息體2 控制器
0MSGVAL 位置1 ,標明信息體2 有效 */
can_con = 0x02 ; / * CAN 控制器軟件初始化
完成*/
/ *發送8 字節數據: * /
can_msg1con1 = 0x5a ; / * CPUUPD 置1 ,使
軟件刷新數據,NEWDA T 置1 使信息置1 使信息
體有效* /[page]
can_msg1data0 = 0x00 ; / * 給信息體1 第1 個
數據賦值* /
can_msg1data1 = 0x11 ; / * 給信息體1 第2 個
數據賦值3*/
can_msg1data2 = 0x22 ; / * 給信息體1 第3 個
數據賦值 */
can_msg1data3 = ox33 ; / * 給信息體1 第4 個
數據賦值* /
can_msg1data4 = 0x44 ; / * 給信息體1 第5 個
數據賦值* /
can_msg1data5 = 0x55 ; / * 給信息體1 第6 個
數據賦值* /
can_msg1data6 = 0x66 ; / * 給信息體1 第7 個
數據賦值*/
can_msg1data7 = ox77 ; / *給信息體1 第8 個
數據賦值*/
/ *接收8 字節數據: */
can_msg2cfg = 0x80 ;
can_msg2id = oxc8c8c8c8 ;
can_msg2con1 = 0x55 ;
can_msg2con0 = 0x99 ;
4、 結束語
基于CAN 總線的16 位87C196CA 單片機串行通訊,由于運用CAN 總線技術,使電路設計簡化、緊湊、極大地提高了系統的可靠性、實時性,系統抗干擾性能強,成本較低,性能安裝比高、安裝維護簡潔方便,更適于車輛控制、工廠自動化控制、電梯控制、醫療設備等,具有非常廣闊的應用前景。
責任編輯:gt
-
單片機
+關注
關注
6039文章
44575瀏覽量
636336 -
收發器
+關注
關注
10文章
3437瀏覽量
106060 -
總線
+關注
關注
10文章
2891瀏覽量
88162
發布評論請先 登錄
相關推薦
評論