上篇內(nèi)容我們介紹了IIC總線通信接口及其協(xié)議,這一篇文章我們介紹另一種項目開發(fā)中非常常見的通信接口——SPI總線。
SPI(Serial Peripheral Interface,串行外設(shè)接口)總線是摩托羅拉公司設(shè)計的一種同步串行通信接口。 和IIC總線一樣,它也分主機和從機,一個主機也可以接多個從機,但從機沒有地址之分,它們是通過主機的硬件選擇來確定哪個設(shè)備與主機通信,每個設(shè)備有兩個數(shù)據(jù)端口,即輸入、輸出端口,通常情況下它包含4根通信引腳,在某些特殊情形下也可以是3線甚至2線,即可以忽略片選信號或某根數(shù)據(jù)信號,當(dāng)然具體情況根據(jù)電路應(yīng)用而定!
SS/CS——片選信號端口
SCLK——時鐘信號端口
MOSI——主出從入信號端口
MISO——主入從出信號端口
硬件接線圖:
硬件連接圖
部分資料或芯片手冊中會使用SDO,SDI來定義兩數(shù)據(jù)端口MOSI和MISO,兩種說法本質(zhì)都是一樣的
SDO,SDI連線示意
相比于IIC總線,SPI總線協(xié)議更為簡單,不需要驗證地址,也沒有校驗信號,又因為擁有獨立的輸入輸出端口,所以在信號傳遞方面它擁有更高的速率。
多機通信電路
通信協(xié)議
SPI總線中由于涉及到時鐘信號極性(Cpol: Clock Polarity)和相位(Cpha: Clock Phase)的影響使得協(xié)議分為4種模式。
CPOL:即時鐘的極性,通信的整個過程包含空閑狀態(tài)和工作狀態(tài),如果SCLK在空閑狀態(tài)是高電平,那么CPOL=1,如果是低電平,那么就是CPOL=0。
CPHA:即時鐘的相位,在這里就是SCLK的跳變邊沿,如果在SCLK信號的第一個跳變沿就開始數(shù)據(jù)傳輸則CPHA=0,否則若是在第二個邊沿才開始數(shù)據(jù)傳輸則CPHA=1。
讀起來還是有點拗口,看時序圖會更直觀一點:
時序圖
當(dāng)然這些不用記憶,你使用的時候根據(jù)具體的芯片手冊的時序說明進行配置就好了,不要把簡單的事情復(fù)雜化。心里有個概念就好,假如你是應(yīng)屆畢業(yè)生參加面試那保證自己能區(qū)分開來這幾種模式就可以,很多畢業(yè)生連IIC和SPI是什么東西都不知道呢,因為教材里面不一定會介紹這些通信協(xié)議,51單片機教材里印象中好像除了串口通信外沒有介紹其他的通信方式,即使有類似應(yīng)用也沒使用這些專業(yè)名稱來說明,其他的很多都得是自己買塊板子回來折騰才碰得到的。如果你是在校學(xué)生看看教材或者不妨問問你身邊的同學(xué)試試。
一般情況下作為主機的單片機如果硬件接口具備SPI總線端口編程時直接根據(jù)對應(yīng)寄存器配置為從機可以接受的模式使能該總線功能即可,若是普通不帶SPI總線的單片機,那我們也簡單,和上一篇中的模擬IIC通信一樣,根據(jù)需要在程序中模擬出時序就好了。這里再次說明了讀芯片數(shù)據(jù)手冊的重要性,有的人或許芯片手冊都不看,從網(wǎng)上找一個別人跑得通的代碼就copy過去,或許可能剛好能用,也可能搞半天自己的芯片啥數(shù)據(jù)都讀不出來,這是初學(xué)者大忌,所以學(xué)技術(shù)切莫急功近利,每一次的僥幸可能造成日后的大雷。
通信程序
SPI通信協(xié)議的程序使用起來比較靈活,它的應(yīng)用的場合也比較多,具體的示例程序在后面的實際例子中再做介紹了。結(jié)合上一篇IIC的示例程序,今天的SPI協(xié)議程序應(yīng)該腦海里應(yīng)該也有思路了吧。
-
接口
+關(guān)注
關(guān)注
33文章
8447瀏覽量
150720 -
通信
+關(guān)注
關(guān)注
18文章
5949瀏覽量
135782 -
端口
+關(guān)注
關(guān)注
4文章
948瀏覽量
31984 -
SPI總線
+關(guān)注
關(guān)注
4文章
103瀏覽量
27562 -
IIC總線
+關(guān)注
關(guān)注
1文章
66瀏覽量
20273
發(fā)布評論請先 登錄
相關(guān)推薦
評論