SPI 背景知識 串行外設(shè)接口總線(SPI)zui初是摩托羅拉在20世紀(jì)80年代末為其68000 系列微控制器研制的。由于該總線簡單、流行,許多其它制造商也已經(jīng)采用這一標(biāo)準(zhǔn)。它現(xiàn)在用于嵌入式系統(tǒng)設(shè)計(jì)常用的各種器件中。SPI主要用于微控制器和直接外設(shè)之間。它通常用于、PDA和其它移動設(shè)備中,在CPU、鍵盤、顯示器和內(nèi) 存芯片之間通信。 |
工作方式 SPI (串行外設(shè)接口)總線是一種主/從結(jié)構(gòu)的4線串行通信總線。4個信號是時鐘(SCLK), 主輸出/從輸入(MOSI), 主輸入/從輸出(MISO)和從選擇(SS)。在兩臺設(shè)備通信時,一臺設(shè)備稱為“主設(shè)備”,另一臺設(shè)備稱為“從設(shè)備”。主設(shè)備驅(qū)動串行時鐘。它同時收發(fā)數(shù)據(jù),因此是一種全雙工協(xié)議。SPI 使用SS 線路指明與哪臺設(shè)備傳送數(shù)據(jù),而不是總線上的每臺設(shè)備都有一個*的地址。這樣,總線上的每臺*的設(shè)備都需要從主設(shè)備提供自己的SS 信號。如果有3 臺從設(shè)備,那么主設(shè)備有 3 條SS 引線,每條引線都連接到每臺從設(shè)備上,如圖 8 所示。 在圖8 中,每臺從設(shè)備只與主設(shè)備通話。但是,SPI可以串聯(lián)多臺從設(shè)備,每臺從設(shè)備依次進(jìn)行操作,然后把結(jié)果發(fā)回主設(shè)備,如圖9所示。因此您可以看到,SPI實(shí)現(xiàn)方案沒有“標(biāo)準(zhǔn)”。在某些情況下,在不要求從設(shè)備向回到主設(shè)備通信時,MISO 信號可以*省略。 在SPI數(shù)據(jù)傳送發(fā)生時,8位數(shù)據(jù)字移出MOSI,不同的8位數(shù)據(jù)字移入MISO。這可以視為16 位循環(huán)位移寄存器。在傳送發(fā)生時,這個16 位位移寄存器位移8 個位置,從而在主設(shè)備和從設(shè)備之間交換8位數(shù)據(jù)。一對寄存器 - 時鐘極性(CPOL)和時鐘相位(CPHA)決定著驅(qū)動數(shù)據(jù)的時鐘邊沿。每個寄存器有兩種可能的狀態(tài),支持四種可能的組合,所有這些組合互不兼容。因此,主/從設(shè)備對必須使用相同的參數(shù)值進(jìn)行通信。如果使用多個固定在不同配置的從設(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 總線連接到一個合成器、一個DAC及某個I/O 上。合成器連接到VCO上,VCO為其余系統(tǒng)提供一個 2.5 GHz 時鐘。在啟動時,CPU應(yīng)該對合成器編程。但是不知道哪里出了問題,VCO在產(chǎn)生3 GHz的信號。調(diào)試這個問題的*步是考察CPU和合成器之間的信號,確定存在信號,沒有物理連接問題,但我們找不到發(fā)生了什么問題。然后,我們決定看一下SPI 總線上傳送的合成器編程使用的實(shí)際信息。為捕獲這些信息,我們把示波器設(shè)成在合成器Slave Select信號激活時觸發(fā)采集,并對DUT 通電,捕獲啟動編程命令。采集結(jié)果如圖12 所示。 通道1 (黃色) 是SCLK,通道2 (青色) 是MOSI,通道3(洋紅色) 是SS。為確定我們是否對設(shè)備正確編程,我們看一下合成器的產(chǎn)品資料??偩€上的前三個消息假設(shè)是初始化合成器、加載分路器比率、鎖存數(shù)據(jù)。根據(jù)技術(shù)數(shù)據(jù),前三個傳送中zui后半個字節(jié) (一個十六進(jìn)制字符)應(yīng)該分別是3, 0 和1,但我們看到的是0, 0 和0。在消息末尾全是0 時,我們認(rèn)識到,我們在SPI 中犯了一個zui常見的錯誤,即在軟件中以相反的順序在每個24位字中對各個位編程。在迅速改變軟件配置后,得到下面的采集,VCO 正確鎖定在2.5 GHz,如圖13 所示。 在上面的實(shí)例中,我們使用簡單的SS Active 觸發(fā)。MSO/DPO 系列中完整的SPI 觸發(fā)功能包括下述類型: SS Active - 在從設(shè)備選擇行對從設(shè)備變真時觸發(fā)。 MOSI - 在從主設(shè)備到從設(shè)備用戶zui多16 個字節(jié)時觸發(fā)。 MISO - 在從設(shè)備到主設(shè)備用戶zui多16 個字節(jié)時觸發(fā)。 MOSI/MISO - 在主設(shè)備到從設(shè)備及從設(shè)備到主設(shè)備用戶zui多16 個字節(jié)時觸發(fā)。 這些觸發(fā)也可以隔離感興趣的特定總線業(yè)務(wù),解碼功能則可以立即查看采集中總線傳送的每條消息的內(nèi)容。 | 圖11.通過SPI控制的合成器
圖12. 采集SPI 總線之外的合成器配置消息。
圖13. 正確的合成器配置消息。 |
RS-232 背景知識 RS-232是近距離的兩臺設(shè)備之間進(jìn)行串行通信廣泛使用的標(biāo)準(zhǔn),它主要用于PC 串行端口,另外也用于嵌入式系統(tǒng),作為調(diào)試端口使用或連接兩臺設(shè)備。RS-232-C標(biāo)準(zhǔn)于1969年問世,之后標(biāo)準(zhǔn)修訂了兩次,但變化很小,其信號能夠與RS-232-C 互通。業(yè)內(nèi)還有幾個相關(guān)標(biāo)準(zhǔn),如RS-422 和RS-485,這些標(biāo)準(zhǔn)類似,但使用差分信令在遠(yuǎn)距離內(nèi)通信。 工作方式 兩臺設(shè)備稱為DTE (數(shù)據(jù)終端設(shè)備)和DCE (數(shù)據(jù)電路端接設(shè)備)。在某些應(yīng)用中,DTE 設(shè)備控制著DCE 設(shè)備;在其它應(yīng)用中,這兩臺設(shè)備是對等的,DTE 和DCE 之間的區(qū)別可以是任意的。 RS-232標(biāo)準(zhǔn)規(guī)定了各種各樣的信號,許多信號并不常用。兩個zui重要的信號是發(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ī)定使用哪些連接器。zui常用的連接器是25針連接器和9針連接器。也可以使10 針、8 針或6 針連接器。還可以在不使用標(biāo)準(zhǔn)連接器的情況下,把同一塊電路板上的兩臺RS-232設(shè)備連接起來。 在連接兩臺RS-232 設(shè)備時,通常要求零訊號調(diào)制器。這種設(shè)備交換多條線路,包括Tx和Rx線路。通過這種方式,每臺設(shè)備可以在Tx 線路上發(fā)送數(shù)據(jù),在Rx 線路上接收數(shù)據(jù)。表2 顯示了RS-232 信號常用的9 針連接器使用的針腳輸出。記住,如果信號已經(jīng)傳過零訊號調(diào)制解調(diào)器,那么許多信號將被交換。zui重要的是,將交換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 |
|