1. 程式人生 > >USART串列埠全雙工與SPI全雙工通訊的區別!

USART串列埠全雙工與SPI全雙工通訊的區別!

目錄

1.背景知識

背景知識

首先我們先來區分一下單工、半雙工、全雙工模式。

單工:資料傳輸只支援資料在一個方向上傳輸

半雙工:允許資料傳輸在兩個方向傳輸,但是,在某一時刻,只允許資料在一個方向上傳輸,它實際上是一種切換方向的單工通訊。

全雙工:允許資料同時在兩個方向上傳輸,它要求傳送裝置和接收裝置都有獨立的接收和傳送能力;在同一時間可以同時接受和發                 送資訊,實現雙向通訊。

現在我們進入今天的主題:串列埠的全雙工與SPI的全雙工有什麼區別?

SPI的全雙工同通訊

SPI內部結構

仔細觀察上圖,可以看到

一個SPI介面中只有一個移位暫存器 

SPI通訊雙方

由於一個SPI介面只有一個移位暫存器的原因,主機在將移位暫存器的資料一位位傳輸到從機的移位暫存器的同時,從機也將自己移位暫存器裡的資料一位位傳輸到主機的移位暫存器中。這就是一個全雙工模式的資料傳輸過程,主要原因就是因為一個SPI中只有一個移位暫存器(你傳輸的資料進入從機的移位暫存器,將它的資料一位位“擠”了出來)。

串列埠USART的全雙工通訊

微控制器的串列埠是有全雙工模式的,但是,注意了(敲黑板了)!

微控制器的串列埠的全雙工模式並不是真正意義上的全雙工,它的串列埠不能同時實現雙向的資料傳輸,但它的通訊雙方的連線同全雙工是一樣的(你的RX—我的TX,我的TX—你的RX)。這類似與

可切換傳輸方向的半雙工通訊

造成這種現象的原因是什麼呢?

串列埠內部結構

仔細觀察圖片,我們可以看到

一個串列埠介面中有2個移位暫存器:傳送移位暫存器和接收移位暫存器。

 有兩個單獨的移位暫存器,資料就不會同時雙向的傳遞了。A傳送的資料通過自己的傳送移位暫存器傳輸給B的接受移位暫存器,由於B的傳送與接受移位暫存器是獨立的,所以B就不會把自己傳送移位暫存器的資料傳輸給A的接受移位暫存器。

我們上面說過,SPI全雙工傳輸的主要原因是因為它的內部只有一個移位暫存器(傳送與接受共用一個移位暫存器,所以就會出現“擠”的過程)。