SPI是串行外設(shè)接口(Serial Peripheral Interface)的縮寫,是一種高速、全雙工、同步的通信總線,并且在芯片的管腳上只占用四根線,節(jié)約了芯片的管腳,同時為PCB的布局上節(jié)省空間,提供方便。其現(xiàn)已發(fā)展成為一種工業(yè)標(biāo)準(zhǔn),目前,各半導(dǎo)體公司推出了大量的帶有SPI接口的具有各種各樣功能的芯片,如RAM,EEPROM,F(xiàn)lashROM,A/D(D/A)轉(zhuǎn)換器、LED顯示驅(qū)動器、I/O接口芯片、實時時鐘、UART收發(fā)器等等,為用戶的外圍擴展提供了極其靈活而經(jīng)濟的選擇。這也使得對SPI信號的測試分析需求更加廣泛。
SPI總線包含四種輸出方式(SPI0,SPI1,SPI2,SPI3),SPI0和SPI3方式比較常用。SPI模塊為了和外設(shè)進行數(shù)據(jù)交換,根據(jù)外設(shè)工作要求,其輸出串行同步時鐘極性和相位可以進行配置,時鐘極性(CPOL)對傳輸協(xié)議沒有重大的影響。如果CPOL=0,串行同步時鐘的空閑狀態(tài)為低電平;如果CPOL=1,串行同步時鐘的空閑狀態(tài)為高電平。時鐘相位(CPHA)能夠配置用于選擇兩種不同的傳輸協(xié)議之一進行數(shù)據(jù)傳輸。如果CPHA=0,在串行同步時鐘的第一個跳變沿(上升或下降沿)數(shù)據(jù)即被采樣;如果CPHA=1,在串行同步時鐘的第二個(上升或下降沿)數(shù)據(jù)才被采樣。
圖1 SPI信號四種輸出方式時序圖
SPI總線測試需求
工程師對SPI總線測試和分析的需求主要涵蓋以下兩個方面:
1.了解總線正在發(fā)生什么:軟件工程師設(shè)計SPI主設(shè)備發(fā)出的消息內(nèi)容,硬件工程師則需要確定消息是不是被準(zhǔn)確無誤的傳送到從設(shè)備上。傳統(tǒng)的方法是使用示波器把信號捕獲下來,然后根據(jù)高低電平特點轉(zhuǎn)換成“1”或“0”,然后再去對比SPI協(xié)議,將其還原成有意義的消息幀。顯然這種方式費時費力,在轉(zhuǎn)換的過程中還容易出錯。SDS3000X系列智能示波器支持SPI總線解碼功能,可以直接對總線傳輸信號進行觸發(fā)解碼。并以不同的方式動態(tài)顯示在示波器屏幕上。不同的顯示方式可以更好地適應(yīng)不同的分析需求:比如硬件工程師可能希望以二進制的方式查看SPI消息內(nèi)容,底層驅(qū)動工程師希望以16進制方式分析波形,而應(yīng)用軟件工程師則希望以ASCII碼的方式去了解總線上實際運行的數(shù)據(jù)內(nèi)容。
2.調(diào)試總線上有故障的節(jié)點:SPI設(shè)備可以實現(xiàn)一個主設(shè)備連接多個從設(shè)備的需求,通過片選信號(SS/CS)來選擇需要操作的從設(shè)備。當(dāng)主設(shè)備切換傳輸對象的時候,我們需要關(guān)注總線所發(fā)送的信息是否與所選擇的從設(shè)備一致。有可能出現(xiàn)所發(fā)送的信息與當(dāng)前所選擇的從設(shè)備并不一致的狀況。
SPI總線模擬測試方法
本例中我們使用SDS3000X系列智能示波器以及STB-3信號演示板進行單向SPI總線測試模擬。
圖2 實驗連接圖
單向的SPI總線信號包括一根時鐘線SCLK、一根片選信號線CS和一根數(shù)據(jù)線SDA,可由鼎陽的STB-3板模擬輸出,其輸出信號速率為1Mbps,數(shù)據(jù)內(nèi)容為:(XX為隨機字符)96'h53_49_47_4C_45_4E_54_5F_XX_XX_XX_XX。
SPI觸發(fā)
SPI 總線是為芯片間的數(shù)據(jù)通信而設(shè)計的,因此,在大多數(shù)情況下,由于傳輸數(shù)據(jù)的不同使得信號并非周期性信號。這就要求在對該總線進行測試時,要能準(zhǔn)確地觸發(fā)到數(shù)據(jù)幀的“頭”,并將其“穩(wěn)定”顯示在儀器上,便于觀察和分析。
SDS3000X系列智能示波器支持串行總線觸發(fā)功能,按下前面板上側(cè)菜單欄區(qū)域的“觸發(fā)–觸發(fā)設(shè)置”喚出觸發(fā)設(shè)置對話框,設(shè)定好信號對應(yīng)的探頭(本例設(shè)置為CH1:SDA;CH2: SCLK;CH3:CS),就可以直接對SPI信號進行觸發(fā)。
圖3 SPI信號觸發(fā)功能
在模擬測試前,我們已知STB-3演示板所輸出的SPI信號輸出方式為SPI3(在實際測試中,SPI從設(shè)備的工作模式也會在數(shù)據(jù)手冊里標(biāo)明,或者在時序圖中給出)。因此我們在觸發(fā)的時候就要進行相應(yīng)的配置。SDS3000X智能示波器支持在觸發(fā)和解碼時對SPI輸出方式進行選擇。
圖4 SPI觸發(fā)信號設(shè)置
PS:SDS3000X系列智能示波器支持串行總線觸發(fā)解碼功能,支持的協(xié)議有IIC、IIS、SPI、UART/RS232、LIN、CAN、CAN-FD、FlexRay、MIL 1553、USB 2.0。
SPI解碼
在成功捕獲到待測試的SPI總線信號后,接下來我們關(guān)注的問題是對SPI總線信號進行解碼。
如圖5所示,選擇“分析-串行解碼”選項,進行相應(yīng)設(shè)置,即可獲得解碼的結(jié)果,并可以列表顯示出來,便于查看。(解碼的結(jié)果可以二進制、16進制以及ASCALL碼的形式顯示)
圖5 SPI解碼設(shè)置
圖6 SPI解碼結(jié)果(十六進制)
解碼的結(jié)果與輸入信號一致。
以上只是簡單的使用SDS3000X系列智能示波器對SPI信號進行觸發(fā)和解碼。在實際應(yīng)用中,SDS3000X系列智能示波器的串行總線觸發(fā)解碼功能可以快速的使我們獲得“總線上正在發(fā)生什么”;并可根據(jù)示波器界面所呈現(xiàn)的解碼結(jié)果分析總線所傳輸?shù)牡男畔⑹欠窈臀覀冾A(yù)想的一致,從而精準(zhǔn)快速地發(fā)現(xiàn)故障點并進行調(diào)試。