原文鏈接:https://www.analog.com/cn/analog-dialogue/articles/introduction-to-spi-interface.html之前詳細介紹過SPI協(xié)議,今天分享一篇ADI官方文檔AN-1284:SPI接口介紹串行外設接口(SPI)是微控制器和外圍IC(如傳感器、ADC、DAC、移位寄存器、SRAM等)之間使用較廣泛的接口之一。本文先簡要說明SPI接口,然后介紹ADI公司支持SPI的模擬開關與多路轉換器,以及它們如何幫助減少系統(tǒng)電路板設計中的數(shù)字GPIO數(shù)量。SPI是一種同步、全雙工、主從式接口。來自主機或從機的數(shù)據(jù)在時鐘上升沿或下降沿同步。
主機和從機可以同時傳輸數(shù)據(jù)。SPI接口可以是
3線式或4線式。本文重點介紹常用的4線SPI接口。
接口
4線SPI器件有四個信號:
- 時鐘(SPI CLK, SCLK)
- 片選(CS)
- 主機輸出、從機輸入(MOSI)
- 主機輸入、從機輸出(MISO)
產(chǎn)生時鐘信號的器件稱為主機。主機和從機之間傳輸?shù)臄?shù)據(jù)與主機產(chǎn)生的時鐘同步。同I2C接口相比,SPI器件支持更高的時鐘頻率。用戶應查閱產(chǎn)品數(shù)據(jù)手冊以了解SPI接口的時鐘頻率規(guī)格。SPI接口只能有一個主機,但可以有一個或多個從機。圖1顯示了主機和從機之間的SPI連接。來自主機的片選信號用于選擇從機。這通常是一個低電平有效信號,拉高時從機與SPI總線斷開連接。當使用多個從機時,主機需要為每個從機提供單獨的片選信號。本文中的片選信號始終是低電平有效信號。MOSI和MISO是數(shù)據(jù)線。MOSI將數(shù)據(jù)從主機發(fā)送到從機,MISO將數(shù)據(jù)從從機發(fā)送到主機。
數(shù)據(jù)傳輸
要開始SPI通信,主機必須發(fā)送時鐘信號,并通過使能CS信號選擇從機。片選通常是低電平有效信號。因此,主機必須在該信號上發(fā)送邏輯0以選擇從機。SPI是全雙工接口,主機和從機可以分別通過MOSI和MISO線路同時發(fā)送數(shù)據(jù)。在SPI通信期間,數(shù)據(jù)的發(fā)送(串行移出到MOSI/SDO總線上)和接收(采樣或讀入總線(MISO/SDI)上的數(shù)據(jù))同時進行。串行時鐘沿同步數(shù)據(jù)的移位和采樣。SPI接口允許用戶靈活選擇時鐘的上升沿或下降沿來采樣和/或移位數(shù)據(jù)。欲確定使用
SPI接口傳輸?shù)臄?shù)據(jù)位數(shù),請參閱器件數(shù)據(jù)手冊。
時鐘極性和時鐘相位
在SPI中,主機可以選擇時鐘極性和時鐘相位。在空閑狀態(tài)期間,CPOL位設置時鐘信號的極性??臻e狀態(tài)是指傳輸開始時CS為高電平且在向低電平轉變的期間,以及傳輸結束時CS為低電平且在向高電平轉變的期間。CPHA位選擇時鐘相位。根據(jù)CPHA位的狀態(tài),使用時鐘上升沿或下降沿來采樣和/或移位數(shù)據(jù)。主機必須根據(jù)從機的要求選擇時鐘極性和時鐘相位。根據(jù)CPOL和CPHA位的選擇,有四種SPI模式可用。表1顯示了這4種SPI模式。
SPI 模式 | CPOL | CPHA | 空閑狀態(tài)下的時鐘極性 | 用于采樣和/或移位數(shù)據(jù)的時鐘相應 |
---|
0 | 0 | 0 | 邏輯低電平 | 數(shù)據(jù)在上升沿采樣,在下降沿移出 |
1 | 0 | 1 | 邏輯低電平 | 數(shù)據(jù)在下降沿采樣,在上升沿移出 |
2 | 1 | 1 | 邏輯低電平 | 數(shù)據(jù)在下降沿采樣,在上升沿移出 |
3 | 1 | 0 | 邏輯低電平 | 數(shù)據(jù)在上升沿采樣,在下降沿移出 |
圖2至圖5顯示了四種SPI模式下的通信示例。在這些示例中,數(shù)據(jù)顯示在MOSI和MISO線上。傳輸?shù)拈_始和結束用綠色虛線表示,采樣邊沿用橙色虛線表示,移位邊沿用藍色虛線表示。請注意,這些圖形僅供參考。要成功進行SPI通信,用戶須參閱產(chǎn)品數(shù)據(jù)手冊并確保滿足器件的時序規(guī)格。圖2. SPI模式0,CPOL = 0,CPHA = 0:CLK空閑狀態(tài) = 低電平,數(shù)據(jù)在上升沿采樣,并在下降沿移出。圖3給出了SPI模式1的時序圖。在此模式下,時鐘極性為0,表示時鐘信號的空閑狀態(tài)為低電平。此模式下的時鐘相位為1,表示數(shù)據(jù)在下降沿采樣(由橙色虛線顯示),并且數(shù)據(jù)在時鐘信號的上升沿移出(由藍色虛線顯示)。
圖3. SPI模式1,CPOL = 0,CPHA = 1:CLK空閑狀態(tài) = 低電平,數(shù)據(jù)在下降沿采樣,并在上升沿移出。圖4給出了SPI模式2的時序圖。在此模式下,時鐘極性為1,表示時鐘信號的空閑狀態(tài)為高電平。此模式下的時鐘相位為1,表示數(shù)據(jù)在下降沿采樣(由橙色虛線顯示),并且數(shù)據(jù)在時鐘信號的上升沿移出(由藍色虛線顯示)。
圖4. SPI模式2,CPOL = 1,CPHA = 1:CLK空閑狀態(tài) = 高電平,數(shù)據(jù)在下降沿采樣,并在上升沿移出。圖5給出了SPI模式3的時序圖。在此模式下,時鐘極性為1,表示時鐘信號的空閑狀態(tài)為高電平。此模式下的時鐘相位為0,表示數(shù)據(jù)在上升沿采樣(由橙色虛線顯示),并且數(shù)據(jù)在時鐘信號的下降沿移出(由藍色虛線顯示)。
圖5. SPI模式3,CPOL = 1,CPHA = 0:CLK空閑狀態(tài) = 高電平,數(shù)據(jù)在上升沿采樣,并在下降沿移出。
多從機配置
多個從機可與單個SPI主機一起使用。從機可以采用常規(guī)模式連接,或采用菊花鏈模式連接。
常規(guī)SPI模式:
圖6. 多從機SPI配置。在常規(guī)模式下,主機需要為每個從機提供單獨的片選信號。一旦主機使能(拉低)片選信號,MOSI/MISO線上的時鐘和數(shù)據(jù)便可用于所選的從機。如果使能多個片選信號,則MISO線上的數(shù)據(jù)會被破壞,因為主機無法識別哪個從機正在傳輸數(shù)據(jù)。從圖6可以看出,隨著從機數(shù)量的增加,來自主機的片選線的數(shù)量也增加。這會快速增加主機需要提供的輸入和輸出數(shù)量,并限制可以使用的從機數(shù)量??梢允褂闷渌夹g來增加常規(guī)模式下的從機數(shù)量,例如使用多路復用器產(chǎn)生片選信號。
菊花鏈模式:
圖7. 多從機SPI菊花鏈配置。在菊花鏈模式下,所有從機的片選信號連接在一起,數(shù)據(jù)從一個從機傳播到下一個從機。在此配置中,所有從機同時接收同一SPI時鐘。來自主機的數(shù)據(jù)直接送到第一個從機,該從機將數(shù)據(jù)提供給下一個從機,依此類推。使用該方法時,由于數(shù)據(jù)是從一個從機傳播到下一個從機,所以傳輸數(shù)據(jù)所需的時鐘周期數(shù)與菊花鏈中的從機位置成比例。例如在圖7所示的8位系統(tǒng)中,為使第3個從機能夠獲得數(shù)據(jù),需要24個時鐘脈沖,而常規(guī)SPI模式下只需8個時鐘脈沖。圖8顯示了時鐘周期和通過菊花鏈的數(shù)據(jù)傳播。
并非所有SPI器件都支持菊花鏈模式。請參閱產(chǎn)品數(shù)據(jù)手冊以確認菊花鏈是否可用。最先傳輸?shù)?xA5將會被配置到最遠端的SPI器件,而最后傳輸?shù)?x0A將會被配置到最近的SPI器件,所有的配置數(shù)據(jù)將會在CS的下降沿進行更新。
圖8. 菊花鏈配置:數(shù)據(jù)傳播。
文檔下載
中文版:
https://www.analog.com/media/cn/analog-dialogue/volume-52/number-3/introduction-to-spi-interface_cn.pdf英文版:
https://www.analog.com/media/cn/technical-documentation/application-notes/AN-1248.pdf本文作者
Piyu DhakerPiyu Dhaker是ADI公司北美核心應用部門的應用工程師。2007年畢業(yè)于圣何塞大學,獲電氣工程碩士學位。2017年6月加入北美核心應用部門。此前,她也在
ADI公司的汽車傳動系統(tǒng)部門和電源管理 部門工作過。
更多
- 一文看懂Modbus協(xié)議
- 一文看懂I2C協(xié)議
- 一文看懂SPI協(xié)議
- 串口通訊協(xié)議及其FPGA實現(xiàn)
- 如何寫出易于維護的Verilog代碼
- FPGA能進行斷點調試嗎?