關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > 基于AT91RM9200的CAN智能節點設計

        基于AT91RM9200的CAN智能節點設計

        作者: 時間:2010-08-13 來源:網絡 收藏

        控制器MCP2510可以通過串行數據發送引腳(TX)和串行數據接收引腳(RX)直接連接到CANPCA82C250。該為了實現MC-P2510與PCA82C250之間的電流隔離,在它們之間放置了2個光耦。然而,在協議控制器和之間使用光耦,通常會增加總線的循環延遲。光耦6N137的典型傳播延時為60 ns,比較適合傳輸速率小于等于125 Kb/s時的中低速應用場合;而在傳輸速率在125 Kb/s~1 Mb/s的高速應用場合中,應考慮使用傳播延時小于40 ns的高速光耦,如HCPL-7101。
        CANPCA82C250通過有差動發送和接收功能的2個總線終端CANH和CANL連接到總線電纜。PCA82C250的輸入引腳Rs通過外接電阻Rext到地,可以選擇3種不同的工作模式。第1種是高速模式,支持最大的總線速度和/或長度;第2種是斜率模式,其輸出轉換速度可故意降低以減少電磁輻射;第3種是準備模式,其在電池供電并對功耗消耗非常低的應用非常適合。該將PCA82C250的引腳RS外接阻值為47 kΩ的電阻,從而使它工作在斜率模式,這樣可以使用非屏蔽的總線電纜,降低系統的成本。但總線信號轉換速率被故意減低了,因此該只能應用在傳輸速率小于等于125 Kb/s時的中低速應用場合,相應光耦選擇6N137即可。

        2 軟件設計
        CAN軟件設計主要包括2個方面:CAN通信和CAN功能模塊的軟件設計。CAN節點功能模塊軟件的實現因需求而異,在此不做介紹。本文著重介紹CAN通信軟件的設計,它主要由3部分組成:CAN初始化、CAN發送數據、CAN接收數據。
        2.1 CAN初始化
        由圖2(a)可知,CAN初始化主要包括PIOA端口初始化、SPI初始化、MCP2510初始化、中斷初始化。

        本文引用地址:http://www.104case.com/article/162936.htm


        現分別介紹如下:
        (1)PIOA端口初始化。由于每個引腳可配置為通用功能I/O線或與1個或2個外設I/O復用的I/O線。因此必須通過軟件配置PIOA端口:將PA0,PAl,PA2,PA4引腳分別定義為MISO,MOSI,SPCK,NPCSl,從而完成CAN節點SPI接口的定義;將PA3引腳定義為IRQ5,從而完成CAN節點中斷信號的定義。
        (2)SPI初始化。通過PIOA端口初始化,只是完成SPI接口的引腳定義。為了使SPI接口能夠正常工作,首先配置電源管理控制器(PMC)以使能SPI時鐘;如果允許SPI中斷請求,必須對高級中斷控制器(AIC)進行配置;最后通過SPI的模式寄存器SPI_MR。指定SPI為主機模式、固定外設選擇、SPI時鐘為MCK、片選信號NPCSl有效;通過SPI的片選1寄存器SPI_CSRl指定SPCK時鐘極性、時鐘相位以支持MCP2510的(O,O)或(1,1)的SPI模式,指定SPI接口以8位數據進行傳輸匹配MCP2510的命令及數據格式,指定SPI的串行時鐘波特率以匹配與MCP2510的通信。
        (3)MCP2510初始化。在完成PIOA端口、SPI初始化的基礎上,即可按照圖2(a)虛線框中的流程進行MCP2510初始化:首先必須使MCP2510進入配置模式;然后對MCP2510相關寄存器(位定時配置寄存器、接收濾波寄存器、接收屏蔽寄存器、引腳控制和狀態寄存器)進行配置;最后使MCP2510進入正常模式。根據MCP2510提供的SPI命令集(讀指令、寫指令、請求發送指令、狀態讀指令、位修改指令、復位指令),可以通過對
        的SPI接收數據寄存器SPI_RDR,SPI發送數據寄存器SPI_TDR,SPI狀態寄存器SPI_SR的操作實現相應的函數:McpRdByte(),Mcp-WrByte(),WriteRTS(),McpRdStatus(),BitModify(),McpReset()。軟件通過這些基本的指令函數完成MCP2510相關寄存器的配置。
        (4)中斷初始化。通過的高級中斷控制器(AIC),首先配置IRQ5中斷的優先級為最高,中斷觸發類型為下降沿觸發;接著將中斷服務程序IRQ5_ISR()的地址設置到中斷向量寄存器;最后使能IRQ5中斷。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 太和县| 资溪县| 右玉县| 濮阳市| 萝北县| 凌源市| 班玛县| 东丰县| 汉寿县| 资讯 | 广饶县| 宣城市| 建始县| 改则县| 民丰县| 前郭尔| 浮山县| 汪清县| 阿巴嘎旗| 石狮市| 芦溪县| 周宁县| 上高县| 望奎县| 武邑县| 南木林县| 江陵县| 交口县| 措勤县| 丹东市| 探索| 渑池县| 佳木斯市| 会泽县| 石城县| 商南县| 石河子市| 沂源县| 囊谦县| 灵武市| 锡林郭勒盟|