IIC與SPI通信
IIC
SPI通信
IIC與SPI的比較
UART
單總線
因?yàn)槊嬖嚂r(shí)被問到IIC和SPI通信,所以又重新學(xué)習(xí)了一下。
IIC
IIC顧名思義就是兩根線,一根SCL(時(shí)鐘線),一根SDA(數(shù)據(jù)線)。時(shí)鐘線用來通過電平變化來標(biāo)志數(shù)據(jù)傳輸過程,SDA線傳輸數(shù)據(jù)。
通信過程
首先,SCL處于高電平,SDA從高電平變化為低電平表示START信號,此時(shí)將SCL線拉低便可通過SDA線讀寫數(shù)據(jù)(SCL線高電平時(shí)無法讀寫)。
然后,由于IIC通信分為主設(shè)備(比如單片機(jī)),從設(shè)備可能會有多個(gè),這時(shí)候我們在讀寫數(shù)據(jù)之前要先確定從設(shè)備,每個(gè)從設(shè)備會對應(yīng)一個(gè)特定的地址,所以主設(shè)備需要傳輸一個(gè)七位地址(好像現(xiàn)在有10位的地址)和一位R/W讀寫位,每個(gè)從設(shè)備接受到地址會和自己的地址進(jìn)行對比,相同就會傳輸一個(gè)應(yīng)答信號給主機(jī)。
主機(jī)收到應(yīng)答信號確認(rèn)從設(shè)備后可以進(jìn)行數(shù)據(jù)傳輸。數(shù)據(jù)傳輸一般一幀數(shù)據(jù)為為8位,尾隨一位應(yīng)答位。從設(shè)備收到應(yīng)答位,做出應(yīng)答或非應(yīng)答信號表示數(shù)據(jù)的接收成功與否(讀操作主從應(yīng)答相反)。
主機(jī)接收到應(yīng)答,選擇STOP信號輸出便可以結(jié)束一幀的傳輸。
點(diǎn)擊加載圖片
SPI通信
與IIC不同的是SPI通信有四根線,MOSI(masterinputslaveoutput,主發(fā)從收),MISO(主收從發(fā)),SCLK(時(shí)鐘線)和SS(serialselect)(片選信號,每個(gè)從機(jī)都需要單獨(dú)的一條SS線與主機(jī)相連,而不是所有從機(jī)共用一條)。
點(diǎn)擊加載圖片
通信過程
首先,主機(jī)拉低SS線選擇要通信的從機(jī)。
開始發(fā)送數(shù)據(jù),時(shí)鐘線不斷輸出脈沖,MOSI和MISO可以在相應(yīng)時(shí)鐘沿同時(shí)進(jìn)行數(shù)據(jù)(1bit)的傳輸,所以SPI是全雙工通信。
SS線被拉高,結(jié)束傳輸。
SPI_MOD
此外在數(shù)據(jù)傳輸時(shí)鐘沿選擇上有四種方式
CKP(時(shí)鐘極性)//0–>ss休閑狀態(tài)為低電平,1–>ss休閑狀態(tài)為高電平
CKE(時(shí)鐘相位)//0–>第一個(gè)時(shí)鐘沿采集信號,1–>第二個(gè)時(shí)鐘沿采集信號
點(diǎn)擊加載圖片
理論上,SPI通信的速率取決于時(shí)鐘頻率,所以就這一點(diǎn)來說會比IIC的傳輸速率要快得多,硬件設(shè)備的最大時(shí)鐘頻率的大小可以影響SPI通信。
IIC與SPI的比較
對于SPI我覺得優(yōu)點(diǎn)可以有以下幾點(diǎn)
高速率,傳輸bit頻率最大與系統(tǒng)的時(shí)鐘頻率相當(dāng)
傳輸bit無限制,對于IIC每次傳輸8位一個(gè)字節(jié),而SPI是一位一位的傳輸,所以避免了某些無意義位的傳輸
硬件軟件的配置比較輕便簡單,硬件方面,沒有IIC從機(jī)對應(yīng)的邏輯地址,一根SS線連接一個(gè)從機(jī);軟件方面也沒有過多復(fù)雜的時(shí)序,IIC中的起始應(yīng)答停止的信號反復(fù)轉(zhuǎn)換顯得有點(diǎn)復(fù)雜。
缺點(diǎn)我覺得就是SPI通信沒有應(yīng)答,可能導(dǎo)致數(shù)據(jù)傳輸無效,或者在從機(jī)出現(xiàn)故障時(shí)主機(jī)依舊發(fā)送數(shù)據(jù),就顯得有點(diǎn)盲目。還有主機(jī)設(shè)備需要更多的引腳接口才能容納更多的從設(shè)備。而且主設(shè)備只能有一個(gè)。
UART
通用異步收發(fā)器,三根線RX(接收數(shù)據(jù)端),TX(發(fā)送數(shù)據(jù)端),GND。
點(diǎn)擊加載圖片
通信過程
數(shù)據(jù)線上休閑時(shí)為高電平,將其拉低表示起始信號,從而可以開始通信。
單總線
1-wire通信,如DS18B20(溫度傳感器),DHT11(溫濕度傳感器)
這是DS18B20的單總線電路圖,由圖中可以看到單總線是收發(fā)雙向的,但是也不能同時(shí)進(jìn)行收發(fā),所以是半雙工。
點(diǎn)擊加載圖片
以上傳輸過程
初始化,主機(jī)發(fā)送復(fù)位脈沖(拉低總線一段時(shí)間),從機(jī)產(chǎn)生應(yīng)答脈沖(拉低總線一段時(shí)間)。
寫bit,低電平時(shí)為寫0,高電平時(shí)為寫1
單總線的數(shù)據(jù)傳輸速率一般為16.3Kbit/s,最大可達(dá)142Kbit/s,通常情況下采用100Kbit/s以下的速率傳輸數(shù)據(jù)。相比于IIC和SPI傳輸速率比較慢,但是硬件結(jié)構(gòu)比較簡單。
聯(lián)系客服