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