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