




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
CAN現場總線系統
的設計與應用第5章帶有SPI接口的獨立CAN控制器MCP2515MCP2515簡介MCP2515是Microchip生產的一款獨立CAN控制器,完全支持CANV2.0B技術規范。該器件能發送和接收標準和擴展數據幀以及遠程幀。MCP2515自帶的兩個驗收屏蔽寄存器和六個驗收濾波寄存器,減少了單片機的開銷。
MCP2515通過SPI總線與單片機的的連接。本章主要介紹MCP2515獨立CAN控制器的外圍引腳,內部寄存器和相關的SPI指令,并介紹基于PIC16F877A單片機和MCP2515獨立CAN控制器的CAN節點的開發和MCP2515的初始化、發送、接收程序的編寫CAN獨立控制器MCP2515特性完全支持CAN總線V2.0A和V2.0B技術規范0~8字節報文長度;標準和擴展數據幀;可編程位傳輸速率可達lMbps;支持遠程幀:兩個接收緩沖器,可優先儲存報文;6個完全驗收濾波器;2個完全驗收屏蔽濾波器;3個發送緩沖器,具有優先級設定以及發送中止功能用于自檢的環回模式。CAN獨立控制器MCP2515特性硬件特性高速SPl接口;支持0.0和I.1SPI模式;帶有可編程預分頻器的時鐘輸出引腳;帶有可選擇使能設定的,中斷輸出引腳:“緩沖器滿”輸出引腳可配置為各接收緩沖器的中斷引腳或通用數寧輸出引腳。“請求發送”輸入引腳可配置為發送緩沖器的控制引腳,用以請求立即發送報文或配置為通用數字輸出引腳;.低功耗休眠工作模式。MCP2515控制器概述MCP2515控制器概述CAN模塊的功能是處理所有CAN總線上的報文接收和發送。控制邏輯通過與其它模塊連接,控制邏輯模塊控制MCP2515的設置和運行,以便傳輸信息與控制。單片機通過SPI接口與MCP2515連接。使用標準的SPI讀/寫指令以及專門的SPI命令來讀/寫所有的寄存器和完成相應的控制操作。MCP2515引腳介紹MCP2515引腳介紹MCP2515引腳介紹發送/接收緩沖器
MCP2510具有3個發送緩沖器和2個接收緩沖器,2個驗收屏蔽寄存器(分別對應不同的接收緩沖器),以及6個驗收過濾寄存器。CAN報文幀標準數據幀CAN報文幀擴展數據幀仲裁字段的前11位為29位標識符的最有效位(基本ID)。緊隨這11位的是替換遠程請求(SRR)位,定義為隱性狀態。SRR位之后是IDE位,該位隱性時表示這是擴展的CAN幀。CAN報文幀遠程幀錯誤幀主動錯誤幀消極錯誤幀過載幀與主動錯誤幀格式一樣,但是其只出現在數據幀、遠程幀之間。幀空間寄存器映射表CANCTRL控制寄存器REQOP<2:0>:請求工作模式的位
000=設定為正常工作模式
001=設定為休眠模式
010=設定為環回模式
011=設定為僅監聽模式
100=設定為配置模式REQOP位不應設置為其他值,因為這些值都是無效的。注:上電時,REQOP=b’111’CANCTRL控制寄存器ABAT:中止所有當前報文發送的位
1=請求中止所有當前報文發送的緩沖器
0=終止對所有報文發送中止的請求OSM:單觸發模式位
1=使能。報文僅嘗試發送一次
0=禁止。如有需要,報文會重新發送。CLKEN:CLKOUT引腳使能位
1=CLKOUT引腳使能
0=CLKOUT引腳禁止(引腳處于高阻態)CLKPRE<1:0>:CLKOUT引腳預分頻比位
00=FCLKOUT=系統時鐘頻率/1 01=FCLKOUT=系統時鐘頻率/2 10=FCLKOUT=系統時鐘頻率/4 11=FCLKOUT=系統時鐘頻率/8CANSTAT狀態寄存器OPMOD:工作模式位<2:0> 000=器件處于正常工作模式
001=器件處于休眠模式
010=器件處于環回模式
011=器件處于僅監聽模式
100=器件處于配置模式CANSTAT狀態寄存器ICOD:中斷標志代碼位<2:0>000=無中斷001=出錯中斷010=喚醒中斷011=TXB0中斷100=TXB1中斷101=TXB2中斷110=RXB0中斷111=RXB1中斷工作模式配置模式復位后進入配置模式,所有錯誤計數器被清零正常模式睡眠模式SPI口仍工作,允許訪問任何寄存器;喚醒后處于監聽模式監聽模式錯誤計數器被復位并設置為無效環回模式自收發,多用于調試配置模式MCP2515在正常運行之前必須進行初始化。只有在配置模式下,才能對器件進行初始化。在上電或復位時器件會自動進入配置模式,或通過CANTRL.REQOP位設置成“100”也可使器件從任何模式進入配置模式。當進入配置模式時,所有錯誤計數器都被清零。只有在配置模式下,才能對以下寄存器進行修改
CNF1、CNF2和CNF3TXRTSCTRL
驗收過濾寄存器驗收屏蔽寄存器休眠模式MCP2515具有內部休眠模式,使器件功耗最少。即使MCP2515處于休眠模式,SPI接口仍然保持正常的讀操作,以允許訪問器件內的所有寄存器。當處于內部休眠模式時,喚醒中斷仍然工作(如果被使能)。因此,可將MCU置于休眠模式,在檢測到總線上有活動時,就喚醒MCP2515。處于休眠模式時,MCP2515內部振蕩器停止工作。當總線發生活動或MCU通過SPI接口將CANINTF.WAKIF位置1來“產生”喚醒嘗試(CANINTE.WAKIE位也必須置1以便產生喚醒中斷)時,將喚醒MCP2515。當MCP2515處于休眠模式時,TXCAN引腳保持隱性狀態。復位
MCP2515有兩種復位方式:硬件復位——RESET引腳為低電平。SPI復位——通過SPI命令復位。振蕩器錯誤檢測當產生CRC錯誤,確認(應答)錯誤,格式錯誤和填充錯誤時,除了改變錯誤寄存器的值以外,報文將重新發送。在總裁階段不進行位錯誤檢修。當發現位錯誤時,將根據節點的狀態產生相應的錯誤幀,主動錯誤幀將破壞數據幀和遠程幀的發送。節點錯誤狀態
主動錯誤。被動錯誤。總線關閉(僅發送器)錯誤相關寄存器TEC——發送錯誤計數器REC——接收錯誤計數器
EFLG——錯誤標志寄存器EFLG寄存器RX1OVR:接收緩沖器1溢出標志位RX0OVR:接收緩沖器0溢出標志位TXBO:總線關閉錯誤標志位當TEC達到255時,該位置1;-當成功接收到總線恢復序列時復位
TXEP:發送被動錯誤標志位RXEP:接收被動錯誤標志位TXWAR:發送錯誤警告標志位RXWAR:接收錯誤警告標志位bit0EWARN:錯誤警告標志位當TEC或REC大于等于96時(TXWAR或RXWAR=1)時,該位置1當TEC和REC同時小于96時復位中斷MCP2515有八個中斷源。CANINTE寄存器包含了使能各中斷源的中斷使能位。CANINTF寄存器包含了各中斷源的中斷標志位。當發生中斷時,INT引腳將被MCP2515拉為低電平,并保持低電平狀態直至MCU清除中斷。中斷只有在引起相應中斷的條件消失后,才會被清除。建議在對CANINTF寄存器中的標志位進行復位操作時,采用位修改命令而不要使用一般的寫操。這是為了避免在寫命令執行過程中無意間修改了標志位,進而導致中斷丟失。CANSTAT.ICOD(中斷代碼)位的編碼反映等待處理的中斷源。如果同時發生多個中斷,INT引腳將保持低電平狀態直至MCU復位所有中斷。CANINTF——中斷標志寄存器
1=有等待處理的中斷(必須由MCU清零才可使中斷復位)
0=無等待處理的中斷MERRF:報文錯誤中斷標志位
WAKIF:喚醒中斷標志位ERRIF:錯誤中斷標志位(EFLG寄存器中有多個中斷源)TX2IF:發送緩沖器2空中斷標志位TX1IF:發送緩沖器1空中斷標志位TX0IF:發送緩沖器0空中斷標志位RX1IF:接收緩沖器1滿中斷標志位RX0IF:接收緩沖器0滿中斷標志位CANINTE——中斷使能寄存器1=報文接收或發送期間發生錯誤時中斷0=禁止MERRE:報文錯誤中斷使能位bit6WAKIE:喚醒中斷使能位ERRIE:錯誤中斷使能位(EFLG寄存器中有多個中斷源)TX2IE:發送緩沖器2空中斷使能位TX1IE:發送緩沖器1空中斷使能位TX0IE:發送緩沖器0空中斷使能位RX1IE:接收緩沖器1滿中斷使能位RX0IE:接收緩沖器0滿中斷使能位位定時位定時位定時CONF1CONF2CONF3報文接收報文接收報文接收緩沖MCP2515具有兩個全接收緩沖器。每個接收緩沖器配備有多個驗收濾波器。除上述專用接收緩沖器外,MCP2515還具有單獨的報文集成緩沖器(MAB),可作為第三個接收緩沖器。MAB對接收到的報文進行組合,并將滿足驗收濾波器條件的報文傳送至RXBn緩沖器。
接收優先級RXB0是具有較高優先級的緩沖器。接收到的報文首先在RXB0中進行屏蔽濾波。RXB1是優先級較低的緩沖器。報文除了首先在RB0中進行屏蔽濾波外,由于RB0的驗收濾波寄存器數量較少,因此RB0接受匹配條件更為嚴格,表明RB0具有較高的優先級。報文接收滾存對RXB0CTRL寄存器進行配置,如果RXB0已包含一條有效報文并且接收到另一條有效報文,不會發生溢出錯誤,新的報文會滾存到RXB1而不管RXB1是何種驗收標準。接收標志/中斷當報文傳送至某一接收緩沖器時,與該接收緩沖器對應的CANINTF.RXnIF位將置1。一旦緩沖器中的報文處理完畢,MCU就必須將該位清零以接收下一條報文。
該控制位提供的鎖定功能確保MCU尚未處理完上一條報文前,MCP2515不會將新的報文載入接收緩沖器。報文接收報文接收
起始幀信號使能之后,一旦RXCAN引腳檢測到任一CAN報文開始,起始幀信號便會在SOF引腳上產生。RXCAN引腳監控空閑總線上出現的從隱性位到顯性位的變化邊沿。如果顯性條件始終保持直至采樣點發生,MCP2515視之為SOF信號并產生一個SOF脈沖。如果顯性條件沒有保持到采樣點便發生,MCP2515視之為總線干擾,不產生SOF信號。
對于單觸發工作模式,SOF信號的一個用途是用于TTCAN(是CAN總線的一種高層協議,其通信是基于時間觸發的,適用于安全相關的場合)系統。另外,通過監控RXCAN引腳和SOF引腳,MCU能夠檢測到總線上出現的小干擾,從而在它們影響CAN通訊之前發現早期總線物理故障。報文接收多濾波器匹配如果接收報文符合一個以上濾波寄存器的接受條件,FILHIT位中的二進制代碼將反映其中編號最小的濾波寄存器。例如,如果濾波器RXF2和RXF4同時與接收報文匹配,FILHIT中將裝載RXF2編碼值。
編號較小的驗收濾波寄存器有較高的優先級。接收報文將按照編號升序依次與濾波寄存器進行匹配比較。這意味著RXB0的優先級比RXB1高。報文接收報文發送發送緩沖器MCP2515采用三個發送緩沖器。發送優先級具有較高優先級的發送緩沖器將首先發送。如果兩個緩沖器的優先級相同,則編號較高的發送緩沖器將優先發送。TXnRTS引腳
TXnRTS為輸入引腳,可配置為:請求發送輸入引腳,作為啟動任一發送緩沖器中報文發送的備用方法標準數字輸入引腳報文發送發送啟動通過將TXBnCTRL.TXREQ位置1,可以啟動相應緩沖器的報文發送。它可以按如下方式設定:*利用SPI寫命令寫寄存器*發送SPIRTS命令*將要發送報文的發送緩沖器的TXnRTS引腳置為低電平通過SPI接口啟動報文發送后,可以同時將TXREQ位和TXP優先級控制位置1。當TXBnCTRL.TXREQ位置1后,TXBnCTRL.ABTF、TXBnCTRL.MLOA和TXBnCTRL.TXERR位都將被自動清零。報文發送發送中止清除與特定發送緩沖器對應的TXBnCTRL.TXREQ位來中止某條報文的發送。也可通過設置CANCTRL.ABAT位以中止所有等待發送的報文。
如果CANCTRL.ABAT位被置位則所有報文中止發送。若用戶要繼續報文發送,則必須對該
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論