調(diào)試嵌入式系統(tǒng)設(shè)計(jì)中的低速串行總線
工作方式
SPI (串行外設(shè)接口)總線是一種主/從結(jié)構(gòu)的4線串行通信總線。4個(gè)信號(hào)是時(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信號(hào)。如果有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信號(hào)可以完全省略。
在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ù)。一對(duì)寄存器 - 時(shí)鐘極性(CPOL)和時(shí)鐘相位(CPHA)決定著驅(qū)動(dòng)數(shù)據(jù)的時(shí)鐘邊沿。每個(gè)寄存器有兩種可能的狀態(tài),支持四種可能的組合,所有這些組合互不兼容。因此,主/從設(shè)備對(duì)必須使用相同的參數(shù)值進(jìn)行通信。如果使用多個(gè)固定在不同配置的從設(shè)備,那么每次需要與不同的從設(shè)備通信時(shí),主設(shè)備必須重新進(jìn)行配置。
處理SPI
DPO4EMBD串行觸發(fā)和分析應(yīng)用模塊還可以為SPI總線實(shí)現(xiàn)類似的功能。我們可以再次使用前面板B1或B2按鈕,簡(jiǎn)單地輸入總線基本參數(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í)鐘。假設(shè)在啟動(dòng)時(shí),由CPU應(yīng)該對(duì)合成器編程。但是不知道哪里出了問題,在VCO固定在軌道上生成在產(chǎn)生3 GHz的信號(hào)時(shí),發(fā)生了某個(gè)問題。調(diào)試這個(gè)問題的第一步是考察CPU和合成器之間的信號(hào),確定存在信號(hào),沒有物理連接問題,但我們找不到發(fā)生了什么問題。然后,我們決定看一下SPI總線上傳送的合成器編程使用的實(shí)際信息。為捕獲這些信息,我們把示波器設(shè)成在合成器Slave Select信號(hào)激活時(shí)觸發(fā)采集,并對(duì)DUT通電,捕獲啟動(dòng)編程命令。采集結(jié)果如圖12所示。
通道1 (黃色)是SCLK,通道2 (青色)是MOSI,通道3 (洋紅色)是SS。為確定我們是否對(duì)設(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í)到,我們?cè)赟PI中犯了一個(gè)最常見的錯(cuò)誤,即在軟件中以相反的順序在每個(gè)24位字中對(duì)各個(gè)位編程。在迅速改變軟件配置后,得到下面的采集,VCO正確鎖定在2.5 GHz,如圖13所示。
在上面的實(shí)例中,我們使用簡(jiǎn)單的SS Active觸發(fā)。DPO4000系列中完整的SPI觸發(fā)功能包括下述類型:
– SS Active – 在從設(shè)備選擇行對(duì)從設(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ā)。
評(píng)論