STM32串列埠2種通訊模式 非同步通訊與同步通訊

2021-08-31 11:29:45 字數 1740 閱讀 4501

目錄

1.傳送資料的過程

2.接收資料的過程

3.非同步通訊

1.特點

2.那為什麼會是這種通訊傳輸格式呢?

4.同步通訊

1.特點

2.資料傳輸格式

5.非同步與同步通訊的比較

傳送資料暫存器tdr和傳送移位暫存器:傳送暫存器用來儲存要傳送的資料,一位暫存器用來將資料從lsb一位一位地移出去

接收資料暫存器rdr和接收移位暫存器:接受資料移位暫存器將資料從lsb一位一位移入接收資料暫存器中,並儲存在rdr中

先將乙個位元組的資料寫入tdr,然後移位暫存器一位位地傳輸。下一次傳輸之前,要確保之前乙個資料已經傳送出去了,不然會覆蓋之前還未傳送出去的部分,造成資料丟包。

串列埠一旦讀到了要接受資料的起始位,就開始將外界傳過來的資料從移位暫存器一位一位地移入rdr中。接受下個位元組之前,一定要將這次的資料讀出來,不然會發生覆蓋資料的現象。

1.以字元為單位傳送資訊。

2.相鄰兩字元間的間隔時間任意長。

3.非同步通訊沒有時鐘線的約束,通訊雙方都有自己的通訊頻率(波特率),且雙方的波特率要相同,但波特率的相位可能不同。

4.非同步通訊的資料傳輸格式:1個起始位+資料(1個字元)+奇偶校驗位+停止位。

也就是說,非同步通訊每傳送乙個資料,都要傳送上面的一串格式,這就造成了資料傳輸的效率大大降低了,它不能用來大資料的傳輸。

由於非同步通訊沒有時鐘線sclk的約束,使得通訊雙方的傳送與接受不同步(接收方根本不知道你什麼時候傳送資料過來,也    不知道你發來的一串字元哪些才是有效的)。所以你傳送每乙個字元資料,你都得先傳送乙個起始位(告訴對方我要發資料       了),然後才是資料字元和奇偶校驗(可選擇),最後你要告訴對方我資料傳送完了(傳送停止位)。

由於接收方有自己的時鐘,所以在傳送字元的時候,傳送方傳送一位資料的時刻與接受一位資料的時刻很可能不是同一時刻(波特率相位不同),參考上圖。如果一次傳輸中連續傳送字元,就很可能出現一種現象:第乙個字元還沒被接收完,第二個字元就來了,第二個字元會將移位暫存器中第乙個字元還沒傳送出去的幾位給覆蓋掉!

所以一次傳輸中只能傳輸乙個字元!

1.資料傳送是以資料塊(多個字元組成資料塊流)

2.在乙個資料塊(資訊幀)內,字元與字元間無間隔

3.因為一次傳輸的資料塊中包含的資料較多,所以接收時鐘與傳送進鐘嚴格同步,通常要有同步時鐘sclk

4.通訊雙方的時鐘sclk是連在一起的,提供同步時鐘。

5.通訊雙方接受與傳送是同步的(時刻相同)

1.非同步通訊雙方之間沒有sclk的約束,同步通訊雙方的sclk連在一起。

2.非同步通訊資料傳輸是以字元(乙個位元組)傳輸的,同步通訊資料傳輸是以位元組塊(多個位元組)傳輸的。

3.非同步通訊傳輸效率低,同步通訊傳輸效率高(但複雜)。

4.非同步通訊位元組傳送的間隔是任意的,同步通訊的位元組傳輸是沒有間隔的

stm32串列埠通訊

通訊方式 1 同步通訊 帶時鐘同步訊號傳輸 spi,iic等 2 非同步通訊 不帶時鐘用途訊號 usrt,單匯流排 stm32串列埠引腳表 串口號 rxd txd 1 pa10 pa9 2 pa3pa2 3 pb11 pb10 4 pc11 pc10 5 pd2pc12 通訊過程 接收過程 由rx入...

STM32串列埠通訊

1.常用的串列埠相關暫存器 1 usart sr狀態暫存器,對應的庫函式 flagstatus usart getflagstatus usart typedef usartx,uint16 t usart flag 2 usart dr資料暫存器,對應的庫函式 void usart senddat...

STM32串列埠通訊

串列埠作為mcu最重要的外部介面,同時也是軟體開發重要的除錯手段,其重要性不言而喻。在這裡我們主要從庫函式的角度來講述如何設定串列埠,來達到最基本的通訊功能。串列埠的設定一般可以歸結為以下幾個步驟 1 串列埠時鐘使能,gpio時鐘使能。2 設定引腳復用器對映,呼叫gpio pinafconfig函式...