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

SPI總線協(xié)議的通信原理及應(yīng)用舉例
怎么使用FPGA實(shí)現(xiàn)SPI總線的通信接口?
SPI總線協(xié)議介紹及硬件設(shè)計(jì)資料分享
SPI總線協(xié)議簡(jiǎn)介
基于PC/104 總線與CPLD 的SPI 接口設(shè)計(jì)
用SPI總線實(shí)現(xiàn)DSP和MCU之間的高速通信
CAN總線通信協(xié)議的分析和實(shí)現(xiàn) CAN總線通信協(xié)議以及其實(shí)現(xiàn)方法

串行外設(shè)接口SPI通信協(xié)議的應(yīng)用

嵌入式硬件通信接口協(xié)議中的串行通信接口-SPI

基于FPGA與MCU通信的SPI協(xié)議設(shè)計(jì)

通信協(xié)議:SPI

通信協(xié)議(SPI)

嵌入式硬件通信接口協(xié)議-SPI(一)協(xié)議基礎(chǔ)

評(píng)論