• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁(yè) > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于MCP2515的多路CAN總線接口及驅(qū)動(dòng)程序設(shè)計(jì)

    基于MCP2515的多路CAN總線接口及驅(qū)動(dòng)程序設(shè)計(jì)

    作者:北京交通大學(xué) 徐曉東 路紅英 張寧 時(shí)間:2008-05-23 來(lái)源:《單片機(jī)與嵌入式系統(tǒng)應(yīng)用》 收藏

      引 言

    本文引用地址:http://www.czjhyjcfj.com/article/82980.htm

      在鐵路系統(tǒng)中,為了保證列車的安全運(yùn)行,需要對(duì)鐵軌及周圍狀況進(jìn)行實(shí)時(shí)檢測(cè)。目前采用的方法是在鐵路沿線安裝多個(gè)檢測(cè)設(shè)備,用于檢測(cè)洪水、大風(fēng)、泥石流等自然災(zāi)害及軌溫等參數(shù)。這些設(shè)備一般采用的通信方式是RS232、RS485或,并通過(guò)專線連接至監(jiān)控中心的各個(gè)監(jiān)控設(shè)備。這種方式極大浪費(fèi)了線路資源,也不易于設(shè)備的統(tǒng)一管理。因此,需要一種安裝在鐵路沿線的設(shè)備,它將附近的檢測(cè)設(shè)備發(fā)送的信息統(tǒng)一收集并通過(guò)一條專線直接送往監(jiān)控中心。為了與多個(gè)檢測(cè)設(shè)備通信,必須同時(shí)具有多個(gè)RS232、RS485和。基于這種應(yīng)用需要,本文提出了擴(kuò)展多個(gè)的方法。

      1 系統(tǒng)結(jié)構(gòu)

      1.1 介紹

      系統(tǒng)采用Atmel公司的AT91RM9200(以下簡(jiǎn)稱“9200”)作為MCU。該處理器基于ARM920T內(nèi)核,主頻為180 MHz時(shí),性能可達(dá)到200MIPS;最高主頻為209MHz。該處理器還具有豐富的外設(shè)資源,非常適合工業(yè)控制領(lǐng)域的應(yīng)用;采用的操作系統(tǒng)是ARM-Linux,內(nèi)核版本為2.4.19。

      目前主流的CAN協(xié)議控制器一般采用I/O(SJA1000等)或SPI(等)與MCU進(jìn)行通信。由于本設(shè)計(jì)采用PC/104擴(kuò)展卡的方式來(lái)擴(kuò)展多個(gè)RS232和RS485接口,沒(méi)有多余的I/O片選線可用,因此最終選用9200的SPI接口與進(jìn)行多路CAN總線接口的擴(kuò)展。

      是Microchip公司推出的具有SPI接口的獨(dú)立CAN控制器。它完全支持CAN V2.0B技術(shù)規(guī)范,通信速率最高可達(dá)1 Mbps,內(nèi)含3個(gè)發(fā)送緩沖器、2個(gè)接收緩沖器、6個(gè)29位驗(yàn)收濾波寄存器和2個(gè)29位驗(yàn)收屏蔽寄存器;它的SPI接口時(shí)鐘頻率最高可達(dá)10 MHz,可滿足一個(gè)SPI主機(jī)接口擴(kuò)展多路CAN總線接口的需要。

      1.2 系統(tǒng)硬件接口

      圖1是9200與MCP2515的接口原理框圖,通過(guò)9200的SPI接口,連接了5個(gè)MCP2515。由于9200的SPI從設(shè)備片選線數(shù)量有限,故采用片選譯碼方式,NPCS0可作為普通的外部中斷線使用(NPCS0與IRQ5復(fù)用引腳)。由于9200的外部中斷線資源有限,故采用中斷線共享的方式,即分別有兩個(gè)MCP2515共享同一中斷線,最后一個(gè)MCP2515獨(dú)占一條中斷線,以滿足不同通信速率下數(shù)據(jù)處理的需要。

           

      圖2是MCP2515的外圍CAN總線接口框圖,圖中省略了MCP2515和9200的接口部分。由于設(shè)備需要安裝在鐵路沿線,必須具有防雷擊的能力。因此MCP2515與CAN總線收發(fā)器(TJA1050)之間采用高速光耦進(jìn)行完全的電氣隔離,并且光耦兩端電路的電源也必須用電源隔離模塊隔離開(kāi),這樣才能真正起到隔離的作用。在TJA1050的CANH和CANL引腳與地之間連接2個(gè)30 pF的電容,可以過(guò)濾CAN總線上的高頻干擾;2個(gè)二極管可以在總線電壓發(fā)生瞬變干擾時(shí)起保護(hù)作用。光耦正常工作時(shí)輸入電流為10 mA左右,內(nèi)部發(fā)光二極管的正向電壓降為1.7 V左右,因此要特別注意輸入端串聯(lián)電阻的阻值選擇。

            

      2 SPI主機(jī)的工作方式

      9200通過(guò)SPI接口與5個(gè)MCP2515進(jìn)行通信,9200的SPI控制器工作在主機(jī)模式,MCP2515工作在從機(jī)模式。MCP2515支持多個(gè)指令(如復(fù)位指令、讀指令、寫指令等),以便于9200通過(guò)SPI接口對(duì)MCP2515的內(nèi)部寄存器進(jìn)行讀/寫操作。9200 SPI控制器作為主機(jī)時(shí)工作模式流程如圖3所示。

           

      需要注意的是,SPI使能后,只有在SPI_TDR(發(fā)送數(shù)據(jù)寄存器)中有數(shù)據(jù)時(shí),才會(huì)根據(jù)片選配置(固定外設(shè)或可變外設(shè))使能相應(yīng)片選;而SPI_TDR中無(wú)數(shù)據(jù)時(shí),則片選自動(dòng)禁用。因此,9200向MCP2515連續(xù)發(fā)送多個(gè)字節(jié)時(shí),要保證在前一個(gè)字節(jié)傳輸完畢前,后一個(gè)字節(jié)就被寫入到SPI_TDR中,以避免片選被自動(dòng)禁用;同時(shí),在傳輸完每一個(gè)字節(jié)后,還要讀取SPI_RDR(接收數(shù)據(jù)寄存器)。

      下面以MCP2515的讀指令為例,說(shuō)明圖4所示的完成一次讀指令操作(只讀一個(gè)字節(jié)數(shù)據(jù))的過(guò)程,并假設(shè)9200 SPI采用固定外設(shè)的片選配置方式。其他指令的軟件實(shí)現(xiàn)流程與讀指令類似。

            


    上一頁(yè) 1 2 下一頁(yè)

    評(píng)論


    相關(guān)推薦

    技術(shù)專區(qū)

    關(guān)閉
    主站蜘蛛池模板: 东至县| 沂源县| 惠安县| 婺源县| 五华县| 西华县| 封开县| 达拉特旗| 夏邑县| 陆川县| 平武县| 巴青县| 高邮市| 安乡县| 龙泉市| 新巴尔虎右旗| 商洛市| 乐昌市| 三明市| 宁海县| 闸北区| 阿城市| 衡水市| 邵武市| 正安县| 长武县| 乌兰县| 老河口市| 伊宁县| 阿克苏市| 连江县| 本溪市| 夹江县| 抚松县| 湘潭市| 嘉峪关市| 营山县| 忻城县| 麻江县| 弋阳县| 错那县|