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