分兩步學(xué)習(xí)
第一步:了解SPI協(xié)議
第二步:linux spi driver的實(shí)現(xiàn)
1快鱼、什么是SPI?
SPI是串行外設(shè)接口(Seria
l Peripheral Interface)的縮寫昧诱。是 Motorola 公司推出的一?
種同步串行接口技術(shù),是一種高速的所袁,全雙工鳄哭,同步的通信總線。
2纲熏、SPI優(yōu)點(diǎn)
支持全雙工通信
通信簡單
數(shù)據(jù)傳輸速率塊
3妆丘、缺點(diǎn)
沒有指定的流控制,沒有應(yīng)答機(jī)制確認(rèn)是否接收到數(shù)據(jù)局劲,所以跟IIC總線協(xié)議比較在數(shù)據(jù)?
可靠性上有一定的缺陷勺拣。
4、特點(diǎn)
1):高速鱼填、同步药有、全雙工、非差分、總線式
2):主從機(jī)通信模式
5愤惰、協(xié)議通信時(shí)序詳解
1):SPI的通信原理很簡單苇经,它以主從方式工作,這種模式通常有一個(gè)主設(shè)備和一個(gè)或多?
個(gè)從設(shè)備宦言,需要至少4根線扇单,事實(shí)上3根也可以(單向傳輸時(shí))。也是所有基于SPI的設(shè)備共?
有的奠旺,它們是SDI(數(shù)據(jù)輸入)蜘澜、SDO(數(shù)據(jù)輸出)、SCLK(時(shí)鐘)响疚、CS(片選)鄙信。
(1)SDO/MOSI – 主設(shè)備數(shù)據(jù)輸出,從設(shè)備數(shù)據(jù)輸入;
(2)SDI/MISO – 主設(shè)備數(shù)據(jù)輸入忿晕,從設(shè)備數(shù)據(jù)輸出;
(3)SCLK – 時(shí)鐘信號(hào)装诡,由主設(shè)備產(chǎn)生;
(4)CS/SS – 從設(shè)備使能信號(hào),由主設(shè)備控制践盼。當(dāng)有多個(gè)從設(shè)備的時(shí)候慎王,因?yàn)槊總€(gè)從設(shè)?
備上都有一個(gè)片選引腳接入到主設(shè)備機(jī)中,當(dāng)我們的主設(shè)備和某個(gè)從設(shè)備通信時(shí)將需?
要將從設(shè)備對(duì)應(yīng)的片選引腳電平拉低或者是拉高宏侍。
2):需要說明的是,我們SPI通信有4種不同的模式蜀漆,不同的從設(shè)備可能在出廠是就是配?
置為某種模式谅河,這是不能改變的;但我們的通信雙方必須是工作在同一模式下确丢,所以我們?
可以對(duì)我們的主設(shè)備的SPI模式進(jìn)行配置绷耍,通過CPOL(時(shí)鐘極性)和CPHA(時(shí)鐘相位)來?
控制我們主設(shè)備的通信模式,具體如下:
Mode0:CPOL=0鲜侥,CPHA=0
Mode1:CPOL=0褂始,CPHA=1
Mode2:CPOL=1,CPHA=0
Mode3:CPOL=1描函,CPHA=1
時(shí)鐘極性CPOL是用來配置SCLK的電平出于哪種狀態(tài)時(shí)是空閑態(tài)或者有效態(tài)崎苗,時(shí)鐘相位CPHA?
是用來配置數(shù)據(jù)采樣是在第幾個(gè)邊沿:
CPOL=0,表示當(dāng)SCLK=0時(shí)處于空閑態(tài)舀寓,所以有效狀態(tài)就是SCLK處于高電平時(shí)
CPOL=1胆数,表示當(dāng)SCLK=1時(shí)處于空閑態(tài),所以有效狀態(tài)就是SCLK處于低電平時(shí)
CPHA=0互墓,表示數(shù)據(jù)采樣是在第1個(gè)邊沿必尼,數(shù)據(jù)發(fā)送在第2個(gè)邊沿
CPHA=1,表示數(shù)據(jù)采樣是在第2個(gè)邊沿,數(shù)據(jù)發(fā)送在第1個(gè)邊沿
例如:
CPOL=0判莉,CPHA=0:此時(shí)空閑態(tài)時(shí)豆挽,SCLK處于低電平,數(shù)據(jù)采樣是在第1個(gè)邊沿券盅,也就是?
SCLK由低電平到高電平的跳變帮哈,所以數(shù)據(jù)采樣是在上升沿,數(shù)據(jù)發(fā)送是在下降沿渗饮。
CPOL=0但汞,CPHA=1:此時(shí)空閑態(tài)時(shí),SCLK處于低電平互站,數(shù)據(jù)發(fā)送是在第1個(gè)邊沿私蕾,也就是?
SCLK由低電平到高電平的跳變,所以數(shù)據(jù)采樣是在下降沿胡桃,數(shù)據(jù)發(fā)送是在上升沿踩叭。
CPOL=1,CPHA=0:此時(shí)空閑態(tài)時(shí)翠胰,SCLK處于高電平容贝,數(shù)據(jù)采集是在第1個(gè)邊沿,也就是?
SCLK由高電平到低電平的跳變之景,所以數(shù)據(jù)采集是在下降沿斤富,數(shù)據(jù)發(fā)送是在上升沿。
CPOL=1锻狗,CPHA=1:此時(shí)空閑態(tài)時(shí)满力,SCLK處于高電平,數(shù)據(jù)發(fā)送是在第1個(gè)邊沿轻纪,也就是?
SCLK由高電平到低電平的跳變油额,所以數(shù)據(jù)采集是在上升沿,數(shù)據(jù)發(fā)送是在下降沿刻帚。
需要注意的是:我們的主設(shè)備能夠控制時(shí)鐘潦嘶,因?yàn)槲覀兊腟PI通信并不像UART或者IIC通信?
那樣有專門的通信周期,有專門的通信起始信號(hào)崇众,有專門的通信結(jié)束信號(hào)掂僵;所以我們的?
SPI協(xié)議能夠通過控制時(shí)鐘信號(hào)線,當(dāng)沒有數(shù)據(jù)交流的時(shí)候我們的時(shí)鐘線要么是
保持高電平要么是保持低電平顷歌。
6看峻、內(nèi)部工作機(jī)制
? SSPSR 是 SPI 設(shè)備內(nèi)部的移位寄存器(Shift Register). 它的主要作用是根據(jù) SPI?
時(shí)鐘信號(hào)狀態(tài), 往 SSPBUF 里移入或者移出數(shù)據(jù), 每次移動(dòng)的數(shù)據(jù)大小由 Bus-Width 以?
及 Channel-Width 所決定.
總結(jié):
4線/3線傳輸:4線雙向 3線單向
時(shí)鐘 SCK
片選 CS
主輸出 SDO
主輸入 SDI
時(shí)鐘相位CPHA
時(shí)鐘極性 CPOL?
4種模式
Mode0:CPOL=0,CPHA=0
Mode1:CPOL=0衙吩,CPHA=1
Mode2:CPOL=1互妓,CPHA=0
Mode3:CPOL=1,CPHA=1