MCP2510:獨(dú)立CAN控制器的技術(shù)剖析與應(yīng)用指南
在電子工程師的設(shè)計(jì)工具箱中,CAN(Controller Area Network)控制器是實(shí)現(xiàn)可靠通信的關(guān)鍵組件。Microchip的MCP2510獨(dú)立CAN控制器,憑借其豐富的功能和出色的性能,在眾多應(yīng)用場景中脫穎而出。今天,我們就來深入剖析MCP2510的技術(shù)細(xì)節(jié)和應(yīng)用要點(diǎn)。
文件下載:MCP2510T-I ST.pdf
一、MCP2510概述
MCP2510是一款獨(dú)立的CAN控制器,旨在簡化與CAN總線接口的應(yīng)用設(shè)計(jì)。它實(shí)現(xiàn)了完整的CAN V2.0A和V2.0B協(xié)議,支持高達(dá)1 Mb/s的數(shù)據(jù)傳輸速率,具備標(biāo)準(zhǔn)和擴(kuò)展數(shù)據(jù)幀、遠(yuǎn)程幀的收發(fā)能力,還提供了豐富的硬件特性和低功耗設(shè)計(jì)。
1.1 主要特性
- CAN協(xié)議支持:實(shí)現(xiàn)全CAN V2.0A和V2.0B協(xié)議,支持0 - 8字節(jié)的消息長度,標(biāo)準(zhǔn)和擴(kuò)展數(shù)據(jù)幀,可編程比特率高達(dá)1 Mb/s,支持遠(yuǎn)程幀。
- 硬件特性:高速SPI接口(5 MHz at 4.5V I temp),支持SPI模式0,0和1,1,時鐘輸出引腳可編程預(yù)分頻器,中斷輸出引腳可選擇使能,“緩沖區(qū)滿”輸出引腳可配置為中斷引腳或通用數(shù)字輸出,“請求發(fā)送”輸入引腳可配置為控制引腳或通用數(shù)字輸入,低功耗睡眠模式。
- 低功耗CMOS技術(shù):工作電壓范圍為3.0V - 5.5V,典型活動電流為5 mA,典型待機(jī)電流為10 μA(5.5V時)。
- 封裝形式:提供18引腳PDIP/SOIC和20引腳TSSOP封裝,適用于不同的應(yīng)用場景。
- 溫度范圍:支持工業(yè)級(-40°C to +85°C)和擴(kuò)展級(-40°C to +125°C)溫度范圍。
二、MCP2510的功能模塊
2.1 整體架構(gòu)
MCP2510主要由三個主要模塊組成:CAN協(xié)議引擎、控制邏輯和SRAM寄存器、SPI協(xié)議塊。CAN協(xié)議引擎負(fù)責(zé)處理總線上消息的收發(fā)功能;控制邏輯和SRAM寄存器用于配置設(shè)備及其操作;SPI協(xié)議塊實(shí)現(xiàn)與MCU的通信。
2.2 收發(fā)緩沖區(qū)
MCP2510擁有三個發(fā)送緩沖區(qū)和兩個接收緩沖區(qū),以及兩個驗(yàn)收掩碼和六個驗(yàn)收濾波器。發(fā)送緩沖區(qū)每個占用14字節(jié)的SRAM,用于存儲待發(fā)送的消息;接收緩沖區(qū)用于存儲接收到的消息,只有當(dāng)消息符合驗(yàn)收濾波器的標(biāo)準(zhǔn)時,才會被轉(zhuǎn)移到接收緩沖區(qū)。
2.3 CAN協(xié)議引擎
CAN協(xié)議引擎是MCP2510的核心,它由多個功能塊組成,包括位定時邏輯、發(fā)送邏輯、錯誤計(jì)數(shù)器、CRC計(jì)算等。其中,協(xié)議有限狀態(tài)機(jī)(FSM)是引擎的核心,它按位處理消息,控制消息的收發(fā)、錯誤檢測和處理等操作。
三、CAN消息幀
3.1 標(biāo)準(zhǔn)數(shù)據(jù)幀
標(biāo)準(zhǔn)數(shù)據(jù)幀以起始幀(SOF)位開始,接著是仲裁字段(11位標(biāo)識符和遠(yuǎn)程傳輸請求RTR位)、控制字段(6位,包括標(biāo)識符擴(kuò)展IDE位、保留位和數(shù)據(jù)長度代碼DLC)、數(shù)據(jù)字段(0 - 8字節(jié))、CRC字段和確認(rèn)字段。
3.2 擴(kuò)展數(shù)據(jù)幀
擴(kuò)展數(shù)據(jù)幀的仲裁字段包含32位,包括11位基本標(biāo)識符、替代遠(yuǎn)程請求SRR位、標(biāo)識符擴(kuò)展IDE位和18位擴(kuò)展標(biāo)識符。其他部分與標(biāo)準(zhǔn)數(shù)據(jù)幀類似。
3.3 遠(yuǎn)程幀
遠(yuǎn)程幀用于請求數(shù)據(jù),與數(shù)據(jù)幀的區(qū)別在于RTR位為隱性狀態(tài),且沒有數(shù)據(jù)字段。當(dāng)數(shù)據(jù)幀和遠(yuǎn)程幀具有相同標(biāo)識符時,數(shù)據(jù)幀在仲裁中獲勝。
3.4 錯誤幀
當(dāng)節(jié)點(diǎn)檢測到總線錯誤時,會生成錯誤幀。錯誤幀由錯誤標(biāo)志字段和錯誤分隔符字段組成,根據(jù)節(jié)點(diǎn)的錯誤狀態(tài),錯誤標(biāo)志字段可以是有源錯誤標(biāo)志(由六個連續(xù)的顯性位組成)或無源錯誤標(biāo)志(由六個連續(xù)的隱性位組成)。
3.5 過載幀
過載幀用于延遲下一個消息的開始,它只能在幀間空間生成,格式與有源錯誤幀相同。
3.6 幀間空間
幀間空間用于分隔前一個幀和后續(xù)的數(shù)據(jù)或遠(yuǎn)程幀,由至少三個隱性位組成,為節(jié)點(diǎn)提供內(nèi)部處理時間。
四、消息收發(fā)
4.1 消息發(fā)送
MCP2510通過三個發(fā)送緩沖區(qū)實(shí)現(xiàn)消息發(fā)送。發(fā)送前,MCU需要將消息加載到相應(yīng)的發(fā)送緩沖區(qū),并設(shè)置控制寄存器。發(fā)送優(yōu)先級可通過TXBNCTRL.TXP<1:0>位設(shè)置,有四個優(yōu)先級級別。消息發(fā)送通過設(shè)置TXBNCTRL.TXREQ位啟動,可通過SPI接口或TXnRTS引腳操作。發(fā)送完成后,TXBNCTRL.TXREQ位將被清除,CANINTF.TXNIF位將被設(shè)置。
4.2 消息接收
MCP2510有兩個接收緩沖區(qū),RXB0優(yōu)先級較高,有兩個驗(yàn)收濾波器;RXB1優(yōu)先級較低,有四個驗(yàn)收濾波器。消息接收時,首先在消息組裝緩沖區(qū)(MAB)中組裝,只有符合驗(yàn)收濾波器標(biāo)準(zhǔn)的消息才會被轉(zhuǎn)移到接收緩沖區(qū)。當(dāng)消息被轉(zhuǎn)移到接收緩沖區(qū)時,CANINTF.RXNIF位將被設(shè)置,MCU處理完消息后需要清除該位,以允許新消息的接收。
五、位定時
CAN總線所有節(jié)點(diǎn)必須使用相同的標(biāo)稱比特率。MCP2510的位定時通過數(shù)字鎖相環(huán)(DPLL)實(shí)現(xiàn),將每個比特時間劃分為多個時間段,由時間量子(TQ)組成。位定時的配置包括同步段、傳播段、相位緩沖段和采樣點(diǎn)的設(shè)置,需要根據(jù)系統(tǒng)參數(shù)進(jìn)行合理調(diào)整。
5.1 時間量子
時間量子(TQ)是由振蕩器周期派生的固定時間單位,可通過可編程波特率預(yù)分頻器調(diào)整。不同節(jié)點(diǎn)的振蕩器頻率需要協(xié)調(diào),以確保系統(tǒng)范圍內(nèi)的標(biāo)稱比特時間一致。
5.2 同步段
同步段用于同步總線上的各個CAN節(jié)點(diǎn),輸入信號的邊沿應(yīng)在同步段內(nèi)出現(xiàn),持續(xù)時間為1 TQ。
5.3 傳播段
傳播段用于補(bǔ)償網(wǎng)絡(luò)中的物理延遲時間,包括總線信號傳播時間、節(jié)點(diǎn)內(nèi)部延遲時間等。其長度可通過CNF2寄存器的PRSEG<2:0>位編程設(shè)置。
5.4 相位緩沖段
相位緩沖段用于優(yōu)化接收比特的采樣點(diǎn)位置,可通過重新同步過程進(jìn)行調(diào)整。采樣點(diǎn)位于相位段1和相位段2之間。
5.5 采樣點(diǎn)
采樣點(diǎn)是讀取總線電平并確定接收比特值的時間點(diǎn),通常位于比特時間的60 - 70%位置。
5.6 同步規(guī)則
每個比特時間內(nèi)只允許一次同步,只有當(dāng)先前采樣點(diǎn)檢測到的值與邊沿后的總線值不同時,邊沿才用于同步,發(fā)送顯性位的節(jié)點(diǎn)不會因正相位誤差的隱性到顯性邊沿進(jìn)行重新同步。
六、錯誤檢測
CAN協(xié)議提供了復(fù)雜的錯誤檢測機(jī)制,MCP2510能夠檢測CRC錯誤、確認(rèn)錯誤、格式錯誤、位錯誤和填充錯誤等。檢測到的錯誤通過錯誤幀向其他節(jié)點(diǎn)公開,錯誤消息的傳輸將被中止并盡快重發(fā)。每個CAN節(jié)點(diǎn)根據(jù)內(nèi)部錯誤計(jì)數(shù)器的值處于“錯誤活動”、“錯誤無源”或“總線關(guān)閉”三種錯誤狀態(tài)之一。
6.1 錯誤計(jì)數(shù)器
MCP2510包含接收錯誤計(jì)數(shù)器(REC)和發(fā)送錯誤計(jì)數(shù)器(TEC),MCU可以讀取這兩個計(jì)數(shù)器的值。當(dāng)兩個計(jì)數(shù)器的值都低于128時,MCP2510處于錯誤活動狀態(tài);當(dāng)至少一個計(jì)數(shù)器的值等于或超過128時,處于錯誤無源狀態(tài);當(dāng)發(fā)送錯誤計(jì)數(shù)器的值等于或超過256時,進(jìn)入總線關(guān)閉狀態(tài)。
6.2 錯誤標(biāo)志寄存器
錯誤標(biāo)志寄存器(EFLG)用于指示各種錯誤狀態(tài),如接收緩沖區(qū)溢出、發(fā)送錯誤無源、接收錯誤無源、發(fā)送警告、接收警告和總線關(guān)閉等。
七、中斷
MCP2510提供了八個中斷源,通過CANINTE寄存器的各個中斷使能位進(jìn)行控制,CANINTF寄存器包含相應(yīng)的中斷標(biāo)志位。當(dāng)發(fā)生中斷時,INT引腳將被拉低,直到MCU清除中斷。中斷源內(nèi)部有優(yōu)先級之分,CANSTAT.ICOD位反映當(dāng)前最高優(yōu)先級的中斷代碼。
7.1 發(fā)送中斷
當(dāng)發(fā)送緩沖區(qū)為空并準(zhǔn)備好加載新消息時,若CANINTE.TXNIE位使能,將產(chǎn)生發(fā)送中斷。
7.2 接收中斷
當(dāng)消息成功接收到接收緩沖區(qū)時,若CANINTE.RXNIE位使能,將產(chǎn)生接收中斷。
7.3 消息錯誤中斷
當(dāng)消息收發(fā)過程中發(fā)生錯誤時,若CANINTE.MERRE位使能,將產(chǎn)生消息錯誤中斷。
7.4 總線活動喚醒中斷
當(dāng)MCP2510處于睡眠模式且CANINTE.WAKIE位使能時,檢測到總線活動將產(chǎn)生喚醒中斷。
7.5 錯誤中斷
當(dāng)發(fā)生溢出條件或發(fā)送器、接收器的錯誤狀態(tài)發(fā)生變化時,若CANINTE.ERRIE位使能,將產(chǎn)生錯誤中斷。
八、振蕩器
MCP2510可使用晶體或陶瓷諧振器連接到OSC1和OSC2引腳,也可由外部時鐘源驅(qū)動。振蕩器啟動定時器(OST)確保振蕩器穩(wěn)定后,內(nèi)部狀態(tài)機(jī)才開始工作。CLKOUT引腳提供時鐘輸出,可通過CANCNTRL寄存器設(shè)置預(yù)分頻器。
九、工作模式
MCP2510有五種工作模式:配置模式、正常模式、睡眠模式、監(jiān)聽模式和回環(huán)模式。通過CANCTRL.REQOP位設(shè)置工作模式,CANSTAT.OPMODE位指示當(dāng)前工作模式。
9.1 配置模式
配置模式用于初始化MCP2510,進(jìn)入該模式時所有錯誤計(jì)數(shù)器將被清除。只有在配置模式下,才能修改某些寄存器,如CNF1、CNF2、CNF3、TXRTSCTRL、驗(yàn)收濾波器寄存器和驗(yàn)收掩碼寄存器。
9.2 睡眠模式
睡眠模式用于降低設(shè)備的電流消耗,SPI接口在睡眠模式下仍可訪問所有寄存器。進(jìn)入睡眠模式時,內(nèi)部振蕩器停止工作,可通過總線活動或設(shè)置CANINTF.WAKIF位喚醒。
9.3 監(jiān)聽模式
監(jiān)聽模式用于接收所有消息,包括錯誤消息,可用于總線監(jiān)控或自動波特率檢測。該模式下不發(fā)送消息,錯誤計(jì)數(shù)器被重置和停用。
9.4 回環(huán)模式
回環(huán)模式允許內(nèi)部消息從發(fā)送緩沖區(qū)傳輸?shù)浇邮站彌_區(qū),不實(shí)際在CAN總線上傳輸,可用于系統(tǒng)開發(fā)和測試。
9.5 正常模式
正常模式是MCP2510的標(biāo)準(zhǔn)工作模式,設(shè)備積極監(jiān)控總線上的所有消息,并生成確認(rèn)位、錯誤幀等。
十、寄存器映射
MCP2510的寄存器映射經(jīng)過優(yōu)化,便于順序讀寫數(shù)據(jù)。部分控制和狀態(tài)寄存器可使用SPI位修改命令進(jìn)行單個位的修改。寄存器的配置和操作是實(shí)現(xiàn)MCP2510各項(xiàng)功能的關(guān)鍵,需要仔細(xì)理解和掌握。
十一、SPI接口
MCP2510通過SPI接口與MCU通信,支持多種指令,如讀取指令、寫入指令、請求發(fā)送(RTS)指令、讀取狀態(tài)指令和位修改指令。每個指令都有特定的操作流程和時序要求,需要根據(jù)實(shí)際應(yīng)用進(jìn)行正確配置。
11.1 讀取指令
通過降低CS引腳啟動讀取指令,發(fā)送讀取指令和8位地址后,所選地址寄存器的數(shù)據(jù)將在SO引腳輸出,內(nèi)部地址指針自動遞增。
11.2 寫入指令
通過降低CS引腳啟動寫入指令,發(fā)送寫入指令、地址和至少一個字節(jié)的數(shù)據(jù)。數(shù)據(jù)在SCK線的DO位上升沿寫入寄存器。
11.3 請求發(fā)送(RTS)指令
用于啟動一個或多個發(fā)送緩沖區(qū)的消息發(fā)送,通過設(shè)置RTS命令的最后3位指示啟用的發(fā)送緩沖區(qū)。
11.4 讀取狀態(tài)指令
允許單指令訪問一些常用的消息收發(fā)狀態(tài)位。
11.5 位修改指令
用于設(shè)置或清除特定狀態(tài)和控制寄存器中的單個位。
十二、電氣特性
MCP2510的電氣特性包括絕對最大額定值、直流特性、振蕩器定時特性、CAN接口交流特性、CLKOUT引腳特性和SPI接口交流特性等。在設(shè)計(jì)應(yīng)用電路時,需要根據(jù)這些特性合理選擇電源、輸入輸出信號電平、時鐘頻率等參數(shù),以確保設(shè)備的正常工作。
十三、封裝信息
MCP2510提供18引腳PDIP/SOIC和20引腳TSSOP封裝,每種封裝都有詳細(xì)的尺寸和引腳定義。在進(jìn)行PCB設(shè)計(jì)時,需要根據(jù)封裝信息進(jìn)行合理布局和布線。
總結(jié)
MCP2510獨(dú)立CAN控制器憑借其豐富的功能、靈活的配置和出色的性能,為電子工程師提供了一個強(qiáng)大的CAN總線解決方案。在實(shí)際應(yīng)用中,我們需要根據(jù)具體需求合理配置MCP2510的各項(xiàng)參數(shù),掌握其工作原理和操作方法,以實(shí)現(xiàn)可靠的CAN通信。希望通過今天的剖析,能幫助大家更好地理解和應(yīng)用MCP2510。如果你在使用過程中有任何問題或經(jīng)驗(yàn),歡迎在評論區(qū)分享交流。
-
CAN通信
+關(guān)注
關(guān)注
5文章
105瀏覽量
18886 -
CAN控制器
+關(guān)注
關(guān)注
3文章
80瀏覽量
15643 -
MCP2510
+關(guān)注
關(guān)注
0文章
7瀏覽量
8929
發(fā)布評論請先 登錄
采用CH375和MCP2510設(shè)計(jì)CAN-USB接口卡
如何將MCP2510芯片與FPGA接口?
MCP2510在智能節(jié)點(diǎn)中的應(yīng)用實(shí)例有哪些?
CAN控制器MCP2510及其應(yīng)用
基于LPC2148和MCP2510的高速USB-CAN卡
MCP2510使用范例程序及線路
從MCP2510升級至MCP2515后的區(qū)別比較詳細(xì)資料概述
由單片機(jī)和CAN控制器MCP2510實(shí)現(xiàn)CAN總線系統(tǒng)智能節(jié)點(diǎn)的設(shè)計(jì)
采用單片機(jī)和MCP2510、MCP2551芯片設(shè)計(jì)集散型火災(zāi)報警控制系統(tǒng)
基于MCP2510 CAN控制器實(shí)現(xiàn)CAN總線系統(tǒng)智能節(jié)點(diǎn)的設(shè)計(jì)
MCP2510:獨(dú)立CAN控制器的技術(shù)剖析與應(yīng)用指南
評論