<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 單片機和MCP2510的CAN息線(xiàn)通信模塊設計

單片機和MCP2510的CAN息線(xiàn)通信模塊設計

—— ISP Bank I2C CRC MTV412
作者: 時(shí)間:2008-03-11 來(lái)源: 收藏

  摘要 CAN總線(xiàn)上的分布式控制節點(diǎn)一般由單片機和可編程的CAN通信控制器組成。硬件方面介紹了節點(diǎn)的電路原理,軟件方面給出了系統程序設計流程及其需要注意的問(wèn)題。

本文引用地址:http://dyxdggzs.com/article/79855.htm

  關(guān)鍵詞

  CAN(Controller Area Network)總線(xiàn),即控制器局域網(wǎng)。由于具有高性能、高可靠性以及獨特的設計,CAN總線(xiàn)越來(lái)越受到人們的重視。德國的Bosch公司最初為汽車(chē)監控和控制系統設計了CAN總線(xiàn),現在,其應用已面向過(guò)程工業(yè)、機械工業(yè)、紡織工業(yè)、農用機械、機器人、數控機床、醫療器械及傳感器等領(lǐng)域發(fā)展。CAN總線(xiàn)已經(jīng)形成國際標準,并已經(jīng)公認為是最有前途的現場(chǎng)總線(xiàn)之一。CAN總線(xiàn)規范已經(jīng)被國際標準化組織制訂為國際標準ISOll898,并得到眾多半導體器件廠(chǎng)商的支持,推出各種集成有CAN協(xié)議的產(chǎn)品。CAN總線(xiàn)系統智能節點(diǎn)是網(wǎng)絡(luò )上報文的接收和發(fā)送站,一般由單片機和CAN控制器或二者合二為一組成。

  MCP2510是Microchip公司生產(chǎn)的一種獨立的可編程CAN控制器芯片。本文將介紹新型的獨立CAN通信控制器MCP2510,并給出其在CAN總線(xiàn)系統智能節點(diǎn)中的應用實(shí)例。

  1 MCP2510芯片介紹

  MCP2510是一種帶有SPI接口的CAN控制器,DIP封裝如圖l所示。它支持CAN技術(shù)規范V2.OA/B。能夠發(fā)送或接收標準的和擴展的信息幀,同時(shí)具有接收濾波和信息管理的功能。MCP2510通過(guò)SI接口與MCU進(jìn)行數據傳輸,最高數據傳輸速率可達5Mbps,MCU可通過(guò)MCP2510與CAN總線(xiàn)上的其他MCU單元通信。MCP25lO內含3個(gè)發(fā)送緩沖器和2個(gè)接收緩沖器,同時(shí)還具有靈活的中斷管理能力,這些特點(diǎn)使得MCU對CAN總線(xiàn)的操作變得非常簡(jiǎn)便。

  

  1.1 MCP2510的主要特點(diǎn)

  ◇支持CANV2.OA/B;

  ◇具有SPI接口,支持SPI模式0,O和l,1;

  ◇內含3個(gè)發(fā)送緩沖器和2個(gè)接收緩沖器,可對其優(yōu)先權進(jìn)行編程;

  ◇具有6個(gè)接收過(guò)濾器,2個(gè)接收過(guò)濾器屏蔽;

  ◇具有靈活的中斷管理能力;

  ◇采用低功耗CMOS工藝技術(shù),其工作電壓范圍為3.0~5.5V,有效電流為5mA,維持電流為10μA;

  ◇工作溫度范圍為-40~+125℃。

  1.2 結構及工作原理

  MCP25lO有PDIP、SOIC和TSSOP三種封裝形式。圖2是MCP2510的內部結構框圖。CAN協(xié)議機負責與CAN總線(xiàn)的接口,SPI接口邏輯用于實(shí)現同MCU的通信,而寄存、緩沖器組與控制邏輯則用來(lái)完成各種方式的設定和操作控制?,F結合其工作過(guò)程將各部分的功能、原理作一介紹。

  

  (1)收發(fā)操作

  MCP2510的發(fā)送操作通過(guò)3個(gè)發(fā)送緩沖器來(lái)實(shí)現。這3個(gè)發(fā)送緩沖器各占據14字節的SRAM。第1字節是控制寄存器TXBNCTRL,該寄存器用來(lái)設定信息發(fā)送的條件,且給出了信息的發(fā)送狀態(tài);第2~6字節用來(lái)存放標準的和擴展的標識符以及仲裁信息;最后8字節則用來(lái)存放待發(fā)送的數據信息。在進(jìn)行發(fā)送前,必須先對這些寄存器進(jìn)行初始化。

  (2)中斷管理

  MCP2510有8個(gè)中斷源,包括發(fā)送中斷、接收中斷、錯誤中斷及總線(xiàn)喚醒中斷等。利用中斷使能寄存器(CANINTE)和中斷屏蔽寄存器(CANINTF)可以方便地實(shí)現對各種中斷的有效管理。當有中斷發(fā)生時(shí),INT引腳變?yōu)榈碗娖讲⒈3衷诘碗娖?,直到MCU清除中斷為止。

  (3)錯誤檢測

  CAN協(xié)議具有CRCF錯誤、應答錯誤、形式錯誤、位錯誤和填充錯誤等檢測功能。MCP2510內含接收出錯計數器(REC)和發(fā)送出錯計數器(TEC)兩個(gè)錯誤計數器。因而對網(wǎng)絡(luò )中的任何一個(gè)節點(diǎn)來(lái)說(shuō),都有可能因為錯誤計數器的數值不同而使其處于錯誤一激話(huà)、錯誤一認可和總線(xiàn)一脫離3種狀態(tài)之一。

  2 MCP2510在智能節點(diǎn)中的應用實(shí)例

  利用MCP2510和CAN總線(xiàn)收發(fā)器TJAl050可構成一個(gè)CAN總線(xiàn)分布式測控網(wǎng)絡(luò )。系統可包括一個(gè)主控制器和多個(gè)節點(diǎn)控制器,這種節點(diǎn)控制器可對電動(dòng)機的電流、電壓及周?chē)臏囟冗M(jìn)行監控,其結構如圖3所示。

  

  這種網(wǎng)絡(luò )拓撲結構采用了總線(xiàn)式結構和無(wú)源抽頭連接,且結構簡(jiǎn)單、成本低,因而系統的可靠性較高。其信息傳輸采用CAN通信協(xié)議,通信介質(zhì)采用雙絞線(xiàn)。由于CAN總線(xiàn)是基于發(fā)送報文的編碼,不對CAN控制節點(diǎn)進(jìn)行編碼,故系統的可擴充性比較好,同時(shí)增刪CAN總線(xiàn)上的控制節點(diǎn)不會(huì )對系統的其余節點(diǎn)造成任何影響。

  節點(diǎn)控制器的MCU可選用具有SPI接口的微處理器,也可采用不帶SPI接口的微處理器。本系統采用的是不帶SPI接口的微處理器AT89C5l。AT89C51可通過(guò)P1口與CAN控制器的SPI接口直接相連,并用軟件算法來(lái)實(shí)現SPI接口協(xié)議。CAN總線(xiàn)收發(fā)器TJAl050則作為MCP2510與物理總線(xiàn)的接口。如果需要進(jìn)一步提高系統的抗干擾能力,則可在MCP2510和TJAl050之間再加一個(gè)光電隔離器。

  智能節點(diǎn)電路原理圖如圖4所示。

  

  2.1 軟件設計

  MCP2510正常工作之前,需要進(jìn)行正確的初始化,包括設置SPI接口的數據傳輸速率、CAN通信的波特率、MCP25lO的接收過(guò)濾器和屏蔽器以及發(fā)送和接收中斷允許標志位等。與SJAl000不同的是,單片機對MCP2510的接收緩沖器和發(fā)送緩沖器的操作,必須通過(guò)SPI接口用MCP25lO內置讀寫(xiě)命令來(lái)完成。其讀、寫(xiě)命令時(shí)序圖如圖5和圖6所示。

  

  本文中MCP2510主要采取中斷模式進(jìn)行總線(xiàn)數據的接收和發(fā)送。整個(gè)系統主序提供兩種中斷:定時(shí)器中斷和外部中斷。定時(shí)器中斷的中斷子程序主要負責處理來(lái)自模擬通道AINO~AIN7的A/D數據,向MCP25lO發(fā)送“數據發(fā)送請求命令”以及發(fā)送數據。外部中斷的中斷處理子程序主要包括CAN總線(xiàn)錯誤處理子程序和數據接收子程序。

  2.2 軟件主體設計流程

  軟件主體設計流程如圖7所示。軟件設計時(shí)需要注意以下問(wèn)題:

 ?、僖驗镸CP2510在初始化完成后處于默認Config-uration模式下,所以就需要在MCP2510的初始化完后將其置為Normal模式,否則MCP2510將一直停留在Configuration模式下,不能正常進(jìn)行工作。將MCP2510置Normal模式可通過(guò)使用MCP2510內置的BitModify(位修改)4指令向CANCTRL控制字寫(xiě)入一個(gè)0字節來(lái)實(shí)現。

 ?、谠趯CP2510進(jìn)行任何操作之前,都要由微處理器向MCP2510的片選CS輸出一個(gè)低電平,使得MCP2510選通。

 ?、墼趫绦蠱CP2510的“讀”操作時(shí),發(fā)送完讀指令及其地址碼之后,仍然需要向MCP2510提供時(shí)鐘,以接收“讀”到的數據??梢酝ㄟ^(guò)向MCP2510發(fā)送一個(gè)O字節來(lái)實(shí)現。

 ?、茉趯CP2510完成任意操作后,都要延時(shí)一段時(shí)間,使其有足夠的時(shí)間來(lái)準備接收下次操作的命令,防止出現MCP2510“忙”的情況。

  3 總 結

  CAN總線(xiàn)已被公認為是最有前途的幾種現場(chǎng)總線(xiàn)之一。因其性?xún)r(jià)比高、實(shí)現簡(jiǎn)單等突出優(yōu)點(diǎn)深受越來(lái)越多的研發(fā)人員的青睞。本文的智能節點(diǎn)可聯(lián)結多個(gè)集散控制系統,其軟硬件電路的設計方法同樣適合于其他基于CAN總線(xiàn)的分布式控制系統的節點(diǎn)設計。

通信相關(guān)文章:通信原理


隔離器相關(guān)文章:隔離器原理
雙絞線(xiàn)傳輸器相關(guān)文章:雙絞線(xiàn)傳輸器原理


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>