0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

分享一種用CAN波形的幅度和脈寬信息來精確定位錯(cuò)誤幀來源的方法

832065824 ? 來源:汽車電子嵌入式 ? 作者:汽車電子嵌入式 ? 2023-10-08 15:52 ? 次閱讀

我們先從基礎(chǔ)的講起。CAN節(jié)點(diǎn)的電路一般如下圖所示,MCU內(nèi)置了CAN控制器用來將MCU的數(shù)據(jù)封裝為CAN幀格式,同時(shí)它也負(fù)責(zé)CAN幀的校驗(yàn)和錯(cuò)誤幀的處理。

控制器封裝好的邏輯報(bào)文經(jīng)TX RX送到CAN收發(fā)器,將邏輯信號(hào)轉(zhuǎn)變?yōu)檎嬲目偩€差分波形。

8d3bdf12-65ae-11ee-939d-92fbcf53809c.png

一、CAN物理層

也就是CAN收發(fā)器干了啥?

8d4930cc-65ae-11ee-939d-92fbcf53809c.png

一個(gè)典型的雙節(jié)點(diǎn)CAN網(wǎng)絡(luò)的物理層等效電路如上圖,兩顆120Ω終端電阻并聯(lián)呈現(xiàn)總線電阻60Ω。黑框里是A、B兩個(gè)節(jié)點(diǎn)的CAN收發(fā)器(Transceiver),它只負(fù)責(zé)電平轉(zhuǎn)換。當(dāng)總線靜默時(shí),收發(fā)器內(nèi)部的2.5V電源經(jīng)15KΩ電阻把CAN-H和CAN-L都拉到2.5V,總線這個(gè)狀態(tài)稱之為隱性

當(dāng)節(jié)點(diǎn)A想要驅(qū)動(dòng)總線的時(shí)候(TX=0),它同時(shí)把內(nèi)部的上下兩個(gè)MOS管導(dǎo)通,整個(gè)網(wǎng)絡(luò)的電流流向:節(jié)點(diǎn)A的5V電源經(jīng)二極管、24Ω、兩顆終端電阻并聯(lián)、24Ω、二極管回到節(jié)點(diǎn)A的地,總線這個(gè)狀態(tài)稱之為顯性。CAN總線上的電壓實(shí)際上就是終端電阻的分壓。

從節(jié)點(diǎn)B來看,CAN-H就變成3.5V,CAN-L變成1.5V,拉出了總線 H - L = 2V 的差分電壓,大于0.7V的判斷閾值,節(jié)點(diǎn)B就認(rèn)為收到了一個(gè)顯性(RX=0)。大家可以算一下分壓值以增強(qiáng)記憶,后邊會(huì)用到。

反直覺知識(shí)點(diǎn)①:總線無人驅(qū)動(dòng)時(shí),也就是各個(gè)節(jié)點(diǎn)都隱性時(shí),CAN標(biāo)準(zhǔn)定義這時(shí)的TX/RX邏輯電平為1;總線有節(jié)點(diǎn)驅(qū)動(dòng)顯性,也就是主動(dòng)拉開差分電壓的時(shí)候,對(duì)應(yīng)TX/RX端邏輯電平0,這個(gè)1/0的反邏輯類似I2C等OC門的驅(qū)動(dòng)邏輯,努力適應(yīng)一下。這么做我猜有兩個(gè)原因:一是對(duì)地邏輯的抗擾能力強(qiáng)一些,NPN載流能力強(qiáng)&回流路徑短;二是為了數(shù)學(xué)上的嚴(yán)謹(jǐn)性:1x1x1x1...1x0 = 0,任意節(jié)點(diǎn)驅(qū)動(dòng)顯性0,那總線就是顯性0;所有節(jié)點(diǎn)隱性1,總線才是隱性1。但這樣的反邏輯帶來一個(gè)問題是,電路設(shè)計(jì)時(shí)需要尤其注意上下電時(shí)序,上電/休眠/喚醒過程中千萬不要出現(xiàn)MCU已下電(TX拉低)但CAN收發(fā)器還供5V電的情況。如果實(shí)在難以避免,可以試試單3.3V的CAN收發(fā)器MAX3051,它不需要5V電源,邏輯電和驅(qū)動(dòng)電共用同一路3.3V,肯定不會(huì)出現(xiàn)電源時(shí)序問題。

反直覺知識(shí)點(diǎn)②:理論上CAN_L短地,或 CAN_H短路12V,因60Ω終端電阻的存在,隱性時(shí)CAN-H與CAN-L之間基本還是重合的,顯性時(shí)也能正常拉開壓差,能維持正常通信,只不過丟包率可能會(huì)大一點(diǎn)。大家可以算算總線電壓,示波器很容易診斷這個(gè)問題。另外,如果你看到CAN的通信電壓不是以2.5V為中心對(duì)稱的,也有可能是多個(gè)CAN線交叉錯(cuò)接,比如CAN1_L錯(cuò)接到了CAN2_L上。

反直覺知識(shí)點(diǎn)③:一個(gè)CAN網(wǎng)絡(luò)里,120Ω終端電阻1~4顆都能工作,少了的話 離終端電阻遠(yuǎn)的節(jié)點(diǎn) 抗擾度會(huì)差,多了的話 顯性差分電壓可能無法觸發(fā)閾值。

反直覺知識(shí)點(diǎn)④:除了線路的最遠(yuǎn)端,任何稍長的CAN分支都可以加1K~4.7K的支線電阻,跑點(diǎn)電流來改善抗擾度。只要分支別太長,大致1Mbps以內(nèi)的任何總線其終端電阻都是跑電流增強(qiáng)抗擾的,不涉及真正的阻抗或者反射抑制,雙絞的要求也不是特別嚴(yán)格。

二、CAN鏈路層

也就是CAN控制器干了啥?

回顧完物理層,咱來看鏈路層,CAN幀的標(biāo)準(zhǔn)格式。當(dāng)發(fā)送節(jié)的MCU將TX由1變0的時(shí)候,CAN收發(fā)器將CAN-H拉高&CAN-L拉低,接收節(jié)點(diǎn)收到了H-L>0.7V的壓差后,接收節(jié)點(diǎn)的CAN收發(fā)器RX輸出由1變0。下圖是一個(gè)節(jié)點(diǎn)接收到CAN波形后解碼出的RX邏輯。

8d5904ca-65ae-11ee-939d-92fbcf53809c.png

一幀報(bào)文里邊有比較關(guān)鍵的幾段:仲裁段、控制段 、 數(shù)據(jù)段、CRC段、ACK段

仲裁段中的大部分是CAN報(bào)文的ID,起名為“仲裁”其實(shí)是因?yàn)檫@一段有優(yōu)先級(jí)仲裁的功能:假設(shè)A、B兩個(gè)節(jié)點(diǎn)在同一時(shí)刻搶發(fā)報(bào)文,節(jié)點(diǎn)A要發(fā)二進(jìn)制ID為001的報(bào)文,B要發(fā)010。當(dāng)A、B節(jié)點(diǎn)都在發(fā)第一位的顯性0的時(shí)候,總線會(huì)同時(shí)被兩個(gè)節(jié)點(diǎn)驅(qū)動(dòng)顯性,A、B節(jié)點(diǎn)回讀總線也都是顯性,相互之間還意識(shí)不到對(duì)方的存在。當(dāng)節(jié)點(diǎn)A發(fā)到第二位的0,節(jié)點(diǎn)B發(fā)到第二位的1的時(shí)候,總線只有節(jié)點(diǎn)A驅(qū)動(dòng)顯性0,節(jié)點(diǎn)B不驅(qū)動(dòng) 卻發(fā)現(xiàn)總線被別人驅(qū)動(dòng)了,此時(shí)節(jié)點(diǎn)B會(huì)認(rèn)為CAN線上有比自己這幀010優(yōu)先級(jí)更高的數(shù)據(jù),節(jié)點(diǎn)B就會(huì)主動(dòng)停發(fā),讓節(jié)點(diǎn)A獨(dú)占總線發(fā)完。之后節(jié)點(diǎn)B懷揣著這幀數(shù)據(jù)再次參與總線優(yōu)先級(jí)的仲裁。

反直覺知識(shí)點(diǎn)①:CAN作為一個(gè)對(duì)等網(wǎng)絡(luò),沒有主從關(guān)系,報(bào)文全部廣播,節(jié)點(diǎn)本身也沒有優(yōu)先級(jí)概念,只有報(bào)文ID的優(yōu)先級(jí)??梢赃@么理解:CAN節(jié)點(diǎn)是“由事件驅(qū)動(dòng)的”,比如剎車制動(dòng)器,它能發(fā)高優(yōu)先級(jí)的“剎車被踩下”的報(bào)文,也會(huì)發(fā)低優(yōu)先級(jí)的“剎車油位正?!钡膱?bào)文,這些報(bào)文根據(jù)ID的大小在總線上自由競爭優(yōu)先級(jí),而不是剎車制動(dòng)器這個(gè)節(jié)點(diǎn)的話語權(quán)一定高。這個(gè)特性就要求設(shè)計(jì)人員提前規(guī)劃好所有報(bào)文優(yōu)先級(jí)和周期(即“通信矩陣”)才能保證整個(gè)CAN網(wǎng)絡(luò)如期運(yùn)轉(zhuǎn)。如果你的CAN網(wǎng)絡(luò)有大量雷同節(jié)點(diǎn),節(jié)點(diǎn)又只有一幀報(bào)文,那么ID數(shù)大(優(yōu)先級(jí)低)的節(jié)點(diǎn)一定會(huì)在總線繁忙或干擾重發(fā)的時(shí)候"插不上話",可以試試把時(shí)間戳融合到ID里邊,確保各節(jié)點(diǎn)的新數(shù)據(jù)優(yōu)先級(jí)最高,舊數(shù)據(jù)自然會(huì)被仲裁掉。

反直覺知識(shí)點(diǎn)②:在A、B節(jié)點(diǎn)同時(shí)驅(qū)動(dòng)第一個(gè)顯性0的時(shí)候,總線被兩個(gè)節(jié)點(diǎn)同時(shí)驅(qū)動(dòng),電壓會(huì)顯著高于2V。示波器上會(huì)看到在仲裁段的頭部有明顯的電平凸臺(tái),后續(xù)節(jié)點(diǎn)A搶占總線之后電壓會(huì)回歸正常的2V。

反直覺知識(shí)點(diǎn)③:各個(gè)節(jié)點(diǎn)的時(shí)鐘同步是把每個(gè)bit做16~20份的數(shù)字切片來實(shí)現(xiàn)的,這個(gè)切的份數(shù)不建議太多或太少。詳細(xì)機(jī)制請(qǐng)參閱 ZLG致遠(yuǎn)電子的這篇:CAN同步機(jī)制,你真的了解嗎?

控制段中有幾個(gè)控制位,這里拿幾個(gè)常用的舉例。IDE位為擴(kuò)展ID的指示。如果IDE位為隱性1,就會(huì)在后邊再續(xù)上18位的ID,共11+18=29位長度。比如0x9E就是個(gè)11位長度的ID,0x0151就是個(gè)29位的ID。R0位是CAN里邊的預(yù)留位,在CAN-FD里被用作FD幀格式的標(biāo)志位FDF,這一位為隱性1就會(huì)按FD的幀格式解碼后續(xù)報(bào)文。DLC指示了后邊的數(shù)據(jù)段的長度,例如1000表示后續(xù)會(huì)有8個(gè)Byte長度的數(shù)據(jù)。CAN-FD協(xié)議只在數(shù)據(jù)段會(huì)切換成高速率,比如2Mbps/8Mbps,前后其他段的速率保持500kbps不變。

反直覺知識(shí)點(diǎn)①:CAN與CAN-FD除了數(shù)據(jù)段波特率的不同,幀格式也有區(qū)別,CAN-FD多了一些控制位。比如FDF(也叫EDL)位用來指示是否按FD幀格式解碼,BRS位用來指示是否需要切換高波特率,也就是說,一個(gè)FD幀可以全程500kbps不切速率的。

反直覺知識(shí)點(diǎn)②:CAN控制器的標(biāo)準(zhǔn)ISO11898-1里要求接收方不解讀R0位的顯隱性,所以CAN的控制器無法過濾FD幀。標(biāo)準(zhǔn)CAN網(wǎng)絡(luò)里邊一旦出現(xiàn)FD幀會(huì)因?yàn)槎嗔薆RS、ESI等控制位被認(rèn)為是格式錯(cuò)誤。同樣的,因?yàn)镃AN 2.0時(shí)代R0/FDF幀無意義,也有一些設(shè)備把發(fā)送出去的CAN幀的R0位錯(cuò)誤地置了隱性1,這樣的設(shè)備在CAN網(wǎng)絡(luò)里一切正常,但若進(jìn)入CAN-FD網(wǎng)絡(luò)就會(huì)被解讀成FD幀,進(jìn)而因?yàn)槿鄙貰RS、ESI等控制位被認(rèn)為是格式錯(cuò)誤。所以,CAN-FD并不是真的向下兼容CAN,因?yàn)榕f時(shí)代的CAN設(shè)備并沒有判別R0/FDF位的能力,一旦它進(jìn)入FD網(wǎng)絡(luò)就會(huì)瘋狂地打斷通信。

反直覺知識(shí)點(diǎn)③:DLC的長度,在CAN標(biāo)準(zhǔn)里DLC可以是0000~1000之間的二進(jìn)制值,可以用8421的算法直接計(jì)算出數(shù)據(jù)長度。而在CAN-FD中,1001~1111之間的值則被解讀為離散的12,16,20,24,32,48,64byte。

CRC段對(duì)于從幀頭到Data結(jié)束之間的數(shù)據(jù),CAN協(xié)議使用了CRC15這個(gè)比較特別的多項(xiàng)式計(jì)算校驗(yàn),有興趣的可以手算CRC試試。CAN-FD根據(jù)數(shù)據(jù)長度的不同使用了CRC17和CRC21,這里暫不做展開。

ACK段是由收到該幀的CAN節(jié)點(diǎn)回復(fù)的確認(rèn)(Acknowledge)。注意 發(fā)送節(jié)點(diǎn)在ACK位一定發(fā)的是隱性1,由接收節(jié)點(diǎn)回應(yīng)顯性0,雙方無縫銜接才在總線上呈現(xiàn)出一個(gè)完整的CAN報(bào)文。

反直覺知識(shí)點(diǎn)①:總線上任何節(jié)點(diǎn) 只要認(rèn)為這個(gè)幀的結(jié)構(gòu)正確,都會(huì)在ACK位回顯性0,不管需不需要這一幀的ID和數(shù)據(jù)。為什么不需要的節(jié)點(diǎn)也會(huì)回ACK?因?yàn)榈萂CU算完會(huì)造成這一位的延遲,攪亂總線時(shí)序,不如只保障鏈路層本身的格式正確,純芯片數(shù)字邏輯實(shí)現(xiàn)無延遲。嗯,90年代的總線要求不要太高。

反直覺知識(shí)點(diǎn)②:發(fā)送節(jié)點(diǎn)若發(fā)現(xiàn)自己這一幀沒有ACK回應(yīng),它也會(huì)認(rèn)為總線出錯(cuò),重發(fā)16次后進(jìn)入Passive error狀態(tài),有興趣的自行研究一下,這里不做展開。

三、真實(shí)CAN波形

來看一個(gè)兩節(jié)點(diǎn)案例:若節(jié)點(diǎn)A發(fā)送0x9E報(bào)文到總線,從節(jié)點(diǎn)B收到的總線波形和邏輯側(cè)波形如下:

8d60a5b8-65ae-11ee-939d-92fbcf53809c.png

黃線為CAN-H,綠線為CAN-L,藍(lán)線為節(jié)點(diǎn)B的邏輯側(cè)RX,紫線為節(jié)點(diǎn)B的邏輯側(cè)TX??梢钥吹?,作為接收方的節(jié)點(diǎn)B,總線拉差分電壓拉出顯性的時(shí)候,收發(fā)器將RX拉0給到MCU。在節(jié)點(diǎn)B想要回應(yīng)ACK的時(shí)候,MCU將TX拉0,CAN收發(fā)器在總線上拉出了一個(gè)歪斜的顯性(歪斜是因?yàn)闇y量點(diǎn)的寄生電感影響)。RX在ACK位置的0,是收發(fā)器TX=0驅(qū)動(dòng)總線顯性之后 回讀到的0。

再看一個(gè)比較真實(shí)的車上波形,CAN網(wǎng)絡(luò)上大于4個(gè)節(jié)點(diǎn):

8d6c8234-65ae-11ee-939d-92fbcf53809c.png

黃色是CAN_H,高電平表示顯性0,綠色是我們掛示波器這個(gè)節(jié)點(diǎn)的邏輯側(cè)TX,低電平表示顯性0。箭頭A~D是一幀完整的CAN報(bào)文,箭頭A ~ B這個(gè)過程中,我們掛示波器的這個(gè)節(jié)點(diǎn)和另一個(gè)節(jié)點(diǎn)正在進(jìn)行優(yōu)先級(jí)仲裁,根據(jù)我們之前講到的物理層的分壓原理,兩個(gè)節(jié)點(diǎn)同時(shí)驅(qū)動(dòng)電壓會(huì)高一截。在箭頭C這個(gè)bit 該節(jié)點(diǎn)想發(fā)隱性1但發(fā)現(xiàn)總線是顯性0,那就說明有另外的節(jié)點(diǎn)在發(fā)送更高優(yōu)先級(jí)的報(bào)文,我們這個(gè)節(jié)點(diǎn)會(huì)主動(dòng)退出發(fā)送,成為接收節(jié)點(diǎn),并在箭頭D點(diǎn)校驗(yàn)成功后回應(yīng)ACK,等待報(bào)文結(jié)束后這個(gè)節(jié)點(diǎn)再次參與總線仲裁,成功搶占總線如E點(diǎn)所示。

注意波形高度,在箭頭A~B之間,差分電壓略高于2V,這是正常現(xiàn)象,說明有兩個(gè)節(jié)點(diǎn)同時(shí)驅(qū)動(dòng)總線顯性,但從邏輯看,因?yàn)镠-L>0.7V所以都為顯性0,純數(shù)字邏輯的CAN控制器在箭頭A~B之間還感知不到對(duì)方的存在,箭頭C點(diǎn)之后才感知得到;而在箭頭D點(diǎn),因?yàn)槌税l(fā)送節(jié)點(diǎn)之外的所有節(jié)點(diǎn)都在同時(shí)驅(qū)動(dòng)ACK,所以總線電壓比箭頭A~B之間的雙節(jié)點(diǎn)驅(qū)動(dòng) 電壓更高。

四、錯(cuò)誤幀

終于到了錯(cuò)誤幀,注意,錯(cuò)誤幀不是由哪個(gè)節(jié)點(diǎn)發(fā)出的,而是由某個(gè)接收節(jié)點(diǎn)認(rèn)為總線錯(cuò)誤,故意驅(qū)動(dòng)總線打斷發(fā)送方,在總線上呈現(xiàn)為一個(gè)錯(cuò)誤幀。也就是說錯(cuò)誤幀 一定是由 一個(gè)發(fā)送節(jié)點(diǎn)和至少一個(gè) 認(rèn)為發(fā)送方有錯(cuò)的節(jié)點(diǎn) 共同形成的。

五、位填充

位填充規(guī)則是CAN協(xié)議的靈魂,簡單來講就幾個(gè)字:逢五補(bǔ)一。當(dāng)發(fā)送節(jié)點(diǎn)想要發(fā)連續(xù)5個(gè)bit的顯性0的數(shù)據(jù),會(huì)故意插入一個(gè)無意義的隱性1;當(dāng)出現(xiàn)連續(xù)5個(gè)bit的隱性1,會(huì)故意插入一個(gè)無意義的顯性0,如下圖的紫色bit。如果發(fā)送節(jié)點(diǎn)漏填了這個(gè)0/1,或者這個(gè)0/1被干擾成了1/0,接收節(jié)點(diǎn)就會(huì)判定為“填充錯(cuò)誤”,向總線上輸出“主動(dòng)錯(cuò)誤標(biāo)志”——連續(xù)六個(gè)顯性0,故意破壞這一幀報(bào)文,發(fā)送節(jié)點(diǎn)感知到總線錯(cuò)誤之后停止發(fā)送這一報(bào)文的后續(xù)部分。你說巧妙不巧妙?連續(xù)6個(gè)顯性0本身就是破壞“逢五補(bǔ)一”規(guī)則的,被拿來當(dāng)錯(cuò)誤標(biāo)志回給發(fā)送節(jié)點(diǎn)。

8d77f63c-65ae-11ee-939d-92fbcf53809c.png

假如原始數(shù)據(jù)是0x00,二進(jìn)制0000 0000,發(fā)送節(jié)點(diǎn)發(fā)到0000 0的時(shí)候發(fā)送節(jié)點(diǎn)會(huì)先插一個(gè)1,再發(fā)后續(xù)的000,成為0000 01000,共9bit長度,接收節(jié)點(diǎn)也會(huì)在第5bit的0之后預(yù)期一個(gè)無效的1,解碼時(shí)摳掉。

假如原始數(shù)據(jù)是0000 0100,第六位自帶1,發(fā)送節(jié)點(diǎn)發(fā)到00000的時(shí)候也會(huì)先插一個(gè)1,再發(fā)后續(xù)的100,成為0000 01100,共9bit長度。

六、回讀確認(rèn)

發(fā)送節(jié)點(diǎn)發(fā)送了0或1的時(shí)候,會(huì)回讀確認(rèn)總線是否和自己的發(fā)送相符,比如在仲裁段搶優(yōu)先級(jí)失敗就會(huì)等下一幀再發(fā);如果發(fā)到了數(shù)據(jù)段,按理說此時(shí)總線應(yīng)該只有自己,發(fā)著發(fā)著突然發(fā)現(xiàn)回讀的0/1與自己發(fā)的不同,比如受到了干擾,發(fā)送節(jié)點(diǎn)就會(huì)輸出“主動(dòng)錯(cuò)誤標(biāo)志”——連續(xù)6bit顯性0,來主動(dòng)拋棄后續(xù)報(bào)文,同時(shí)讓接收節(jié)點(diǎn)知道我這一幀有誤。

在這時(shí),接收節(jié)點(diǎn)收到第6bit顯性0的時(shí)候,因違背逢五補(bǔ)一的位填充規(guī)則,也會(huì)往總線上輸出“主動(dòng)錯(cuò)誤標(biāo)志”,所以會(huì)在總線上看到連續(xù)12bit的顯性0,前6個(gè)來自發(fā)送節(jié)點(diǎn),后6個(gè)來自接收節(jié)點(diǎn)。

正常情況來說,總線上的顯性不應(yīng)該>5bits=10us。那么用示波器設(shè)置>11us的脈寬觸發(fā)模式就很容易定位錯(cuò)誤幀的位置,不一定要用解碼示波器。

七、升維打擊

CAN網(wǎng)絡(luò)的幅度和電流可以為我們提供更多維度的信息,此所謂升維打擊。

我們先來看一個(gè)正常幀,我們叫它節(jié)點(diǎn)A吧,它內(nèi)部有終端電阻,藍(lán)線為H-L的差分電壓,紫線是我們節(jié)點(diǎn)A的CAN-H引腳電流,輸出為正,輸入為負(fù)。

8d82bf0e-65ae-11ee-939d-92fbcf53809c.png

先看藍(lán)色的總線電壓波形,從0x83到END之間是一幀正常波形,注意看幀頭有多級(jí)臺(tái)階,幀尾ACK位置也特別高,這是正常的,可以理解 當(dāng)多個(gè)節(jié)點(diǎn)同時(shí)驅(qū)動(dòng)總線就會(huì)導(dǎo)致60Ω終端電阻上的分壓高于2V。從這些臺(tái)階來看,可以判斷出網(wǎng)絡(luò)上至少有5個(gè)節(jié)點(diǎn)。

為啥?先看報(bào)文中部的幅度,這肯定是只有一個(gè)節(jié)點(diǎn)搶占總線之后的波形,往前有兩級(jí)臺(tái)階,可以認(rèn)為A、B、C三個(gè)節(jié)點(diǎn)同時(shí)搶占總線出現(xiàn)了第一個(gè)高臺(tái),然后節(jié)點(diǎn)C優(yōu)先級(jí)仲裁失敗退出總線,A、B節(jié)點(diǎn)繼續(xù)搶占出現(xiàn)了第二個(gè)臺(tái)階,之后節(jié)點(diǎn)A成功搶占到了總線優(yōu)先級(jí),發(fā)送中間的數(shù)據(jù)。最后的ACK位比3節(jié)點(diǎn)驅(qū)動(dòng)的第一個(gè)bit更高,說明至少有4個(gè)節(jié)點(diǎn)在驅(qū)動(dòng)ACK,再加上節(jié)點(diǎn)A,網(wǎng)絡(luò)上至少有5個(gè)節(jié)點(diǎn)。

再看紫色的電流波形,已知節(jié)點(diǎn)A自己有終端電阻,外邊有另一顆終端電阻。波形中部的數(shù)據(jù)區(qū)肯定是節(jié)點(diǎn)A在驅(qū)動(dòng)總線,差分電壓流經(jīng)外邊的終端電阻形成回路,所以我們?cè)诠?jié)點(diǎn)A的引腳上觀察到了輸出的正向電流;往前一個(gè)電壓臺(tái)階的位置,電流為0,是A、B兩個(gè)帶終端電阻的節(jié)點(diǎn)在驅(qū)動(dòng)總線,所以總線電壓拉開了但電流仍是無進(jìn)無出的;再往前一個(gè)臺(tái)階,A、B、C三個(gè)節(jié)點(diǎn)驅(qū)動(dòng),節(jié)點(diǎn)C的電流流入A、B的終端電阻,所以在節(jié)點(diǎn)A的引腳上測到了輸入的負(fù)向電流;然后幀尾的ACK位置,至少有4個(gè)節(jié)點(diǎn)同時(shí)驅(qū)動(dòng),流入終端電阻A和B的負(fù)向電流更大了。

八、錯(cuò)誤幀實(shí)戰(zhàn)

這是一個(gè)兩節(jié)點(diǎn)網(wǎng)絡(luò),一個(gè)節(jié)點(diǎn)發(fā),另一個(gè)節(jié)點(diǎn)收,兩方都有終端電阻,發(fā)送節(jié)點(diǎn)用的是TJA1042,接收節(jié)點(diǎn)用的是單3.3V收發(fā)器MAX3051。在幀頭就發(fā)生了錯(cuò)誤,這種錯(cuò)誤幀一般源于時(shí)鐘偏差或采樣點(diǎn)過小。

我們將示波器的差分探頭和電流探頭掛在接收端,下圖黃色為H-L的差分電壓,藍(lán)色為接收節(jié)點(diǎn)的輸出電流,RX為收發(fā)器將H-L差分電壓轉(zhuǎn)換出的邏輯波形,MCU內(nèi)部的CAN控制器會(huì)根據(jù)RX的0/1來解讀總線。TX為接收節(jié)點(diǎn)的發(fā)送邏輯,MCU將TX拉低的時(shí)候收發(fā)器會(huì)往總線上驅(qū)動(dòng)顯性。

8d91cc24-65ae-11ee-939d-92fbcf53809c.png

我們已知500kbps的每個(gè)bit寬2us,注意上圖紫線TX在2 ~ 4箭頭之間出現(xiàn)了連續(xù)2us * 6=12us的顯性0,說明我們掛示波器的這個(gè)接收節(jié)點(diǎn)在此刻往外輸出了一個(gè)“主動(dòng)錯(cuò)誤標(biāo)志”,那一定是接收節(jié)點(diǎn)在此之前認(rèn)為總線出現(xiàn)了錯(cuò)誤。我們來往前看,箭頭1~2之間總線差分電壓和RX邏輯側(cè)都只有10us/2us=5bit的顯性0,幀前邊都是長隱性1,這能有什么錯(cuò)?一個(gè)可能是我們碰到了傳說中的過載幀,這個(gè)東西本應(yīng)該很少見了;另一個(gè)可能是接收節(jié)點(diǎn)把對(duì)方來的正確報(bào)文認(rèn)成了錯(cuò)的,這10us被接收節(jié)點(diǎn)認(rèn)成了6bit,錯(cuò)誤的采樣點(diǎn)+硬同步(幀頭對(duì)齊)做得稀爛的國產(chǎn)MCU更容易出現(xiàn)這樣的幀頭報(bào)錯(cuò)。

不管哪種,我們推演一下看看是否符合我們的理論,在箭頭2~3之間發(fā)送節(jié)點(diǎn)應(yīng)該是想發(fā)送一個(gè)隱性,但這時(shí)接收節(jié)點(diǎn)已經(jīng)覺得不對(duì)開始發(fā)“主動(dòng)錯(cuò)誤標(biāo)志”,將總線拉成了顯性。然后發(fā)送節(jié)點(diǎn)讀到這一bit自己想發(fā)送隱性但總線是顯性,所以。。。仲裁區(qū)搶優(yōu)先級(jí)失敗退出總線,,,怎么可能,之前有6個(gè)連續(xù)顯性呢,所以發(fā)送節(jié)點(diǎn)因違反“逢五補(bǔ)一”在箭頭3~5也輸出“主動(dòng)錯(cuò)誤標(biāo)志”。所以就成了黃色總線波形的7個(gè)bit的“凸”型,中間的凸臺(tái)的位置總線被兩個(gè)節(jié)點(diǎn)驅(qū)動(dòng),電壓高起一個(gè)臺(tái)階。

再注意一個(gè)細(xì)節(jié),凸臺(tái)的左肩膀和右肩膀高度不一樣,左肩膀是接收節(jié)點(diǎn)MAX3051驅(qū)動(dòng)的電平,它比 右肩膀TJA1042的驅(qū)動(dòng)能力弱一些,總線電平低一點(diǎn)。這個(gè)特性可以用來區(qū)分總線上的不同設(shè)備。

藍(lán)色線,是接收節(jié)點(diǎn)的輸出電流。箭頭1~2之間的負(fù)向電流為發(fā)送節(jié)點(diǎn)驅(qū)動(dòng)總線,差分電壓流經(jīng)接收節(jié)點(diǎn)內(nèi)部的終端電阻帶來的負(fù)電流;箭頭2~3之間的正電流是接收節(jié)點(diǎn)驅(qū)動(dòng)的主動(dòng)錯(cuò)誤的第一個(gè)bit;后邊3~4的凸臺(tái)兩個(gè)節(jié)點(diǎn)都在驅(qū)動(dòng)顯性 但對(duì)應(yīng)的電流也是負(fù)的,這是因?yàn)榘l(fā)送節(jié)點(diǎn)的驅(qū)動(dòng)能力強(qiáng)過接收節(jié)點(diǎn),整個(gè)網(wǎng)絡(luò)電流還是由發(fā)送節(jié)點(diǎn)灌入接收節(jié)點(diǎn);再往后4~5的負(fù)電流是發(fā)送端驅(qū)動(dòng)接收節(jié)點(diǎn)的終端電阻的電流。

下圖我標(biāo)出了兩個(gè)節(jié)點(diǎn)的輸出bit流,紅框是“主動(dòng)錯(cuò)誤標(biāo)志”。

8d965028-65ae-11ee-939d-92fbcf53809c.png

仍然是這個(gè)兩節(jié)點(diǎn)網(wǎng)絡(luò),仍然是這個(gè)稀爛的國產(chǎn)MCU,我們來看這個(gè)錯(cuò)誤幀是怎么個(gè)情況:

8da5b61c-65ae-11ee-939d-92fbcf53809c.png

這一幀的DLC=0x01,也就是只有1byte數(shù)據(jù),數(shù)據(jù)區(qū)之后就是CRC區(qū),我們的“主動(dòng)錯(cuò)誤標(biāo)志”就發(fā)生在這個(gè)區(qū),觀察又沒有填充錯(cuò)誤,那就是我們掛示波器這個(gè)接收節(jié)點(diǎn)認(rèn)為發(fā)送節(jié)點(diǎn)出現(xiàn)了CRC錯(cuò)誤。但我們看到黃線在“主動(dòng)錯(cuò)誤標(biāo)志”中間出現(xiàn)了凹坑,意味著發(fā)送節(jié)點(diǎn)還是想繼續(xù)發(fā)隱性,并不認(rèn)為自己有錯(cuò),直到發(fā)現(xiàn)這一位被“主動(dòng)錯(cuò)誤標(biāo)志”覆蓋為顯性才感知到位錯(cuò)誤后拋棄后續(xù)報(bào)文。

原因最后定位到:過小的采樣點(diǎn)+過大的再同步補(bǔ)償寬度SJW讓時(shí)鐘誤差逐步積累,這顆國產(chǎn)MCU的重同步又做得稀爛,把正常報(bào)文錯(cuò)讀了一位導(dǎo)致算CRC錯(cuò)誤。最后通過調(diào)整采樣點(diǎn)和SJW寬度減少了這種錯(cuò)誤的出現(xiàn)頻次,得到正常波形如下:

8db7807c-65ae-11ee-939d-92fbcf53809c.png

我們?cè)僭囍鴱牟罘植ㄐ蝸矸治鲆粋€(gè)錯(cuò)誤幀:

8dd109c0-65ae-11ee-939d-92fbcf53809c.png

錯(cuò)誤發(fā)生在CRC區(qū),我們放大一下,看看各節(jié)點(diǎn)都發(fā)生了啥:

8dd8442e-65ae-11ee-939d-92fbcf53809c.png

從每一個(gè)臺(tái)階往前畫12us的方框,得到每個(gè)節(jié)點(diǎn)輸出的“主動(dòng)錯(cuò)誤標(biāo)志”,分析可知:這是一幀節(jié)點(diǎn)B發(fā)送的報(bào)文,節(jié)點(diǎn)A認(rèn)為它的CRC算錯(cuò)了,節(jié)點(diǎn)C湊了個(gè)熱鬧,三者一起形成了這個(gè)12bits長的“主動(dòng)錯(cuò)誤標(biāo)志”。

那,節(jié)點(diǎn)A為什么會(huì)認(rèn)為CRC有錯(cuò)呢?大概率是因?yàn)橹暗臄?shù)據(jù)讀錯(cuò)了一位。

這么好的波形也能讀錯(cuò)?是的,我們無法判斷節(jié)點(diǎn)A所在的位置波形有多差,可能分支上沒有終端電阻振鈴很大呢?我們只能相信節(jié)點(diǎn)A不會(huì)亂搞。另外,采樣點(diǎn)偏差會(huì)導(dǎo)致節(jié)點(diǎn)對(duì)噪聲額外地敏感。

九、CAN-FD錯(cuò)誤排查

來看一個(gè)A B C三節(jié)點(diǎn)CAN-FD錯(cuò)誤幀的案例,節(jié)點(diǎn)C發(fā),節(jié)點(diǎn)A、B收:黃色是H-L的差分電壓,綠色是節(jié)點(diǎn)B的邏輯TX。0x0677和0x0176是兩個(gè)錯(cuò)誤幀。FD區(qū)波特率設(shè)置為2Mbps。

8de0d7c4-65ae-11ee-939d-92fbcf53809c.png

放大0x0176幀的細(xì)節(jié):

8de5e2be-65ae-11ee-939d-92fbcf53809c.png

標(biāo)尺A B之間時(shí)間長度約0.8us,由一個(gè)2Mbps FD bit的0.5us + 一個(gè)CAN-FD的TDC(300ns)組成。

之后出現(xiàn)了6個(gè)FD bit(0.5us*6=3000ns)的連續(xù)顯性位,電平高度與之前相同,之后有連續(xù)2usx6=12us的顯性。

在標(biāo)尺B線后12us位置出現(xiàn)了一個(gè)電壓跌落的小小的下降臺(tái)階,見下下圖。

綜上三條,認(rèn)為節(jié)點(diǎn)C所在位置干擾過大/分支線路過長,節(jié)點(diǎn)C自己回讀↓下圖↓框出的bit位失敗,自己往總線上輸出“主動(dòng)錯(cuò)誤標(biāo)志”(連續(xù)6bit=2usx6=12us的顯性),其他設(shè)備在接收到第6個(gè)CAN-FD的bit=0.5usx6=3us的時(shí)候就讀到了錯(cuò)誤(違反FD速率的“逢五補(bǔ)一”規(guī)則),也往總線上疊加2us*6=12us的主動(dòng)錯(cuò)誤標(biāo)志。然后,12us時(shí)節(jié)點(diǎn)C的主動(dòng)錯(cuò)誤標(biāo)志先結(jié)束,其他節(jié)點(diǎn)的主動(dòng)錯(cuò)誤在2usx6+0.5usx6=15us后結(jié)束。至此,錯(cuò)誤幀形態(tài)完成。

“逢五補(bǔ)一”這條規(guī)則是跟隨波特率變化的,6個(gè)連續(xù)的高波特率0或1都會(huì)觸發(fā)填充錯(cuò)誤。但填充錯(cuò)誤之后輸出的“主動(dòng)錯(cuò)誤標(biāo)志”是500kbps波特率的6bit,固定長度12us。

8df0648c-65ae-11ee-939d-92fbcf53809c.png8e0bc772-65ae-11ee-939d-92fbcf53809c.png

再來一個(gè)案例:CAN-FD采樣點(diǎn)設(shè)置出錯(cuò)導(dǎo)致節(jié)點(diǎn)B把節(jié)點(diǎn)A發(fā)送的CAN-FD報(bào)文當(dāng)CAN來解析出錯(cuò)。

黃色CAN_H,綠色CAN_L,藍(lán)色L-H反向差分電壓,紫線為節(jié)點(diǎn)B邏輯RX,青線為節(jié)點(diǎn)B邏輯TX。

8e107100-65ae-11ee-939d-92fbcf53809c.png

注意看0x00前后的數(shù)據(jù)段,這一段是CAN-FD的2Mbps速率,節(jié)點(diǎn)B因?yàn)椴蓸狱c(diǎn)設(shè)置錯(cuò)誤讀錯(cuò)了BRS這一波特率轉(zhuǎn)換標(biāo)志,仍按照標(biāo)準(zhǔn)的500kbps去解析節(jié)點(diǎn)A的2Mbps速率的數(shù)據(jù),對(duì)RX信號(hào)2us一個(gè)采樣我用黃色箭頭標(biāo)出來了,可以看到這恰好是6個(gè)連續(xù)顯性0,違反“逢五補(bǔ)一”的規(guī)則,故而接收節(jié)點(diǎn)B在箭頭2~4之間發(fā)“主動(dòng)錯(cuò)誤標(biāo)志”,打斷總線通信,告知發(fā)送節(jié)點(diǎn)你發(fā)錯(cuò)了。

箭頭2~3之間,發(fā)送節(jié)點(diǎn)A恰好也要發(fā)顯性,所以節(jié)點(diǎn)A此時(shí)還沒感覺到不對(duì)。

箭頭3之后,節(jié)點(diǎn)A想要拉隱性,電壓出現(xiàn)一個(gè)坑,卻發(fā)現(xiàn)總線還是顯性,此時(shí)節(jié)點(diǎn)A判斷出現(xiàn)了“位錯(cuò)誤”,開始輸出“主動(dòng)錯(cuò)誤標(biāo)志”,想告知接收方放棄我這一幀報(bào)文。

箭頭4的位置節(jié)點(diǎn)B釋放“主動(dòng)錯(cuò)誤標(biāo)志”,箭頭5的位置節(jié)點(diǎn)A釋放“主動(dòng)錯(cuò)誤標(biāo)志”。

如果數(shù)據(jù)比較巧,恰好能滿足逢五補(bǔ)一的規(guī)則,那這種錯(cuò)誤形態(tài)會(huì)在發(fā)送很多數(shù)據(jù)之后才會(huì)出現(xiàn),但最晚也會(huì)被CRC攔截:

8e1a3ca8-65ae-11ee-939d-92fbcf53809c.png

補(bǔ)充知識(shí):CAN-FD網(wǎng)絡(luò)各個(gè)節(jié)點(diǎn)的采樣點(diǎn)必須完全相同,高速率導(dǎo)致對(duì)時(shí)序敏感很多,這一點(diǎn)與CAN網(wǎng)絡(luò)容許一個(gè)范圍顯著不同。

上邊這一幀的BRS位怎么讀錯(cuò)的呢?再一次違反直覺:CAN-FD的采樣點(diǎn)影響發(fā)送節(jié)點(diǎn)的驅(qū)動(dòng)波形!用示波器可以輕松量出FD的采樣點(diǎn)位置。

看下圖,CAN-FD報(bào)文的控制段中的BRS位(Bit Rate Switch)明顯是短于前邊的FDF、R0位的,采樣點(diǎn)不匹配的話很容易讀錯(cuò)。因?yàn)?FD的速率翻轉(zhuǎn)是在這一bit的采樣點(diǎn)位置發(fā)生的。比如采樣點(diǎn)80%的2Mbps CAN-FD網(wǎng)絡(luò),BRS這一位的寬度為2us80%+0.5us20%=1.7us,而不是2us。接收節(jié)點(diǎn)的采樣點(diǎn)如果設(shè)置大于85%就會(huì)錯(cuò)過整個(gè)BRS位(2us*85%=1.7us),從而導(dǎo)致如上的BRS位讀錯(cuò)的問題。

8e2ff7e6-65ae-11ee-939d-92fbcf53809c.png

以上,就是示波器升維破解CAN錯(cuò)誤幀/BusOff的經(jīng)驗(yàn)分享,總結(jié)一下:

結(jié)合已知ID是哪個(gè)節(jié)點(diǎn)發(fā)的先驗(yàn)信息,逐個(gè)拔掉非終端節(jié)點(diǎn),示波器觀察“主動(dòng)錯(cuò)誤標(biāo)志”,就能模糊定位錯(cuò)誤源頭;

如果能引出敏感設(shè)備的TX,哪個(gè)節(jié)點(diǎn)認(rèn)為哪個(gè)節(jié)點(diǎn)出了什么錯(cuò)就會(huì)非常清晰明了;

其次,測量CAN的輸出電流也能清楚地定位誰在驅(qū)動(dòng)“錯(cuò)誤標(biāo)志”,進(jìn)而找到故障點(diǎn);

如果上述難以實(shí)現(xiàn),以12us間隔拆分“錯(cuò)誤標(biāo)志”的電壓臺(tái)階,也能定位大部分錯(cuò)誤原因;

額外關(guān)注單bit寬度的電壓臺(tái)階,能排除部分節(jié)點(diǎn);





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 二極管
    +關(guān)注

    關(guān)注

    147

    文章

    9486

    瀏覽量

    165169
  • 收發(fā)器
    +關(guān)注

    關(guān)注

    10

    文章

    3350

    瀏覽量

    105728
  • 示波器
    +關(guān)注

    關(guān)注

    113

    文章

    6145

    瀏覽量

    184045
  • MOS管
    +關(guān)注

    關(guān)注

    108

    文章

    2347

    瀏覽量

    66197
  • CAN控制器
    +關(guān)注

    關(guān)注

    3

    文章

    74

    瀏覽量

    14986

原文標(biāo)題:用示波器排查CAN的各種錯(cuò)誤幀

文章出處:【微信號(hào):汽車電子嵌入式,微信公眾號(hào):汽車電子嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    示波器破解CAN錯(cuò)誤/BusOff的經(jīng)驗(yàn)分享

    MCU內(nèi)置了CAN控制器用來將MCU的數(shù)據(jù)封裝為CAN格式,同時(shí)它也負(fù)責(zé)CAN的校驗(yàn)和錯(cuò)誤
    發(fā)表于 09-08 09:19 ?1314次閱讀

    文讀懂CAN通訊錯(cuò)誤

    CAN總線通信技術(shù)廣泛應(yīng)用于多個(gè)行業(yè),是每個(gè)總線設(shè)計(jì)工程師必學(xué)的個(gè)通訊網(wǎng)絡(luò)。然而,對(duì)于CAN通信中的錯(cuò)誤,許多人僅停留在表面了解,缺乏深
    的頭像 發(fā)表于 06-12 08:24 ?2288次閱讀
    <b class='flag-5'>一</b>文讀懂<b class='flag-5'>CAN</b>通訊<b class='flag-5'>錯(cuò)誤</b><b class='flag-5'>幀</b>

    CRC校驗(yàn)方法通過CAN總線通信實(shí)現(xiàn)

    檢測、格式錯(cuò)誤檢測、填充錯(cuò)誤檢測、應(yīng)答錯(cuò)誤檢測和CRC錯(cuò)誤檢測。作為一種重要的錯(cuò)誤檢測手段,CR
    發(fā)表于 09-25 15:41

    一種由粗略到精確的瞳孔定位算法

    針對(duì)現(xiàn)階段實(shí)現(xiàn)瞳孔精確定位算法過于繁瑣的問題,提出一種由粗略到精確的瞳孔精確定位算法.首先用灰度積分算法粗略找出人眼部位在人臉上的大概位置,然后用Hough變換
    發(fā)表于 11-13 15:57 ?6次下載

    示波器怎么量某波形?技巧分享

    示波器之前,自己就應(yīng)該熟悉波形,否則波形出來后,對(duì)它也無可適從,波形在書上是指哪部分。具
    發(fā)表于 12-05 13:31 ?2.7w次閱讀
    示波器怎么量某<b class='flag-5'>一</b>段<b class='flag-5'>波形</b><b class='flag-5'>脈</b><b class='flag-5'>寬</b>?技巧分享

    一種高效的I分區(qū)錯(cuò)誤隱藏方法

    針對(duì)現(xiàn)有I錯(cuò)誤隱藏方法不能平衡恢復(fù)圖像質(zhì)量與算法復(fù)雜度的問題,提出了一種高效的I分區(qū)錯(cuò)誤隱藏
    發(fā)表于 12-27 10:56 ?0次下載

    CAN總線局部錯(cuò)誤及全局通知分析

    局部錯(cuò)誤,全局通知是CAN總線錯(cuò)誤類型中較為典型的一種,如何通過錯(cuò)誤報(bào)文及波形快速
    的頭像 發(fā)表于 02-16 07:57 ?7179次閱讀
    <b class='flag-5'>CAN</b>總線局部<b class='flag-5'>錯(cuò)誤</b>及全局通知分析

    一種新的CAN/FlexRAY網(wǎng)絡(luò)網(wǎng)關(guān)數(shù)據(jù)封裝方法

    車載異構(gòu)網(wǎng)絡(luò)之間需要利用網(wǎng)關(guān)進(jìn)行數(shù)據(jù)交換,數(shù)據(jù)封裝方法關(guān)系到網(wǎng)絡(luò)協(xié)議轉(zhuǎn)發(fā)效率,決定了網(wǎng)關(guān)的實(shí)時(shí)性和可靠性。為提高網(wǎng)關(guān)數(shù)據(jù)轉(zhuǎn)發(fā)效率,提出一種新的CAN/FlexRay網(wǎng)絡(luò)網(wǎng)關(guān)數(shù)據(jù)封裝方法
    發(fā)表于 02-24 10:13 ?0次下載

    文解析CAN總線遠(yuǎn)程錯(cuò)誤

    本文主要介紹了CAN總線遠(yuǎn)程錯(cuò)誤,首先我們先來了解了解下通訊時(shí)使用的類型有哪些,他們的
    的頭像 發(fā)表于 05-07 11:30 ?2.7w次閱讀
    <b class='flag-5'>一</b>文解析<b class='flag-5'>CAN</b>總線遠(yuǎn)程<b class='flag-5'>幀</b>和<b class='flag-5'>錯(cuò)誤</b><b class='flag-5'>幀</b>

    英創(chuàng)信息技術(shù)關(guān)于新CAN驅(qū)動(dòng)的錯(cuò)誤定義

    CAN總線產(chǎn)生的錯(cuò)誤錯(cuò)誤的形式上報(bào)給應(yīng)用層。設(shè)置注冊(cè)表[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\CAN1]
    的頭像 發(fā)表于 02-05 10:27 ?1873次閱讀
    英創(chuàng)<b class='flag-5'>信息</b>技術(shù)關(guān)于新<b class='flag-5'>CAN</b>驅(qū)動(dòng)的<b class='flag-5'>錯(cuò)誤</b><b class='flag-5'>幀</b>定義

    通過變化趨勢分析SPWM波形方法

    SPWM是一種脈沖寬度按正弦規(guī)律變化的一種PWM波形,是PWM技術(shù)的一種延伸,是一種可以等效正弦波效果的PWM技術(shù)。廣泛用于電機(jī)驅(qū)動(dòng)、逆變
    的頭像 發(fā)表于 12-22 16:54 ?2376次閱讀

    一種基于TextRank算法的幀定位方法

    針對(duì)未知網(wǎng)絡(luò)環(huán)境下比特流形式的通信數(shù)據(jù)難以進(jìn)行定界的問題,提出一種基于 Textrank算法的幀定位方法。通過統(tǒng)計(jì)數(shù)據(jù)中的序列出現(xiàn)頻率獲得比特流中的節(jié)點(diǎn)權(quán)重,利用基于 Textran
    發(fā)表于 04-01 10:55 ?15次下載
    <b class='flag-5'>一種</b>基于TextRank算法的幀<b class='flag-5'>定位</b><b class='flag-5'>方法</b>

    虹科干貨 | 帶你全面認(rèn)識(shí)“CAN總線錯(cuò)誤”()——CAN總線錯(cuò)誤錯(cuò)誤

    AsimpleintrotoCANerrorsCAN總線錯(cuò)誤介紹在本系列文章中,我們將為您詳細(xì)介紹CAN總線錯(cuò)誤的相關(guān)知識(shí),包括CAN總線錯(cuò)誤
    的頭像 發(fā)表于 05-27 10:39 ?4443次閱讀
    虹科干貨 | 帶你全面認(rèn)識(shí)“<b class='flag-5'>CAN</b>總線<b class='flag-5'>錯(cuò)誤</b>”(<b class='flag-5'>一</b>)——<b class='flag-5'>CAN</b>總線<b class='flag-5'>錯(cuò)誤</b>與<b class='flag-5'>錯(cuò)誤</b><b class='flag-5'>幀</b>

    科普系列:CAN總線錯(cuò)誤及排查方法簡介

    作者|蒹葭小編|吃不飽CAN有多種格式,錯(cuò)誤作為CAN中獨(dú)特的
    的頭像 發(fā)表于 02-23 15:11 ?2958次閱讀
    科普系列:<b class='flag-5'>CAN</b>總線<b class='flag-5'>錯(cuò)誤</b><b class='flag-5'>幀</b>及排查<b class='flag-5'>方法</b>簡介

    如何用示波器排查CAN的各種錯(cuò)誤呢?

    如何用示波器排查CAN的各種錯(cuò)誤呢? 導(dǎo)言: 控制器局域網(wǎng)絡(luò)(Controller Area Network,CAN)是一種常用的現(xiàn)場總線
    的頭像 發(fā)表于 12-07 11:09 ?1008次閱讀