MCP2502X/5X:CAN I/O 擴(kuò)展器的詳細(xì)解析
在嵌入式系統(tǒng)的設(shè)計(jì)中,CAN(Controller Area Network)總線因其高可靠性、實(shí)時(shí)性和廣泛的應(yīng)用場(chǎng)景,成為了眾多工程師的首選通信協(xié)議。而 Microchip 推出的 MCP2502X/5X 系列 CAN I/O 擴(kuò)展器,為構(gòu)建簡(jiǎn)單且高效的 CAN 節(jié)點(diǎn)提供了強(qiáng)大的支持。不過需要注意的是,該產(chǎn)品目前已不推薦用于新設(shè)計(jì),可考慮使用 MCP2515 或 MCP25625 替代。下面,我將結(jié)合自身經(jīng)驗(yàn),對(duì)這款擴(kuò)展器進(jìn)行詳細(xì)剖析。
文件下載:MCP25025T-I SL.pdf
產(chǎn)品概述
MCP2502X/5X 系列產(chǎn)品主要包括 MCP25020、MCP25025、MCP25050 和 MCP25055 等型號(hào)。這些器件能夠作為控制器局域網(wǎng)(CAN)系統(tǒng)的 I/O 擴(kuò)展器,支持 CAN v2.0B 協(xié)議,其總線速率最高可達(dá) 1 Mb/s。它的一大亮點(diǎn)在于,無需微控制器即可實(shí)現(xiàn)簡(jiǎn)單的 CAN 節(jié)點(diǎn),這大大簡(jiǎn)化了系統(tǒng)設(shè)計(jì)。不同型號(hào)間僅有一處差異,即 MCP25025 和 MCP25055 支持一線數(shù)字 CAN 總線,而 MCP25020 和 MCP25050 則不支持。
產(chǎn)品特性與優(yōu)勢(shì)
功能特性
- CAN 協(xié)議實(shí)現(xiàn):全面實(shí)現(xiàn) CAN V2.0B 協(xié)議,可編程比特率高達(dá) 1 Mb/s。具備一個(gè)可編程掩碼、兩個(gè)可編程過濾器和三個(gè)自動(dòng)傳輸緩沖區(qū),能夠有效過濾和處理 CAN 消息。同時(shí),兩個(gè)消息接收緩沖區(qū)可確保消息的穩(wěn)定接收,且無需同步或配置消息,提升了系統(tǒng)的易用性。
- 硬件特性:采用非易失性存儲(chǔ)器進(jìn)行用戶配置,上電時(shí)可自動(dòng)加載,方便快捷。擁有八個(gè)通用 I/O 線,可單獨(dú)選擇作為輸入或輸出,還能針對(duì)每個(gè)輸入單獨(dú)選擇引腳變化時(shí)的自動(dòng)傳輸功能。此外,MCP2505X 器件還具備四個(gè) 10 位模擬輸入通道,可通過可編程轉(zhuǎn)換時(shí)鐘和 VREF 源進(jìn)行靈活配置。該系列產(chǎn)品還支持消息調(diào)度功能和兩個(gè) 10 位 PWM 輸出,其頻率可獨(dú)立編程。通過 CAN 總線消息即可修改設(shè)備配置,并且支持在線串行編程(ICSP?)默認(rèn)配置存儲(chǔ)器,還可選擇一線 CAN 總線操作。
- 低功耗特性:基于低功耗 CMOS 技術(shù),工作電壓范圍為 2.7V 至 5.5V,典型工作電流僅為 10 mA,在 CAN 睡眠模式下待機(jī)電流僅 30 μA,能有效降低系統(tǒng)功耗。
- 封裝與溫度范圍:提供 14 引腳 PDIP(300 mil)和 SOIC(150 mil)封裝,可滿足不同的應(yīng)用需求。溫度范圍支持工業(yè)級(jí)(-40°C 至 +85°C)和擴(kuò)展級(jí)(-40°C 至 +125°C),具備良好的環(huán)境適應(yīng)性。
實(shí)際應(yīng)用優(yōu)勢(shì)
在實(shí)際應(yīng)用中,MCP2502X/5X 的這些特性帶來了諸多優(yōu)勢(shì)。例如,在汽車電子系統(tǒng)中,其低功耗特性有助于降低整體能耗,延長(zhǎng)電池使用壽命;豐富的 I/O 接口和模擬輸入通道可方便地連接各種傳感器和執(zhí)行器,實(shí)現(xiàn)對(duì)車輛狀態(tài)的實(shí)時(shí)監(jiān)測(cè)和精確控制。而在工業(yè)自動(dòng)化領(lǐng)域,消息調(diào)度功能和自動(dòng)傳輸功能能夠確保數(shù)據(jù)的及時(shí)準(zhǔn)確傳輸,提高系統(tǒng)的響應(yīng)速度和可靠性。
CAN 模塊詳解
核心組成與功能
CAN 模塊作為協(xié)議控制器,負(fù)責(zé)在原始數(shù)字?jǐn)?shù)據(jù)和 CAN 消息包之間進(jìn)行轉(zhuǎn)換。其主要功能模塊包括 CAN 協(xié)議引擎、緩沖區(qū)、掩碼和過濾器。
- 協(xié)議引擎:核心為有限狀態(tài)機(jī)(FSM),它按位處理消息,根據(jù)不同幀類型的字段進(jìn)行狀態(tài)切換,控制 TX/RX 移位寄存器、CRC 寄存器與總線之間的數(shù)據(jù)傳輸,同時(shí)管理錯(cuò)誤處理邏輯,確保消息的接收、仲裁、傳輸和錯(cuò)誤信號(hào)處理都嚴(yán)格遵循 CAN 協(xié)議,并能自動(dòng)處理總線消息的重傳。
- CRC 校驗(yàn):CRC 寄存器用于生成 CRC 碼,在控制字段或數(shù)據(jù)字段之后傳輸,用于對(duì)接收消息的 CRC 字段進(jìn)行校驗(yàn),保證數(shù)據(jù)傳輸?shù)臏?zhǔn)確性。
- 錯(cuò)誤管理邏輯:通過接收錯(cuò)誤計(jì)數(shù)器(REC)和傳輸錯(cuò)誤計(jì)數(shù)器(TEC)對(duì) CAN 設(shè)備的故障進(jìn)行監(jiān)控和處理。根據(jù)計(jì)數(shù)器的值,設(shè)備可進(jìn)入錯(cuò)誤激活、錯(cuò)誤被動(dòng)或總線關(guān)閉狀態(tài)。當(dāng)設(shè)備進(jìn)入總線關(guān)閉狀態(tài)后,需接收到包含 128 個(gè)連續(xù)隱性位的總線關(guān)閉恢復(fù)序列才能恢復(fù)正常,恢復(fù)后若總線空閑 128 x 11 位,設(shè)備將自動(dòng)從錯(cuò)誤激活狀態(tài)恢復(fù)。通過讀取 EFLG 寄存器,可確定設(shè)備當(dāng)前的錯(cuò)誤模式(除總線關(guān)閉外)。
- 位定時(shí)邏輯:通過編程 TQ 長(zhǎng)度和各時(shí)間段內(nèi)的 TQ 數(shù)量來計(jì)算標(biāo)稱位時(shí)間。該邏輯監(jiān)測(cè)總線輸入,根據(jù) CAN 協(xié)議處理總線相關(guān)的位定時(shí)。在幀起始時(shí)進(jìn)行硬同步,后續(xù)在隱性到顯性的總線轉(zhuǎn)換時(shí)進(jìn)行重新同步,并提供可編程的時(shí)間段以補(bǔ)償傳播延遲和相位偏移,同時(shí)確定采樣點(diǎn)的位置。
位定時(shí)邏輯關(guān)鍵參數(shù)
- 時(shí)間量子(TQ):TQ 是基于振蕩器周期的固定時(shí)間單位,通過可編程波特率預(yù)分頻器(BRP)和固定的二分頻生成。其計(jì)算公式為 (T{Q}=2 * T{OSC} * (BRP + 1)),標(biāo)稱位時(shí)間可在 8 TQ 至 25 TQ 之間可編程,最小標(biāo)稱位時(shí)間為 1 μs,對(duì)應(yīng) 1 Mbps 的速率。
- 時(shí)間段:標(biāo)稱位時(shí)間由同步段(SyncSeg)、傳播段(PropSeg)、相位緩沖段 1(PS1)和相位緩沖段 2(PS2)組成。編程時(shí)需遵循一定規(guī)則,如 (PropSeg + PS1 ≥ PS2)、(PS2 > 同步跳轉(zhuǎn)寬度(SJW))、(PS2 ≥ 信息處理時(shí)間(IPT))。同步段用于同步總線上的 CAN 節(jié)點(diǎn),固定為 1 TQ;傳播段用于補(bǔ)償網(wǎng)絡(luò)中的物理延遲,可在 1 TQ 至 8 TQ 之間編程;相位緩沖段用于優(yōu)化接收位的采樣點(diǎn)位置,PS1 和 PS2 可在 1 TQ 至 8 TQ 之間編程,但 PS2 實(shí)際最小長(zhǎng)度為 2 TQ。
- 采樣點(diǎn):采樣點(diǎn)位于 PS1 結(jié)束處,用于讀取總線電平并確定接收位的值。可選擇在采樣點(diǎn)對(duì)總線進(jìn)行多次采樣,通過多數(shù)表決確定接收位的值。
- 信息處理時(shí)間(IPT):IPT 從采樣點(diǎn)開始,用于計(jì)算后續(xù)位電平,CAN 規(guī)范規(guī)定其小于等于 2 TQ,MCP2502X/5X 中定義為 2 TQ,因此 PS2 長(zhǎng)度至少為 2 TQ。
- 同步跳轉(zhuǎn)寬度(SJW):用于補(bǔ)償系統(tǒng)中節(jié)點(diǎn)之間的相位偏移和振蕩器公差。當(dāng)檢測(cè)到傳輸數(shù)據(jù)中的隱性到顯性邊緣時(shí),根據(jù)邊緣位置與預(yù)期時(shí)間的比較,利用可編程的 SJW 調(diào)整 PS1 和 PS2 的值,以實(shí)現(xiàn)重新同步。SJW 可編程范圍為 1 TQ 至 4 TQ。
緩沖區(qū)、掩碼和過濾器
- 緩沖區(qū):三個(gè)傳輸緩沖區(qū)分別用于處理不同的傳輸消息 ID,兩個(gè)接收緩沖區(qū)用于存儲(chǔ) CAN 消息的仲裁字段、控制字段和數(shù)據(jù)字段,還有一個(gè)消息組裝緩沖區(qū)(MAB)輔助處理消息,確保在高負(fù)載情況下也能有效處理接收消息,減少接收緩沖區(qū)溢出的風(fēng)險(xiǎn)。
- 掩碼:用于定義 CAN ID 中哪些位需要與可編程過濾器進(jìn)行比較,掩碼中的“1”位表示對(duì)應(yīng) CAN ID 位需與過濾器位匹配,“0”位則表示該位不參與比較,可視為“無關(guān)位”。對(duì)于標(biāo)準(zhǔn) ID 和擴(kuò)展 ID 的消息,部分掩碼位有特殊配置規(guī)則。
- 過濾器:包含兩個(gè)獨(dú)立的接受過濾器(RXF0 和 RXF1),分別用于信息請(qǐng)求消息和輸入消息。每個(gè)過濾器的位與 CAN ID 對(duì)應(yīng),只有當(dāng) CAN ID 中與掩碼設(shè)置位對(duì)應(yīng)的位與過濾器位匹配時(shí),消息才會(huì)被接受,否則將被忽略。
設(shè)備操作流程
上電序列
MCP2502X/5X 在上電復(fù)位(POR)時(shí)會(huì)經(jīng)歷一系列操作,以確保正確加載配置并避免在總線上引入錯(cuò)誤。上電后,設(shè)備首先進(jìn)入配置模式,在此模式下禁止通過 CAN 接口發(fā)送或接收消息,ADC 和 PWM 外設(shè)也處于禁用狀態(tài)。隨后進(jìn)行自我配置,將 EPROM 陣列的內(nèi)容傳輸?shù)?SRAM 陣列,并比較數(shù)據(jù)的校驗(yàn)和以驗(yàn)證數(shù)據(jù)的有效性。自我配置完成后,設(shè)備進(jìn)入監(jiān)聽模式,等待檢測(cè)到無錯(cuò)誤的 CAN 消息,以確保設(shè)備與系統(tǒng)的總線速率一致。檢測(cè)到無錯(cuò)誤消息后,設(shè)備等待總線空閑,然后切換到正常模式,此時(shí)若 ADC 和 PWM 外設(shè)已啟用,則可正常工作。此外,MCP2505X 可通過用戶配置的控制位(OPTREG2.PUNRM)直接進(jìn)入正常模式,而無需先進(jìn)入監(jiān)聽模式。設(shè)備進(jìn)入正常模式后,會(huì)發(fā)送一次“On Bus”消息,通知網(wǎng)絡(luò)其存在,后續(xù)若啟用了定時(shí)傳輸功能,該消息將按 STCON 寄存器設(shè)定的頻率重復(fù)發(fā)送。
消息處理
- 消息類型:主要包括信息請(qǐng)求消息(IRMs)、輸出消息和輸入消息。IRMs 由 MCP2502X/5X 接收,可配置為遠(yuǎn)程傳輸請(qǐng)求(RTR)或數(shù)據(jù)幀消息;輸出消息是 MCP2502X/5X 對(duì) IRMs 的響應(yīng);輸入消息用于修改設(shè)備寄存器。IRMs 被接收至接收緩沖區(qū) 0,輸入消息則被接收至接收緩沖區(qū) 1。
- 信息請(qǐng)求消息處理:根據(jù) OPTREG2 寄存器中的 MTYPE 位,IRMs 可選擇 RTR 或數(shù)據(jù)幀消息類型。當(dāng)選擇 RTR 消息類型時(shí),系統(tǒng)中的節(jié)點(diǎn)需發(fā)送符合 MCP2502X/5X 掩碼/過濾器規(guī)則且 RTR 位設(shè)置為“1”的遠(yuǎn)程幀;當(dāng)選擇數(shù)據(jù)幀消息類型時(shí),節(jié)點(diǎn)發(fā)送的信息請(qǐng)求必須滿足掩碼/過濾器規(guī)則且 RTR 位清零,同時(shí)消息 ID 的第 3 位需設(shè)置為“1”。MCP2502X/5X 接收到請(qǐng)求后,根據(jù)消息的最低三位確定要執(zhí)行的功能,并根據(jù)預(yù)定義的數(shù)據(jù)長(zhǎng)度代碼(DLC)返回相應(yīng)的數(shù)據(jù)。
- 輸出消息處理:輸出消息是對(duì)信息請(qǐng)求消息的響應(yīng)。對(duì)于 RTR 消息的響應(yīng),輸出消息具有相同的標(biāo)識(shí)符和數(shù)據(jù)字節(jié)數(shù);對(duì)于數(shù)據(jù)幀消息的響應(yīng),輸出消息的標(biāo)識(shí)符的低三位與接收消息相同,標(biāo)準(zhǔn)標(biāo)識(shí)符的高七位或擴(kuò)展標(biāo)識(shí)符的高 25 位也相同,但第 3 位的值與信息請(qǐng)求消息相反。輸出消息的具體數(shù)據(jù)內(nèi)容根據(jù)不同的消息類型而定。
- 輸入消息處理:輸入消息用于修改預(yù)定義的寄存器組。消息需通過 MCP2502X/5X 的掩碼/過濾器處理,標(biāo)準(zhǔn)標(biāo)識(shí)符的低三位指示要寫入的寄存器,具體的寄存器值包含在數(shù)據(jù)字節(jié)中。若使用多個(gè)控制節(jié)點(diǎn),需對(duì)設(shè)備進(jìn)行相應(yīng)配置,以避免消息沖突。
- 動(dòng)態(tài)消息處理:該設(shè)備能夠有效處理不同總線負(fù)載條件下的收發(fā)消息。在消息接受/拒絕方面,符合掩碼/過濾器規(guī)則的消息將根據(jù)其類型進(jìn)行相應(yīng)處理;在接收多個(gè)消息時(shí),設(shè)備一次只能處理一條消息,若第二條消息在第一條消息處理完成前到達(dá),將可能導(dǎo)致消息丟失,但設(shè)備可通過配置 TXID1 發(fā)送接收溢出消息來通知網(wǎng)絡(luò);在發(fā)送消息優(yōu)先級(jí)方面,輸出消息優(yōu)先級(jí)最高,其次是 TXID2、TXID1 和 TXID0,當(dāng)多個(gè)消息等待發(fā)送時(shí),將按照優(yōu)先級(jí)順序發(fā)送。
其他模塊功能
GPIO 模塊
MCP2502X/5X 擁有八個(gè)通用 I/O 引腳(GP0 至 GP7),除 GP7 為輸入引腳外,其余引腳均可通過 GPDDR 寄存器單獨(dú)配置為輸入或輸出。所有引腳均具有 TTL 輸入電平和全 CMOS 輸出驅(qū)動(dòng)器,每個(gè)引腳還帶有一個(gè)弱上拉電阻,可通過 OPTREG.GPPU 位進(jìn)行統(tǒng)一控制。引腳具備多種復(fù)用功能,包括模擬輸入、模擬 VREF 輸入、PWM 輸出、時(shí)鐘輸出和外部復(fù)位等。此外,該模塊還支持?jǐn)?shù)字輸入邊緣檢測(cè)功能,通過 IOINTEN 和 IOINTPO 寄存器可對(duì)每個(gè)引腳進(jìn)行單獨(dú)配置,當(dāng)檢測(cè)到指定極性的邊緣時(shí),將自動(dòng)發(fā)送消息(TXID2)。若在睡眠模式下對(duì)應(yīng)的中斷使能位已設(shè)置,該功能還可喚醒設(shè)備。
PWM 模塊
該模塊包含兩個(gè)脈沖寬度調(diào)制(PWM)模塊(PWM1 和 PWM2),分別在 GP2 和 GP3 引腳產(chǎn)生高達(dá) 10 位分辨率的輸出信號(hào)。每個(gè)模塊都有獨(dú)立的使能控制、定時(shí)器、占空比和周期寄存器。PWM 輸出的頻率和占空比可通過編程進(jìn)行靈活調(diào)整,計(jì)算公式為 (PWM 周期 = [(PR{n}) + 1] * 4T{OSC} (TMRn 預(yù)分頻值)) 和 (PWM 占空比 = (PWMnTDC) T_{OSC} * TMRn(預(yù)分頻))。在設(shè)備上電時(shí),PWM 輸出默認(rèn)禁用,直到自我配置完成。若 CAN 總線通信中斷且 OPTREG2.PDEFEN 位啟用,PWM 輸出將恢復(fù)到默認(rèn)狀態(tài)。
模數(shù)轉(zhuǎn)換器(A/D)模塊
A/D 模塊為四通道、10 位逐次逼近型轉(zhuǎn)換器,可將模擬輸入信號(hào)轉(zhuǎn)換為 10 位數(shù)字值。四個(gè)通道通過 GP[3:0] 引腳復(fù)用,可通過 ADCON0 寄存器開啟或關(guān)閉轉(zhuǎn)換器,通過 ADCON1 寄存器單獨(dú)啟用每個(gè)通道,并可選擇內(nèi)部或外部的 VREF+ 和 VREF- 源。每個(gè)通道可選擇自動(dòng)轉(zhuǎn)換或按需轉(zhuǎn)換模式。在自動(dòng)轉(zhuǎn)換模式下,轉(zhuǎn)換速率由定時(shí)器和預(yù)分頻器決定;在按需轉(zhuǎn)換模式下,設(shè)備僅在接收到“Read A/D Registers”或“Read Register Receive”消息時(shí)進(jìn)行轉(zhuǎn)換。此外,該模塊還支持 A/D 閾值檢測(cè)功能,當(dāng)轉(zhuǎn)換結(jié)果超過或低于預(yù)設(shè)閾值時(shí),將自動(dòng)發(fā)送消息(TXID2)。
特殊功能與特性
振蕩器選擇
MCP2502X/5X 提供四種振蕩器模式供用戶選擇,通過編程 CONFIG 寄存器中的 (F{OSC}1: F{OSC}0) 位,可選擇低功耗晶體(LP)、晶體/諧振器(XT)、高速晶體諧振器(HS)或外部時(shí)鐘源模式。在未對(duì) CONFIG 寄存器進(jìn)行編程時(shí),設(shè)備默認(rèn)采用 HS 模式。
復(fù)位功能
設(shè)備具備上電復(fù)位(POR)和外部 RST 復(fù)位兩種復(fù)位方式。上電復(fù)位時(shí),當(dāng)檢測(cè)到 VDD 在 1.5V 至 2.1V 范圍內(nèi)上升,會(huì)在芯片內(nèi)生成復(fù)位脈沖。外部 RST 輸入可通過 GP7 引腳實(shí)現(xiàn),通過串聯(lián)電阻連接到 VDD 可省去外部 RC 組件。設(shè)備內(nèi)部還設(shè)有上電定時(shí)器(PWRT)和振蕩器啟動(dòng)定時(shí)器(OST),PWRT 提供約 72 ms 的固定延遲,確保 VDD 上升到可接受水平;OST 在 PWRT 延遲結(jié)束后提供 512 個(gè)振蕩器周期的延遲,保證晶體振蕩器穩(wěn)定啟動(dòng)。
睡眠模式
睡眠模式可通過 OPTREG2 寄存器中的 SLPEN 位啟用。當(dāng)設(shè)備在正常模式下檢測(cè)到 CAN 總線空閑時(shí)間達(dá)到至少 1408 位時(shí),將進(jìn)入睡眠模式。此外,若 PUSLP 位啟用,設(shè)備在加電后處于監(jiān)聽模式且 CAN 總線無活動(dòng)時(shí)也可進(jìn)入睡眠模式。在睡眠模式下,I/O 端口保持進(jìn)入睡眠前的狀態(tài),但 A/D 模塊數(shù)據(jù)轉(zhuǎn)換、自動(dòng)轉(zhuǎn)換模式、自動(dòng)消息發(fā)送、PWM 模塊和輸出以及時(shí)鐘輸出等功能將暫停。設(shè)備可通過外部復(fù)位輸入、GPIO 引腳的邊緣檢測(cè)或 CAN 總線活動(dòng)喚醒。
在線串行編程
MCP2502X/5X 支持在線串行編程,通過時(shí)鐘、數(shù)據(jù)、電源、地和編程電壓這五條線即可實(shí)現(xiàn)。在應(yīng)用電路中,可通過將 GP4 和 GP5 引腳拉低,同時(shí)將 GP7(VPP)引腳從 VIL 升高到 VIH,將設(shè)備置于編程/驗(yàn)證模式。在此模式下,GP4 作為編程數(shù)據(jù)輸入,GP5 作為編程時(shí)鐘輸入,二者均為施密特觸發(fā)輸入。
電氣特性與封裝信息
電氣特性
- 絕對(duì)最大額定值:該設(shè)備的工作環(huán)境溫度范圍為 -55°C 至 +125°C,存儲(chǔ)溫度范圍為 -65°C 至 +150°C。各引腳的電壓范圍、電源電壓、功耗、電流等參數(shù)均有明確的最大額定值,使用時(shí)需嚴(yán)格遵守,以避免對(duì)設(shè)備造成永久性損壞。
- DC 特性:包括電源電壓、電壓上升速率、輸入/輸出電壓、電流、電容等參數(shù),不同的振蕩器配置和工作模式下,這些參數(shù)會(huì)有所不同。例如,XT 和 LP 振蕩器配置下的電源電壓范圍為 2.7V 至 5.5V,而 HS 振蕩器配置下的電源電壓為 4.5V 至 5.5V。
- AC 特性:涉及時(shí)鐘輸入頻率、振蕩器頻率、周期、高/低時(shí)間、上升/下降時(shí)間、傳播延遲等參數(shù),不同的振蕩器模式(XT、
-
CAN協(xié)議
+關(guān)注
關(guān)注
1文章
42瀏覽量
13207
發(fā)布評(píng)論請(qǐng)先 登錄
基于MCP2502X的CAN總線節(jié)點(diǎn)設(shè)計(jì)
MCP23017/MCP23S17帶有串行接口的16位 I/O擴(kuò)展器相關(guān)資料.pdf
基于MCP2502X/5X下的CAN I/O 擴(kuò)展器
基于J1939協(xié)議和擴(kuò)展器件實(shí)現(xiàn)CAN擴(kuò)展節(jié)點(diǎn)的設(shè)計(jì)
MCP2502X/5X:CAN I/O 擴(kuò)展器的詳細(xì)解析
評(píng)論