Monday, January 10, 2022

[Linux kernel] SPI 理論

SPI (Serial Peripheral Interface) 是一種串列式的 I/O 介面,時脈約 1~ 70MHz,在微控制器和低速裝置之間提供一個低成本、易使用的介面,進行同步串行資料傳輸,包括 FLASH, ADC, PLL, RTC, LIU, CODEC... 都可以用 SPI 介面來控制。


在主裝置的移位脈衝下,資料按位元傳輸,高位元在前,低位元在後,點對點的通信,不需要進行尋址操作,為全雙工通信,資料傳輸速度總體來說比 I2C 總線要快,速度可達到幾 Mbps


但因為多個從裝置的系統中,每個從裝置需要獨立的 Enable 信號,硬體上比 I2C 系統要稍微複雜一些。

SPI 相當容易實作, 但各家採用的 SPI 又不盡相同, 有正緣、負緣、傳輸的數據為 8-bit、16-bit、四線、三線... 多種變形。要將每一種都實作一遍也不難, 但如何能夠共用模組, 減少重複的驗證及除錯, 避免 re-invent the wheel 才是工程師不得多花一點心思的地方。

一種四線制串列匯流排介面,為主 / 從結構,四條導線分別為

串列時脈 (SCLK/SCK) - 時鐘信號,由主裝置產生

主出從入 (MOSI) - 主裝置資料輸出,從裝置資料輸入 (Master Output Slave Input)

主入從出 (MISO)- 主裝置資料輸入,從裝置資料輸出 (Slave Output Master Input)

從選 (SS) 訊號 - 從裝置 Enable 信號,由主裝置控制 (Slave Single)

主元件為時脈提供者,可發起讀取從元件或寫入從元件作業。這時主元件將與一個從元件進行對話。當匯流排上存在多個從元件時,要發起一次傳輸,主元件將把該從元件選擇線拉低,然後分別透過 MOSI 和 MISO 線路啟動數據發送或接收。 

SPI 總線工作方式

SPI 總線有四種工作方式,其中使用的最為廣泛的是 SPI0 和 SPI3 方式(實線表示):


時序詳解:

CPOL:時鐘極性 (Polarity) 選擇

為 0 時 SPI 總線空閒為低電位

為 1 時 SPI 總線空閒為高電位

CPHA:時鐘相位 (Phase) 選擇

為 0 時在 SCK 第一個周期 MISO 輸入

為 1 時在 SCK 第二個周期 MISO 輸入

當 CPHA=0、CPOL=0 時

MISO 引腳上的資料在第一個 SPSCK 周期之前已經輸入了,而為了保證正確傳輸,MOSI 引腳的 MSB 位必須與SPSCK 的第一個周期邊緣同步

在 SPI 傳輸過程中,首先將資料輸入,然後在同步時鐘信號的正緣觸發時,SPI 的接收方捕捉位信號,在 clock 信號的一個週期結束時 (負緣觸發),下一筆資料輸入,再重複上述過程,直到一個字元的 8 位信號傳輸結束。

當 CPHA=0、CPOL=1 時

 與前者唯一不同之處只是在同步 clock 信號的負緣觸發信號,正緣觸發時,下一筆資料輸入

當 CPHA=1、CPOL=0 時

 MISO 引腳和 MOSI 引腳上的資料的 MSB 位必須與 SPSCK 的第一個邊沿同步,在 SPI 傳輸過程中,在同步 clock 信號週期開始時 (正緣觸發) 資料輸入,然後在同步 clock 信號的負緣觸發時,SPI 的接收方捕捉位信號,在 clock 信號的一個週期結束時 (正緣觸發),下一筆資料輸入,再重複上述過程,直到一個字元的 8 位信號傳輸結束。

當 CPHA=1、CPOL=1 時

 與前者唯一不同之處只是在同步時鐘信號的正緣觸發,負緣觸發信號時,下一筆資料輸入

參考

kernel/Documentation/spi/spi-summary (Salve Devices)

http://ww2.cs.fsu.edu/~rosentha/linux/2.6.26.5/docs/DocBook/kernel-api/ch25.html

http://www.eettaiwan.com/SEARCH/ART/SPI.HTM

http://tw.myblog.yahoo.com/louis99lin/article?mid=109&prev=117&next=-1

http://avr.eefocus.com/article/10-08/2075521282652436.html

http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus



No comments:

Post a Comment

n8n index

 【n8n免費本地端部署】Windows版|程式安裝x指令大補帖  【一鍵安裝 n8n】圖文教學,獲得無限額度自動化工具&限時免費升級企業版功能