基于單片機和MCP2510的CAN總線通信模塊的設計
1 前言
CAN(Controller Area Network)總線,即控制器局域網。由于具有高性能、高可靠性以及獨特的設計,CAN總線越來越受到人們的重視。德國的Bosch公司最初為了汽車監控和控制系統設計了CAN總線,現在,其應用范圍已面向過程工業、機械工業、紡織工業、農用機械、機器人、數控機床、醫療器械及傳感器等領域發展。CAN 總線已經形成國際標準,并已經被公認為最有前途的現場總線之一。CAN總線規范已經被國際標準化組織制訂為國際標準ISO11898,并得到眾多半導體器件廠商的支持,推出各種集成有CAN協議的產品。CAN總線系統智能節點是網絡上報文的接收&發送站,一般由單片機和CAN控制器或二者合二為一組成。 MCP2510是MicroChip成產的一種獨立的可編程CAN控制器芯片。本文將介紹新型的獨立CAN通信控制器MCP2510,并給出在CAN總線系統智能節點中的應用實例。
2 M
(7) 工作溫度范圍為-40~+125℃。
2.3 結構及工作原理
圖2是MCP2510的內部結構框圖,其中CAN協議機負責與CAN總線的接口,SPI接口邏輯用于實現同MCU的通訊,而寄存、緩沖器組與控制邏輯則用來完成各種方式的設定和操作控制。現結合其工作過程將各部分的功能、原理作一介紹。
(1)收發操作
MCP2510的發送操作通過三個發送緩沖器來實現。這三個發送緩沖器各占據14個字節的SRAM。第一字節是控制寄存器TXBNCTRL,該寄存器里的內容設定了信息發送的條件,且給出了信息的發送狀態;第二至第六字節用來存放標準的和擴展的標識符以及仲裁信息;最后八個字節則用來存放待發送的數據信息。在進行發送前,必須先對這些寄存器進行初始化。
(2)中斷管理
MCP2510有8個中斷源,包括發送中斷、接收中斷、錯誤中斷及總線喚醒中斷等。利用中斷使能寄存器CANINTE和中斷屏蔽寄存器CANINTF可以方便地實現對各種中斷的有效管理。當有中斷發生時,INT引腳變為低電平并保持在低電平,直到MCU清除中斷為止。
(3) 錯誤檢測
CAN協議具有CRCF錯誤、應答錯誤、形式錯誤、位錯誤和填充錯誤等檢測功能。MCP2510內含接收出錯計數器(REC)和發送出錯計數器(TEC)兩個錯誤計數器。因而對于網絡中的任何一個節點來說,都有可能因為錯誤計數器的數值不同而使其處于錯誤-激活、錯誤-認可和總線-脫離三種狀態之一
3 MCP2510在智能節點中的應用實例
利用MCP2510和CAN總線收發器TJA1050可構成一個CAN總線分布式測控網絡。系統可包括一個主控制器和多個節點控制器,這種節點控制器可對電動機的電流,電壓及周圍的溫度進行監控,其結構如圖3所示。
這種網絡拓撲結構采用了總線式結構,且結構簡單、成本低,采用無源抽頭連接。因而系統的可靠性較高。其信息傳輸采用CAN通信協議,通信介質采用雙絞線。由于CAN總線是基于發送報文的編碼,它不對CAN控制節點進行編碼,故系統的可擴充性比較好,同時增刪CAN總線上的控制節點不會對系統的其余節點造成任何影響。
節點控制器的MCU可選用具有SPI接口的微處理器,也可采用不帶SPI接口的微處理器。本系統采用的是不帶SPI接口的微處理器 AT89c51,AT89c51可通過P1口與CAN控制器的SPI接口直接相連,并用軟件算法來實現SPI接口協議。CAN總線收發器TJA1050則作為MCP2510與物理總線的接口。如果需要進一步提高系統的抗干擾能力,可在MCP2510和82C250之間再加一個光電隔離器。
3.1軟件設計
MCP2510正常工作之前, 需要進行正確的初始化,包括設置SPI接口的數據傳輸速率、CAN通信的波特率、MCP2510的接收過濾器和屏蔽器以及發送&接收中斷允許標志位等。與 SJA1000不同的是,單片機對MCP2510的接收緩沖器和發送緩沖器的操作必需通過SPI接口用MCP2510內置讀寫命令來完成。其讀、寫命令時序圖如圖5、6所示:
本文中MCP2510主要采取中斷模式進行總線數據的接收和發送。整個系統主序提供兩種中斷"定時器中斷和外部中斷",定時器中斷的中斷子程序主要處理來自模擬通道AIN0~AIN7的A/D數據采集和向MCP2510發送數據發送請求命令以及數據發送。外部中斷的中斷處理子程序主要處理CAN總線錯誤處理子程序和數據接收子程序。
3.2 軟件主體設計流程圖如下
3.3 軟件設計時需要注意的問題:
(1)因為 MCP2510在初始化完成后默認處Configuration模式下,所以就需要在MCP2510的初始化完后將其置為 Normal模式,否則MCP2510將一直停留在Configuration 模 式 下, 不 能 進 行 正 常 工作。將MCP2510置Normal模式可通過使用 MCP2510內置的BitModify(位修改)4指令向CANCTRL控制字寫入一個0字節來實現.
(2)在對MCP2510做任何操作之前,都要由微處理器向MCP2510的片選CS輸出一個低電平,使得MCP2510被選通
(3)在進行MCP2510的“讀”操作時,發送完讀指令及其地址碼之后,仍然需要向MCP2510提供時鐘,以接收“讀”到的數據。可以通過向MCP2510發送一個“0”字節來實現。
(4)在對MCP2510做完任意操作后,都要延時一段時間,使其有足夠的時間來準備接收下次操作的命令,防止出現MCP2510“忙”的情況。
4 總結
CAN總線已被公認為是最有前途的幾種現場總線之一。因其高性能價格比、實現簡單等突出優點深得越來越多的研發人員的青睞。文中的智能節點可聯結多個集散控制系統,其硬、軟件電路的設計方法同樣適合于其他基于CAN總線的分布式控制系統的節點設計。
參考文獻:
[1] 李貌秦霆鎬閆世曉 MCP2515在CAN總線系統智能節點的應用 微計算機信息 2005.21-7:37-39
[2] 邵旻. CAN總線綜述
[3]MicroChip mcp2510 datasheet
[4]王繼國,新亞. CAN控制器芯片MCP2510在遠程監測系統中的應用.電子技術應用,2004(4)
[5]蔡美琴,張為民,何金兒等 MCS-51系列單片機系統及其應用(第二版)高等教育出版社 2004.6
隔離器相關文章:隔離器原理
評論