小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

串口通信————UART、I2C、SPI詳解(總結(jié)篇)

 六耳靈聾 2023-06-06 發(fā)布于浙江

B站賬號:小光學(xué)嵌入式

? 大家好哇!我是小光,嵌入式愛好者,一個想要成為系統(tǒng)架構(gòu)師的大二學(xué)生。

?最近開始系統(tǒng)性補習(xí)STM32基礎(chǔ)知識,規(guī)劃有:串口通信,Github,Ucos等等。

?今天總結(jié)一下串口通信,后面再在代碼實現(xiàn)做講解。

串口通信

1.工作原理

1.工作原理

2.傳輸步驟

3.UART優(yōu)缺點

1.傳輸步驟

2.SPI優(yōu)缺點

1.同步通信

2.異步通信

1.全雙工:

2.半雙工

1.串行通信

2.并行通信

串行與并行

全雙工與半雙工

同步通信和異步通信

一.SPI通信

二.UART通信

三.I2C通信

總結(jié)

串行與并行

1.串行通信

位通過單根線一一發(fā)送,下圖顯示了二進制(01000011)中字母“C”的串行傳輸。

當(dāng)時鐘線為高電平時,接收數(shù)據(jù)位,高電平為1,低電平為0。

在這里插入圖片描述

2.并行通信

數(shù)據(jù)位在導(dǎo)線中同時傳輸,下圖顯示了二進制(01000011)中字母“C”的并行傳輸:

的當(dāng)時鐘線為高電平時,8個數(shù)據(jù)位同時接受數(shù)據(jù),高電平為1,低電平為0

在這里插入圖片描述

所以UART、SPI、I2C都是串口通信,因為它們都是通過一根線作為數(shù)據(jù)線傳輸數(shù)據(jù)。

全雙工與半雙工

1.全雙工:

簡單來說,比如我們在打電話時,我們可以在同一時間說話,這就是全雙工通信;

2.半雙工

相對的,雖然半雙工也可以互相的通信,但是在同一時間只能單方向傳輸數(shù)據(jù);

UART和SPI都是全雙工通信方式,因為他們的數(shù)據(jù)線都有兩根,即可以在同一時間A發(fā)數(shù)據(jù)給B,B也可以在這個時間發(fā)數(shù)據(jù)給A。如I2C通信,因為他只有一根數(shù)據(jù)線,所以他不能在同一時間雙向傳輸數(shù)據(jù)。

同步通信和異步通信

同步是阻塞模式,異步是非阻塞模式。

1.同步通信

。發(fā)送方發(fā)出數(shù)據(jù)后,等接收方發(fā)回響應(yīng)以后才發(fā)下一個數(shù)據(jù)包的通訊方式。

2.異步通信

。發(fā)送方發(fā)出數(shù)據(jù)后,不等接收方發(fā)回響應(yīng),接著發(fā)送下個數(shù)據(jù)包的通訊方式。

所以SPI和I2C都是同步通信,因為他們都有時鐘線,UART是異步通信方式,他只有兩個數(shù)據(jù)線,發(fā)送完數(shù)據(jù)不會確認(rèn)你是否接收到。

一.SPI通信

SPI可以無中斷傳輸數(shù)據(jù),可以連續(xù)地發(fā)送或接收任意數(shù)量的位。但是I2C和UART中,數(shù)據(jù)以數(shù)據(jù)包的形式發(fā)送,有限定位數(shù)。

在SPI設(shè)備中,設(shè)備分為主機控制設(shè)備(通常是微控制器)和從機(通常是傳感器,顯示器和存儲芯片)設(shè)備,從機從主機那獲取指令。

SPI信號線有四種:

MOSI-信號線:主機輸出,從機輸入;

MISO-信號線:主機輸入,從機輸出;

SCLK-時鐘信號;

SS/CS-片選信號;

SPI協(xié)議特點

實際上,從機的數(shù)量受系統(tǒng)負(fù)載電容的限制,它會降低主機在電壓電平之間準(zhǔn)確切換的能力。

時鐘信號

每個時鐘周期傳輸一位數(shù)據(jù),因此數(shù)據(jù)傳輸?shù)乃俣热Q于時鐘信號的頻率。 時鐘信號由于是主機配置生成的,因此SPI通信始終由主機啟動。

設(shè)備共享時鐘信號的任何通信協(xié)議都稱為同步。SPI是一種同步通信協(xié)議,還有一些異步通信不使用時鐘信號。 例如在UART通信中,雙方都設(shè)置為預(yù)先配置的波特率,該波特率決定了數(shù)據(jù)傳輸?shù)乃俣群蜁r序。

片選信號

主機通過拉低從機的CS/SS來使能通信。主機可以與存在多個CS/SS引腳,允許主機與多個從機進行通信。

1.傳輸步驟

1.主機輸出時鐘信號

在這里插入圖片描述

2.主機拉低SS/CS引腳,激活從機

在這里插入圖片描述

3.主機通過MOSI將數(shù)據(jù)發(fā)送給從機

在這里插入圖片描述

4.如果需要相應(yīng),則從機通過MISO將數(shù)據(jù)返回給從機

在這里插入圖片描述

2.SPI優(yōu)缺點

優(yōu)點:無起始位和停止位,因此數(shù)據(jù)可以持續(xù)傳輸不會中斷;數(shù)據(jù)傳輸速率快(比I2C快幾乎兩倍)。獨立的MISO、MOSI可以同時發(fā)送和接收數(shù)據(jù)。

缺點:使用四根線(I2C使用兩根線),沒有信號接收成功的確認(rèn)(I2C由此功能),沒有任何形式的錯誤檢查(UART中的奇偶校驗位)。

二.UART通信

兩個UART直接相互通信。發(fā)送UART將控制設(shè)備(如CPU)的并行數(shù)據(jù)轉(zhuǎn)換位串行形式,以串行的形式將其發(fā)送到接收UART。只需要兩條線即可在兩個UART之間傳輸信息:

screen-capture

UART屬于異步通信,沒有時鐘信號。它會在數(shù)據(jù)包中增加開始和停止位。這些位定義了數(shù)據(jù)包的開始和結(jié)束,因此接收UART知道何時讀取這些數(shù)據(jù)。

當(dāng)接收UART檢測到起始位時,它將以特定的波特率的頻率讀取(數(shù)據(jù)傳輸速度的度量),以每秒比特數(shù)(bps)表示。兩個UART必須以大約相同的波特率工作,發(fā)送的接收UART之間的波特率只能相差約10%。

1.工作原理

UART數(shù)據(jù)包包含有一個起始位,5到9個數(shù)據(jù)位(取決于UART),一個可選擇的奇偶檢驗位以及一個或兩個停止位:

screen-capture

起始位

UART數(shù)據(jù)傳輸線通常在不傳輸數(shù)據(jù)時保持在高電平電平。開始傳輸時發(fā)送UART在一個時鐘周期內(nèi)將傳輸線從高電平拉低到低電平,當(dāng)接收UART檢測到高電壓轉(zhuǎn)換時,他開始以波特率的頻率讀取數(shù)據(jù)幀中的位。

數(shù)據(jù)幀

數(shù)據(jù)幀內(nèi)包含正在傳輸?shù)膶嶋H數(shù)據(jù)。使用奇偶校驗位是5-8位,不使用最多可以是9位。

校驗位

奇偶校驗位是接收UART判斷傳輸期間是否有任何數(shù)據(jù)更改的方式。接收UART讀取數(shù)據(jù)幀后,它將對值為1的數(shù)進行技術(shù),并且檢查總數(shù)是偶數(shù)還是奇數(shù),是否與數(shù)據(jù)相匹配。

停止位

向數(shù)據(jù)包的結(jié)尾發(fā)出信號,發(fā)送UART將數(shù)據(jù)傳輸線從低電壓驅(qū)動到高電壓至少兩位的時間。

2.傳輸步驟

1.發(fā)送UART從數(shù)據(jù)總線并行接收數(shù)據(jù)

screen-capture

2.發(fā)送UART將起始位、奇偶校驗位和停止位添加到數(shù)據(jù)幀。

screen-capture

3.整個數(shù)據(jù)包從發(fā)送UART串行發(fā)送到接收UART。接收UART以預(yù)先配置的波特率對數(shù)據(jù)線進行采樣。

screen-capture

4.接收UART丟棄數(shù)據(jù)幀中的起始位、奇偶校驗位和停止位:

screen-capture

5.接收UART將串行數(shù)據(jù)轉(zhuǎn)換回并行數(shù)據(jù),并將其傳輸?shù)浇邮斩说臄?shù)據(jù)總線:

screen-capture

3.UART優(yōu)缺點

優(yōu)點:

1.僅使用兩根線

2.異步通信,無需時鐘信號

3.具有奇偶校驗位以允許進行錯誤檢查、

4.只要雙方都設(shè)置好數(shù)據(jù)包的結(jié)構(gòu)

缺點:

1.數(shù)據(jù)幀的大小最大為9位

2.不支持多個從屬系統(tǒng)或多個系統(tǒng)

3.每個UART的波特率必須在彼此的10%之內(nèi)

三.I2C通信

半雙工通信,它結(jié)合了SPI和UART的優(yōu)點,可以將多個從機連接到單個主機(如SPI),也可以多個主機控制一個或多個從機。

接線:

screen-capture

SDA–數(shù)據(jù)線

SCL–時鐘線

串行通信協(xié)議,需要時鐘同步信號并且由主機控制。

1.工作原理

I2C的數(shù)據(jù)傳輸是以多個msg的形式進行。每個msg包括:從機二進制地址幀、以及一個或者多個數(shù)據(jù)幀、開始條件和停止條件,讀/寫位和數(shù)據(jù)幀之間的ACK/NACK位:

*

screen-capture

在這里插入圖片描述

啟動條件

當(dāng)SCL為高電平時,SDA從高電平向低電平切換

停止條件

當(dāng)SCL是高電平時,SDA由低電平向高電平切換

地址幀

每個從屬設(shè)備唯一的7位或10位序列,用于主從設(shè)備之間的地址識別。

讀/寫位

一位,如果主機是向從機發(fā)送數(shù)據(jù)則為低電平,請求數(shù)據(jù)則為高電平

ACK/NACK

消息中的每個幀后均有一個ACK/NACK位。如果成功接收到地址幀或數(shù)據(jù)幀,接收設(shè)備會返回一個ACK位用于表示確認(rèn)。

尋址

不同于SPI的片選線,它是尋址確認(rèn)從機設(shè)備。

主機將要通信的從機地址發(fā)送給每個從機,然后每個從機將其與自己的地址進行匹配比較,如果匹配,他就向主機發(fā)送一個低電平ACK位。不匹配不執(zhí)行操作,SDA保持高電平。

讀/寫位

位于地址幀的末尾。如果主機要向從機發(fā)送數(shù)據(jù),則為低電平。如果是主機向從機發(fā)送請求數(shù)據(jù),則為高電平。

數(shù)據(jù)幀

當(dāng)主機檢測到從機的ACK位后,就可以發(fā)送一個數(shù)據(jù)幀了。數(shù)據(jù)幀始終為8位,每個數(shù)據(jù)幀后緊跟一個ACK/NACK,未驗證接收狀態(tài)。發(fā)送完數(shù)據(jù)發(fā)送停止條件。

傳輸步驟

1.在SCL線為高電平時,主機通過將SDA線從高電平切換到低電平來啟動總線通信。

2.主機向總線發(fā)送要與之通信的從機的7位或10位地址,以及讀/寫位

3.每個從機將主機發(fā)送的地址與其自己的地址進行比較。如果地址匹配,則從機通過將SDA線拉低一位返回一個ACK位。如果主機的地址與從機的地址不匹配,則從機將SDA線拉高。

4.主機發(fā)送或接收數(shù)據(jù)幀;

5.傳輸完每個數(shù)據(jù)幀后,接收設(shè)備將另一個ACK位返回給發(fā)送方,以確認(rèn)已成功接收到該幀;

6.隨后主機將SCL切換為高電平,然后再將SDA切換為高電平,從而向從機發(fā)送停止條件。

I2C優(yōu)點

1.僅僅使用兩根線

2.支持多個主機和從機

3.硬件比UART更簡單

I2C缺點

1.數(shù)據(jù)傳輸比SPI慢

2.數(shù)據(jù)幀大小限制為8位

總結(jié)

在不同的時候可以選擇使用不同的通信方式去完成一個項目,或者在使用一些傳感器的時候,他就是特定的通信方式,所以這些通信方式都要去了解去學(xué)習(xí)和實現(xiàn)的。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多