[if !supportLists]1.?[endif]概述[if !supportLists]1.?[endif]概述
SPI是串行外設(shè)接口(Serial Peripheral Interface)的縮寫耗美。是 Motorola 公司推出的一種同步串行接口技術(shù)诽凌,是一種高速的窄瘟,全雙工,同步的通信總線欺冀。
[if !supportLists]2.?[endif]優(yōu)點
支持全雙工通信,push-pull的驅(qū)動性能相比open-drain信號完整性更好萨脑;通信簡單隐轩,硬件連接簡單;數(shù)據(jù)傳輸速率塊
支持高速(100MHz以上)渤早;
協(xié)議支持字長不限于8bits龙助,可根據(jù)應(yīng)用特點靈活選擇消息字長;
[if !supportLists]3.?[endif]缺點
1)沒有指定的流控制,沒有應(yīng)答機制確認是否接收到數(shù)據(jù)提鸟,所以跟IIC總線協(xié)議比較在數(shù)據(jù)可靠性上有一定的缺陷军援;
2)典型應(yīng)用只支持單主控;
3)相比RS232 RS485和CAN總線称勋,SPI傳輸距離短胸哥;
4.特點 1):高速、同步赡鲜、全雙工空厌、非差分、總線式2):主從機通信模式
5.硬件結(jié)構(gòu)
SPI總線定義兩個及以上設(shè)備間的數(shù)據(jù)通信银酬,提供時鐘的設(shè)備為主設(shè)備Master嘲更,接收時鐘的設(shè)備為從設(shè)備Slave;
信號定義如下:
(1)MOSI – 主器件數(shù)據(jù)輸出揩瞪,從器件數(shù)據(jù)輸入
(2)MISO – 主器件數(shù)據(jù)輸入赋朦,從器件數(shù)據(jù)輸出
(3)SCLK – 時鐘信號,由主器件產(chǎn)生
(4)CS/SS – 從器件使能信號李破,由主器件控制
電路連接如下:
單個主設(shè)備和單個從設(shè)備:
SPI是串行外設(shè)接口(Serial Peripheral Interface)的縮寫宠哄。是 Motorola 公司推出的一種同步串行接口技術(shù),是一種高速的嗤攻,全雙工毛嫉,同步的通信總線。
[if !supportLists]2.?[endif]優(yōu)點
支持全雙工通信妇菱,push-pull的驅(qū)動性能相比open-drain信號完整性更好承粤;通信簡單,硬件連接簡單闯团;數(shù)據(jù)傳輸速率塊
支持高速(100MHz以上)辛臊;
協(xié)議支持字長不限于8bits,可根據(jù)應(yīng)用特點靈活選擇消息字長偷俭;
[if !supportLists]3.?[endif]缺點
1)沒有指定的流控制浪讳,沒有應(yīng)答機制確認是否接收到數(shù)據(jù),所以跟IIC總線協(xié)議比較在數(shù)據(jù)可靠性上有一定的缺陷涌萤;
2)典型應(yīng)用只支持單主控淹遵;
3)相比RS232 RS485和CAN總線,SPI傳輸距離短负溪;
4.特點 1):高速透揣、同步、全雙工川抡、非差分辐真、總線式2):主從機通信模式
5.硬件結(jié)構(gòu)
SPI總線定義兩個及以上設(shè)備間的數(shù)據(jù)通信须尚,提供時鐘的設(shè)備為主設(shè)備Master,接收時鐘的設(shè)備為從設(shè)備Slave侍咱;
信號定義如下:
(1)MOSI – 主器件數(shù)據(jù)輸出耐床,從器件數(shù)據(jù)輸入
(2)MISO – 主器件數(shù)據(jù)輸入,從器件數(shù)據(jù)輸出
(3)SCLK – 時鐘信號楔脯,由主器件產(chǎn)生
(4)CS/SS – 從器件使能信號撩轰,由主器件控制
電路連接如下:
單個主設(shè)備和單個從設(shè)備:
單個主設(shè)備和多個從設(shè)備,通過多個片選信號或者菊花鏈方式實現(xiàn):
6.寄存器類型
Motorola定義的SPI寄存器包括:
SPI Control Register 1 (SPICR1)???控制寄存器1
SPI Control Register 2 (SPICR2)???控制寄存器2
SPI Baud Rate Register (SPIBR)??? 波特率寄存器
SPI Status Register (SPISR)?????狀態(tài)寄存器(只讀其余均可讀可寫)
SPI Data Register (SPIDR)??????數(shù)據(jù)寄存器
7.SPI傳輸模式
通過設(shè)置控制寄存器SPICR1中的CPOL和CPHA位昧廷,將SPI可以分成四種傳輸模式堪嫂。
CPOL,即Clock Polarity木柬,決定時鐘空閑時的電平為高或低皆串。對于SPI數(shù)據(jù)傳輸格式?jīng)]有顯著影響。
1=時鐘低電平時有效眉枕,空閑時為高
0=時鐘高電平時有效恶复,空閑時為低
CPHA,即Clock Phase齐遵,定義SPI數(shù)據(jù)傳輸?shù)膬煞N基本模式寂玲。
1=數(shù)據(jù)采樣發(fā)生在時鐘(SCK)偶數(shù)(2,4,6,...,16)邊沿(包括上下邊沿)
0=數(shù)據(jù)采樣發(fā)生在時鐘(SCK)奇數(shù)(1,3,5,...,15)邊沿(包括上下邊沿)
我們SPI通信有4種不同的模式塔插,不同的從設(shè)備可能在出廠是就是配置為某種模式梗摇,這是不能改變的;但我們的通信雙方必須是工作在同一模式下想许,所以我們可以對我們的主設(shè)備的SPI模式進行配置伶授,通過CPOL(時鐘極性)和CPHA(時鐘相位)來控制我們主設(shè)備的通信模式,具體如下:
Mode0:CPOL=0流纹,CPHA=0Mode1:CPOL=0糜烹,CPHA=1Mode2:CPOL=1,CPHA=0Mode3:CPOL=1漱凝,CPHA=1
時鐘極性CPOL是用來配置SCLK的電平出于哪種狀態(tài)時是空閑態(tài)或者有效態(tài)疮蹦,時鐘相位CPHA是用來配置數(shù)據(jù)采樣是在第幾個邊沿:CPOL=0,表示當SCLK=0時處于空閑態(tài)茸炒,所以有效狀態(tài)就是SCLK處于高電平時CPOL=1愕乎,表示當SCLK=1時處于空閑態(tài),所以有效狀態(tài)就是SCLK處于低電平時CPHA=0壁公,表示數(shù)據(jù)采樣是在第1個邊沿感论,數(shù)據(jù)發(fā)送在第2個邊沿CPHA=1,表示數(shù)據(jù)采樣是在第2個邊沿紊册,數(shù)據(jù)發(fā)送在第1個邊沿
四種模式如下圖所示:
先看第一列兩張圖(CPHA = 0)比肄,采樣發(fā)生在第一個時鐘跳變沿,即數(shù)據(jù)采樣發(fā)生在SCK奇數(shù)邊沿;再看第二列(CPHA =1)芳绩,采樣發(fā)生在第二個時鐘跳變沿掀亥,即數(shù)據(jù)采樣發(fā)生在SCK偶數(shù)邊沿。
第一行兩張圖妥色,CK空閑狀態(tài)為低電平铺浇,第二行兩張圖(CPOL = 1),SCK空閑狀態(tài)為高電平垛膝。
其中mode0和mode3最為常見鳍侣,SPI接口的flash中均會有標注。
需要注意的是:我們的主設(shè)備能夠控制時鐘吼拥,因為我們的SPI通信并不像UART或者IIC通信那樣有專門的通信周期倚聚,有專門的通信起始信號,有專門的通信結(jié)束信號凿可;所以我們的SPI協(xié)議能夠通過控制時鐘信號線惑折,當沒有數(shù)據(jù)交流的時候我們的時鐘線要么是保持高電平要么是保持低電平。
8.內(nèi)部工作機制
SSPSR 是 SPI 設(shè)備內(nèi)部的移位寄存器(Shift Register). 它的主要作用是根據(jù) SPI時鐘信號狀態(tài), 往 SSPBUF 里移入或者移出數(shù)據(jù), 每次移動的數(shù)據(jù)大小由 Bus-Width 以及 Channel-Width 所決定.