MCP2515:獨立CAN控制器的卓越之選
在電子工程師的日常工作中,CAN(Controller Area Network)總線通信是一個常見的需求。Microchip公司的MCP2515作為一款獨立CAN控制器,憑借其豐富的功能和出色的性能,在眾多應用場景中得到了廣泛的應用。今天,我們就來深入了解一下這款MCP2515。
文件下載:MCP2515-E P.pdf
一、功能特性亮點
1. CAN協議支持
MCP2515實現了CAN V2.0B協議,通信速率可達1 Mb/s。它支持0 - 8字節的數據字段長度,并且能夠處理標準和擴展數據幀以及遠程幀,這使得它可以適應不同的應用需求,無論是簡單的數據傳輸還是復雜的通信協議,都能輕松應對。
2. 強大的過濾與緩沖機制
- 接收緩沖:擁有兩個接收緩沖區,可進行優先級消息存儲,還配備了六個29位過濾器和兩個29位掩碼,能夠有效過濾掉不需要的消息,大大減輕了主機MCU的負擔。對于標準數據幀,它還支持對前兩個數據字節進行數據字節過濾,進一步提高了數據處理的效率。
- 發送緩沖:具備三個發送緩沖區,并具有優先級和中止功能,讓工程師可以根據實際情況靈活安排消息的發送順序,確保重要消息能夠及時發送。
3. 高速SPI接口
MCP2515采用了高速SPI接口,支持10 MHz的通信速率,并且兼容SPI Modes 0,0和1,1,方便與各種微控制器進行連接,實現快速、穩定的數據傳輸。
4. 特色功能模式
- 單次發送模式:One - Shot模式確保消息只嘗試發送一次,這在一些對時間要求嚴格的確定性系統中非常有用,例如TTCAN系統。
- 時鐘輸出功能:其Clock Out引腳帶有可編程預分頻器,可以作為其他設備的時鐘源,為系統的時鐘同步提供了便利。
- 幀起始信號監測:Start - of - Frame(SOF)信號可用于監測SOF信號,能夠應用于基于時隙的協議和/或總線診斷,幫助工程師及時發現總線的早期退化問題。
5. 低功耗與寬溫度范圍
采用低功耗CMOS技術,工作電壓范圍為2.7V - 5.5V,典型工作電流為5 mA,睡眠模式下典型待機電流僅為1 μA,非常適合對功耗要求較高的應用場景。此外,它還支持工業級(-40°C至 +85°C)和擴展級(-40°C至 +125°C)的溫度范圍,具有良好的環境適應性。
6. 汽車級認證
MCP2515通過了AEC - Q100認證,這意味著它符合汽車級應用的嚴格要求,在汽車電子領域具有廣闊的應用前景。
二、系統架構解析
MCP2515主要由三個主要模塊組成,下面為大家詳細介紹各個模塊的作用。
1. CAN模塊
CAN模塊負責處理CAN總線上消息的接收和發送。它包含CAN協議引擎、掩碼、過濾器、發送和接收緩沖區等部分。消息發送時,先將消息加載到相應的消息緩沖區和控制寄存器,然后通過SPI接口使用控制寄存器位或發送使能引腳來啟動傳輸。同時,可以通過讀取相應的寄存器來檢查狀態和錯誤。對于接收到的消息,會先進行錯誤檢查,然后與用戶定義的過濾器進行匹配,若匹配成功則將消息移動到兩個接收緩沖區之一。
2. 控制邏輯
控制邏輯模塊通過與其他模塊進行接口,來控制MCP2515的設置和操作。它提供了中斷引腳,以增加系統的靈活性。每個接收寄存器都有一個多功能中斷引腳(以及特定中斷引腳),可用于指示有效消息已被接收并加載到接收緩沖區。此外,還有三個引腳可用于立即啟動已加載到三個發送寄存器之一的消息的傳輸,不過使用這些引腳并非必須,也可以通過SPI接口訪問控制寄存器來實現消息傳輸的啟動。
3. SPI協議塊
微控制器通過SPI接口與MCP2515進行通信。使用標準的SPI讀寫命令以及專用的SPI命令,可以實現對所有寄存器的讀寫操作。
三、消息處理機制
1. 消息發送
- 發送緩沖區:MCP2515有三個發送緩沖區,每個緩沖區占用14字節的SRAM,并映射到設備的內存映射中。在發送消息之前,至少需要加載TXBnSIDH、TXBnSIDL和TXBnDLC寄存器。如果消息中有數據字節,還需要加載TXBnDm寄存器;如果使用擴展標識符,還需要加載TXBnEIDm寄存器并設置EXIDE位。
- 發送優先級:MCP2515內部對待發送消息進行優先級排序。在發送SOF之前,會比較所有排隊等待傳輸的緩沖區的優先級,優先級最高的發送緩沖區將首先發送。如果兩個緩沖區的優先級設置相同,則編號較高的緩沖區將首先發送。發送優先級共有四個級別,可通過TXP[1:0]位進行設置。
- 發送啟動:要啟動消息傳輸,需要為每個要發送的緩沖區設置TXREQ位??梢酝ㄟ^SPI寫命令、SPI RTS命令或將特定發送緩沖區的TXnRTS引腳置低來實現。當TXREQ設置時,ABTF、MLOA和TXERR位將自動清除。需要注意的是,設置TXREQ位并不意味著立即啟動消息傳輸,只有當設備檢測到總線可用時才會開始傳輸。
- 單次發送模式:One - Shot模式下,消息只嘗試發送一次。如果消息在傳輸過程中丟失仲裁或被錯誤幀破壞,不會進行重傳。
- 發送中止:MCU可以通過清除相應的TXREQ位來請求中止特定消息緩沖區中的消息。此外,通過設置ABAT位(CANCTRL[4])可以請求中止所有待處理的消息。
2. 消息接收
- 接收消息緩沖:MCP2515包含兩個完整的接收緩沖區和一個單獨的消息組裝緩沖區(MAB)。MAB始終用于接收總線上的下一條消息,只有當消息滿足接受過濾器的標準時,才會將消息轉移到RXBn緩沖區。當消息被移動到接收緩沖區時,相應的RXnIF位(CANINTF)將被設置,MCU必須清除該位才能允許新消息進入緩沖區。
- 接收優先級:RXB0是較高優先級的緩沖區,有一個掩碼和兩個消息接受過濾器與之關聯;RXB1是較低優先級的緩沖區,有一個掩碼和四個接受過濾器。消息首先會應用于RXB0的掩碼和過濾器,RXB0的過濾器數量較少,使得匹配更加嚴格,因此具有更高的優先級。
- 幀起始信號:如果啟用,在RXCAN引腳檢測到每個CAN消息的開始時,SOF引腳將生成Start - of - Frame信號。通過監測RXCAN引腳和SOF引腳,MCU可以在CAN通信受到影響之前檢測到小干擾,從而發現早期物理總線問題。
- 接收緩沖滿引腳:除了INT引腳,接收緩沖滿引腳(RX0BF和RX1BF)可用于指示有效消息已分別加載到RXB0或RXB1中。這些引腳有禁用、緩沖滿中斷和數字輸出三種不同的配置方式。
- 消息接受過濾器和掩碼:消息接受過濾器和掩碼用于確定消息組裝緩沖區中的消息是否應加載到接收緩沖區。對于標準數據幀,MCP2515會自動將通常與擴展標識符關聯的16位掩碼和過濾器應用于數據字段的前16位,從而減少實現高層協議(HLP)時MCU的負載。
四、位定時與同步
1. CAN位時間
CAN總線上的所有節點必須具有相同的標稱比特率(NBR)。由于CAN協議使用非歸零(NRZ)編碼,接收時鐘必須由接收節點恢復并與發送器的時鐘同步。MCP2515的位定時通過數字鎖相環(DPLL)實現,該DPLL將每個比特時間劃分為多個段,由時間量子((T_{Q}))組成。
2. 標稱比特時間
標稱比特時間(NBT)由同步段(SyncSeg)、傳播段(PropSeg)、相位段1(PS1)和相位段2(PS2)組成。這些段是非重疊的,NBT是這些段的總和。同步段用于同步總線上的節點,固定為1 (T{Q});傳播段用于補償節點之間的物理延遲,可編程范圍為1 - 8 (T{Q});兩個相位段用于補償總線上的邊緣相位誤差,PS1可編程范圍為1 - 8 (T{Q}),PS2可編程范圍為2 - 8 (T{Q})。
3. 時間量子
每個比特時間的段由時間量子((T{Q}))組成,其長度基于振蕩器周期((T{OSC})),基礎(T{Q})等于兩倍的振蕩器周期。可以通過可編程的波特率預分頻器(BRP)來設置(T{Q})的長度。
4. 同步機制
為了補償總線上每個節點振蕩器頻率之間的相移,每個CAN控制器必須能夠與輸入信號的相關信號邊緣同步。MCP2515采用硬同步和重新同步兩種機制。硬同步僅在總線空閑時出現從隱性到顯性的邊緣時執行,重新同步可能會導致PS1延長或PS2縮短,其調整量由同步跳躍寬度(SJW)限制。
五、錯誤檢測與處理
1. 錯誤類型
CAN協議提供了復雜的錯誤檢測機制,MCP2515能夠檢測CRC錯誤、確認錯誤、格式錯誤、比特錯誤和填充錯誤等多種錯誤。當檢測到錯誤時,會生成錯誤幀,消息將被重復發送。
2. 錯誤狀態
根據內部錯誤計數器的值,每個CAN節點處于三種錯誤狀態之一:錯誤激活、錯誤被動和總線關閉(僅發送器)。錯誤激活狀態下,節點可以無限制地發送消息和主動錯誤幀;錯誤被動狀態下,節點可以發送消息和被動錯誤幀;總線關閉狀態下,節點暫時無法參與總線通信。
3. 錯誤計數器
MCP2515包含兩個錯誤計數器:接收錯誤計數器(REC)和發送錯誤計數器(TEC)。MCU可以讀取這兩個計數器的值,根據它們的值來判斷設備的錯誤狀態。當TEC超過255時,設備進入總線關閉狀態,需要接收到128次連續11個隱性位的總線關閉恢復序列后才能恢復正常。
六、中斷管理
MCP2515有八個中斷源,CANINTE寄存器包含每個中斷源的單獨中斷使能位,CANINTF寄存器包含相應的中斷標志位。當發生中斷時,INT引腳將被拉低,直到MCU清除中斷。建議使用BIT MODIFY命令來重置CANINTF寄存器中的標志位,以防止意外更改標志位而導致錯過中斷。
1. 中斷代碼位
中斷代碼位ICOD[2:0](CANSTAT[3:1])用于指示待處理中斷的源。在多個中斷發生的情況下,INT引腳將保持低電平,直到所有中斷都被MCU重置。ICOD[2:0]位將反映當前待處理的最高優先級中斷的代碼。
2. 各種中斷類型
包括發送中斷、接收中斷、消息錯誤中斷、總線活動喚醒中斷和錯誤中斷等。不同的中斷類型用于在不同的情況下通知MCU,例如發送緩沖區為空、消息成功接收、發生消息錯誤、檢測到總線活動以及發生溢出或錯誤狀態改變等。
七、其他特性
1. 振蕩器
MCP2515可以使用晶體或陶瓷諧振器連接到OSC1和OSC2引腳,也可以由外部時鐘源驅動。它利用振蕩器啟動定時器(OST)確保振蕩器在內部狀態機開始操作之前穩定。CLKOUT引腳可作為系統的主時鐘或其他設備的時鐘輸入,其內部預分頻器可以將(F_{osc})除以1、2、4或8。
2. 復位
MCP2515有硬件復位(RESET引腳置低)和SPI復位(通過SPI命令復位)兩種方式,這兩種復位功能等效。在電源上電后,必須進行其中一種復位操作,以確保邏輯和寄存器處于默認狀態。
3. 工作模式
MCP2515有配置模式、正常模式、睡眠模式、監聽模式和回環模式五種工作模式??梢酝ㄟ^REQOP[2:0]位(CANCTRL[7:5])選擇工作模式,在更改模式時,必須等待所有待處理的消息傳輸完成后模式才會實際改變。不同的工作模式適用于不同的應用場景,例如配置模式用于初始化設備,睡眠模式用于降低功耗,監聽模式可用于總線監控或波特率檢測,回環模式可用于系統開發和測試。
4. SPI接口
MCP2515通過SPI接口與微控制器進行通信,支持Mode 0,0和Mode 1,1。它提供了多種SPI指令,如RESET、READ、READ RX BUFFER、WRITE、LOAD TX BUFFER、RTS、READ STATUS、RX STATUS和BIT MODIFY等,方便工程師對設備進行各種操作。
5. 電氣特性
在絕對最大額定值方面,它能承受一定范圍的電壓和溫度,如(V_{DD})為7.0V ,存儲溫度范圍為 - 65°C至 +150°C等。其直流特性包括不同引腳的輸入輸出電壓、電流等參數,位定時特性、CAN接口交流特性、復位交流特性、CLKOUT引腳交流特性和SPI接口交流特性等也都有明確的規定,這些特性為工程師在實際應用中提供了重要的參考依據。
6. 封裝信息
MCP2515提供了18 - Lead PDIP/SOIC、20 - Lead TSSOP和20 - Lead QFN等多種封裝形式,不同的封裝適用于不同的應用場景和設計需求。每個封裝都有詳細的尺寸和引腳信息,方便工程師進行PCB設計。
MCP2515以其豐富的功能、靈活的配置和出色的性能,為電子工程師在CAN總線通信設計中提供了一個優秀的解決方案。無論是在工業控制、汽車電子還是其他領域,都能發揮出重要的作用。希望通過本文的介紹,能讓大家對MCP2515有更深入的了解,在實際設計中能夠更好地運用這款產品。
不知道大家在使用MCP2515的過程中遇到過哪些有趣的問題或者有什么獨特的經驗呢?歡迎在評論區分享交流!
-
CAN總線通信
+關注
關注
1文章
18瀏覽量
8694 -
CAN控制器
+關注
關注
3文章
80瀏覽量
15639 -
MCP2515
+關注
關注
0文章
25瀏覽量
16391
發布評論請先 登錄
帶有SPI接口的獨立CAN控制器MCP2515相關資料下載
基于MCP2515帶有 SPI 接口的獨立 CAN 控制器
MCP2515帶有SPI接口的獨立CAN控制器數據手冊免費下載
如何將MCP2515CAN總線控制器與Arduino接口
MCP2515帶SPI的獨立控制器接口的數據手冊免費下載
MCP2515獨立控制器
MCP2515:獨立CAN控制器的卓越之選
評論