串行外圍設(shè)備接口(Serial Peripheral Interface,SPI)是由 Motorola 公司開發(fā)的,用來(lái)在微控制器和外圍設(shè)備芯片之間提供一個(gè)低成本、易使用的接口(SPI 有時(shí)候也被稱為4線接口)。這種接口可以用來(lái)連接存儲(chǔ)器、AD/DA轉(zhuǎn)換器、實(shí)時(shí)時(shí)鐘日歷、LCD驅(qū)動(dòng)器、傳感器、音頻芯片,甚至其他處理器。目前支持 SPI 的元件很多,并且還在不斷增加。
這里需要提一下,由于專利在電子行業(yè)是很關(guān)鍵的,因此部分廠商可能會(huì)將 SPI 通訊協(xié)議更名以規(guī)避高昂的專利費(fèi),但其硬件處理方式是一樣的,只是換了一個(gè)名稱而已(或者在協(xié)議上做了一些修改),例如 TI 的 SSI(Synchronous Serial Interface)通訊協(xié)議。與標(biāo)準(zhǔn)的串行端口不同,SPI 是一個(gè)同步協(xié)議接口,所有的傳輸都參照一個(gè)共同的時(shí)鐘,這個(gè)同步時(shí)鐘信號(hào)由主機(jī)(處理器)產(chǎn)生。接收數(shù)據(jù)的設(shè)備(從設(shè)備)使用時(shí)鐘對(duì)串行比特流的接收進(jìn)行同步化??赡軙?huì)有許多芯片連到主機(jī)的同一個(gè) SPI 接口上,這是主機(jī)通過(guò)觸發(fā)從設(shè)備的芯片的片選輸入引腳來(lái)選擇接收數(shù)據(jù)的從設(shè)備,沒有被選中的外設(shè)將不會(huì)參與 SPI 傳輸。SPI 主要使用4個(gè)信號(hào):主機(jī)輸出/從機(jī)輸入(MOSI)、主機(jī)輸入/從機(jī)輸出(MISO)、串行時(shí)鐘(SCLK或SCK)和外設(shè)片選(nCS)。有些處理器有 SPI 接口專用的片選,稱為從機(jī)選擇(nSS)。MOSI 信號(hào)由主機(jī)產(chǎn)生,從機(jī)接收。在有些芯片上,MOSI 只被簡(jiǎn)單地標(biāo)為串行輸入(SI),或者串行數(shù)據(jù)輸入(SDI)。MISO 信號(hào)由從機(jī)產(chǎn)生,不過(guò)還是在主機(jī)的控制下產(chǎn)生的。在一些芯片上,MISO 有時(shí)被稱為串行輸出(SO),或者串行數(shù)據(jù)輸出(SDO)。外設(shè)片選信號(hào)通常只是由主機(jī)的備用 I/O 引腳產(chǎn)生。SPI 接口在內(nèi)部硬件實(shí)際上是兩個(gè)簡(jiǎn)單的移位寄存器,在主器件的移位脈沖下,數(shù)據(jù)按位傳輸,高位在前,低位在后,為全雙工通信,數(shù)據(jù)傳輸速度總體來(lái)說(shuō)比 I2C 總線要快,速度可達(dá)到 Mbps 級(jí)別。
根據(jù)時(shí)鐘極性和時(shí)鐘相位的不同,SPI 有四個(gè)工作模式。時(shí)鐘極性有高、低兩極:
1、時(shí)鐘低電平時(shí),空閑時(shí)時(shí)鐘(SCK)處于低電平,傳輸時(shí)跳轉(zhuǎn)到高電平;2、時(shí)鐘極性為高電平時(shí),空閑時(shí)時(shí)鐘處于高電平,傳輸時(shí)跳轉(zhuǎn)到低電平。
時(shí)鐘相位有兩個(gè):相位0 和 相位1。對(duì)于時(shí)鐘相位0,如果時(shí)鐘極性是低電平,MOSI 和 MISO 輸出在時(shí)鐘(SCK)的上升沿有效(如圖1所示)。
圖1. 時(shí)鐘極性為低電平且時(shí)鐘相位0時(shí)的SPI時(shí)序圖
如果時(shí)鐘極性為高電平,對(duì)于時(shí)鐘相位0,這些輸出在 SCK 的下降沿有效(如圖2所示)。
圖2. 時(shí)鐘極性為高電平且時(shí)鐘相位0時(shí)的SPI時(shí)序圖
對(duì)于時(shí)鐘相位1,情況則相反。此時(shí)如果時(shí)鐘極性是低電平,MOSI 和 MISO 輸出在時(shí)鐘(SCK)的下降沿有效(如圖3所示)。
圖3. 時(shí)鐘極性為低電平且時(shí)鐘相位1時(shí)的SPI時(shí)序圖
如果時(shí)鐘極性是高電平,這些輸出在 SCK 的上升沿有效(如圖4所示)。
圖4. 時(shí)鐘極性為高電平且時(shí)鐘相位1時(shí)的SPI時(shí)序圖
工程中一般會(huì)用 CPOL 代表時(shí)鐘極性,用 CPHA 代表時(shí)鐘相位,在 S5PV210 的 datasheet 中,我們可以看到相應(yīng)的 SPI 接口配置寄存器(如圖5所示)。
圖5. S5PV210的SPI配置寄存器CH_CFGn
也就是由兩個(gè)位(CPOL 和 CPHA)共同決定 SPI 的工作模式,所以有 2 * 2 = 4 種工作模式。其中,時(shí)鐘極性(CPOL)決定的是時(shí)鐘空閑時(shí)電平的高低狀態(tài)(0:空閑時(shí)低電平,1:空閑時(shí)高電平);時(shí)鐘相位(CPHA)決定的是數(shù)據(jù)在時(shí)鐘的上升沿或下降沿鎖存/采樣(0:第一個(gè)邊沿開始,1:第二個(gè)邊沿開始)。
最后,SPI 接口的一個(gè)缺點(diǎn):沒有指定的流控制,沒有應(yīng)答機(jī)制確認(rèn)是否接收到數(shù)據(jù)。
-
驅(qū)動(dòng)器
+關(guān)注
關(guān)注
53文章
8290瀏覽量
147156 -
寄存器
+關(guān)注
關(guān)注
31文章
5372瀏覽量
121293 -
時(shí)鐘
+關(guān)注
關(guān)注
11文章
1747瀏覽量
131865 -
SPI
+關(guān)注
關(guān)注
17文章
1724瀏覽量
92192
原文標(biāo)題:淺談串行外圍設(shè)備接口(Serial Peripheral Interface)SPI總線
文章出處:【微信號(hào):gh_c472c2199c88,微信公眾號(hào):嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
ADS1298的時(shí)鐘相位和極性是什么?
ADS1282的SPI時(shí)鐘SCLK和芯片主時(shí)鐘MCLK有什么關(guān)系嗎?
1.5GHz低相位噪聲時(shí)鐘評(píng)估板
![1.5GHz低<b class='flag-5'>相位</b>噪聲<b class='flag-5'>時(shí)鐘</b>評(píng)估板](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
可調(diào)時(shí)測(cè)溫計(jì)算的多功能時(shí)鐘代碼及仿真
通信協(xié)議之SPI總線硬件篇
![通信協(xié)議之<b class='flag-5'>SPI</b>總線硬件篇](https://file1.elecfans.com/web2/M00/C3/A8/wKgZomXtxOSAJVpAAABYsv1YBhk227.png)
兩個(gè)高速ADC的CLK時(shí)鐘如何做到同步無(wú)相位差?
請(qǐng)問LMK05318BEVM如何實(shí)現(xiàn)輸入和輸出時(shí)鐘的相位同步?
嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-spi編程示例之spi硬件原理
飛凌嵌入式ElfBoard ELF 1板卡-spi編程示例之spi硬件原理
視頻時(shí)鐘合成芯片怎么用
SPI協(xié)議解析
時(shí)鐘抖動(dòng)與相位噪聲的關(guān)系
差分時(shí)鐘驅(qū)動(dòng)器和終端
![差分<b class='flag-5'>時(shí)鐘</b>驅(qū)動(dòng)器和終端](https://file1.elecfans.com/web2/M00/FF/58/wKgaomaiCrqAREyHAAAqzA-y5CI045.png)
探索SPI單線傳輸模式中時(shí)鐘線與數(shù)據(jù)傳輸?shù)暮?jiǎn)化
超詳細(xì)的SPI原理和通信模式
![超詳細(xì)的<b class='flag-5'>SPI</b>原理和通信<b class='flag-5'>模式</b>](https://file1.elecfans.com/web2/M00/C2/10/wKgZomXgCeGACNtaAAAW-Idh_2U166.png)
評(píng)論