日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SPI 接口配置

發(fā)布時(shí)間:2025/3/21 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SPI 接口配置 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

SPI(Serial Peripheral Interface,串行外設(shè)接口)是Motorola公司提出的一種同步串行數(shù)據(jù)傳輸標(biāo)準(zhǔn)是一種高速的,全雙工,同步的通信總線,在很多器件中被廣泛應(yīng)用。

?

SPI相關(guān)縮寫

?

SS: Slave Select,選中從設(shè)備,片選。

CKPOL (Clock Polarity) = CPOL = POL = Polarity =?(時(shí)鐘)極性?

CKPHA (Clock Phase)? ?= CPHA = PHA = Phase =?(時(shí)鐘)相位

SCK = SCLK = SCL = SPI的時(shí)鐘(Serial Clock)

Edge =?邊沿,即時(shí)鐘電平變化的時(shí)刻,即上升沿(rising edge)或者下降沿(falling edge)。

?

對(duì)于一個(gè)時(shí)鐘周期內(nèi),有兩個(gè)edge,分別稱為:

Leading edge =?前一個(gè)邊沿?=?第一個(gè)邊沿,對(duì)于開始電壓是1,那么就是1變成0的時(shí)候,對(duì)于開始電壓是0,那么就是0變成1的時(shí)候;

Trailing edge =?后一個(gè)邊沿?=?第二個(gè)邊沿,對(duì)于開始電壓是1,那么就是0變成1的時(shí)候(即在第一次1變成0之后,才可能有后面的0變成1),對(duì)于開始電壓是0,那么就是1變成0的時(shí)候;

?

?

?

接口

SPI接口經(jīng)常被稱為4線串行總線,以主/從方式工作,數(shù)據(jù)傳輸過程由主機(jī)初始化

如圖1所示,其使用的4條信號(hào)線分別為:

1) SCLK:串行時(shí)鐘,用來同步數(shù)據(jù)傳輸,由主機(jī)輸出;

2)?MOSI:主機(jī)輸出從機(jī)輸入(Master Output Slaver Input)數(shù)據(jù)線;

3)?MISO:主機(jī)輸入從機(jī)輸出數(shù)據(jù)線;

4) SS:片選線,低電平有效,由主機(jī)輸出。

在SPI總線上,某一時(shí)刻可以出現(xiàn)多個(gè)從機(jī),但只能存在一個(gè)主機(jī),主機(jī)通過片選線來確定要通信的從機(jī)。這就要求從機(jī)的MISO口具有三態(tài)特性,使得該口線在器件未被選通時(shí)表現(xiàn)為高阻抗。

?

SPI由于接口相對(duì)簡單(只需要4根線),用途算是比較廣泛,主要應(yīng)用在 EEPROM,FLASH,實(shí)時(shí)時(shí)鐘,AD轉(zhuǎn)換器,還有數(shù)字信號(hào)處理器和數(shù)字信號(hào)解碼器之間。

即一個(gè)SPI的Master通過SPI與一個(gè)從設(shè)備,即上述的那些Flash,ADC等的Slaver SPI進(jìn)行通訊。而主從設(shè)備之間通過SPI進(jìn)行通訊,首先要保證兩者之間時(shí)鐘SCLK要一致,互相要商量好了,要匹配,否則,就沒法正常通訊了,即保證時(shí)序上的一致才可正常訊。而這里的SPI中的時(shí)鐘和相位,指的就是SCLk時(shí)鐘的特性,即保證主從設(shè)備兩者的時(shí)鐘的特性一致了,以保證兩者可以正常實(shí)現(xiàn)SPI通訊。

數(shù)據(jù)傳輸

在一個(gè)SPI時(shí)鐘周期內(nèi),會(huì)完成如下操作:

1) 主機(jī)通過MOSI線發(fā)送1位數(shù)據(jù),從機(jī)通過該線讀取這1位數(shù)據(jù);

2) 從機(jī)通過MISO線發(fā)送1位數(shù)據(jù),主機(jī)通過該線讀取這1位數(shù)據(jù)。

這是通過移位寄存器來實(shí)現(xiàn)的。如圖2所示,主機(jī)和從機(jī)各有一個(gè)移位寄存器,且二者連接成環(huán)。隨著時(shí)鐘脈沖,數(shù)據(jù)按照從高位到低位的方式依次移出主機(jī)寄存器和從機(jī)寄存器,并且依次移入從機(jī)寄存器和主機(jī)寄存器。當(dāng)寄存器中的內(nèi)容全部移出時(shí),相當(dāng)于完成了兩個(gè)寄存器內(nèi)容的交換。

時(shí)鐘極性和時(shí)鐘相位

在SPI操作中,最重要的兩項(xiàng)設(shè)置就是時(shí)鐘極性(CPOL或UCCKPL)和時(shí)鐘相位(CPHA或UCCKPH)。時(shí)鐘極性設(shè)置時(shí)鐘空閑時(shí)的電平,時(shí)鐘相位設(shè)置讀取數(shù)據(jù)和發(fā)送數(shù)據(jù)的時(shí)鐘沿。

主機(jī)和從機(jī)的發(fā)送數(shù)據(jù)是同時(shí)完成的,兩者的接收數(shù)據(jù)也是同時(shí)完成的。所以為了保證主從機(jī)正確通信,應(yīng)使得它們的SPI具有相同的時(shí)鐘極性和時(shí)鐘相位。

?

CPOL極性

?

先說什么是SCLK時(shí)鐘的空閑時(shí)刻,其就是當(dāng)SCLK在發(fā)送8個(gè)bit比特?cái)?shù)據(jù)之前和之后的狀態(tài),與此對(duì)應(yīng)的,SCLK在發(fā)送數(shù)據(jù)的時(shí)候,就是正常的工作的時(shí)候,有效active的時(shí)刻了。

先說英文,其精簡解釋為:Clock Polarity = IDLE state of SCK。

再用中文詳解:

SPI的CPOL,表示當(dāng)SCLK空閑idle的時(shí)候,其電平的值是低電平0還是高電平1:

CPOL=0,時(shí)鐘空閑idle時(shí)候的電平是低電平,所以當(dāng)SCLK有效的時(shí)候,就是高電平,就是所謂的active-high;

CPOL=1,時(shí)鐘空閑idle時(shí)候的電平是高電平,所以當(dāng)SCLK有效的時(shí)候,就是低電平,就是所謂的active-low;

CPHA相位

首先說明一點(diǎn),capture strobe = latch = read = sample,都是表示數(shù)據(jù)采樣,數(shù)據(jù)有效的時(shí)刻。

相位,對(duì)應(yīng)著數(shù)據(jù)采樣是在第幾個(gè)邊沿(edge),是第一個(gè)邊沿還是第二個(gè)邊沿,0對(duì)應(yīng)著第一個(gè)邊沿,1對(duì)應(yīng)著第二個(gè)邊沿。

CPOL=0:

對(duì)于CPHA=0,idle時(shí)候的是低電平,第一個(gè)邊沿就是從低變到高,所以是上升沿;

對(duì)于CPHA=1,idle時(shí)候的是低電平,第二個(gè)邊沿就是從高變到低,所以是下降沿;

CPOL=1:

對(duì)于CPHA=0,idle時(shí)候的是高電平,第一個(gè)邊沿就是從高變到低,所以是下降沿;

對(duì)于CPHA=1,idle時(shí)候的是高電平,第二個(gè)邊沿就是從低變到高,所以是上升沿;

用圖文形式表示,更加容易看懂:

?

CKP和CKE

CKP和CKE是Microchip的PIC系列芯片中的說法。

(1)CKP是Clock Polarity Select,就是極性=CPOL:

CKP,雖然名字和CPOL不一樣,但是都是指時(shí)鐘極性的選擇,定義也一樣

CKP: Clock Polarity Select bit

1 = Idle state for clock (CK) is a high level

0 = Idle state for clock (CK) is a low level

所以不多解釋。

(2)CKE是Clock Edge Select,就是相位=CPHA:

CKE: SPI Clock Edge Select bit

1 = Transmit occurs on transition from active to Idle clock state

0 = Transmit occurs on transition from Idle to active clock state

意思是:

1 =(數(shù)據(jù))傳輸發(fā)生在時(shí)鐘從有效狀態(tài)轉(zhuǎn)到空閑狀態(tài)的那一時(shí)刻

0 =(數(shù)據(jù))傳輸發(fā)生在時(shí)鐘從空閑狀態(tài)轉(zhuǎn)到有效狀態(tài)的那一時(shí)刻

?

其中,數(shù)據(jù)傳輸?shù)臅r(shí)刻,即上圖中標(biāo)出的“數(shù)據(jù)transmit傳輸?shù)臅r(shí)刻”。

CKE的定義也跟CPHA相同。

所以,CKP和CKE所對(duì)應(yīng)的取值的含義為:

When CKP = 0:

CKE=0 => Data transmitted on?rising?edge of SCK(idle時(shí)候是低電平,從空閑到有效,就是從低電平到高電平,所以是上升沿)

CKE=1 => Data transmitted on?falling?edge of SCK(idle時(shí)候是低電平,從有效到空閑,就是從高電平到低電平,所以是下降沿)

When CKP = 1:

CKE=0 => Data transmitted on?falling?edge of SCK(idle時(shí)候是高電平,從空閑到有效,就是從高電平到低電平,所以是下降沿)

CKE=1 => Data transmitted on?rising?edge of SCK(idle時(shí)候是高電平,從有效到空閑,就是從低電平到高電平,所以是上升沿)

?

?

舉例來說,分別選取MSP430控制器和OLED驅(qū)動(dòng)SH1101A為主從機(jī),圖3和圖4為它們的SPI時(shí)序。由圖4可知,SH1101A的SPI時(shí)鐘空閑時(shí)為高電平,并且在后時(shí)鐘沿接收數(shù)據(jù)(后時(shí)鐘沿在數(shù)據(jù)的中間部位)則MSP430控制器SPI的設(shè)置應(yīng)與此保持一致。從圖3中可以看出,要使得時(shí)鐘在空閑時(shí)為高電平,應(yīng)將UCCKPL置1;要使得在后時(shí)鐘沿接收數(shù)據(jù),應(yīng)將UCCKPH清零。

下面再列出其他一些地方找到的,常見的SPI的四種模式的時(shí)序圖,供參考:

?

?

?

?

?

如何看懂和記憶CPOL和CPHA

?

所以,關(guān)于在其他地方介紹的,看似多么復(fù)雜難懂難記憶的CPOL和CPHA,其實(shí)經(jīng)過上面解釋,就肯容易看懂了:

去看時(shí)序圖,如果時(shí)鐘SCLK的起始電平是0,那么CPOL=0,如果是1,那么CPOL=1。

然后看數(shù)據(jù)采樣時(shí)刻,即時(shí)序圖數(shù)據(jù)線上的數(shù)據(jù)矩形區(qū)域的中間所對(duì)應(yīng)的位置,對(duì)應(yīng)到上面SCLK時(shí)鐘的位置,對(duì)應(yīng)著是第一個(gè)邊沿或是第二個(gè)邊沿,即CPHA是0或1。(對(duì)應(yīng)的是上升沿還是下降沿,要根據(jù)對(duì)應(yīng)的CPOL的值,才能確定)。

即:

(1)如何判斷CPOL:SCLK的空閑時(shí)候電壓是0還是1,決定了CPOL是0還是1;

(2)如何判斷CPHA:而數(shù)據(jù)采樣時(shí)刻對(duì)應(yīng)著的SCLK的電平,是第一個(gè)邊沿還是第二個(gè)邊沿,對(duì)應(yīng)著CPHA為0還是1。

?

?

軟件中如何設(shè)置SPI的極性和相位

?

SPI分主設(shè)備和從設(shè)備,兩者通過SPI協(xié)議通訊。

設(shè)置SPI的模式,是從設(shè)備的模式,決定了主設(shè)備的模式。

所以要先去搞懂從設(shè)備的SPI是何種模式,然后再將主設(shè)備的SPI的模式,設(shè)置和從設(shè)備相同的模式,即可正常通訊。

對(duì)于從設(shè)備的SPI是什么模式,有兩種:

(1)固定的,設(shè)備硬件決定的。

SPI從設(shè)備,具體是什么模式,相關(guān)的datasheet中會(huì)有描述,需要自己去datasheet中找到相關(guān)的描述,即:

關(guān)于SPI從設(shè)備,在空閑的時(shí)候,是高電平還是低電平,即決定了CPOL是0還是1;

然后再找到關(guān)于設(shè)備是在上升沿還是下降沿去采樣數(shù)據(jù),這樣就是,在定了CPOL的值的前提下,對(duì)應(yīng)著可以推算出CPHA是0還是1了。

舉例1:

CC2500?- Low-Cost Low-Power 2.4 GHz RF Transceiver的datasheet中SPI的時(shí)序圖是:

從圖中可以看到,最開始的SCLK和結(jié)束時(shí)候的SCLK,即空閑時(shí)刻的SCLK,是低電平,推導(dǎo)出CPOL=0,然后可以看到數(shù)據(jù)采樣的時(shí)候,即數(shù)據(jù)最中間的那一點(diǎn),對(duì)應(yīng)的是SCLK的第一個(gè)邊沿,所以CPHA=0(此時(shí)對(duì)應(yīng)的是上升沿)。


?

舉例2:

SSD1289?- 240 RGB x 320 TFT LCD Controller Driver的datasheet中提到:

“SDI is shifted into 8-bit shift register on everyrising edge of SCK?in the order of data bit 7, data bit 6 …… data bit 0.”

意思是,數(shù)據(jù)是在上升沿采樣,所以可以斷定是CPOL=0,CPHA=0,或者CPOL=1,CPHA=1的模式,但是至于是哪種模式。

按理來說,接下來應(yīng)該再去確定SCLK空閑時(shí)候是高電平還是低電平,用以確定CPOL是0還是1,但是datasheet中沒有提到這點(diǎn)。

所以,此處,目前不太確定,是兩種模式都支持,還是需要額外找證據(jù)卻確定CPOL是0還是1.


?

(2)可配置的,由軟件自己設(shè)定

從設(shè)備也是一個(gè)SPI控制器,4種模式都支持,此時(shí)只要自己設(shè)置為某種模式即可。

然后知道了從設(shè)備的模式后,再去將SPI主設(shè)備的模式,設(shè)置為和從設(shè)備模式一樣,即可。


?

對(duì)于如何配置SPI的CPOL和CPHA的話,不多細(xì)說,多數(shù)都是直接去寫對(duì)應(yīng)的SPI控制器中對(duì)應(yīng)寄存器中的CPOL和CPHA那兩位,寫0或?qū)?即可。

舉例:

此處遇到的C8051F347中的SPI就是一個(gè)SPI的controller控制器,即支持軟件配置CPOL和CPHA的值,四種模式都支持,此處C8051F347作為SPI從設(shè)備,設(shè)置了CPOL=1,CPHA=0的模式,因此,此處對(duì)應(yīng)主芯片Blackfin F537中的SPI控制器,作為Master主設(shè)備,其SPI的模式也要設(shè)置為CPOL=1,CPHA=0。

?

優(yōu)缺點(diǎn)

SPI接口具有如下優(yōu)點(diǎn):

1) 支持全雙工操作;

2) 操作簡單;

3) 數(shù)據(jù)傳輸速率較高。

同時(shí),它也具有如下缺點(diǎn):

1) 需要占用主機(jī)較多的口線(每個(gè)從機(jī)都需要一根片選線);

2) 只支持單個(gè)主機(jī)。

?

?

http://www.cnblogs.com/king-77024128/articles/2203207.html

?

http://blog.chinaunix.net/uid-20620288-id-3164384.html

http://www.cnblogs.com/hnrainll/archive/2010/12/14/1905175.html

總結(jié)

以上是生活随笔為你收集整理的SPI 接口配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 四虎在线免费观看 | 一区二区乱子伦在线播放 | 国产精品欧美激情在线 | 亚洲第三十七页 | 久久精品h | 在线观看v片 | av在线大全| 神马一区二区三区 | 爱情岛论语亚洲入口 | 免看一级片 | 国产日日操 | 国产婷婷色综合av蜜臀av | 国产专区一区 | 青青青草视频在线 | 影音先锋中文字幕在线视频 | 2025韩国大尺度电影 | 欧美三级午夜理伦三级中视频 | 久久久香蕉视频 | 97色资源| 国产精品成人国产乱 | 青青91| 秋霞伦理一区二区 | 日韩一二三区在线观看 | 国产一级在线观看视频 | 你懂的国产视频 | 亚洲ⅴ国产v天堂a无码二区 | 欧美视频免费 | 亚洲AV无码精品国产 | 日日操av | 4438国产精品一区二区 | 91国自啪| 污av| 国产精品露脸视频 | 在线免费精品视频 | 无码国精品一区二区免费蜜桃 | 芭乐视频色 | caoporn免费在线视频 | 91传媒在线免费观看 | 91久久久久久久久久久 | 一级特黄aaa大片 | 国产精品少妇 | 国产黄a三级三级三级看三级男男 | 精品国产免费一区二区三区 | 国产九一精品 | 天天爽夜夜爽一区二区三区 | 99久久视频 | 欧美区一区二 | 亚洲一区视频在线播放 | 日本成人黄色 | 国内精品偷拍视频 | 野花av | 色女孩综合| 亚洲视频中文 | 亚洲精品久久久久久无码色欲四季 | 一级特黄欧美 | 日韩一级成人 | av瑟瑟 | 五月天丁香婷 | 一区二区三区在线免费播放 | 91精品国产91 | 亚洲另类av | 国产在线激情视频 | 在线尤物| 激情网五月 | 中文字幕亚洲专区 | 久久国产精品99久久人人澡 | 3d动漫精品啪啪一区二区免费 | 久久av综合 | 有码中文字幕 | 爱看av在线 | 国产精品美女久久久网av | 欧美日韩亚洲国产另类 | 日韩黄色视屏 | 日本伦理一区二区 | 精品国产一区二区三区久久 | 国产91丝袜在线播放 | www.猫咪av.com| 日韩成年人视频 | 日韩有码一区二区三区 | 无码人妻精品一区二区三区99日韩 | 亚洲三级网站 | 中文字幕人妻无码系列第三区 | 激情aaa| 国产精品毛片一区视频播 | av大片在线免费观看 | 激情视频免费观看 | 天海翼一二三区 | 成人影视在线播放 | 亚洲资源在线观看 | 久久亚洲a v | 超碰8| 精品成人一区二区三区 | 91精品久久久久久粉嫩 | 少妇乱淫36部 | 成人黄色免费网 | 日韩在线观看视频网站 | 亚洲狠| 麻豆久久精品 | 理论片午午伦夜理片影院99 |