首頁 | 新聞 | 新品 | 文庫 | 方案 | 視頻 | 下載 | 商城 | 開發板 | 數據中心 | 座談新版 | 培訓 | 工具 | 博客 | 論壇 | 百科 | GEC | 活動 | 主題月 | 電子展
返回列表 回復 發帖

Loto實踐干貨(6)用示波器+邏輯分析儀進行SPI解碼

Loto實踐干貨(6)用示波器+邏輯分析儀進行SPI解碼

SPI,是一種高速的,全雙工,同步的通信總線,并且在芯片的管腳上只占用四根線,節約了芯片的管腳。SPI以主從方式工作模式被廣泛應用于電路系統中,我結合自己的項目情況對SPI協議進行解析,并通過LOTO虛擬示波器采集到的數據波形并進行對比分析,方便大家的理解。

SPI通信協議一般只需要四根線將主控芯片與從芯片連接起來,其中四根線分別為:
(1)SDO     – 主設備數據輸出,從設備數據輸入
(2)SDI      – 主設備數據輸入,從設備數據輸出
(3)SCLK   – 時鐘信號,由主設備產生
(4)CS        – 從設備使能信號,由主設備控制

其中CS是控制芯片是否被選中的,也就是說只有片選信號為預先規定的使能信號時(高電位或低電位),對此芯片的操作才有效。這就允許在同一總線上連接多個SPI設備成為可能。

實踐6圖1.jpg



實際應用中只需要三根線來進行通信。在SPI是串行通訊協議下,數據是一位一位的傳輸的。這就是SCLK時鐘線存在的原因,由SCLK提供時鐘脈沖,SDO則基于此脈沖完成數據傳輸。數據輸出通過 SDO線在時鐘上升沿或下降沿時改變,完成一位數據傳輸。輸入也使用同樣原理。在至少8次時鐘信號的改變(上沿和下沿為一次),就可以完成8位數據(一個字節數據)的傳輸。下面是項目中所涉及的SPI通信協議的時序圖為16位數據。

      這是我初次嘗試失敗了的例子,使用LOTO的USB示波器OSCA02采集到的對應波形如下圖所示。


實踐6圖2.jpg





地線過長導致這個信號的噪聲比較大,但其實失敗的根本原因是,我的示波器只有兩個輸入通道,所以只能看主要的 時鐘和一路數據的對應關系,遠遠做不到解碼,大家可以直觀的感受下實際的SPI信號的樣子,后面有彩蛋。      
  在一個基于SPI的設備中,至少有一個主控設備。這樣傳輸的特點:與普通的串行通訊不同,普通的串行通訊一次連續傳送至少8位數據,而SPI允許數據一位一位的傳送,甚至允許暫停。當沒有時鐘跳變時,從設備不采集或傳送數據。主設備通過對SCLK時鐘線的控制可以完成對通訊的控制。因為SPI的數據輸入和輸出線獨立,所以允許同時完成數據的輸入和輸出。不同的SPI設備的實現方式有所不同,主要是數據改變和采集的時間不同,在時鐘信號上沿或下沿采集有不同定義。

SPI接口不需要進行尋址操作,且為全雙工通信,簡單高效。硬件上比I2C系統要稍微復雜一些。由于SPI沒有指定的流控制,沒有應答機制確認是否接收到數據。

            在自己的項目中只用到數據輸出模式,因此SPI可串行3線方式進行通信:一條時鐘線SCLK,一條輸出控制線CS,一條數據輸出線SDO;

SPI 模塊為了和外設進行數據交換,其輸出串行同步時鐘極性和相位可以進行配置,時鐘極性(CPOL)對傳輸協議沒有重大的影響。如果 CPOL=0,串行同步時鐘的空閑狀態為低電平;如果CPOL=1,串行同步時鐘的空閑狀態為高電平。時鐘相位(CPHA)能夠配置用于選擇兩種不同的傳輸協議之一進行數據傳輸。如果CPHA=0,在串行同步時鐘的第一個跳變沿(上升或下降)數據被采樣;如果CPHA=1,在串行同步時鐘的第二個跳變沿(上升或下降)數據被采樣。SPI主模塊和與之通信的外設備時鐘相位和極性應該一致。


實踐6圖3.jpg



主設備配置SPI接口時鐘的時要弄清楚從設備的時鐘要求,因為主設備的時鐘極性和相位都是以從設備為基準的。因此在時鐘極性的配置上一定要搞清楚從設備是在時鐘的上升沿還是下降沿接收數據,是在時鐘的下降沿還是上升沿輸出數據。

     現在,我的示波器升級成了OSCA02L,是示波器加邏輯分析儀一體的了,所以這次完全有機會做到測4線SPI和解碼,


實踐6圖4.jpg



實踐6圖5.jpg



有了上面的基礎,我把這次使用USB虛擬示波器+邏輯分析儀做SPI測試和解碼的過程,拍了視頻,比圖文更直觀,如下所示:
https://www.bilibili.com/video/BV1na4y1e72c
好好學習,努力賺錢!
返回列表
夏娃直播下载路线_夏娃直播下载安装_夏娃直播下载并安装