
前言
智能CAN收發器除了具備基本的物理層通信功能外,還會集成SPI通信接口、喚醒控制器、報文過濾器及狀態管理模塊,甚至還可以通過軟件配置實現選擇性喚醒功能。
選擇性喚醒功能的核心思想是在ECU進入休眠狀態前,將指定的CAN標識符(Identifier)、數據長度(DLC)及數據掩碼等參數寫入CAN收發器內部寄存器。當總線上出現CAN報文時,芯片首先對報文進行解析,并根據預設規則進行比較,僅當報文滿足設定條件時才觸發喚醒事件,否則繼續保持休眠狀態。相比傳統收發器,該技術能夠顯著減少ECU誤喚醒次數,從而降低整車靜態功耗。
此外,智能CAN收發器支持本地喚醒(Local Wake-up)和遠程網絡喚醒(Remote Wake-up)兩種工作方式。前者可通過WAKE引腳響應按鍵、點火開關等外部信號;后者則利用CAN總線上的特定喚醒報文恢復MCU工作狀態,具有響應速度快、可靠性高等特點,因此被廣泛應用于新能源汽車、車身控制模塊(BCM)、車門控制器、空調控制器及電池管理系統等低功耗場景。
01
CAN驅動的工作原理
CAN通信主要是用于數據傳輸,多主控制,錯誤檢測與恢復,信號優先級的等。典型的架構圖如下:

CAN具有通信可靠、實時性高、抗電磁干擾能力強等特點,廣泛應用于汽車電子控制系統。隨著汽車電子技術的發展,一輛汽車內部通常包含數十個電子控制單元(Electronic Control Unit,ECU),這些ECU之間通過CAN總線實現數據交互,包括發動機控制、車身控制、動力電池管理、智能駕駛以及車載娛樂系統等。
典型CAN網絡主要由MCU、CAN控制器、CAN收發器和CAN總線組成。其中,MCU負責業務邏輯處理;CAN控制器完成CAN協議的數據鏈路層功能,包括報文仲裁、錯誤檢測和幀格式處理;CAN收發器負責實現控制器與物理總線之間的電平轉換和信號驅動;CANH和CANL構成差分通信線路,提高系統的抗干擾能力。
隨著新能源汽車的發展,車輛在駐車狀態下要求極低的靜態功耗。傳統CAN收發器在待機模式下無法有效區分普通報文和喚醒報文,容易導致整個CAN網絡頻繁喚醒,增加整車靜態電流。因此,支持Partial Networking(局部網絡)和選擇性喚醒(選擇性喚醒)的智能CAN收發器逐漸成為主流方案,CAN收發器就是其中具有代表性的產品。
02
CAN收發器簡介
智能CAN收發器支持Classic CAN和CAN FD通信,并具有選擇性喚醒功能。相比傳統CAN收發器,CAN收發器內部集成了SPI配置接口、喚醒控制器、報文過濾器以及狀態管理單元,可根據預先配置的CANID、DLC和數據內容,僅響應滿足條件的喚醒報文,從而避免無效喚醒。
CAN收發器廣泛應用于車身控制模塊(BCM)、車門控制器、空調控制器、座椅控制器以及電池管理系統等需要長期待機且對功耗要求較高的汽車電子系統。
芯片具有以下主要特點:
(1) 支持高速CAN通信,兼容Classic CAN和CAN FD協議;
(2) 支持局部網絡(Partial Networking)和選擇性喚醒(選擇性喚醒);
(3) 集成SPI接口,可通過MCU動態配置工作模式及喚醒參數;
(4) 具有Normal、Standby、Sleep和Off等多種工作模式;
(5) 支持本地喚醒和遠程網絡喚醒;
(6) 具有欠壓保護、過溫保護以及總線故障診斷功能。
因此,CAN收發器不僅完成CAN物理層通信,還承擔了ECU低功耗管理的重要任務。
2.1 CAN收發器硬件組成
CAN收發器內部主要由CAN收發器、SPI控制模塊、模式控制器、喚醒控制器、CAN報文過濾器以及狀態寄存器組成,其內部結構如圖2-1所示。

圖2-1 CAN收發器內部結構框圖
其中,SPI接口負責配置芯片工作狀態;CAN Filter模塊負責識別是否為有效喚醒報文;Wake-up Controller負責管理休眠與喚醒邏輯;CAN Transceiver完成CAN物理層數據發送和接收。
2.2 工作模式分析
CAN收發器支持多種工作模式,不同模式下功耗和功能存在明顯差異。不同模式之間的切換關系如圖2-2所示。

圖2-2 某CAN收發器系統控制器狀態機
(1) Normal Mode
Normal模式為正常通信模式,此時CAN收發器處于工作狀態,MCU可以正常收發CAN報文,SPI接口可訪問全部寄存器,適用于車輛運行階段。
(2) Standby Mode
Standby模式下CAN總線仍保持監聽狀態,但MCU可進入低功耗運行模式。芯片持續檢測總線活動,并可響應網絡喚醒請求,其功耗低于Normal模式。
(3) Sleep Mode
Sleep模式是整車停車后的主要工作模式。此時CAN發送器關閉,僅保留喚醒檢測電路和必要的監測模塊,芯片電流降至幾十微安,大幅降低整車靜態功耗。芯片繼續監測符合條件的CAN報文以及WAKE引腳狀態。CAN收發器進入休眠模式的條件是當收到至少任意一個喚醒事件處于啟用狀態時,會進入休眠模式。若沒有滿足任一喚醒條件,CAN收發器會自動切換至Standy Mode。
(4) Off Mode
Off模式為最低功耗模式,僅保留極少數功能,通常用于整車斷電或特殊維護場景。當整車進入休眠模式時,電池電壓過低無法為芯片供電時,THA1145會從任何模式切換進入關斷模式。
在這些模式中,我們通常使用狀態機的方式進行不同模式之間的切換,為了保證每個模式的實時性和可操作性,通常使用SPI的異步通信方式來對這些模式進行切換。具體的代碼和狀態機形式如下所示:


圖2-3 狀態機
2.3 選擇性喚醒功能工作原理
選擇性喚醒是智能CAN收發器區別于傳統的CAN收發器的重要特性。傳統CAN收發器檢測到任意CAN報文都會喚醒MCU,導致整車所有ECU同時進入工作狀態,增加功耗。而智能CAN收發器可在進入Sleep模式前,通過SPI配置目標CAN Identifier(ID)、數據長度(DLC)及數據掩碼(Data Mask)。進入休眠后,芯片持續監聽CAN總線,當檢測到報文時,首先進行協議解析,再與預設條件進行比較,僅當報文完全匹配時,才產生Wake-up事件。其工作流程如下:

圖2-4 Wake工作流程
03
CAN收發器休眠
與喚醒寄存器配置
3.1 Sleep模式配置
主狀態寄存器中的狀態位FSMS(表6)用于指示進入睡眠模式的方式:是通過SPI命令選擇進入(FSMS = 0),還是由于VCC或VIO電壓過低事件強制進入(FSMS = 1)。當CAN收發器從睡眠模式喚醒后,可讀取該位。若因欠壓事件導致進入睡眠模式(FSMS = 1),則可根據此信息重新調整CWE、WPFE、WPRE和CPNC的設置。
車輛熄火后,ECU需要進入低功耗狀態。智能CAN收發器通過SPI命令進入Sleep模式,其工作模式由Mode Control Register(地址0x01)中的MC位控制:
MC = 111:Normal Mode
MC = 100:Standby Mode
MC = 001:Sleep Mode
進入Sleep模式前,需要滿足以下條件:
1.CAN發送緩存為空;
2.無待處理SPI命令;
3.至少開啟一種喚醒源(CAN總線或WAKE引腳);
4.清除所有待處理喚醒事件。
若未滿足上述條件,CAN收發器將保持Standby模式而不會進入Sleep模式,以避免系統無法被喚醒。Sleep模式下,CAN發送功能關閉,僅保留總線監聽和喚醒檢測功能,從而有效降低系統功耗。

圖3-2 Sleep工作流程
3.2 選擇性喚醒配置
選擇性喚醒是智能CAN收發器最重要的功能,也是實現局部網絡(PN)的核心。
傳統的CAN收發器只要檢測到總線活動即喚醒MCU,而CAN收發器能夠根據預先配置的CAN報文特征進行判斷,包括:
1.CAN Identifier(ID) 2.IDE位 3.DLC長度 4.數據內容 5.Data Mask掩碼.只有當收到的CAN報文與配置完全匹配時,芯片才產生Wake-up事件。

圖3-3 Sleep選擇性喚醒流程
對于CANID配置的可以參考手冊,當CMC為01或10時,選擇主動模式。當CMC為01時,啟用VCC欠壓檢測,當VCC電壓下降至90%閾值以下時,收發器將切換至CAN離線或CAN離線偏置模式。當CMC為10時,禁用VCC欠壓檢測,發射端將保持激活狀態,直到VCC欠壓事件強制CAN收發器進入睡眠模式,此時收發器將切換至CAN離線或CAN離線偏置模式。對于收發器的事件狀態寄存器為0x63H,對于MASK的配置可以為0xFF,即CW=1,CF=1,CBS=1,PNFDE=1。

圖3-4 Sleep收發器寄存器
CAN控制器的配置寄存器地址是0x20,可以設置CAN控制器的數據,根據選擇的MASK數據進行配置,CPNC=1,PNCOK=1,則根據寄存器的地址和Byte設置為0x32.

圖3-5 Sleep CAN控制器寄存器
CAN的波特率設置為500Kbits/s,則我們的寄存器地址26H,具體的MASK數據為0x05.該寄存器的bit位在2:0,選擇101數據轉換為16進制位0x05。

圖3-6 Sleep CAN波特率寄存器
設定我們的CAN為標準幀,設定的CANID可以選擇410~520作為喚醒CANID,則選擇的CANID的寄存器地址可以為0x29,0x2A。0x29的標準幀bit7~bit2在bit5~bit0,0x2A的標準幀bit10~bit6在bit0~bit4。0x410對應的二進制數據為0100 0001 0000。則0x29為01 0000的MASK數據0x40,0x2A的MASK數據為0x10。
則410的配置為:
寄存器:0x29,MASK:0x40;寄存器:0x2A,MASK:0x10;
520的配置為:
寄存器:0x29,MASK:0x80;寄存器:0x2A,MASK:0x14;
DLC的長度的MASK設為0x08,寄存器地址為0x2FH。
3.3 網絡與本地喚醒配置
通過配置WAKE Pin Event Capture Enable寄存器,可選擇檢測WAKE引腳的上升沿(WPRE)或下降沿(WPFE),任一使能后均可觸發本地喚醒事件。
喚醒引腳事件捕獲使能寄存器的地址為0x4Ch,假設我們上升沿為喚醒事件,則MASK為0x01;當所有的事件執行完后需要進行清零,則MASK有0x60~0x64,數據全文0。
MCU收到INTN中斷后,需要首先讀取事件狀態寄存器(Event Status Register),判斷喚醒來源,隨后重新初始化FlexCAN控制器,并恢復應用層通信。

圖3-7 網絡喚醒流程

圖3-8 本地喚醒流程
04
軟件設計與實驗驗證
應用程序負責車輛控制邏輯,當車輛進入駐車狀態時,通過ComM請求CAN網絡進入No Communication模式,CanSM控制FlexCAN控制器停止通信,隨后SPI驅動配置智能CAN收發器進入Sleep模式。當CAN總線上出現符合選擇性喚醒條件的報文時,智能CAN收發器產生中斷信號,MCU恢復運行并重新初始化CAN控制器,實現網絡通信恢復。

圖4-1 軟件初始化流程
4.1 智能CAN收發器軟件配置
智能CAN收發器通過SPI接口完成寄存器配置。軟件初始化過程中主要完成以下幾項配置:
(1) 設置芯片工作模式;
(2) 配置CAN控制參數;
(3) 配置選擇性喚醒參數;
(4) 使能中斷;
(5) 配置本地喚醒。
主要配置寄存器如下。
表4-1 CAN收發器主要配置寄存器

其中,Mode Control Register用于控制Normal、Standby及Sleep等工作模式;Identification Register與Mask Register共同決定選擇性喚醒的過濾規則。
使用模塊和CANOE進行測試,當模塊休眠后發送對應的喚醒幀,數據可全為0,模塊能夠喚醒。
05
總 結
本文圍繞智能CAN收發器的休眠與喚醒配置展開研究,以NXP S32K314微控制器為硬件平臺,對CAN通信、低功耗管理及選擇性喚醒技術進行了系統分析,并結合AUTOSAR軟件架構完成了軟件設計與實驗驗證。
首先,本文介紹了CAN總線的發展背景及汽車電子系統對低功耗通信的需求,分析了傳統CAN收發器在休眠狀態下容易發生誤喚醒的問題,指出支持局部網絡和選擇性喚醒功能的智能CAN收發器是降低整車靜態功耗的重要解決方案。
其次,對CAN收發器的硬件結構、工作原理及主要功能進行了詳細分析,介紹了芯片內部SPI通信接口、CAN物理層收發模塊、模式控制模塊、喚醒控制模塊及報文過濾模塊的組成,重點闡述了Normal、Standby、Sleep等工作模式及其狀態切換過程,并結合ISO 11898-6標準分析了選擇性喚醒技術的實現機制。
隨后,以S32K314平臺為例,設計并實現了CAN收發器的休眠與喚醒軟件流程。論文詳細介紹了SPI驅動初始化、FlexCAN控制器配置、CAN收發器寄存器配置、Sleep模式進入流程、選擇性喚醒參數設置、本地喚醒及網絡喚醒處理流程,并結合AUTOSAR經典平臺中的ComM、CanSM、CanIf等模塊,實現了ECU通信狀態的切換和網絡管理功能。