中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
SPI、I2C、UART(即串口)三種串行總線詳解

https://blog.csdn.net/oqqHuTu12345678/article/details/65445338

以下內(nèi)容均來源于網(wǎng)絡(luò)資源的學(xué)習(xí)整理,如有侵權(quán),請告知刪除。

參考博客

https://blog.csdn.net/xiaodingqq/article/details/80342459

https://blog.csdn.net/weiqifa0/article/details/8845281

https://www.zhihu.com/question/22632011

http://m.yczyjg.com/article/13253385_330564821.html

https://blog.csdn.net/zhuyongxin_6688/article/details/78001767(有圖,薦)

https://blog.csdn.net/Setul/article/details/78968242

目錄

一、名字

二、UART、SPI、I2C對比

三、串行外設(shè)接口:SPI

1、速覽點

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

3、spi讀寫

四、IC之間總線:I2C

1、速覽點

2、詳細(xì)介紹

3、時序

4、代碼

五、通用異步收發(fā)器:UART

1、速覽點

2、通信協(xié)議

3、詳細(xì)介紹

4、代碼學(xué)習(xí)

六、心得體會

1、通信接口分為物理層(硬件)和協(xié)議層

2、關(guān)于總線的選擇問題

七、UART和RS232的聯(lián)系和區(qū)別

1、RS232

2、UART

3、TTL和RS232

4、嵌入式常用串口實物圖


一、名字

  • SPI(Serial Peripheral Interface:串行外設(shè)接口),是Motorola公司提出的一種同步串行數(shù)據(jù)傳輸標(biāo)準(zhǔn)。
  • I2C(INTER IC BUS:IC之間總線),是由PHILIPS公司開發(fā)的兩線式串行總線,用于連接微控制器及其外圍設(shè)備,是微電子通信控制領(lǐng)域廣泛采用的一種總線標(biāo)準(zhǔn)。
  • UART(Universal Asynchronous Receiver Transmitter:通用異步收發(fā)器),是電腦硬件的一部分,它把將要傳輸?shù)馁Y料在串行通信與并行通信之間加以轉(zhuǎn)換,UART通常被集成于其他通訊接口的連接上。UART即我們通常說的“串口”。

 

二、UART、SPI、I2C對比

UART、SPI、I2C對比表格
對比項         UART                     SPI            I2C
信號線數(shù)目3根,RX、TX、GND4根,SDO、SDI、SCLK、SS2根,SDA、SCLK
設(shè)備從屬關(guān)系           ——存在主從設(shè)備。SPI用片選信號選擇從機(jī) 存在主從設(shè)備。IIC用地址選擇從機(jī)。
通信方式全雙工通信全雙工通信半雙工通信
通信速率速度慢比I2C總線要快,速度可達(dá)到幾MbpsI2C的速度比SPI慢
應(yīng)用領(lǐng)域

1、UART常用于控制計算機(jī)與串行設(shè)備的芯片

<p>2、就是我們經(jīng)常所說的串口,基本都用于調(diào)試。</p>
</td>
<td style="width:215px;">主要應(yīng)用在EEPROM,F(xiàn)LASH,實時時鐘,AD轉(zhuǎn)換器,還有數(shù)字信號處理器和數(shù)字信號解碼器之間</td>
<td style="width:307px;">I2C一般是用在同一個板子上的2個IC之間的通信 ,它可以替代標(biāo)準(zhǔn)的并行總線,連接各種集成電路和功能模塊。</td>
</tr><tr><td style="width:105px;">傳輸距離</td>
<td style="width:152px;"> </td>
<td style="width:215px;"> </td>
<td style="width:307px;">I2C需要有雙向IO的支持,而且使用上拉電阻,抗干擾能力較弱,一般用于同一板卡上芯片之間的通信,較少用于遠(yuǎn)距離通信</td>
</tr><tr><td style="width:105px;">通信特征</td>
<td style="width:152px;">異步,一幀可以傳5/6/7/8位</td>
<td style="width:215px;">同步,<span style="color:#f33b45;"><strong>SPI允許數(shù)據(jù)一位一位的傳送</strong></span>,甚至允許暫停。從最高位開始傳。</td>
<td style="width:307px;">同步,電平信號,一次連續(xù)8bit。從最高位開始傳</td>
</tr><tr><td style="width:105px;">協(xié)議復(fù)雜度</td>
<td style="width:152px;">結(jié)構(gòu)比較復(fù)雜</td>
<td style="width:215px;">SPI實現(xiàn)要比UART簡單,UART需要固定的波特率,就是說兩位數(shù)據(jù)的間隔要相等,而SPI則無所謂,因為它是有時鐘的協(xié)議。</td>
<td style="width:307px;">協(xié)議比SPI復(fù)雜,但是連線比標(biāo)準(zhǔn)的SPI要少</td>
</tr><tr><td style="width:105px;">對比</td>
<td style="width:152px;"> </td>
<td style="width:215px;">
<p>在點對點的通信中,SPI接口不需要進(jìn)行尋址操作,且為全雙工通信,顯得簡單高效。</p>

<p>在多個從器件的系統(tǒng)中,每個從器件需要獨立的使能信號,硬件上比I2C系統(tǒng)要稍微復(fù)雜一些。</p>
</td>
<td style="width:307px;"> </td>
</tr></tbody></table></div><h1 id="%E4%B8%89%E3%80%81%E4%B8%B2%E8%A1%8C%E5%A4%96%E8%AE%BE%E6%8E%A5%E5%8F%A3%EF%BC%9ASPI"><a name="t2"></a><br><strong>三、串行外設(shè)接口:SPI</strong></h1>

1、速覽點

(1)四條信號線:串行時鐘(SCLK)、串行數(shù)據(jù)輸出(SDO)、串行數(shù)據(jù)輸入(SDI)、片選線(SS)。(所謂的進(jìn)出,是針對信號進(jìn)出主機(jī)而言)

(2)SPI總線可以實現(xiàn)多SPI設(shè)備互相連接。提供時鐘的SPI設(shè)備為主設(shè)備(Master),其他設(shè)備為從設(shè)備(Slave)。SCLK信號線只由主設(shè)備控制,從設(shè)備不能控制信號線。

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

(4)主從設(shè)備間可以實現(xiàn)全雙工通信,收發(fā)獨立,操作簡單,數(shù)據(jù)傳輸速率較高,但需要占用主機(jī)較多的口線(每個從機(jī)都需要一根片選線),而且只支持單個主機(jī),沒有指定的流控制,有應(yīng)答機(jī)制確認(rèn)是否接收到數(shù)據(jù)

(5)數(shù)據(jù)輸出通過SDO線,數(shù)據(jù)在時鐘上沿或下沿時改變(即發(fā)送),在緊接著的下沿或上沿被讀取,從而完成一位數(shù)據(jù)傳輸。數(shù)據(jù)輸入也使用同樣原理。因此,8位數(shù)據(jù)的傳輸,至少需要8次時鐘信號的改變(上沿和下沿為一次)。

(6)普通的串行通訊一次連續(xù)傳送至少8位數(shù)據(jù),而SPI允許數(shù)據(jù)一位一位的傳送,甚至允許暫停,因為SCK時鐘線由主控設(shè)備控制,當(dāng)沒有時鐘跳變時,從設(shè)備不采集或傳送數(shù)據(jù)。也就是說,主設(shè)備通過對SCK時鐘線的控制可以完成對通訊的控制。

(7)SPI接口在CPU和外圍低速器件之間進(jìn)行同步串行數(shù)據(jù)傳輸,在主器件的移位脈沖下,數(shù)據(jù)按位傳輸,高位在前(先傳?),低位在后,為全雙工通信。

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

(1)SPI在數(shù)據(jù)傳輸?shù)臅r候,需要確定兩件事情:

  • 其一,數(shù)據(jù)是在時鐘的上升沿采集還是下降沿采集;
  • 其二,時鐘的初始(空閑)狀態(tài)是為高電平還是低電平。
  • 對比:I2C空閑狀態(tài)時,時鐘線(不是數(shù)據(jù)線?)為高電平,數(shù)據(jù)采集時,時鐘線也為高電平,但SPI給出了更自由的方式。

(2)兩個概念

CPOL:時鐘極性,表示SPI在空閑時,時鐘信號是高電平還是低電平。

CPHA:時鐘相位,表示SPI設(shè)備是在在時鐘的上升沿采集還是下降沿采集。

則SPI數(shù)據(jù)傳輸就有四種可能---按照標(biāo)準(zhǔn)的說法,SPI數(shù)據(jù)傳輸就有四種模式。

(3)四種模式

模式CPOLCPHA
000
101
210
311

模式0(杠cs表示片選信號)

模式1

模式2

模式3

3、spi讀寫

(1)SPI在硬件設(shè)計上采用的雙數(shù)據(jù)線制,根據(jù)設(shè)計,在SPI通信過程中,主從設(shè)備之間會形成一個數(shù)據(jù)環(huán)形鏈路——即主設(shè)備向從設(shè)備寫一次數(shù)據(jù),從設(shè)備就會回一次數(shù)據(jù)(至于從設(shè)備回復(fù)的數(shù)據(jù)是否有效,則另當(dāng)別論——如果有效,主設(shè)備就把它讀入,否則丟棄)

(2)例子:假設(shè)上升沿發(fā)送、下降沿接收、高位先發(fā)送。

假設(shè)主機(jī)8位寄存器裝的是待發(fā)送的數(shù)據(jù)10101010

那么第一個上升沿時,數(shù)據(jù)將會是SDO=1,寄存器=0101010x

下降沿到來的時候,SDI上的電平將存到主機(jī)的寄存器中的最低位(最右邊),SDO上的電平將存到從機(jī)的寄存器的最低位(最右邊),則此時主機(jī)寄存器=0101010SDI(SDI表示1bit),從機(jī)寄存器=1010101SDO。

這樣在 8個時鐘脈沖以后,兩個寄存器的內(nèi)容互相交換一次,這樣就完成里一個spi時序。

假定主機(jī)和從機(jī)初始化就緒,并且主機(jī)的sbuff=0xaa=0b1010 1010,從機(jī)的sbuff=0x55=0b0101 0101 

下面將分步對SPI的8個時鐘周期的數(shù)據(jù)情況演示一遍

(1)上表示上升沿、下表示下降沿,SDI、SDO相對于主機(jī)而言的。

(2)ss引腳作為主機(jī)時,從機(jī)可以把它拉低,被動選為從機(jī);作為從機(jī)時,可以作為片選腳用。

(3)根據(jù)以上分析,一個完整的傳送周期是16位。因為主機(jī)首先要發(fā)送命令過去,然后從機(jī)準(zhǔn)備數(shù)據(jù),主機(jī)在下一個8位時鐘周期才把數(shù)據(jù)讀回來。

 

四、IC之間總線:I2C

1、速覽點

(1)由圖可知

  • 由兩條信號線組成:串行數(shù)據(jù)線(SDA)、串行時鐘線(SCL)。
  • 由1,2箭頭指示可知,I2C器件內(nèi)部采用開漏的方法,總線被上拉。
  • 那么總線狀態(tài)只能被下拉為0(當(dāng)MOS管輸入0的時候)。
  • 只要有一方下拉了總線,總線狀態(tài)必定為0。

(2)任何一個設(shè)備都能像主控器一樣工作,并控制總線,但同一時刻只能有一個主控設(shè)備。

(3)總線上的每一個設(shè)備都有一個獨一無二的地址,根據(jù)設(shè)備的能力,作為發(fā)射器或接收器工作。

(4)在它的協(xié)議體系中,傳輸數(shù)據(jù)時都會帶上目的設(shè)備的設(shè)備地址,因此可以實現(xiàn)設(shè)備組網(wǎng)。

(5)連接到相同總線的IC 數(shù)量只受到總線的最大電容限制。

(6)SDA傳輸數(shù)據(jù)是大端傳輸(高位先傳,低位后傳?),是以字節(jié)為單位的。

 

2、詳細(xì)介紹

https://blog.csdn.net/oqqHuTu12345678/article/details/72356722

3、時序

https://blog.csdn.net/oqqHuTu12345678/article/details/72356722

https://blog.csdn.net/Mr_Lyoko/article/details/79598106

4、代碼

https://blog.csdn.net/oqqHuTu12345678/article/details/72358553

 

 

五、通用異步收發(fā)器:UART

1、速覽點

(1)UART由波特率產(chǎn)生器、UART接收器、UART發(fā)送器組成。

(2)由三條信號線組成:RX、TX、GND

(3)UART包括RS232、RS499、RS423、RS422和RS485等接口標(biāo)準(zhǔn)規(guī)范和總線標(biāo)準(zhǔn)規(guī)范。它們的主要區(qū)別在于其各自的電平范圍不相同。 嵌入式設(shè)備中常常使用到的是TTL、TTL轉(zhuǎn)RS232的這種方式。

2、通信協(xié)議

(1)起始位:先發(fā)出一個邏輯”0”的信號,表示傳輸字符的開始。

(2)數(shù)據(jù)位:緊接著起始位之后。數(shù)據(jù)位的個數(shù)可以是4、5、6、7、8等,構(gòu)成一個字符。通常采用ASCII碼。

(3)奇偶校驗位:數(shù)據(jù)位加上這一位后,使得“1”的位數(shù)應(yīng)為偶數(shù)(偶校驗)或奇數(shù)(奇校驗),以此來校驗資料傳送的正確性。

(4)停止位:它是一個字符數(shù)據(jù)的結(jié)束標(biāo)志。可以是1位、1.5位、2位的高電平。

(5)空閑位:處于邏輯“1”狀態(tài),表示當(dāng)前線路上沒有資料傳送。

(6)波特率:數(shù)據(jù)傳輸?shù)乃俾?。有以下幾個檔位:300、600、1200、2400、4800、9600、19200、38400、43000、56000、57600、115200。在數(shù)據(jù)傳輸和接收雙方,需要預(yù)先統(tǒng)一波特率,以便正確的傳輸數(shù)據(jù)。

3、詳細(xì)介紹

https://blog.csdn.net/oqqHuTu12345678/article/details/71597893

https://blog.csdn.net/oqqHuTu12345678/article/details/71597575

https://blog.csdn.net/xiaodingqq/article/details/80342459

4、代碼學(xué)習(xí)

https://blog.csdn.net/oqqHuTu12345678/article/details/71601785

 

六、心得體會

1、通信接口分為物理層和協(xié)議層

(1)物理層(硬件):如UART,PC和單片機(jī)通信,PC機(jī)的串口是232電平而單片機(jī)的串口是TTL電平,兩個設(shè)備之間通信如果電平不一致就相當(dāng)于語言不通,造成邏輯混亂。因此一般的單片機(jī)系統(tǒng)板上都會有一個串口模塊電路(串口控制器)用來進(jìn)行電平轉(zhuǎn)換,將PC機(jī)的232電平轉(zhuǎn)化成單片機(jī)能識別的232電平,常用芯片如PL2303、CH340。

(2)協(xié)議層:就相當(dāng)于規(guī)定了一個標(biāo)準(zhǔn)或規(guī)則,比如SPI協(xié)議中,主機(jī)向從機(jī)發(fā)出一個數(shù)據(jù),從機(jī)接收到后會發(fā)出應(yīng)答信號,這就是協(xié)議規(guī)定的內(nèi)容,不需要人為干預(yù)。當(dāng)然有的單片機(jī)沒有這些協(xié)議的控制器(硬件),如51單片機(jī)和24c02通信,需要模擬IIC協(xié)議,用軟件來實現(xiàn)硬件的功能,這就增加了軟件的復(fù)雜度。

2、總線的選擇

(1)SPI總線有4根線,分別是SCK,SDO,SDI,SS,可以掛多個從設(shè)備,但是在掛多個從設(shè)備時,主設(shè)備端還需要做一個n選一的譯碼器,用于選擇將要訪問的從設(shè)備,因此,主設(shè)備上的管腳需求比較多。SPI總線在只有一個從設(shè)備時,只要用到SCK,SDO,SDI這三根線,此時選擇SPI比I2C總線占優(yōu)。

(2)I2C總線只有兩根線,SCL,SDA.,也可以掛多個從設(shè)備,對從設(shè)備的選擇直接依靠協(xié)議完成,無需增加物理連線。一般情況下,當(dāng)一塊電路板上有多個從設(shè)備時,往往選用I2C而非SPI,因為SPI增加了額外額硬件開銷以及電路板走線。

(3)I2C和SPI總線一般是讀取一些PROM等從設(shè)備用。 而串行通信接口SCI(UART?),主要應(yīng)用在兩個智能設(shè)備之間的互相通訊。有別于SPI和I2C總線的主從模式,SCI可以是主-主模式。

-----另一種說法

(1)總線拓?fù)浣Y(jié)構(gòu)/信號路由/硬件資源耗費

IIC 只需兩根信號線,而標(biāo)準(zhǔn)SPI至少四根信號,如果有多個從設(shè)備,信號需要更多。一些SPI變種雖然只使用三根線——SCLK, SS和雙向的MISO/MOSI,但SS線還是要和從設(shè)備一對一根。另外,如果SPI要實現(xiàn)多主設(shè)備結(jié)構(gòu),總線系統(tǒng)需額外的邏輯和線路。用IIC 構(gòu)建系統(tǒng)總線唯一的問題是有限的7位地址空間,但這個問題新標(biāo)準(zhǔn)已經(jīng)解決——使用10位地址。從第一點上看,IIC是明顯的大贏家。

(2)數(shù)據(jù)吞吐/傳輸速度

如果應(yīng)用中必須使用高速數(shù)據(jù)傳輸,那么SPI是必然的選擇。因為SPI是全雙工,IIC 的不是。SPI沒有定義速度限制,一般的實現(xiàn)通常能達(dá)到甚至超過10 Mbps。IIC 最高的速度也就快速+模式(1 Mbps)和高速模式(3.4 Mbps),后面的模式還需要額外的I/O緩沖區(qū),還并不是總是容易實現(xiàn)的。

(3)優(yōu)雅性

IIC 常被稱更優(yōu)雅于SPI。公正的說,我們更傾向于認(rèn)為兩者同等優(yōu)雅和健壯。IIC的優(yōu)雅在于它的特色——用很輕盈的架構(gòu)實現(xiàn)了多主設(shè)備仲裁和設(shè)備路由。但是對使用的工程師來講,理解總線結(jié)構(gòu)更費勁,而且總線的性能不高。SPI的優(yōu)點在于它的結(jié)構(gòu)相當(dāng)?shù)闹庇^簡單,容易實現(xiàn),并且有很好擴(kuò)展性。SPI的簡單性不足稱其優(yōu)雅,因為要用SPI搭建一個有用的通信平臺,還需要在SPI之上構(gòu)建特定的通信協(xié)議軟件。也就是說要想獲得SPI特有而IIC沒有的特性——高速性能,工程師們需要付出更多的勞動。另外,這種自定的工作是完全自由的,這也說明為什么SPI沒有官方標(biāo)準(zhǔn)。IIC和SPI都對低速設(shè)備通信提供了很好的支持,不過,SPI適合數(shù)據(jù)流應(yīng)用,而IIC更適合“字節(jié)設(shè)備”的多主設(shè)備應(yīng)用。

(4)小結(jié)

在數(shù)字通信協(xié)議簇中,IIC和SPI常稱為“小”協(xié)議,相對Ethernet, USB, SATA, PCI-Express等傳輸速度達(dá)數(shù)百上千兆字節(jié)每秒的總線。但是,我們不能忘記的是各種總線的用途是什么?!按蟆眳f(xié)議是用于系統(tǒng)外的整個系統(tǒng)之間通信的,“小”協(xié)議是用于系統(tǒng)內(nèi)各芯片間的通信,沒有跡象表明“大”協(xié)議有必要取代“小”協(xié)議。IIC和SPI的存在和流行體現(xiàn)了“夠用就好”的哲學(xué)。

 

七、UART和RS232的聯(lián)系和區(qū)別

1、RS232

RS232是早期的一種串行通信標(biāo)準(zhǔn),它描述了使用RS-232標(biāo)準(zhǔn)進(jìn)行通信時的電平要求(定義多少電平表示數(shù)據(jù)0和1)、接線要求、線材要求,其實更多的是電平標(biāo)準(zhǔn)。

2、UART

UART是通用異步收發(fā)傳輸器(Universal Asynchronous Receiver/Transmitter),既然是“器”,顯然,它就是個設(shè)備而已,要完成一個特定功能的硬件。它最基本的功能是串并數(shù)據(jù)轉(zhuǎn)換。

另外UART還要控制數(shù)據(jù)的格式(波特率、起始位、數(shù)據(jù)位、校驗位、停止位等內(nèi)容),這表示它也是異步串行通信的一種方式,它本身不是協(xié)議,但具有協(xié)議的特征,然而比RS232協(xié)議更具一般性。

因此可以說,UART同時具有硬件和協(xié)議的范疇。

3、TTL和RS232

在嵌入式MCU中的UART使用TTL電平,而在PC中的UART使用的則是RS232電平。所以UART并沒有規(guī)范該使用什么電平,取決于你使用什么通信標(biāo)準(zhǔn)。即UART可以使用RS232規(guī)定的電平來通信,也可以用其他協(xié)議規(guī)定的電平來工作。

P.s:RS232與常見的TTL電平不同,RS232采用的是負(fù)邏輯,因此一般會使用MAX-232雙向轉(zhuǎn)化芯片。

TTL標(biāo)準(zhǔn):低電平為0,高電平為1(+5V電平,3.3V以上即可)

RS-232標(biāo)準(zhǔn):正電平為0,負(fù)電平為1(±15V電平)

------------------------------------------------------------------------

4、注意RS232不是接口標(biāo)準(zhǔn),DB9、DB25才叫接口標(biāo)準(zhǔn),現(xiàn)在RS232用的多的都是DB9。

5、接設(shè)備的時候,一般只接GND RX TX。不會接Vcc或者+3.3v的電源線,避免與目標(biāo)設(shè)備上的供電沖突。

6、PL2303、CP2102芯片是USB轉(zhuǎn)TTL串口的芯片,用USB來擴(kuò)展串口(TTL電平)。

------------------------------------------------------------------------

4、嵌入式常用串口實物圖

(1)串口(嵌入式中指的是UART)、COM口

(兩者同概念?COM口有兩種物理標(biāo)準(zhǔn):D型9針插頭和 4針杜邦頭。左圖是UART,中間是4針杜邦頭COM口,右圖是D型9針插頭。由此可知,4針杜邦頭和UART是一樣的?另外D型9針插頭我們一般只接GND、RXD、TXD,因此其實和UART是一樣的)

             
    

(2)下圖是用PL2303芯片的USB轉(zhuǎn)TTL串口

下圖是用CP2102芯片的USB轉(zhuǎn)TTL串口

下圖是USB轉(zhuǎn)RS-232串口


  

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
基于C51的嵌入式實時控制模塊的設(shè)計與實現(xiàn)
UART、I2C、SPI、TTL、RS232、RS422、RS485、CAN、USB、SD卡、1-W...
【嵌入式物聯(lián)網(wǎng)常用的通信協(xié)議UART、RS
接口IIC
無線模塊常用的接口有哪些?
SPI,UART,JTAG,I2C,CAN常用串行協(xié)議比較
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服