SPI總線簡介
SPI是串行外設接口(Serial Peripheral Interface)的縮寫,是一種高速、全雙工、同步的通信總線,并且在芯片的管腳上只占用四根線,節約了芯片的管腳,同時為PCB的布局上節省空間,提供方便。其現已發展成為一種工業標準,目前,各半導體公司推出了大量的帶有SPI接口的具有各種各樣功能的芯片,如RAM,EEPROM,FlashROM,A/D(D/A)轉換器、LED顯示驅動器、I/O接口芯片、實時時鐘、UART收發器等等,為用戶的外圍擴展提供了極其靈活而經濟的選擇。這也使得對SPI信號的測試分析需求更加廣泛。
SPI總線包含四種輸出方式(SPI0,SPI1,SPI2,SPI3),SPI0和SPI3方式比較常用。SPI模塊為了和外設進行數據交換,根據外設工作要求,其輸出串行同步時鐘極性和相位可以進行配置,時鐘極性(CPOL)對傳輸協議沒有重大的影響。如果CPOL=0,串行同步時鐘的空閑狀態為低電平;如果CPOL=1,串行同步時鐘的空閑狀態為高電平。時鐘相位(CPHA)能夠配置用于選擇兩種不同的傳輸協議之一進行數據傳輸。如果CPHA=0,在串行同步時鐘的第一個跳變沿(上升或下降沿)數據即被采樣;如果CPHA=1,在串行同步時鐘的第二個(上升或下降沿)數據才被采樣。
圖1 SPI信號四種輸出方式時序圖
SPI總線測試需求
工程師對SPI總線測試和分析的需求主要涵蓋以下兩個方面:
1.了解總線正在發生什么:軟件工程師設計SPI主設備發出的消息內容,硬件工程師則需要確定消息是不是被準確無誤的傳送到從設備上。傳統的方法是使用示波器把信號捕獲下來,然后根據高低電平特點轉換成“1”或“0”,然后再去對比SPI協議,將其還原成有意義的消息幀。顯然這種方式費時費力,在轉換的過程中還容易出錯。SDS3000X系列智能示波器支持SPI總線解碼功能,可以直接對總線傳輸信號進行觸發解碼。并以不同的方式動態顯示在示波器屏幕上。不同的顯示方式可以更好地適應不同的分析需求:比如硬件工程師可能希望以二進制的方式查看SPI消息內容,底層驅動工程師希望以16進制方式分析波形,而應用軟件工程師則希望以ASCII碼的方式去了解總線上實際運行的數據內容。
2.調試總線上有故障的節點:SPI設備可以實現一個主設備連接多個從設備的需求,通過片選信號(SS/CS)來選擇需要操作的從設備。當主設備切換傳輸對象的時候,我們需要關注總線所發送的信息是否與所選擇的從設備一致。有可能出現所發送的信息與當前所選擇的從設備并不一致的狀況。
SPI總線模擬測試方法
本例中我們使用SDS3000X系列智能示波器以及STB-3信號演示板進行單向SPI總線測試模擬。
圖2 實驗連接圖
單向的SPI總線信號包括一根時鐘線SCLK、一根片選信號線CS和一根數據線SDA,可由鼎陽的STB-3板模擬輸出,其輸出信號速率為1Mbps,數據內容為:(XX為隨機字符)96'h53_49_47_4C_45_4E_54_5F_XX_XX_XX_XX。
SPI觸發
SPI 總線是為芯片間的數據通信而設計的,因此,在大多數情況下,由于傳輸數據的不同使得信號并非周期性信號。這就要求在對該總線進行測試時,要能準確地觸發到數據幀的“頭”,并將其“穩定”顯示在儀器上,便于觀察和分析。