《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > 調(diào)試嵌入式系統(tǒng)設(shè)計(jì)中的低速串行總線
調(diào)試嵌入式系統(tǒng)設(shè)計(jì)中的低速串行總線
摘要: 今天,嵌入式系統(tǒng)幾乎遍布在人類社會(huì)的每個(gè)角落,。嵌入式系統(tǒng)可以簡(jiǎn)單定義為屬于大型系統(tǒng)或機(jī)器一部分的一種專用計(jì)算機(jī)系統(tǒng),,其目的是為該系統(tǒng)或機(jī)器提供監(jiān)測(cè)和控制服務(wù)。典型的嵌入式系統(tǒng)在開機(jī)時(shí)會(huì)開始運(yùn)行某些專用應(yīng)用,,直到關(guān)閉時(shí)才會(huì)停止,。當(dāng)前設(shè)計(jì)和生產(chǎn)的幾乎每個(gè)電子設(shè)備都是嵌入式系統(tǒng)。
關(guān)鍵詞: 通用電子測(cè)量 PLC PDA FPGA
Abstract:
Key words :

引言

        今天,嵌入式系統(tǒng)幾乎遍布在人類社會(huì)的每個(gè)角落,。嵌入式系統(tǒng)可以簡(jiǎn)單定義為屬于大型系統(tǒng)或機(jī)器一部分的一種專用計(jì)算機(jī)系統(tǒng),,其目的是為該系統(tǒng)或機(jī)器提供監(jiān)測(cè)和控制服務(wù)。典型的嵌入式系統(tǒng)在開機(jī)時(shí)會(huì)開始運(yùn)行某些專用應(yīng)用,,直到關(guān)閉時(shí)才會(huì)停止,。當(dāng)前設(shè)計(jì)和生產(chǎn)的幾乎每個(gè)電子設(shè)備都是嵌入式系統(tǒng)。嵌入式系統(tǒng)實(shí)例包括:

  • 電子鬧表
  • 自動(dòng)柜員機(jī)
  • 移動(dòng)電話
  • 計(jì)算機(jī)打印機(jī)
  • 防抱死剎車控制器
  • 微波爐
  • 導(dǎo)彈使用的慣性引導(dǎo)系統(tǒng)
  • DVD 播放機(jī)
  • 個(gè)人數(shù)字助理 (PDA)
  • 工業(yè)自動(dòng)化和監(jiān)測(cè)使用的可編程邏輯控制器 (PLC)
  • 便攜式音樂播放機(jī)
  • 可能還包括烤面包機(jī)...

        嵌入式系統(tǒng)可能包含許多不同類型的設(shè)備,,包括微處理器,、微控制器、DSP,、RAM,、EPROM、FPGA,、模數(shù)轉(zhuǎn)換器,、數(shù)模轉(zhuǎn)換器和I/O。這些設(shè)備在傳統(tǒng)上一直使用寬并行總線相互通信及與外部世界通信,。然而今天,,嵌入式系統(tǒng)設(shè)計(jì)中使用的越來越多的構(gòu)件將用串行總線代替寬并行總線,原因如下:

  • 減少了要布線的信號(hào)數(shù)量,,降低了要求的電路板空間
  • 降低了成本
  • 降低了功率要求
  • 減少了封裝上的針腳數(shù)量
  • 嵌入式時(shí)鐘
  • 差分信令,改善抗噪聲能力
  • 采用標(biāo)準(zhǔn)串行接口的器件大量供應(yīng)

        盡管串行總線提供了大量的優(yōu)勢(shì),,但它們也給嵌入式系統(tǒng)設(shè)計(jì)人員帶來了某些重大挑戰(zhàn),,因?yàn)樗源蟹绞絺魉托畔ⅲ皇且圆⑿蟹绞絺魉托畔?。本?yīng)用指南討論了嵌入式系統(tǒng)設(shè)計(jì)人員的常用挑戰(zhàn),,及怎樣使用泰克新推出的DPO4000系列示波器中提供的功能迎接這些挑戰(zhàn)。

并行與串行比較

        在并行結(jié)構(gòu)中,,總線的每個(gè)組件都有自己的信號(hào)路徑,。可能有16 條地址線,、16 條數(shù)據(jù)線,、一條時(shí)鐘線和各種其它控制信號(hào)。通過總線發(fā)送的地址或數(shù)據(jù)值會(huì)通過所有并行線路同時(shí)傳送,。因此,,使用大多數(shù)示波器和邏輯分析儀中的狀態(tài)觸發(fā)或碼型觸發(fā)功能觸發(fā)感興趣的事件相對(duì)簡(jiǎn)便。同時(shí),,可以簡(jiǎn)便地一目了然地了解在示波器或邏輯分析儀顯示屏上捕獲的數(shù)據(jù),。例如,在圖1 中,我們使用邏輯分析儀從微控制器中采集時(shí)鐘線,、地址線,、數(shù)據(jù)線和控制線。通過使用狀態(tài)觸發(fā),,我們隔離了我們查找的總線,。為“解碼”總線上發(fā)生的情況,我們需要查看每條地址線,、數(shù)據(jù)線和控制線的邏輯狀態(tài),。

        在串行總線中,所有這些信息都必須以串行方式在相同的少數(shù)導(dǎo)線 (有時(shí)是一條) 上發(fā)送,。這意味著一個(gè)信號(hào)可能包括地址信息,、控制信息、數(shù)據(jù)信息和時(shí)鐘信息,。例如,,看一下圖2 中所示的控制器區(qū)域網(wǎng) (CAN) 串行信號(hào)。

圖1. 邏輯分析儀采集的微控制器的時(shí)鐘,、地址總線,、數(shù)據(jù)總線和控制線。


圖2. CAN總線中采集的一條消息,。

圖3. I2C總線中采集的一條消息,。
 
        這條消息包含幀頭、標(biāo)識(shí)符(地址),、數(shù)據(jù)長(zhǎng)度代碼,、數(shù)據(jù)、CRC 和幀尾及少量其它控制位,。時(shí)鐘嵌入在數(shù)據(jù)中,,使用填充位保證接收設(shè)備擁有數(shù)量充足的邊沿鎖定時(shí)鐘,這使情況變得進(jìn)一步復(fù)雜化,。即使是經(jīng)過訓(xùn)練的眼睛,,也很難迅速了解這一消息的內(nèi)容。現(xiàn)在想象一下這是一條有問題的消息,,一天只發(fā)生一次,,您需要觸發(fā)采集這條消息。傳統(tǒng)示波器和邏輯分析儀不能有效處理這類信號(hào),。

        即使是比較簡(jiǎn)單的串行標(biāo)準(zhǔn),,如I2C,與并行協(xié)議相比,,觀察總線上傳輸?shù)膬?nèi)容仍要明顯困難得多,。I2C采用分開的時(shí)鐘線和數(shù)據(jù)線,因此至少在本例中,您可以使用時(shí)鐘作為參考點(diǎn),。但是,,您仍需要找到消息開頭(數(shù)據(jù)變低,時(shí)鐘為高),,手動(dòng)檢查和記下每個(gè)時(shí)鐘上升沿上的數(shù)據(jù)值,,然后把各bit 位整理成消息結(jié)構(gòu)。在長(zhǎng)采集中解碼一條消息就會(huì)需要幾分鐘時(shí)間,,而您不知道這是不是實(shí)際要找的消息,。

        如果不是,您需要在下一條消息上重新開始這一麻煩的,、容易出錯(cuò)的過程,。最好只觸發(fā)查找的消息內(nèi)容,但多年來示波器的邏輯分析儀上使用的狀態(tài)觸發(fā)和碼型觸發(fā)并不能發(fā)揮作用,。它們是為了考察多條通道中同時(shí)發(fā)生的問題設(shè)計(jì)的,。為處理串行總線,其觸發(fā)引擎深度必需有幾千種狀態(tài)(每個(gè)bit位一個(gè)狀態(tài)),。即使存在這種觸發(fā)功能,,但為所有這些bit位逐個(gè)狀態(tài)編程也不是件好玩的事。必須找到一種更好的方式,!

圖4. I2C消息結(jié)構(gòu),。
 
        DPO4000 系列提供了一種更好的方式。下面幾節(jié)重點(diǎn)介紹了可以怎樣在嵌入式系統(tǒng)設(shè)計(jì)最常用的低速串行標(biāo)準(zhǔn)中采DPO4000 系列,。

I2C

背景知識(shí)

        I2C 或"I squared C" 是指集成電路間總線,。它最初是飛利浦公司在20世紀(jì)80年代研制的,為把控制器連接到電視機(jī)上的外設(shè)芯片提供了一種低成本方式,,但之后其已經(jīng)發(fā)展成為嵌入式系統(tǒng)設(shè)備之間通信的一項(xiàng)全球標(biāo)準(zhǔn)。它采用簡(jiǎn)單的兩線設(shè)計(jì),,廣泛用于領(lǐng)先芯片制造商生產(chǎn)的各種芯片中,,如I/O、模數(shù)轉(zhuǎn)換器,、數(shù)模轉(zhuǎn)換器,、溫度傳感器、微控制器和微處理器,,芯片制造商則包括:Analog Devices, Atmel, Infineon,Cyprus, 英特爾,Maxim, 飛利浦, Silicon Laboratories, ST Microelectronics,德州儀器, Xicor 等等,。

工作方式

        I2C的物理兩線接口由雙向串行時(shí)鐘(SCL)和數(shù)據(jù)(SDA)線組成。I2C 支持總線上多個(gè)主從設(shè)備,,但一次只能激活一個(gè)主設(shè)備,。任何I2C設(shè)備可以連接到總線上,允許任何主設(shè)備與從設(shè)備交換信息。每臺(tái)設(shè)備都使用唯一的地址識(shí)別,,可以作為發(fā)射機(jī)或接收機(jī)操作,,具體取決于設(shè)備功能。在開始時(shí),,I2C 只使用7 位地址,,但隨著時(shí)間推移,它演變成也支持10 位地址,。它支持三種位速率:100 kbps (標(biāo)準(zhǔn)模式), 400 kbps (快速模式)和3.4Mbps (高速模式),。最大設(shè)備數(shù)量取決于400 pf 的最大容量,或大約支持20-30 臺(tái)設(shè)備,。I2C 標(biāo)準(zhǔn)規(guī)定了下述格式,,如圖4 所示:
  • Start - 表明設(shè)備控制總線,一條消息將開始傳送
  • Address -7 位或10 位數(shù)字,,表示將要讀取或?qū)懭氲脑O(shè)備地址
  • R/W Bit - 1 位,,表明是否將從設(shè)備中讀取數(shù)據(jù)或向設(shè)備寫入數(shù)據(jù)
  • Ack - 1 位,來自從設(shè)備,,確認(rèn)主設(shè)備的操作,。通常每個(gè)地址和數(shù)據(jù)字節(jié)有一個(gè)確認(rèn)位,但不總是有確認(rèn)位
  • Data - 從設(shè)備中讀取或?qū)懭朐O(shè)備的字節(jié)的整數(shù)
  • Stop - 表明消息結(jié)束,,主設(shè)備已經(jīng)釋放總線

圖5. I2C總線設(shè)置菜單,。

圖6. I2C總線實(shí)例。
 
處理I2C

        通過DPO4EMBD串行觸發(fā)和分析應(yīng)用模塊,,DPO4000系列成為處理I2C總線的嵌入式系統(tǒng)設(shè)計(jì)人員的強(qiáng)大工具,。前面板有兩個(gè)總線按鈕(B1 和B2),允許用戶把到示波器的輸入定義為一條總線,。I2C 總線的設(shè)置菜單如圖5 所示,。

        通過簡(jiǎn)單地定義時(shí)鐘和數(shù)據(jù)位于哪條通道上及用來確定邏輯1和0的門限,示波器可以理解通過總線傳輸?shù)膮f(xié)議,。有了這些知識(shí),,示波器可以觸發(fā)任何指定的消息級(jí)信息,然后把得到的采集數(shù)據(jù)解碼成有意義的,、容易理解的結(jié)果,。邊沿觸發(fā)已經(jīng)過了好多天了,希望您已經(jīng)采集到感興趣的事件,,然后逐條消息手動(dòng)解碼消息,,找到問題。

        例如,,考慮一下圖6中的嵌入式系統(tǒng),。I2C總線連接到多臺(tái)設(shè)備上,,包括CPU、EEPROM,、風(fēng)扇速度控制器,、數(shù)模轉(zhuǎn)換器和大量的溫度傳感器。

        這部?jī)x器被退回工程部分析故障,,該產(chǎn)品持續(xù)過熱,,自動(dòng)關(guān)機(jī)。要檢查的第一件事是風(fēng)扇控制器和風(fēng)扇本身,,但似乎一切正常,。然后要檢查溫度傳感器是否有問題。風(fēng)扇速度控制器定期輪詢兩個(gè)溫度傳感器 (位于儀器中不同的區(qū)域),,調(diào)節(jié)風(fēng)扇速度,,穩(wěn)定內(nèi)部溫度。您懷疑其中一個(gè)或兩個(gè)溫度傳感器讀數(shù)不正確,。為查看傳感器與風(fēng)扇速度控制器之間的交互,。我們只需連接到I2C時(shí)鐘和數(shù)據(jù)線,在DPO4000 上設(shè)置總線,。我們知道,,兩個(gè)傳感器在I2C 總線上的地址分別是18 和19,因此我
們決定設(shè)置觸發(fā)事件,,查找地址18上的寫入操作 (風(fēng)扇速度控制器輪詢傳感器的當(dāng)前溫度),。觸發(fā)的采集結(jié)果如圖7 中的屏幕圖所示。在這種情況下,,通道1 (黃色) 連接到SCLK,,通道2 (青色)連接到SDA。紫色波形是我們向示波器中輸入一些簡(jiǎn)單的參數(shù)定義的I2C總線,。顯示器的上方部分顯示了整個(gè)采集,。在這種情況下,我們已經(jīng)捕獲了大量的總線空閑時(shí)間,,中間是我們放大的突發(fā)活動(dòng),。顯示屏下方的較大部分是縮放窗口。您可以看出,,示波器已經(jīng)解碼了經(jīng)過總線的每條消息的內(nèi)容。DPO4000 系列上的總線使用表1 中的顏色/ 標(biāo)記,,表明消息中的重要部分,。

圖7. I2C地址和數(shù)據(jù)總線波形解碼。
 
        看一下采集的波形,,我們可以看到,,示波器觸發(fā)地址18上的寫入操作 (如顯示屏左下方所示),。事實(shí)上,風(fēng)扇速度控制器試圖寫入地址18兩次,,但在這兩種情況下,,在試圖寫入溫度傳感器時(shí)它沒有收到確認(rèn)。然后它檢查地址19 上的溫度傳感器,,收回希望的信息,。因此,為什么第一個(gè)溫度傳感器沒有對(duì)風(fēng)扇控制器作出響應(yīng)呢,?看一下電路板上的實(shí)際部件,,我們發(fā)現(xiàn)其中一條地址線焊接不當(dāng)。溫度傳感器不能在總線上通信,,結(jié)果導(dǎo)致設(shè)備過熱,。由于DPO4000系列的I2C觸發(fā)和總線解碼功能,我們只需幾分鐘時(shí)鐘,,就成功地隔離了這個(gè)潛在的難檢問題,。

表1.總線條件。
 
在圖7 所示的實(shí)例中,,我們觸發(fā)了寫入操作,,但DPO4000 強(qiáng)大的I2C 觸發(fā)還包括許多其它功能。
  • Start - 在SDA 變低,、SCL 為高時(shí)觸發(fā),。
  • Repeated Start - 在沒有上一個(gè)停止條件下發(fā)生開始條件時(shí)觸發(fā)。這通常是主設(shè)備發(fā)送多條消息,、而沒有釋放總線時(shí)發(fā)生的情況,。
  • Stop - SDA 為高、SCL 為高時(shí)觸發(fā),。
  • Missing Ack - 從設(shè)備通常配置成在每個(gè)地址和數(shù)據(jù)字節(jié)后發(fā)送確認(rèn),。在從設(shè)備沒有生成確認(rèn)位的情況下示波器可以觸發(fā)采集。
  • Address - 觸發(fā)用戶指定的地址或任何預(yù)先編程的專用地址,,包括全呼,、開始字節(jié)、HS模式,、EEPROM或CBUS,。地址可以是7 位或10 位地址,以二進(jìn)制或十六進(jìn)制輸入,。
  • 數(shù)據(jù) - 觸發(fā)二進(jìn)制或十六進(jìn)制輸入的最多12 字節(jié)的用戶指定數(shù)據(jù)值
  • 地址和數(shù)據(jù) - 可以輸入地址數(shù)據(jù)值及讀寫,,捕獲確切的感興趣的事件

        這些觸發(fā)可以隔離您感興趣的特定總線業(yè)務(wù),解碼功能則可以即時(shí)查看采集中總線上傳輸?shù)拿織l消息的內(nèi)容,。

SPI

背景知識(shí)

        串行外設(shè)接口總線(SPI)最初是摩托羅拉在20世紀(jì)80年代末為其68000 系列微控制器研制的,。由于該總線簡(jiǎn)單,、流行,許多其它制造商也已經(jīng)采用這一標(biāo)準(zhǔn),。它現(xiàn)在用于嵌入式系統(tǒng)設(shè)計(jì)常用的各種器件中,。SPI主要用于微控制器和直接外設(shè)之間。它通常用于移動(dòng)電話,、PDA 和其它移動(dòng)設(shè)備中,,在CPU、鍵盤,、顯示器和內(nèi)存芯片之間通信,。

工作方式

        SPI (串行外設(shè)接口)總線是一種主/從結(jié)構(gòu)的4線串行通信總線。4個(gè)信號(hào)是時(shí)鐘(SCLK), 主輸出/從輸入(MOSI),主輸入/ 從輸出(MISO)和從選擇(SS),。在兩臺(tái)設(shè)備通信時(shí),,一臺(tái)設(shè)備稱為“主設(shè)備”,另一臺(tái)設(shè)備稱為“從設(shè)備”,。主設(shè)備驅(qū)動(dòng)串行時(shí)鐘,。它同時(shí)收發(fā)數(shù)據(jù),因此是一種全雙工協(xié)議,。SPI 使用SS 線路指明與哪臺(tái)設(shè)備傳送數(shù)據(jù),,而不是總線上的每臺(tái)設(shè)備都有一個(gè)唯一的地址。這樣,,總線上的每臺(tái)唯一的設(shè)備都需要從主設(shè)備提供自己的SS 信號(hào),。如果有3 臺(tái)從設(shè)備,那么主設(shè)備有3 條SS 引線,,每條引線都連接到每臺(tái)從設(shè)備上,,如圖8 所示。

        在圖8 中,,每臺(tái)從設(shè)備只與主設(shè)備通話,。但是,SPI 可以串聯(lián)多臺(tái)從設(shè)備,,每臺(tái)從設(shè)備依次進(jìn)行操作,,然后把結(jié)果發(fā)回主設(shè)備,如圖9 所示,。因此您可以看到,,SPI實(shí)現(xiàn)方案沒有“標(biāo)準(zhǔn)”。在某些情況下,,在不要求從設(shè)備向回到主設(shè)備通信時(shí),,MISO 信號(hào)可以完全省略。

圖8. 常用的SPI 配置,。

圖9. 串聯(lián)SPI 配置,。

圖10. SPI 總線設(shè)置菜單。
 
        在SPI數(shù)據(jù)傳送發(fā)生時(shí),,8位數(shù)據(jù)字移出MOSI,,不同的8 位數(shù)據(jù)字移入MISO。這可以視為16 位循環(huán)位移寄存器,。在傳送發(fā)生時(shí),,這個(gè)16 位位移寄存器位移8 個(gè)位置,從而在主設(shè)備和從設(shè)備之間交換8位數(shù)據(jù),。一對(duì)寄存器 - 時(shí)鐘極性(CPOL)和時(shí)鐘相位(CPHA)決定著驅(qū)動(dòng)數(shù)據(jù)的時(shí)鐘邊沿,。每個(gè)寄存器有兩種可能的狀態(tài),支持四種可能的組合,,所有這些組合互不兼容,。因此,主/從設(shè)備對(duì)必須使用相同的參數(shù)值進(jìn)行通信,。如果使用多個(gè)固定在不同配置的從設(shè)備,,那么每次需要與不同的從設(shè)備通信時(shí),主設(shè)備必須重新進(jìn)行配置,。

處理SPI

        DPO4EMBD 串行觸發(fā)和分析應(yīng)用模塊還可以為SPI 總線實(shí)現(xiàn)類似的功能,。我們可以再次使用前面板B1或B2按鈕,簡(jiǎn)單地輸入總線基本參數(shù),,包括SCLK, SS, MOSI和MISO位于哪條通道上,、門限和極性,來定義一條SPI總線 (參見圖10),。
例如,,考慮一下圖11 中的嵌入式系統(tǒng)。一條SPI 總線連接到一個(gè)合成器,、一個(gè)DAC及某個(gè)I/O上,。合成器連接到VCO上,VCO為其余系統(tǒng)提供一個(gè)2.5 GHz 時(shí)鐘,。在啟動(dòng)時(shí),,CPU應(yīng)該對(duì)合成器編程。但是不知道哪里出了問題,,VCO在產(chǎn)生3 GHz的信號(hào),。調(diào)試這個(gè)問題的第一步是考察CPU和合成器之間的信號(hào),
確定存在信號(hào),,沒有物理連接問題,,但我們找不到發(fā)生了什么問題。然后,,我們決定看一下SPI 總線上傳送的合成器編程使用的實(shí)際信息,。為捕獲這些信息,,我們把示波器設(shè)成在合成器Slave Select信號(hào)激活時(shí)觸發(fā)采集,并對(duì)DUT 通電,,捕獲啟動(dòng)編程命令,。采集結(jié)果如圖12所示。


圖11. 通過SPI 控制的合成器,。

        通道1 (黃色) 是SCLK,,通道2 (青色) 是MOSI,通道3(洋紅色) 是SS,。為確定我們是否對(duì)設(shè)備正確編程,,我們看一下合成器的產(chǎn)品資料??偩€上的前三個(gè)消息假設(shè)是初始化合成器,、加載分路器比率、鎖存數(shù)據(jù),。根據(jù)技術(shù)數(shù)據(jù),,前三個(gè)傳送中最后半個(gè)字節(jié) (一個(gè)十六進(jìn)制字符) 應(yīng)該分別是3, 0 和1,但我們看到的是0, 0 和0,。在消息末尾全是0 時(shí),,我們認(rèn)識(shí)到,我們?cè)赟PI 中犯了一個(gè)最常見的錯(cuò)誤,,即在軟件中以相反的順序在每個(gè)24位字中對(duì)各個(gè)位編程,。在迅速改變軟件配置后,得到下
面的采集,,VCO 正確鎖定在2.5 GHz,,如圖13 所示。在上面的實(shí)例中,,我們使用簡(jiǎn)單的SS Active 觸發(fā),。DPO4000 系列中完整的SPI 觸發(fā)功能包括下述類型:

  • SS Active - 在從設(shè)備選擇行對(duì)從設(shè)備變真時(shí)觸發(fā)。
  • MOSI - 在從主設(shè)備到從設(shè)備用戶指定最多16 個(gè)字節(jié)時(shí)觸發(fā),。
  • MISO - 在從設(shè)備到主設(shè)備用戶指定最多16 個(gè)字節(jié)時(shí)觸發(fā),。
  • MOSI/MISO - 在主設(shè)備到從設(shè)備及從設(shè)備到主設(shè)備用戶指定最多16 個(gè)字節(jié)時(shí)觸發(fā)。

        這些觸發(fā)也可以隔離感興趣的特定總線業(yè)務(wù),,解碼功能則可以立即查看采集中總線傳送的每條消息的內(nèi)容,。


圖12. 采集SPI 總線之外的合成器配置消息。


圖13. 正確的合成器配置消息,。


圖14. CAN數(shù)據(jù)/ 遠(yuǎn)程幀,。
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)幀和CAN2.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 米,。在電纜每端使用端接電阻器。


圖15. CAN總線設(shè)置菜單,。

 
處理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ī)在司車門儀表板上按下?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 所示,。

圖16. 觸發(fā)CAN總線上的特定標(biāo)識(shí)符和數(shù)據(jù),解碼采集中的所有消息,。

        圖中的白三角形是我們放在波形上作為參考點(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 所示,。


圖17. CAN事件表,。
 
        事件表以帶時(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 按鈕即可,。

圖18. 在CAN總線采集中搜索指定的標(biāo)識(shí)符的數(shù)據(jù)。
 
        當(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ì)問題,。
 
此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。