SPI
背景知識(shí)
串行外設(shè)接口總線(SPI)初是摩托羅拉在20世紀(jì)80年代末為其68000 系列微控制器研制的。由于該總線簡單、流行,許多其它制造商也已經(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è)信號是時(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 信號。如果有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 信號可以完全省略。
在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ù)。一對寄存器 - 時(shí)鐘極性(CPOL)和時(shí)鐘相位(CPHA)決定著驅(qū)動(dòng)數(shù)據(jù)的時(shí)鐘邊沿。每個(gè)寄存器有兩種可能的狀態(tài),支持四種可能的組合,所有這些組合互不兼容。因此,主/從設(shè)備對必須使用相同的參數(shù)值進(jìn)行通信。如果使用多個(gè)固定在不同配置的從設(shè)備,那么每次需要與不同的從設(shè)備通信時(shí),主設(shè)備必須重新進(jìn)行配置。 |
圖8.常用的SPI配置。
圖9.串聯(lián)SPI配置。
|
圖10. SPI 總線設(shè)置菜單。 |
處理SPI
DPOxEMBD 串行觸發(fā)和分析應(yīng)用模塊還可以為SPI 總線實(shí)現(xiàn)類似的功能。我們可以再次使用前面板Bus按鈕,簡單地輸入總線基本參數(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)該對合成器編程。但是不知道哪里出了問題,VCO在產(chǎn)生3 GHz的信號。調(diào)試這個(gè)問題的步是考察CPU和合成器之間的信號,確定存在信號,沒有物理連接問題,但我們找不到發(fā)生了什么問題。然后,我們決定看一下SPI 總線上傳送的合成器編程使用的實(shí)際信息。為捕獲這些信息,我們把示波器設(shè)成在合成器Slave Select信號激活時(shí)觸發(fā)采集,并對DUT 通電,捕獲啟動(dòng)編程命令。采集結(jié)果如圖12 所示。
通道1 (黃色) 是SCLK,通道2 (青色) 是MOSI,通道3(洋紅色) 是SS。為確定我們是否對設(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í)到,我們在SPI 中犯了一個(gè)常見的錯(cuò)誤,即在軟件中以相反的順序在每個(gè)24位字中對各個(gè)位編程。在迅速改變軟件配置后,得到下面的采集,VCO 正確鎖定在2.5 GHz,如圖13 所示。
在上面的實(shí)例中,我們使用簡單的SS Active 觸發(fā)。MSO/DPO 系列中完整的SPI 觸發(fā)功能包括下述類型:
SS Active - 在從設(shè)備選擇行對從設(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)容。 |
圖11.通過SPI控制的合成器
圖12. 采集SPI 總線之外的合成器配置消息。
圖13. 正確的合成器配置消息。 |
RS-232
背景知識(shí)
RS-232是近距離的兩臺(tái)設(shè)備之間進(jìn)行串行通信廣泛使用的標(biāo)準(zhǔn),它主要用于PC 串行端口,另外也用于嵌入式系統(tǒng),作為調(diào)試端口使用或連接兩臺(tái)設(shè)備。RS-232-C標(biāo)準(zhǔn)于1969年問世,之后標(biāo)準(zhǔn)修訂了兩次,但變化很小,其信號能夠與RS-232-C 互通。業(yè)內(nèi)還有幾個(gè)相關(guān)標(biāo)準(zhǔn),如RS-422 和RS-485,這些標(biāo)準(zhǔn)類似,但使用差分信令在遠(yuǎn)距離內(nèi)通信。
工作方式
兩臺(tái)設(shè)備稱為DTE (數(shù)據(jù)終端設(shè)備)和DCE (數(shù)據(jù)電路端接設(shè)備)。在某些應(yīng)用中,DTE 設(shè)備控制著DCE 設(shè)備;在其它應(yīng)用中,這兩臺(tái)設(shè)備是對等的,DTE 和DCE 之間的區(qū)別可以是任意的。
RS-232標(biāo)準(zhǔn)規(guī)定了各種各樣的信號,許多信號并不常用。兩個(gè)重要的信號是發(fā)送的數(shù)據(jù)(Tx)和接收的數(shù)據(jù)(Rx)。Tx 把數(shù)據(jù)從DTE 傳送到DCE。DTE 設(shè)備的Tx 線路是DCE 設(shè)備的Rx 線路。類似的,Rx 把數(shù)據(jù)從DCE傳送到DTE。
RS-232 標(biāo)準(zhǔn)沒有規(guī)定使用哪些連接器。常用的連接器是25針連接器和9針連接器。也可以使10 針、8 針或6 針連接器。還可以在不使用標(biāo)準(zhǔn)連接器的情況下,把同一塊電路板上的兩臺(tái)RS-232設(shè)備連接起來。
在連接兩臺(tái)RS-232 設(shè)備時(shí),通常要求零訊號調(diào)制器。這種設(shè)備交換多條線路,包括Tx和Rx線路。通過這種方式,每臺(tái)設(shè)備可以在Tx 線路上發(fā)送數(shù)據(jù),在Rx 線路上接收數(shù)據(jù)。表2 顯示了RS-232 信號常用的9 針連接器使用的針腳輸出。記住,如果信號已經(jīng)傳過零訊號調(diào)制解調(diào)器,那么許多信號將被交換。重要的是,將交換Tx 和Rx。 |
信號
|
|
針腳
|
Carrier Detect (載波檢測)
|
DCD
|
1
|
Received Data (接收的數(shù)據(jù))
|
Rx
|
2
|
Transmitted Data (發(fā)送的數(shù)據(jù))
|
Tx
|
3
|
Data Terminal Ready (數(shù)據(jù)端子就緒)
|
DTR
|
4
|
Common Ground (公共接地)
|
G
|
5
|
Data Set Ready (數(shù)據(jù)集就緒)
|
DSR
|
6
|
Request to Send (請求發(fā)送)
|
RTS
|
7
|
Clear to Send (清除發(fā)送)
|
CTS
|
8
|
Ring Indicator (振鈴指示符)
|
RI
|
9
|
表2. 常用的RS-232 連接器針腳輸出。 |
在探測RS-232信號時(shí),通常要使用接續(xù)盒。這種設(shè)備允許簡便地探測RS-232電纜內(nèi)部的信號。接續(xù)盒成本低,可以從電子器件經(jīng)銷商處購買。
RS-232 標(biāo)準(zhǔn)沒有規(guī)定通過總線傳送的內(nèi)容。ASCII 文本是常見的內(nèi)容,但也使用二進(jìn)制數(shù)據(jù)。數(shù)據(jù)通常會(huì)劃分成數(shù)據(jù)包。在ASCII文本中,數(shù)據(jù)包后通常帶有新行符或回車符。在二進(jìn)制數(shù)據(jù)中,通常使用其它值,如00 或FF 十六進(jìn)制。
設(shè)備通常使用通用異步接收機(jī)/ 發(fā)射機(jī)(UART) 實(shí)現(xiàn)RS-232。UART 在市面上流行的部件中廣泛使用。UART 采用位移寄存器,把一個(gè)數(shù)據(jù)字節(jié)轉(zhuǎn)換成串行流,反之亦然。在嵌入式設(shè)計(jì)中,UART 還直接通信,而不需使用RS-232 收發(fā)機(jī)。
圖14顯示了RS-232數(shù)據(jù)的一個(gè)字節(jié)。這個(gè)字節(jié)由下述位組成:
開始位-字節(jié)的開頭是一個(gè)開始位。
數(shù)據(jù)位-后面跟著多個(gè)數(shù)據(jù)位。常見的是8個(gè)數(shù)據(jù)位,某些應(yīng)用使用7 個(gè)數(shù)據(jù)位。即使在只傳送7 個(gè)位時(shí),數(shù)據(jù)通常也會(huì)非正式地稱為一個(gè)字節(jié)。在UART到UART 通信中,有時(shí)會(huì)使用9 位數(shù)據(jù)字。
奇偶性-一個(gè)可選的奇偶性位。
結(jié)束位- 1 個(gè)、1.5 個(gè)或2 個(gè)結(jié)束位。RS-232總線沒有時(shí)鐘線路。每臺(tái)設(shè)備使用自己的時(shí)鐘,確定什么時(shí)候?qū)?shù)據(jù)線路采樣。在許多設(shè)計(jì)中,UART使用Tx 和Rx 信號的上升沿,把自己的時(shí)鐘與其它設(shè)備的時(shí)鐘同步起來。 |
圖14. RS-232 字節(jié)結(jié)構(gòu)。
|
處理RS-232
DPOxCOMP 應(yīng)用模塊支持串行觸發(fā)和分析RS-232總線。您可以在示波器上方便地查看RS-232、RS-422、RS-485或UART 數(shù)據(jù),而不需連接PC 或?qū)S媒獯a器。
通過使用前面板總線按鈕,我們可以輸入基本參數(shù),如使用的通道、位速率和奇偶性,定義RS-232 總線(參見圖15)。 |
圖15. RS-232 總線設(shè)置菜單。
|
在本例中,我們選擇了ASCII解碼;MSO/DPO系列還作為二進(jìn)制或十六進(jìn)制顯示RS-232 數(shù)據(jù)。
想象一下您有一臺(tái)設(shè)備輪詢傳感器,請求通過RS-232總線傳送數(shù)據(jù)。傳感器沒有對數(shù)據(jù)請求作出應(yīng)答。您想確定傳感器是不是沒有收到請求,或者是不是收到請求、但忽略了請求。
先,探測Tx 和Rx 線路,在示波器上設(shè)置一條總線。然后把示波器設(shè)置成在通過Tx 線路發(fā)送數(shù)據(jù)請求時(shí)觸發(fā)采集。觸發(fā)后的采集如16 所示。
在這里,我們可以看到數(shù)字通道1 上的Tx 線路及數(shù)字通道0上的Rx線路。但是,我們更關(guān)心解碼的數(shù)據(jù),其顯示在原始波形上方。我們放大查看傳感器的響應(yīng)。概況顯示了Tx線路上的請求及Rx線路上的響應(yīng)。光標(biāo)顯示在請求結(jié)束后大約37ms時(shí)發(fā)出回復(fù)。提高控制器的超時(shí)可以解決這個(gè)問題,因?yàn)樗鼮閭鞲衅骰貜?fù)提供了足夠的時(shí)間。
|
MSO/DPO 系列示波器的RS-232 觸發(fā)包括下述功能:
Tx 開始位-在表明字節(jié)開始的位上觸發(fā)。
Tx數(shù)據(jù)包尾- 在數(shù)據(jù)包后一個(gè)字節(jié)上觸發(fā)。數(shù)據(jù)包可以以某個(gè)字節(jié)結(jié)尾:零 (00 十六進(jìn)制), 換行(0A十六進(jìn)制), 回車(0D十六進(jìn)制), 空格(20十六進(jìn)制)或FF 十六進(jìn)制。
Tx 數(shù)據(jù)- 觸發(fā)多10 個(gè)字節(jié)的用戶指定數(shù)據(jù)值。
Rx 開始位、Rx 數(shù)據(jù)包尾和Rx 數(shù)據(jù)- 這些與Tx 觸發(fā)類似,但發(fā)生在Rx 線路上。通過MSO/DPO 系列示波器,可以簡便地查看RS-232信號,分析信號,把這些信號與設(shè)備中的其它活動(dòng)關(guān)聯(lián)起來。 |
圖16. 測量兩條RS-232 總線上的消息時(shí)延。 |
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ī)療、航空等域。
工作方式
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)程傳輸請求(RTR)幀、錯(cuò)幀或過載幀。總線上檢測到錯(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)程幀由用來請求數(shù)據(jù)。數(shù)據(jù)幀和遠(yuǎn)程幀由每個(gè)幀開頭和結(jié)束的開始位和停止位控制,包括下述字段:仲裁字段、控制字段、數(shù)據(jù)字段、CRC字段和ACK字段,如圖17所示。 |
圖17. CAN 數(shù)據(jù)/ 遠(yuǎn)程幀。 |
SOF - 幀以幀頭 (SOF) 位開始。
仲裁 - 仲裁字段包括標(biāo)識(shí)符(地址)和遠(yuǎn)程傳輸請求(RTR)位,用來區(qū)分?jǐn)?shù)據(jù)幀和數(shù)據(jù)請求幀,其也稱為遠(yuǎn)程幀。標(biāo)識(shí)符可以采取標(biāo)準(zhǔn)格式(11位-2.0A 版)或擴(kuò)展格式(29位 - 2.0B版)。
控制 - 控制字段由6個(gè)位組成,包括標(biāo)識(shí)符擴(kuò)展(IDE)位,它區(qū)分CAN2.0A (11 位標(biāo)識(shí)符) 標(biāo)準(zhǔn)幀和CAN 2.0B (29位標(biāo)識(shí)符)擴(kuò)展幀。控制字段還包括數(shù)據(jù)長度代碼 (DLC)。DLC長4 位,表明數(shù)據(jù)幀中數(shù)據(jù)字段的字節(jié)數(shù)或遠(yuǎn)程幀請求的字節(jié)數(shù)。
數(shù)據(jù) - 數(shù)據(jù)字段由0-8個(gè)數(shù)據(jù)字節(jié)組成。
CRC - 15位循環(huán)冗余校驗(yàn)代碼和隱性分隔符位。
ACK - 確認(rèn)字段長兩位。個(gè)位是時(shí)隙位,作為隱性位傳輸,但之后被成功地收到傳輸消息的任 何節(jié)點(diǎn)傳送的顯性位覆蓋。第二個(gè)位是是隱性分隔符位。
EOF - 七個(gè)隱性位,表明幀尾(EOF)。
三個(gè)隱性位的間斷 (INT) 字段表明總線空閑。總線空閑時(shí)間可以是任意長度,包括零。
它定義了大量的不同數(shù)據(jù)速率,高數(shù)據(jù)速率為1Mb/s,低數(shù)據(jù)速率為5kb/s。所有模塊必須支持至少20kb/s的速率。電纜長度取決于使用的數(shù)據(jù)速率。正常情況下,系統(tǒng)中所有設(shè)備都以統(tǒng)一的固定位速率傳送信息。大線路長度在低速時(shí)可以達(dá)到幾千米;典型情況是1Mbps 時(shí)40 米。在電纜每端使用端接電阻器。
處理CAN
MSO/DPO 系列的DPOxAUTO和DPO4AUTOMAX串行觸發(fā)和分析應(yīng)用模塊可以對CAN總線實(shí)現(xiàn)類似的觸發(fā)和分析功能。我們可以再次使用前面板 B1或B2按鈕,簡單地輸入總線的基本參數(shù),包括探測的CAN 信號類型及位于哪條通道上、位速率、門限和樣點(diǎn)(位時(shí)間的%),來定義CAN 總線,參見圖18。 |
圖18. CAN 總線設(shè)置菜單。 |
想象一下您需要進(jìn)行相關(guān)定時(shí)測量,確定從司機(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í)探測司機(jī)車門的下?lián)u車窗開關(guān)及車門中的馬達(dá)驅(qū)動(dòng),可以非常簡便地完成這一定時(shí)測量,如圖19 所示。
圖中的白三角形是我們放在波形上作為參考點(diǎn)的標(biāo)記。通過簡單地按示波器前面板上Set/Clear Mark (設(shè)置/清除標(biāo)記)按鈕,可以在屏幕中增加或從屏幕中刪除標(biāo)記。按前面板上的Previous和Next按鈕,縮放窗口從一個(gè)標(biāo)記跳到另一個(gè)標(biāo)記,從而可以簡便地在采集中感興趣的事件之間導(dǎo)航。
現(xiàn)在想象一下,如果沒有這些功能會(huì)怎樣執(zhí)行這一任務(wù)。
如果沒有CAN觸發(fā)功能,您將不得不觸發(fā)開關(guān)本身,捕獲時(shí)間窗口足夠長的活動(dòng),然后在CAN 總線上逐幀手動(dòng)解碼,直到終找到適當(dāng)?shù)膸R郧靶枰獛资昼娀驇讉(gè)小時(shí)完成的工作,現(xiàn)在只需要一會(huì)兒就可以完成。
MSO/DPO強(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)容。可以通過MSO/DPO系列的事件表簡單地查看一次采集中的多個(gè)消息的內(nèi)容,如圖17所示。
事件表以帶時(shí)戳的表格形式顯示了采集中每條消息解碼的消息內(nèi)容。它不僅可以簡便地查看總線上的所有業(yè)務(wù),還可以簡便地在消息之間進(jìn)行定時(shí)測量。事件表還可以用于MSO/DPO 系列示波器支持的所有總線類型。 |
圖19. 觸發(fā)CAN 總線上的特定標(biāo)識(shí)符和數(shù)據(jù),解碼采集中的所有消息。
圖20. CAN 事件表。
|
圖21. LIN 幀的結(jié)構(gòu)。
|
LIN
背景知識(shí)
本地互連網(wǎng)絡(luò)(LIN)總線是LIN 聯(lián)盟在1999 年開發(fā)的,在不需要CAN 總線那么高的成本、通用性和速度的應(yīng)用中,作為CAN 總線的低成本替代方案。這些應(yīng)用一般包括智能傳感器和制動(dòng)器之間的通信,如車窗控制、門鎖、雨水傳感器、雨刷控制、氣候控制等等。
但是,由于能夠容忍電氣噪聲、錯(cuò)誤檢測功能及高速數(shù)據(jù)傳送,CAN 目前仍用于引擎定時(shí)控制、防抱死剎車系統(tǒng)、傳動(dòng)系控制等應(yīng)用中。 |
工作方式
LIN總線是一種基于增強(qiáng)ISO9141標(biāo)準(zhǔn)的低成本單線實(shí)現(xiàn)方案。LIN網(wǎng)絡(luò)有一個(gè)主設(shè)備,有一個(gè)或多個(gè)從設(shè)備。所有消息都由主設(shè)備發(fā)起,每條消息只有一個(gè)從設(shè)備作出響應(yīng),因此不象CAN那樣需要碰撞檢測和仲裁功能。通信基于UART/SCI,數(shù)據(jù)在8 位字節(jié)中與開始位、結(jié)束位和非奇偶性位一起傳送。數(shù)據(jù)速率在1 k b / s -20kb/s之間,盡管聽起來很慢,但它適合許多預(yù)計(jì)的應(yīng)用,使EMI 達(dá)到小。LIN 總線總是處于兩種狀態(tài)中的一種狀態(tài):活動(dòng)狀態(tài)或睡眠狀態(tài)。在活動(dòng)狀態(tài)下,總線上所有節(jié)點(diǎn)是醒著的,收聽相關(guān)的總線命令。通過使用主設(shè)備簽發(fā)Sleep Frame(睡眠幀),或總線不活動(dòng)時(shí)間長于預(yù)先確定的時(shí)間,可以使總線上的節(jié)點(diǎn)進(jìn)入睡眠狀態(tài)。然后在任何節(jié)點(diǎn)請求喚醒或主設(shè)備簽發(fā)中斷字段時(shí),總線會(huì)被喚醒。
LIN幀由兩個(gè)主要部分組成:包頭和響應(yīng)。包頭由主設(shè)備發(fā)出,響應(yīng)則由從設(shè)備發(fā)出。包頭和響應(yīng)都有自己的構(gòu)成,如圖21所示。
包頭構(gòu)成:
中斷字段-中斷字段用來表明新幀的開頭。它激活和命令所有從設(shè)備接聽包頭的其余部分。
同步字段-從設(shè)備使用同步字段確定主節(jié)點(diǎn)使用的波特率,相應(yīng)地進(jìn)行同步。
標(biāo)識(shí)符字段-標(biāo)識(shí)符指明哪臺(tái)從設(shè)備采取行動(dòng)。
響應(yīng)構(gòu)成:
數(shù)據(jù)-指定的從設(shè)備應(yīng)答1-8 個(gè)字節(jié)的數(shù)據(jù)。
校驗(yàn)和-計(jì)算得出的字段,用來檢測數(shù)據(jù)傳輸中的錯(cuò)誤。LIN標(biāo)準(zhǔn)已經(jīng)演進(jìn)了多個(gè)版本,使用兩種不同形式的校驗(yàn)和。典型的校驗(yàn)和只在數(shù)據(jù)字節(jié)上計(jì)算,用于1.x版LIN系統(tǒng)中。增強(qiáng)校驗(yàn)和在數(shù)據(jù)字節(jié)和標(biāo)識(shí)符上計(jì)算,用于2.x 版LIN 系統(tǒng)中。
|
圖22. LIN 總線設(shè)置菜單和解碼后的幀。
圖23. 同時(shí)捕獲和解碼多條汽車串行總線。 |
處理LIN
MSO/DPO系列通過DPOxAUTO或DPO4AUTOMAX串行觸發(fā)和分析應(yīng)用模塊提供LIN支持。再次使用前面板Bus 按鈕,我們可以簡單地輸入總線的基本參數(shù),如使用的LIN 版本、位速率、極性、門限及在哪里對數(shù)據(jù)采樣(位時(shí)間的百分比),定義一條LIN總線。LIN設(shè)置菜單及解碼后的LN 幀如圖22 所示。
MSO/DPO 系列擁有一種強(qiáng)大的功能,能夠同時(shí)定義和解碼多四條串行總線。回到前面的CAN 總線實(shí)例,現(xiàn)在想象一下LIN總線運(yùn)行車窗控制裝置。在司機(jī)按下Passenger WindowDown 控制裝置時(shí),司機(jī)窗戶中的LIN 總線上會(huì)發(fā)起一條消息,這條消息傳過中央CAN 網(wǎng)關(guān),然后發(fā)送到司機(jī)車門的另一個(gè)LIN網(wǎng)絡(luò)中。在這種情況下,我們可以觸發(fā)其中一條總線上的相關(guān)消息,同時(shí)捕獲和解碼全部三條總線,在業(yè)務(wù)通過系統(tǒng)從一條總線傳送到另一條總線時(shí),可以非常簡便地查看業(yè)務(wù)。如圖23 所示,我們觸發(fā)了條LIN消息,捕獲了全部三條總線。
MSO/DPO 系列LIN 觸發(fā)功能包括下述類型:
-同步-觸發(fā)同步字段。
-標(biāo)識(shí)符-觸發(fā)特定的標(biāo)識(shí)符。
-數(shù)據(jù)-觸發(fā)1-8個(gè)字節(jié)的特定數(shù)據(jù)值或數(shù)據(jù)值范圍。
標(biāo)識(shí)符和數(shù)據(jù)-觸發(fā)標(biāo)識(shí)符和數(shù)據(jù)組合。
喚醒幀-觸發(fā)喚醒幀。
睡眠幀-觸發(fā)睡眠幀。
錯(cuò)誤-觸發(fā)同步錯(cuò)誤、ID奇偶性錯(cuò)誤或校驗(yàn)和錯(cuò)誤。
這些觸發(fā)類型允許比以前更快地隔離LIN總線上查找的一切特性。通過MSO/DPO 系列中的其它串行功能,如事件表及搜索和標(biāo)記功能,調(diào)試基于LIN的汽車設(shè)計(jì)變得前所未有的簡便。
FlexRay
背景知識(shí)
FlexRay 是一種相對較新的汽車總線,目前,由先汽車公司和供應(yīng)商組成的集團(tuán)(稱為FlexRay聯(lián)盟)對這一總線的開發(fā)工作仍在進(jìn)行中。隨著汽車智能化程度不斷提高及電子器件進(jìn)入越來越多的汽車應(yīng)用,制造商發(fā)現(xiàn)現(xiàn)有的汽車串行標(biāo)準(zhǔn)(如CAN 和LIN)沒有滿足X-bywire應(yīng)用要求的速度、可靠性或冗余性,如線路制動(dòng)或線路轉(zhuǎn)向應(yīng)用。今天,這些功能主要采用機(jī)械系統(tǒng)和水壓系統(tǒng)。將來,它們將被代之以由傳感器和高度可靠的電子組成的網(wǎng)絡(luò),這不僅可以降低汽車的成本,還可以明顯提高乘客的安全性,因?yàn)樗峁┝嗽S多基于智能電子的功能,如提前制動(dòng)、避免碰撞、自適應(yīng)巡航控制、等等。 |
圖24. FlexRay 幀結(jié)構(gòu)
|
工作方式
FlexRay是在屏蔽雙絞線(STP)或非屏蔽雙絞線(UTP)上運(yùn)行的一種速率高達(dá)10 Mb/s的差分總線,其速度明顯高于LIN 的20 kb/s 或CAN 的1 Mb/s 速率。FlexRay采用雙通道結(jié)構(gòu),有兩大優(yōu)勢。,可以配置兩條通道,在關(guān)鍵安全應(yīng)用中提供冗余通信,如x-by-wire應(yīng)用,保證消息通過。第二,可以配置兩條通道,在每條通道上以10 Mb/s速率發(fā)送的信息,在安全重要程度較低的應(yīng)用中實(shí)現(xiàn)20 Mb/s 的整體總線傳送速率。
FlexRay 采用時(shí)間觸發(fā)協(xié)議,通過同時(shí)包含靜態(tài)幀和動(dòng)態(tài)幀的通信周期,實(shí)現(xiàn)了以前的同步協(xié)議和異步協(xié)議的優(yōu)勢。靜態(tài)幀是為總線上每臺(tái)設(shè)備分配的時(shí)隙或預(yù)定長度,以在每個(gè)周期期間通信。總線上的每臺(tái)設(shè)備也有機(jī)會(huì)通過動(dòng)態(tài)幀在每個(gè)周期中通信,動(dòng)態(tài)幀的長度(和時(shí)間)可能會(huì)變化。FlexRay幀由三個(gè)主要段組成:包頭段、凈荷段和包尾段。每個(gè)段都有自己的構(gòu)成,如圖24 所示。
包頭段的構(gòu)成:
指示符位-前5 個(gè)位稱為指示符位,表明傳送的幀的類型。選項(xiàng)包括正常幀、凈荷幀、空幀、同步幀和啟動(dòng)幀。
幀號-幀號定義了應(yīng)該在哪個(gè)時(shí)隙中傳送幀。幀號在1-2047 之間,在通信周期中每條通道內(nèi)任何單獨(dú)幀號使用的次數(shù)不多于一次。
凈荷長度- 凈荷長度字段用來指明凈荷字段中有多少個(gè)數(shù)據(jù)字。
包頭CRC-使用同步幀指示符、啟動(dòng)幀指示符、幀號和凈荷長度計(jì)算得出的循環(huán)冗余校驗(yàn)(CRC)代碼。
循環(huán)數(shù)量- 當(dāng)前通信周期的值,范圍為0-63。
凈荷段的構(gòu)成:
數(shù)據(jù)-數(shù)據(jù)字段包含多254 字節(jié)的數(shù)據(jù)。對在靜態(tài)段中傳送的幀,凈荷段的前0-12個(gè)字節(jié)可以選擇作為網(wǎng)絡(luò)管理矢量使用。幀包頭中的凈荷前置碼指示符指明凈荷段是否包含網(wǎng)絡(luò)管理矢量。對在動(dòng)態(tài)段中傳送的幀,凈荷段的前兩個(gè)字節(jié)可以選擇作為消息ID 字段使用,允許接收節(jié)點(diǎn)根據(jù)這個(gè)字段的內(nèi)容過濾或掌控?cái)?shù)據(jù)。幀包頭中的凈荷前置碼指示符指明凈荷段是否包含消息ID。段中傳送的幀,凈荷段的前兩個(gè)字節(jié)可以選擇作為消息ID 字段使用,允許接收節(jié)點(diǎn)根據(jù)這個(gè)字段的內(nèi)容過濾或掌控?cái)?shù)據(jù)。幀包頭中的凈荷前置碼指示符指明凈荷段是否包含消息ID。
包尾段構(gòu)成:
CRC- 使用幀的包頭段和凈荷估計(jì)算得出的循環(huán)冗余校驗(yàn)(CRC)代碼。動(dòng)態(tài)幀有一個(gè)額外的成分,位于包尾CRC 后面,稱為動(dòng)態(tài)尾部序列(DTS),防止總線接收機(jī)過早地檢測通道空閑狀態(tài)。 |
圖25. FlexRay 總線設(shè)置菜單。
|
處理FlexRay
MSO/DPO4000 系列通過DPO4AUTOMAX 模塊支持FlexRay,在所有三項(xiàng)汽車標(biāo)準(zhǔn)上提供了串行觸發(fā)和分析功能,即CAN、LIN 和FlexRay,并在FlexRay 上提供了眼圖分析和關(guān)鍵定時(shí)測量功能。為定義FlexRay總線,我們進(jìn)入總線菜單,從支持的標(biāo)準(zhǔn)列表中選擇FlexRay。FlexRay 設(shè)置菜單如圖25 所示。
然后,我們使用Define Inputs 菜單,告訴示波我們是在查看FlexRay 通道A 還是通道B、我們正在探測哪類信號(差分、半差分對或控制器和總線驅(qū)動(dòng)器之間的邏輯信號),然后設(shè)置門限和位速率。與4000系列上支持的其它串行標(biāo)準(zhǔn)不同,F(xiàn)lexRay 在查看非Tx/Rx 信號時(shí)要求設(shè)置兩個(gè)門限,因?yàn)樗且环N三電平總線。這樣,示波器可以識(shí)別Data High 和Data Low 及兩個(gè)信號電壓相同的空閑狀態(tài)。
MSO/DPO4000 系列強(qiáng)大的FlexRay 功能集如圖26 所示,其中我們觸發(fā)了Frame ID = 4 和Cycle Count = 0組合,捕獲了大約80 個(gè)FlexRay 幀,解碼了整個(gè)采集,然后讓示波器搜索采集數(shù)據(jù),找到和標(biāo)記發(fā)生的所有同步幀。所有這一切只需使用100,000 點(diǎn)的記錄長度完成。MSO/DPO4000 系列在所有通道上可以實(shí)現(xiàn)深10M 點(diǎn)的記錄長度,捕獲串行活動(dòng)的長時(shí)間窗口。
MSO/DPO4000 系列FlexRay觸發(fā)功能包括下述類型:
幀頭-觸發(fā)幀頭序列(FSS)的后沿。
指示符位-觸發(fā)正常幀、凈荷幀、空幀、同步幀或啟動(dòng)幀。
標(biāo)識(shí)符-觸發(fā)特定幀號或一個(gè)幀號范圍。
循環(huán)數(shù)量-觸發(fā)特定的循環(huán)數(shù)量值或一個(gè)循環(huán)數(shù)量值范圍。
包頭字段-觸發(fā)任意包頭字段或所有包頭字段中用戶指定值的組合,包括指示符位、幀號、凈荷長度、包頭CRC 和循環(huán)數(shù)量。
數(shù)據(jù)-觸發(fā)多16 個(gè)字節(jié)的數(shù)據(jù)。數(shù)據(jù)窗口可以偏移幀中用戶指定字節(jié)數(shù)及非常長的數(shù)據(jù)凈荷。可以作為特定值或取值范圍指定所需的數(shù)據(jù)。
標(biāo)識(shí)符和數(shù)據(jù)- 觸發(fā)幀號和數(shù)據(jù)組合。
幀尾-觸發(fā)靜態(tài)幀、動(dòng)態(tài)幀或所有幀。
錯(cuò)誤- 觸發(fā)大量的不同錯(cuò)誤類型,包括包頭CRC錯(cuò)誤、包尾CRC 錯(cuò)誤、空幀錯(cuò)誤、同步幀錯(cuò)誤和啟動(dòng)幀錯(cuò)誤。
|
圖26. 觸發(fā)幀號和循環(huán)數(shù),搜索采集的數(shù)據(jù),找到啟動(dòng)幀。
圖27. FlexRay 信號的眼圖分析。
圖28. 在CAN 總線采集中搜索指定的標(biāo)識(shí)符的數(shù)據(jù)。 |
除上面介紹的觸發(fā)和解碼功能外,DPO4AUTOMAX 還提供了FlexRay眼圖分析功能,幫助診斷物理層問題。用戶只需把軟件包裝到PC 上,通過LAN 或USB 把PC 連接到示波器,點(diǎn)擊Acquire Data按鈕,就可以獲得信息豐富的顯示畫面,如圖27 所示。分析功能包括:
眼圖- 使用采集中的所有信息構(gòu)建眼圖,當(dāng)前選擇的幀用藍(lán)色突出顯示。與TP1或TP4模板簡便地進(jìn)行對比,違規(guī)的地方用紅色突出顯示。
解碼-在模擬波形上解碼當(dāng)前選擇的幀,整個(gè)采集在下面的表格中解碼。
時(shí)間間隔誤差(TIE)圖-簡便地目測幀內(nèi)的抖動(dòng)。
錯(cuò)誤校驗(yàn)- 錯(cuò)誤用紅色突出顯示。計(jì)算包頭和包尾CRC,并與傳送的幀進(jìn)行對比。
定時(shí)測量-上升時(shí)間、下降時(shí)間、TSS 時(shí)長、幀時(shí)間、平均位時(shí)間、前一個(gè)同步、下一個(gè)同步、前一個(gè)周期幀、下一個(gè)周期幀。
查找-根據(jù)分組內(nèi)容隔離感興趣的特定幀。
保存-把解碼后的采集保存到.csv 文件中,以進(jìn)一步離線分析。
由于提供了這套完善的FlexRay觸發(fā)功能及前面討論的CAN 和LIN 功能,MSO/DPO4000 系列已經(jīng)成為的汽車設(shè)計(jì)調(diào)試工具。 |
觸發(fā)與搜索
正如我們在本應(yīng)用指南中討論的那樣,必需擁有強(qiáng)大的觸發(fā)系統(tǒng),隔離串行總線上感興趣的事件。但是,一旦已經(jīng)采集了數(shù)據(jù)(示波器被停止),而且想分析數(shù)據(jù),那么觸發(fā)就沒有什么用了。如果示波器具有類似觸發(fā)的資源、分析停止的波形數(shù)據(jù)不是更好嗎?MSO/DPO系列的Wave Inspector為您提供了強(qiáng)大的搜索功能。本文中討論的所有總線觸發(fā)功能還作為已采集數(shù)據(jù)的搜索標(biāo)準(zhǔn)使用。例如,在圖18中,示波器已經(jī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)測試測量工具,觸發(fā)查找的事件要困難得多,這些工具僅僅查看模擬信號,幾乎不可能告訴用戶其提供了哪些信息,而且手動(dòng)解碼長時(shí)間的總線活動(dòng)、診斷問題是非常耗時(shí)、非常容易出錯(cuò)的過程。MSO/DPO系列改變了這一切。由于其強(qiáng)大的觸發(fā)、解碼和搜索功能,當(dāng)前的設(shè)計(jì)工程師可以以極高的效率解決嵌入式系統(tǒng)設(shè)計(jì)問題。 |
|
MSO/DPO4000 系列
|
DPO3000 系列
|
MSO/DPO2000 系列
|
帶寬
|
1GHz,500MHz,350 MHz
|
500MHz,300MHz,100MHz
|
200MHz,100MHz
|
通道數(shù)量
|
2條或4條模擬通道
16條數(shù)字通道(MSO系列)
|
2條或4條模擬通道
|
2條或4條模擬通道
16條數(shù)字通道(MSO系列)
|
記錄長度(所有通道)
|
10 M
|
5 M
|
1 M
|
采樣率(模擬)
|
5 GS/s*, 2.5 GS/s
|
2.5 GS/s
|
1 GS/s
|
彩色顯示器
|
10.4 英寸XGA
|
9 英寸WVGA
|
7 英寸WQVGA
|
串行總線觸發(fā)和分析模塊
|
DPO4EMBD: I2C, SPI
DPO4COMP:
RS-232/422/485/UART
DPO4AUTO: CAN, LIN
DPO4AUTOMAX:
CAN, LIN, FlexRay
|
DPO3EMBD: I2C, SPI
DPO3COMP:
RS-232/422/485/UART
DPO3AUTO: CAN, LIN
|
DPO2EMBD: I2C, SPI
DPO2COMP
RS-232/422/485/UART
DPO2AUTO: CAN, LIN
|
同時(shí)顯示的
串行總線數(shù)量
|
4
|
2
|
2
|
*1 GHz 帶寬型號。
|
|