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