調(diào)試嵌入式系統(tǒng)設(shè)計(jì)中的低速串行總線
引言
今天,嵌入式系統(tǒng)幾乎遍布在人類社會(huì)的每個(gè)角落。嵌入式系統(tǒng)可以簡單定義為屬于大型系統(tǒng)或機(jī)器一部分的一種專用計(jì)算機(jī)系統(tǒng),其目的是為該系統(tǒng)或機(jī)器提供監(jiān)測和控制服務(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ī)打印機(jī)
– 防抱死剎車控制器
– 微波爐
– 導(dǎo)彈使用的慣性引導(dǎo)系統(tǒng)
– DVD播放機(jī)
– 個(gè)人數(shù)字助理(PDA)
– 工業(yè)自動(dòng)化和監(jiān)測使用的可編程程控邏輯控制器(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)件將用串行總線代替寬并行總線,原因如下:
– 減少了要布線路由的信號數(shù)量,降低了要求的電路板空間
– 降低了成本
– 降低了功率要求
– 減少了封裝上的針腳數(shù)量
– 嵌入式時(shí)鐘
– 差分信令,改善抗噪聲能力
– 采用標(biāo)準(zhǔn)串行接口的器件大量供應(yīng)
盡管串行總線提供了大量的優(yōu)勢,但它們也給嵌入式系統(tǒng)設(shè)計(jì)人員帶來了某些重大挑戰(zhàn),因?yàn)樗源蟹绞絺魉托畔?,而不是以并行方式傳送信息。本?yīng)用指南討論了嵌入式系統(tǒng)設(shè)計(jì)人員的常用挑戰(zhàn),及怎樣使用泰克新推出的DPO4000系列示波器中提供的功能迎接這些挑戰(zhàn)。
并行與串行比較
在并行結(jié)構(gòu)中,總線的每個(gè)組件都有自己的信號路徑??赡苡?6條地址線、16條數(shù)據(jù)線、一條時(shí)鐘線和各種其它控制信號。通過總線發(fā)送的地址或數(shù)據(jù)值會(huì)通過所有并行線路同時(shí)傳送。因此,使用大多數(shù)示波器和邏輯分析儀中的狀態(tài)觸發(fā)或碼型觸發(fā)功能觸發(fā)感興趣的事件相對簡便。同時(shí),可以簡便地一目了然地了解在示波器或邏輯分析儀顯示屏上捕獲的數(shù)據(jù)。例如,在圖1中,我們使用邏輯分析儀從微控制器中采集時(shí)鐘線、地址線、數(shù)據(jù)線和控制線。通過使用狀態(tài)觸發(fā),我們隔離了我們查找的總線。為“解碼”總線上發(fā)生的情況,我們需要查看每條地址線、數(shù)據(jù)線和控制線的邏輯狀態(tài)。
在串行總線中,所有這些信息都必須以串行方式在相同的少數(shù)導(dǎo)線(有時(shí)是一條)上發(fā)送。這意味著一個(gè)信號可能包括地址信息、控制信息、數(shù)據(jù)信息和時(shí)鐘信息。例如,看一下圖2中所示的控制器區(qū)域網(wǎng)(CAN)串行信號。
這條消息包含幀頭、標(biāo)識符(地址)、數(shù)據(jù)長度代碼、數(shù)據(jù)、CRC和幀尾及少量其它控制位。時(shí)鐘嵌入在數(shù)據(jù)中,使用位填充位要保證接收設(shè)備擁有數(shù)量充足的邊沿鎖定時(shí)鐘,這使情況變得進(jìn)一步復(fù)雜化。即使是經(jīng)過訓(xùn)練的眼睛序列眼圖,也很難迅速了解這一消息的內(nèi)容?,F(xiàn)在想象一下這是一條有問題的消息,一天只發(fā)生一次,您需要觸發(fā)采集這條消息。傳統(tǒng)示波器和邏輯分析儀不能有效處理這類信號。
即使是比較簡單的串行標(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)。在長采集中解碼一條消息就會(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)編程也不是件好玩的事。必須找到一種更好的方式!
DPO4000系列提供了一種更好的方式。下面幾節(jié)重點(diǎn)介紹了可以怎樣在嵌入式系統(tǒng)設(shè)計(jì)最常用的低速串行標(biāo)準(zhǔn)中采用DPO4000系列。
I2C
背景知識
I2C或“I squared C”是指集成電路間總線。它最初是飛利浦公司在20世紀(jì)80年代研制的,為把控制器連接到電視機(jī)上的外設(shè)芯片提供了一種低成本方式,但之后其已經(jīng)發(fā)展成為嵌入式系統(tǒng)設(shè)備之間通信的一項(xiàng)全球標(biāo)準(zhǔ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等等。
評論