一直關注我們靈動微課堂的朋友們,想必通過前面的介紹已經掌握了 FlexCAN 的基本使用方法,也能夠在自己的方案中運用自如了。今天小編想和大家借助 ZLG 的CAN Scope工具了解我們這顆 MCU 的 CAN 的特性,看看在汽車 ECU 應用上它是如何保證通訊的魯棒性。
在整車網絡調試中,各節點遵循 CAN 一致性測試是保證總線的穩定運行的重要前提, 當前CAN一致性測試已經電動汽車行業的必然趨勢!
據了解,應用到 CAN 的 ECU 在實際裝車之前都需要經歷一系列的一致性測試方能保證整車通訊的穩定,每家車廠除了遵循 ISO 標準,他們也都有自己的規約和檢測流程,但測試項目不外乎都包含在以下表中:
以上測試項中的被測內容,有些是屬于板級設計階段需要重點關注的,有些是與 MCU 本身功能和性能密切相關的,接下來我們分層剖析。
物理層一致性測試
該項測試主要針對各個節點 ECU 板級層面的電阻、電容特性,節點自身差分電阻以及總線終端電阻和CAN 通信物理電平做出充分評測,以驗證 CAN 節點與系統網絡在電路設計、物理電平等方面的性能。
1.1 終端電阻測試
在高速 CAN 通訊應用中,我們時常會看到信號出現反射、過沖、振鈴等異常的現象,根據電磁場和微波理論分析,高頻電路中負載阻抗需與傳輸線纜的特性阻抗一致,否則電信號在線束終端容易遭遇阻抗突變,發生反射現象,造成波形震蕩,這將造成信號串擾、總線紊亂以及消息丟失等諸多通訊故障。下圖為典型的信號振鈴波形圖:
所以在差分 CAN 網絡中,終端匹配電阻是必不可少的器件,它一般安裝在雙絞線纜的 2 端,依照總線的拓撲結構而準確定位,需選擇線束最遠距離的 2 個節點處。
終端電阻的作用:
1.加快放電,使總線快速進入隱性狀態,提高抗干擾能力。
2.消除阻抗不連續和不匹配,提高信號質量。
終端電阻的存在,一方面能提高總線抗干擾能力,讓高頻低能量的信號迅速泄放,一方面能確保總線快速進入隱性狀態,讓寄生電容的能量更快泄放,另一方面還能提高信號質量,降低了線纜上的反射能量。
終端電阻過小會造成信號幅值偏小,信號在采樣時無法辨別高低電平,導致整個網絡數據混亂,有時可以通訊,但極不穩定。
終端電阻過大會造成信號幅值偏大,驅動力過大,信號出現過沖現象,信號下降沿過緩,下降沿時間過長,嚴重的情況直接導致總線錯誤。
一般終端電阻的實際阻值選擇需要根據實測得到,因為它受任何一根線纜的特征阻抗(這里包括系統的容抗+感抗)所影響。
有個粗獷的測試手法:采用兩根汽車使用的典型線纜扭制成雙絞線,線纜的一端接方波發生器,另一端接可調電阻,并通過示波器觀察電阻上的波形,調整電阻阻值的大小,直到電阻上的信號是一個良好的無振鈴的方波,此時的電阻值可以認為與線纜的特征阻抗一致從而得到匹配電阻的阻值數據。另外也可以直接找到車上的通訊線纜用萬用表實測。終端電阻阻值和功率的選擇在 ISO 11898-2 標準里面也有定義,可以作為首選參考。
1.2 顯、隱性輸出電壓測試
CAN 總線設計規范對于 CAN 節點的輸出電壓有著嚴格的規定, 單個節點的輸出電壓如果不符合規范,則在現場組網后容易出現信號電平不可靠的情況,導致錯誤幀的出現,各節點間無法進行通信。
差分電壓值決定了 CAN 的顯、隱性位(顯性電平的差分電平為高,TTL 邏輯電平為低;隱性電平的差分電平為低,TTL 邏輯電平為高),而 CAN_H / CAN_L 電壓情況又由收發器芯片的質量決定。
在數據傳輸的空閑期間 CAN 總線差分電壓為 0v,CAN_H / CAN_L 對地電壓為 2.5v ,這個電壓標準也不是絕對的,但一般 CAN_H高于 2.5v,CAN_L 低于 2.5v,兩者加起來約為 5v 即算作正常。對于 CAN 信號電平有兩套不同標準做了界定, ISO 11898 高速 CAN 標準和 ISO11519-2 低速容錯 CAN 標準,如下表描述:
需要使用示波器多次測量 CAN 總線空閑時期以及通訊時期的顯性位的 CAN_H 和 CAN_L 電壓值,來分析電平情況是否滿足標準要求,同時也可檢測出收發器芯片是否存在故障,下圖為實際抓取的測試圖:
1.3 跳變沿時間測試
主要為測試 ECU 的差分電平在隱性電平到顯性電平、顯性電平到隱性電平變化的時間,需要在指定的波特率條件下進行測試,接線長度需小于1米,波特率為 250k 的情況下進行通信,且將差分電平的上升、下降時間的起始點定為電壓值的 20%~80% 的區間處,即從隱性到顯性狀態過渡的上升時間起始點為差分電壓的 20% 處,終止點為差分電壓的 80% 處;從顯性向隱性狀態過渡的下降時間起始點為差分電壓的 80% 處,終止點為差分電壓的 20% 處。
簡單測量時可以選用示波器直接抓取波形測試,但一般需要每個邊沿至少測量 1000 次,以確定邊緣上升/下降時間的最小值和最大值,數據才更為可靠,這就需要使用專業的 CAN 測試儀器了,比如 CAN Scope、PICO Scope 等等。跳變沿的時間需要遵循 GMW3122 信號邊沿標準:
MM32F0140 實測通信質量:
數據鏈路層一致性測試
該項測試覆蓋的內容主要用于保證各個節點的通訊參數能夠保持一致性,所組成的網絡能夠正常有效的工作,除了評估板級使用到的元器件參數,更多的還涉及到 FlexCAN底層驅動庫的調試,不同寄存器配置所帶來的影響是非常直觀的。
2.1 位時間測試
汽車 CAN 總線設計規范對于 CAN 節點的差分信號位時間(即波特率)有著嚴格的規定,同一總線上每個節點的信號位時間必須保持較高的一致性,否則節點組合到一起后,會導致錯誤幀的出現,各節點間無法進行通信。
位時間偏差主要發生在如下情況:使用了非整數值的晶振(比如 11.0592MHZ)、極端溫度導致晶振偏差、CAN 控制器內部波特率發生器偏差。針對MCU的晶振器件選型包括晶振電路的調試在我們另外的文檔中進行介紹,本次位時間測試是在已經調試好晶振電路的電路上進行驗證測試。
MM32F0140 系列的 FlexCAN控制器將一個位時間分為同步段、傳播時間段、相位段1、相位段2等若干個 Tq 時間序列,每個段所占的 Tq 數可根據對應寄存器所配置,合理配置位時序的 Tq 數極為重要,具體可以參照 UM 手冊中 23.3.10.4 協議時序章節描述去理解每個段和 Tq 配置。
官方驅動例程中,選取的系統時鐘源為 HSI 倍頻到 72M,再經過 2 分頻后得到 CAN 系統時鐘(CHI) 36M,也就是 FlexCAN通信時鐘源中的同步時鐘(MM32F0140 系列只能選擇該時鐘源,而不能選擇外部晶振作為時鐘源,即 PE 時鐘等于 CHI 時鐘),由于內部時鐘精度要比外部晶振低,所以在測試位時間時需要將 RCC 時鐘外設改寫配置,選擇 HSE 倍頻到 72M 其它不變。其它按照默認配置,得到的波特計算公式為:
Baud = Fsclock / (CAN_CTRL1.PSEG1+ CAN_CTRL1.PSEG2 + CAN_CTRL1.PROPSEG+ 4)
Fsclock = Fcanclk / (CAN_CTRL1.PRESDIV+1)
Fsclock 為 FlexCAN串行時鐘頻率, Fcanclk 為 PE 時鐘頻率,即為 CHI 時鐘頻率 Fsys
通過以上公式計算得出波特率為 500KHz,與實際程序配置是相符合的。位時間計算公式為:
Tcanbit = 1 / Baud
通過以上公式計算得出位時間為 2us,FlexCAN最小時間單元 Tq 個數為 canTiming[0].timeQuanta = 8(即為 canTiming[0] 中的 PROPSEG/PSEG1/PSEG2 之和再加1),Tq 時長計算公式為:
Tq = Tcanbit / Tq num
Tq = (CAN_CTRL1.PRESDIV+1) / Fsys
通過以上 2 公式都可以計算得 Tq 時間為 0.25us。經過理論計算后,需要實際使用示波器抓取一個位波形來測量位時間寬度,一般需要多次測量一幀數據中的位寬波形直至超過 100 次,或者截取一串數據幀中偏差最大的那一幀總時長再除以位數即可得出位時間,再或者就是直接使用 CAN Scope 的位時間精度功能實測,可以得出以下結果:
官方驅動中的 SJW 默認設置為 1 ,在實際允許的容忍偏差范圍內,可以自行調整該參數,一般建議設置為 2~3 個 Tq 。
2.2 采樣點測試
除了精準的波特率,采樣點位置的匹配同樣是要求即為嚴苛的,在不同的標準中對采樣點要求各不相同,而且不同車廠對采樣點的設置、時鐘源的需求以及每個段所占的 Tq 數也都是不盡相同的。下圖展示了 CiA 推薦的數據場采樣點位置范圍:
在汽車工程師協會 SAE class C 標準中將高速總線波特率定為 125K ~ 1 M 范圍,中、低速總線波特率定為 125K 以下范圍,高速總線推薦使用單次采樣模式,而中低速總線推薦 3 倍采樣模式。
網絡中節點采樣點的不一致會導致同樣的采樣頻率出現采樣錯誤,進而使整車網絡出現故障問題,影響整車環境穩定。
官方例程中默認使用的 3 倍采樣,且 CAN Scope 僅支持單次采樣模式,所以需要按照以下方式修改采樣點模式:
更改后,其它按照默認配置,則采樣點設置成了 75% ,采樣點計算公式如下:
Sample-Point = (1 + (canTiming[0].propSeg + canTiming[0].phaseSeg1)) / (1 + (canTiming[0].propSeg + canTiming[0].phaseSeg1) + (canTiming[0].phaseSeg2))
Sample-Point = (1 + (CAN_CTRL1.PROPSEG + CAN_CTRL1.PSEG1+2)) /
(1 +(CAN_CTRL1.PROPSEG+CAN_CTRL1.PSEG1+2) + (CAN_CTRL1.PSEG2+1))
清楚采樣點計算公式后,實際使用 CAN Scope 的采樣點計算功能測試真實采樣點,需要注意,在上位機設置中需要將終端電阻選擇為 60Ω ,且在采樣點設置向導中需要勾選輸入 TQS 并且設置 ABT TQS 總個數(這里與默認配置一致,即為 8),實際測試得出真實采樣點精度偏差小于 0.5% :
由于例程中不能涵蓋所有需要的采樣點,這里推薦使用 ARM 波特率計算器來計算出實際需要填寫的各個寄存器參數,按照下圖中的配置可以得出實測的采樣點為 83%,落在設置的要求范圍內:
計算器中的參數與程序中位時序配置的對應關系如下:
TSEG1 +1 = phaseSeg1 + propSeg
TSEG2 + 1 = phaseSeg2
系統時鐘 9M = PE 時鐘 / preDivider
2.3 其它測試
報文 DLC 測試實際上可以通過具有數據解析功能的 CAN 工具來進行測試,主要評估 ECU 發送和接收報文的正確性。關于負載監測和壓力測試,可以評估 ECU 處理緊急包的能力,理論上 CAN 是可以滿負載運行工作的,這也是 CAN 的優勢所在,但一般情況下會需要保證運行在 30% 以下的負載率。
-
mcu
+關注
關注
146文章
17123瀏覽量
350992 -
示波器
+關注
關注
113文章
6240瀏覽量
184799 -
CAN網絡
+關注
關注
1文章
44瀏覽量
16927
原文標題:靈動微課堂 (第223講) | MM32F0140 FlexCAN一致性測試 (1)
文章出處:【微信號:MindMotion-MMCU,微信公眾號:靈動MM32MCU】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論