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