調(diào)試嵌入式系統(tǒng)設(shè)計(jì)中的低速串行總線
這些觸發(fā)也可以隔離感興趣的特定總線業(yè)務(wù),解碼功能則可以立即查看采集中總線傳送的每條消息的內(nèi)容。
CAN
背景知識(shí)
CAN (控制器區(qū)域網(wǎng))總線是博世公司在20世紀(jì)80年代專門研制的一種分層串行數(shù)據(jù)通信協(xié)議,以在電氣噪聲環(huán)境中作為設(shè)備之間的通信總線。1992年,梅塞德茲-奔馳率先在其汽車系統(tǒng)中采用CAN。今天,幾乎每個(gè)汽車制造商都在使用CAN控制器和網(wǎng)絡(luò),控制雨刷器馬達(dá)控制器、雨水傳感器、安全氣囊、門鎖、列車控制傳動(dòng)系統(tǒng)和電動(dòng)車窗等等。由于能夠容忍電氣噪聲、減少連線、校驗(yàn)錯(cuò)誤及高速傳送速率,CAN正迅速擴(kuò)展到其它應(yīng)用中,如工業(yè)控制、艦隊(duì)、醫(yī)療、航空等領(lǐng)域。
工作方式
CAN總線是一種平衡的(差分) 2線接口,在屏蔽雙絞線(STP)、非屏蔽雙絞線(UTP)或帶狀電纜上運(yùn)行。每個(gè)節(jié)點(diǎn)使用公頭9針連接器。非歸零(NRZ)位編碼與位填充一起使用,保證緊湊的消息及最小的轉(zhuǎn)換數(shù)量和高抗噪聲能力。CAN總線接口采用異步傳輸方案,在總線空閑時(shí)每個(gè)節(jié)點(diǎn)可以開始傳送信息。消息廣播到網(wǎng)絡(luò)上的所有節(jié)點(diǎn)。在多個(gè)節(jié)點(diǎn)同時(shí)發(fā)起消息時(shí),位仲裁用來確定哪條消息的優(yōu)先權(quán)較高。消息可以是四種類型中的一種:數(shù)據(jù)幀、遠(yuǎn)程傳輸請(qǐng)求(RTR)幀、錯(cuò)幀或過載幀。總線上檢測(cè)到錯(cuò)誤的任何節(jié)點(diǎn)會(huì)傳輸一個(gè)錯(cuò)幀,導(dǎo)致總線上所有節(jié)點(diǎn)能夠看到當(dāng)前消息不完整,傳輸節(jié)點(diǎn)會(huì)重新發(fā)送消息。接收設(shè)備發(fā)起過載幀,表明還沒有準(zhǔn)備好接收數(shù)據(jù)。數(shù)據(jù)幀用來傳輸數(shù)據(jù),遠(yuǎn)程幀由用來請(qǐng)求數(shù)據(jù)。數(shù)據(jù)幀和遠(yuǎn)程幀由每個(gè)幀開頭和結(jié)束的開始位和停止位控制,包括下述字段:仲裁字段、控制字段、數(shù)據(jù)字段、 CRC字段和ACK字段,如圖14所示。
– SOF – 幀以幀頭(SOF)位開始
– 仲裁 – 仲裁字段包括標(biāo)識(shí)符(地址)和遠(yuǎn)程傳輸請(qǐng)求(RTR)位,用來區(qū)分?jǐn)?shù)據(jù)幀和數(shù)據(jù)請(qǐng)求幀,其也稱為遠(yuǎn)程幀。標(biāo)識(shí)符可以采取標(biāo)準(zhǔn)格式(11位 – 2.0A版)或擴(kuò)展格式(29位 - 2.0B版)。
– 控制 – 控制字段由6個(gè)位組成,包括標(biāo)識(shí)符擴(kuò)展(IDE)位,它區(qū)分CAN 2.0A (11位標(biāo)識(shí)符)標(biāo)準(zhǔn)幀和CAN 2.0B (29位標(biāo)識(shí)符)擴(kuò)展幀??刂谱侄芜€包括數(shù)據(jù)長(zhǎng)度代碼(DLC)。DLC長(zhǎng)4位,表明數(shù)據(jù)幀中數(shù)據(jù)字段的字節(jié)數(shù)或遠(yuǎn)程幀請(qǐng)求的字節(jié)數(shù)。
– 數(shù)據(jù) – 數(shù)據(jù)字段由0-8個(gè)數(shù)據(jù)字節(jié)組成。
– CRC – 15位循環(huán)冗余校驗(yàn)代碼和隱性分隔符位。
– ACK – 確認(rèn)字段長(zhǎng)兩位。第一個(gè)位是時(shí)隙位,作為隱性位傳輸,但之后被成功地收到傳輸消息的任何節(jié)點(diǎn)傳送的顯性位覆蓋。第二個(gè)位是是隱性分隔符位。
– EOF – 七個(gè)隱性位,表明幀尾(EOF)。
三個(gè)隱性位的間斷(INT)字段表明總線空閑??偩€空閑時(shí)間可以是任意長(zhǎng)度,包括零。
它定義了大量的不同數(shù)據(jù)速率,最高數(shù)據(jù)速率為1Mb/s,最低數(shù)據(jù)速率為5kb/s。所有模塊必須支持至少20kb/s的速率。電纜長(zhǎng)度取決于使用的數(shù)據(jù)速率。正常情況下,系統(tǒng)中所有設(shè)備都以統(tǒng)一的固定位速率傳送信息。最大線路長(zhǎng)度在低速時(shí)可以達(dá)到幾千米;典型情況是1Mbps時(shí)40米。在電纜每端使用端接電阻器。
處理CAN
DPO4AUTO串行觸發(fā)和分析應(yīng)用模塊可以對(duì)CAN總線實(shí)現(xiàn)類似的觸發(fā)和分析功能。我們可以再次使用前面板B1或B2按鈕,簡(jiǎn)單地輸入總線的基本參數(shù),包括探測(cè)的CAN信號(hào)類型及位于哪條通道上、位速率、門限和樣點(diǎn)(位時(shí)間的%),來定義CAN總線,參見圖15。
想象一下您需要進(jìn)行相關(guān)定時(shí)測(cè)量,確定從司機(jī)在司機(jī)車門儀表板上按下?lián)u車窗開關(guān)開始到車窗實(shí)際開始移動(dòng)之間的時(shí)延。通過指定司機(jī)車門中CAN模塊的ID及與“下?lián)u車窗”命令有關(guān)的數(shù)據(jù),您可以觸發(fā)采集正在查找的數(shù)據(jù)幀。通過同時(shí)探測(cè)司機(jī)車門的下?lián)u車窗開關(guān)及車門中的馬達(dá)驅(qū)動(dòng),可以非常簡(jiǎn)便地完成這一定時(shí)測(cè)量,如圖16所示。
圖中的白三角形是我們放在波形上作為參考點(diǎn)的標(biāo)記。通過簡(jiǎn)單地按示波器前面板上Set/Clear Mark (設(shè)置/清除標(biāo)記)按鈕,可以在屏幕中增加或從屏幕中刪除標(biāo)記。按前面板上的Previous和Next按鈕,縮放窗口從一個(gè)標(biāo)記跳到另一個(gè)標(biāo)記,從而可以簡(jiǎn)便地在采集中感興趣的事件之間導(dǎo)航。
現(xiàn)在想象一下,如果沒有這些功能會(huì)怎樣執(zhí)行這一任務(wù)。
如果沒有CAN觸發(fā)功能,您將不得不觸發(fā)開關(guān)本身,捕獲時(shí)間窗口足夠長(zhǎng)的活動(dòng),然后在CAN總線上逐幀手動(dòng)解碼,直到最終找到適當(dāng)?shù)膸?。以前需要幾十分鐘或幾個(gè)小時(shí)完成的工作,現(xiàn)在只需要一會(huì)兒就可以完成。
DPO4000強(qiáng)大的CAN觸發(fā)功能包括下述類型:
– 幀頭–觸發(fā)SOF字段。
– 幀類型–選項(xiàng)包括數(shù)據(jù)幀, 遠(yuǎn)程幀, 錯(cuò)幀和過載幀
– 標(biāo)識(shí)符–使用讀/寫判定觸發(fā)特定的11位或29位標(biāo)識(shí)符
– 數(shù)據(jù)–觸發(fā)1-8字節(jié)用戶指定的數(shù)據(jù)
– Missing Ack–在接收設(shè)備沒有提供確認(rèn)時(shí)觸發(fā)
– 幀尾–觸發(fā)EOF字段
這些觸發(fā)類型可以輕松隔離CAN總線上查找的幾乎任何項(xiàng)目。但觸發(fā)只是開始。調(diào)試通常要求檢查觸發(fā)前和觸發(fā)后的消息內(nèi)容??梢酝ㄟ^DPO4000系列的事件表簡(jiǎn)單地查看一次采集中的多個(gè)消息的內(nèi)容,如圖17所示。
事件表以帶時(shí)戳的表格形式顯示了采集中每條消息解碼的消息內(nèi)容。它不僅可以簡(jiǎn)便地查看總線上的所有業(yè)務(wù),還可以簡(jiǎn)便地在消息之間進(jìn)行定時(shí)測(cè)量。事件表還可以用于I2C和SPI總線。
觸發(fā)與搜索
正如我們?cè)诒緫?yīng)用指南中討論的那樣,必需擁有強(qiáng)大的觸發(fā)系統(tǒng),隔離串行總線上感興趣的事件。但是,一旦已經(jīng)采集了數(shù)據(jù) (示波器被停止),而且想分析數(shù)據(jù),那么觸發(fā)就沒有什么用了。如果示波器具有類似觸發(fā)的資源、分析停止的波形數(shù)據(jù)不是更好嗎?DPO4000系列的 Wave Inspector為您提供了強(qiáng)大的搜索功能。本文中討論的所有總線觸發(fā)功能還作為已采集數(shù)據(jù)的搜索標(biāo)準(zhǔn)使用。例如,在圖18中,示波器已經(jīng)在長(zhǎng)采集記錄中搜索了具有特定地址和數(shù)據(jù)內(nèi)容的每條CAN消息,并在顯示屏頂部在每條消息上標(biāo)明空心的白三角形。為在發(fā)生的消息之間導(dǎo)航,用戶只需按前面板上的 Previous和Next按鈕即可。
當(dāng)然,搜索也可以用于比較傳統(tǒng)的觸發(fā)類型。搜索類型包括邊沿、脈寬、欠幅脈沖、建立時(shí)間和保持時(shí)間、邏輯和上升時(shí)間/下降時(shí)間。
總結(jié)
盡管嵌入式系統(tǒng)設(shè)計(jì)從并行總線轉(zhuǎn)向串行總線帶來了許多好處,但它也給設(shè)計(jì)工程師帶來了許多挑戰(zhàn)。通過傳統(tǒng)測(cè)試測(cè)量工具,觸發(fā)查找的事件要困難得多,這些工具僅僅查看模擬信號(hào),幾乎不可能告訴用戶其提供了哪些信息,而且手動(dòng)解碼長(zhǎng)時(shí)間的總線活動(dòng)、診斷問題是非常耗時(shí)、非常容易出錯(cuò)的過程。
DPO4000系列改變了這一切。由于其強(qiáng)大的觸發(fā)、解碼和搜索功能,當(dāng)前的設(shè)計(jì)工程師可以以極高的效率解決嵌入式系統(tǒng)設(shè)計(jì)問題。
評(píng)論