Saturday, July 12, 2014

SPI 簡介

SPI,全名是Serial Peripheral Interface。他是master-slave架構。顧名思義,他也是用來跟各種裝置溝通。

標準的SPI需要四根線,分別是SCLKMOSIMISO,以及CS
SCLKclock,一定是由master拉。
MOSImaster-output-slave-inputMaster寫資料到Slave
MISOmaster-input-slave-outputSlave寫資料到Master
CS則是chip-select。當有兩個以上的SPI裝置的時候,CS有拉的SPI裝置才可以回應。

I2C很類似,不過還是有點不同:
1.      SPI沒有定義protocol,請參考每個SPI裝置的datasheet
2.      SPI多了兩根線。不過如果可以的話,MOSIMISO擇一就可。因為通常SPI裝置只會支援獨或寫。而這種三根線的SPI,有人叫3-wire。不過還是要跟對方確認清楚,因為3-wire泛指[只用三根線來通訊]的東西。萬一對方講的不是SPI,那就糗了。
3.      SPI可以跑比較快。為什麼可以跑比較快,我不是很清楚
4.      SPI基本上不算BUS架構(雖然同一個master可以接多個裝置),所以不會有裝置衝突的問題,但是缺點就是,如果要支援多個SPI裝置同時跑,就需要多個SPI master

在跟SPI裝置溝通時,要注意的事項基本上跟I2C差不多:
1.      Polarity:到底是clockrising edge還是falling edge要抓取或寫出資料。
2.      Clock skew:波型不要跟datasheet差太多即可。有些客戶很龜毛,一定要符合datasheet上的要求,如果你是用8051SPI的話,請自求多福吧。如果是硬體做掉,那就直接看硬體的支援程度了,一翻兩瞪眼。
3.      Debug也是用示波器就可以了。幾MHZ的波型基本的示波器都可以抓到。

在這邊順便提一下,台灣軟體工程師分兩種:一種是完全不碰硬體的,一種則是會碰(廢話)。如果你是前者,建議你不要碰I2CSPI。因為這兩種基本上一定要看波型,而這一定需要硬體工程師的幫忙(不然示波器要從哪裡來)。硬體工程師至少要幫你設定好環境(或是教你怎麼操作示波器),至於看波型,就看你跟硬體工程師交情了。


我基本上不太喜歡求人,所以最多就是去跟硬體工程師借示波器,了不起就是問一下怎麼操作。波型還是得自己看。我曾經看過有些軟體工程師一直凹硬體工程師幫他把波型存起來給他看,或是直接說是硬體的問題,叫硬體工程師debug的。我知道這是公司文化使然,但是這個真的很不好。如果你想請人幫忙,至少先做個功課吧。

3 comments:

Unknown said...

謝謝,簡潔有力

Unknown said...

其實有一種工具叫"邏輯分析儀"比示波器更好也更容易去觀察spi或i2c波形

OD said...

邏輯分析儀很好用啊,但是SPI這種東西用示波器就很好了,畢竟是低頻的東西。而且低頻示波器比較便宜...。

codeblock