調(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)。嵌入式系統(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)測(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)路徑??赡苡?6條地址線、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)。
這條消息包含幀頭、標(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)編程也不是件好玩的事。必須找到一種更好的方式!
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等等。
評(píng)論