SPI介绍
目錄
1.什么是SPI
2.SPI接口
2.1.SPI模式:極性和時鐘相位
2.2.SPI三線總線和多IO配置
3.SPI總線事務
3.1.簡單SPI寫事務
3.2.簡單SPI讀事務
3.3.四線IO事務
1.什么是SPI
SPI(Serial Peripheral Interface)[串行外圍接口]是一種接口總線,通常用于與閃存、傳感器、實時時鐘(RTCs)、模數轉換器等進行通信。 串行外圍接口(SPI)總線是由摩托羅拉公司開發的,用于在主設備和從設備之間提供全雙工同步串行通信。
SPI教程白皮書
2.SPI接口
如圖1所示,一個標準的SPI連接涉及到一個主機master使用串行時鐘(SCK)、主輸出從輸入(MOSI)、主輸出從輸出(MISO)和從選擇(SS)線連接到一個或幾個從機slave。SCK、MOSI和MISO信號可以由從機slave共享,而每個從機slave都有一條惟一的SS線。
Figure 1. 4-wire SPI bus configuration with multiple slaves
2.1.SPI模式:極性和時鐘相位
SPI接口沒有定義數據交換協議,限制了開銷并允許高速數據流。時鐘極性(CPOL)和時鐘相位(CPHA)可以指定為“0”或“1”,形成四種獨特的模式,以提供主從通信的靈活性,如圖2所示。
Figure 2. SPI bus timing
如果CPOL和CPHA都為' 0 '(定義為模式0),則在時鐘的前上升沿采樣數據。目前,模式0是SPI總線通信最常見的模式。如果CPOL為' 1 ',CPHA為' 0 '(模式2),則在時鐘的前降邊緣采樣數據。同樣,CPOL = ' 0 '和CPHA = ' 1 ' (Mode 1)在尾降邊緣采樣,CPOL = ' 1 '和CPHA = ' 1 ' (Mode 3)在尾升邊緣采樣。下面的表1總結了可用的模式
CPOL:時鐘極性,表示時鐘線空閑時是高電平
1還是低電平0。
CPHA:時鐘相位,表示是在時鐘的前沿0還是尾沿1采樣數據。
| Mode | CPOL | CPHA |
|---|---|---|
| 0 | 0 | 0 |
| 1 | 0 | 1 |
| 2 | 1 | 0 |
| 3 | 1 | 1 |
Table 1. SPI mode definitions
2.2.SPI三線總線和多IO配置
除了標準的4線配置外,SPI接口還擴展到包括各種IO標準,包括用于減少引腳數的3線和用于更高吞吐量的雙或四I/O。
在3線模式下,MOSI和MISO線路組合成單個雙向數據線,如圖3所示。事務是半雙工的,以允許雙向通信。減少數據線的數量并以半雙工模式運行也會降低最大可能的吞吐量; 許多3線設備具有低性能要求,而設計時考慮到低引腳數。
Figure 3. 3-wire SPI configuration with one slave
多I/O變體(如雙I/O和四I/O)在標準外添加了額外的數據線,以提高吞吐量。利用多I/O模式的組件可以與并行器件的讀取速度相媲美,同時仍然可以減少引腳數量。這種性能提升使得能夠從閃存中隨機訪問和直接執行程序(XIP)。
例如,四路I/O設備在與高速設備通信時可提供四倍于標準4線SPI接口的性能。圖4顯示了單個四通道IO從站配置的示例。
Figure 4. Quad IO SPI configuration with one slave
3.SPI總線事務
SPI協議沒有定義數據流的結構; 數據的組成完全取決于組件設計者。但是,許多設備遵循相同的基本格式來發送和接收數據,從而允許來自不同供應商的部件之間的互操作性。
3.1.簡單SPI寫事務
大多數SPI閃存都有一個寫狀態寄存器命令,用于寫入一個或兩個字節的數據,如圖5所示。要寫入狀態寄存器,SPI主機首先啟用當前器件的從選擇線。然后,主設備輸出適當的指令,后跟兩個數據字節,用于定義預期的狀態寄存器內容。由于事務不需要返回任何數據,因此從設備將MISO線保持在高阻抗狀態,并且主設備屏蔽任何輸入數據。最后,從機選擇信號被取消以結束事務。
Figure 5. Write command using a single-byte instruction and two-byte data word
3.2.簡單SPI讀事務
狀態寄存器讀取事務與寫入事務類似,但現在利用從器件返回的數據,如圖6所示。在發送讀取狀態寄存器指令后,從器件開始以MISO線路傳輸數據,數率為每八個時鐘周期一個字節。主機接收比特流并通過取消SS信號來完成事務。
Figure 6. Read command using a single-byte instruction and two-byte data word
3.3.四線IO事務
由于其性能的提高,四線IO在閃存中越來越受歡迎。四線IO沒有使用單輸出和單輸入接口,而是使用4條獨立的半雙工數據線來傳輸和接收數據,其性能是標準四線SPI的四倍。
圖7顯示了Spansion S25FL016K串行NorFLASH器件的讀取示例命令。要從器件讀取,主器件首先在第一個IO線上發送快速讀取命令(EBh),而其他所有命令都處于三態。接下來,主機發送地址; 由于接口現在有4條雙向數據線,因此它可以利用它們在8個時鐘周期內發送一個完整的24位地址和8個模式位。然后,該地址跟隨2個虛擬字節(4個時鐘周期),以允許器件有額外的時間來設置初始地址。
Figure 7. Quad mode fast read sequence for Spansion S25FL016K or equivalent
在主機發送地址周期和虛擬字節之后,組件開始發送數據字節; 每個時鐘周期由分布在4個IO線上的數據半字節組成,每個數據字節總共有兩個時鐘周期。將此與我們簡單讀取事務所需的16個時鐘周期進行比較,很容易看出為什么四模式在高速閃存應用中越來越受歡迎!
總結
- 上一篇: Markdown语法 (中文版)
- 下一篇: spring 两次进入拦截器_过滤器和拦