基于A(yíng)T91RM9200的CAN智能節點(diǎn)設計
CAN控制器MCP2510可以通過(guò)串行數據發(fā)送引腳(TXCAN)和串行數據接收引腳(RXCAN)直接連接到CAN收發(fā)器PCA82C250。該設計為了實(shí)現MC-P2510與PCA82C250之間的電流隔離,在它們之間放置了2個(gè)光耦。然而,在協(xié)議控制器和收發(fā)器之間使用光耦,通常會(huì )增加總線(xiàn)節點(diǎn)的循環(huán)延遲。光耦6N137的典型傳播延時(shí)為60 ns,比較適合傳輸速率小于等于125 Kb/s時(shí)的中低速應用場(chǎng)合;而在傳輸速率在125 Kb/s~1 Mb/s的高速應用場(chǎng)合中,應考慮使用傳播延時(shí)小于40 ns的高速光耦,如HCPL-7101。
CAN收發(fā)器PCA82C250通過(guò)有差動(dòng)發(fā)送和接收功能的2個(gè)總線(xiàn)終端CANH和CANL連接到總線(xiàn)電纜。PCA82C250的輸入引腳Rs通過(guò)外接電阻Rext到地,可以選擇3種不同的工作模式。第1種是高速模式,支持最大的總線(xiàn)速度和/或長(cháng)度;第2種是斜率模式,其輸出轉換速度可故意降低以減少電磁輻射;第3種是準備模式,其在電池供電并對功耗消耗非常低的應用非常適合。該設計將PCA82C250的引腳RS外接阻值為47 kΩ的電阻,從而使它工作在斜率模式,這樣可以使用非屏蔽的總線(xiàn)電纜,降低系統的成本。但總線(xiàn)信號轉換速率被故意減低了,因此該設計只能應用在傳輸速率小于等于125 Kb/s時(shí)的中低速應用場(chǎng)合,相應光耦選擇6N137即可。
2 軟件設計
CAN智能節點(diǎn)軟件設計主要包括2個(gè)方面:CAN通信和CAN節點(diǎn)功能模塊的軟件設計。CAN節點(diǎn)功能模塊軟件的實(shí)現因需求而異,在此不做介紹。本文著(zhù)重介紹CAN通信軟件的設計,它主要由3部分組成:CAN初始化、CAN發(fā)送數據、CAN接收數據。
2.1 CAN初始化
由圖2(a)可知,CAN初始化主要包括PIOA端口初始化、SPI初始化、MCP2510初始化、中斷初始化。本文引用地址:http://dyxdggzs.com/article/162936.htm
現分別介紹如下:
(1)PIOA端口初始化。由于AT91RM9200每個(gè)引腳可配置為通用功能I/O線(xiàn)或與1個(gè)或2個(gè)外設I/O復用的I/O線(xiàn)。因此必須通過(guò)軟件配置PIOA端口:將PA0,PAl,PA2,PA4引腳分別定義為MISO,MOSI,SPCK,NPCSl,從而完成CAN智能節點(diǎn)SPI接口的定義;將PA3引腳定義為IRQ5,從而完成CAN智能節點(diǎn)中斷信號的定義。
(2)SPI初始化。通過(guò)PIOA端口初始化,只是完成SPI接口的引腳定義。為了使SPI接口能夠正常工作,首先配置電源管理控制器(PMC)以使能SPI時(shí)鐘;如果允許SPI中斷請求,必須對高級中斷控制器(AIC)進(jìn)行配置;最后通過(guò)SPI的模式寄存器SPI_MR。指定SPI為主機模式、固定外設選擇、SPI時(shí)鐘為MCK、片選信號NPCSl有效;通過(guò)SPI的片選1寄存器SPI_CSRl指定SPCK時(shí)鐘極性、時(shí)鐘相位以支持MCP2510的(O,O)或(1,1)的SPI模式,指定SPI接口以8位數據進(jìn)行傳輸匹配MCP2510的命令及數據格式,指定SPI的串行時(shí)鐘波特率以匹配與MCP2510的通信。
(3)MCP2510初始化。在完成PIOA端口、SPI初始化的基礎上,即可按照圖2(a)虛線(xiàn)框中的流程進(jìn)行MCP2510初始化:首先必須使MCP2510進(jìn)入配置模式;然后對MCP2510相關(guān)寄存器(位定時(shí)配置寄存器、接收濾波寄存器、接收屏蔽寄存器、引腳控制和狀態(tài)寄存器)進(jìn)行配置;最后使MCP2510進(jìn)入正常模式。根據MCP2510提供的SPI命令集(讀指令、寫(xiě)指令、請求發(fā)送指令、狀態(tài)讀指令、位修改指令、復位指令),可以通過(guò)對
AT91RM9200的SPI接收數據寄存器SPI_RDR,SPI發(fā)送數據寄存器SPI_TDR,SPI狀態(tài)寄存器SPI_SR的操作實(shí)現相應的函數:McpRdByte(),Mcp-WrByte(),WriteRTS(),McpRdStatus(),BitModify(),McpReset()。軟件通過(guò)這些基本的指令函數完成MCP2510相關(guān)寄存器的配置。
(4)中斷初始化。通過(guò)AT91RM9200的高級中斷控制器(AIC),首先配置IRQ5中斷的優(yōu)先級為最高,中斷觸發(fā)類(lèi)型為下降沿觸發(fā);接著(zhù)將中斷服務(wù)程序IRQ5_ISR()的地址設置到中斷向量寄存器;最后使能IRQ5中斷。
評論