UART I2C以及SPI協議學習總結

2021-08-04 01:46:24 字數 1236 閱讀 4909

uart(通用非同步收發器)非同步序列通訊

是屬於非同步通訊。所謂的非同步通訊,簡單來講就是不同步,比如計算機傳送給微控制器,計算機只負責把資料通過txd傳送出來即可,接收資料是微控制器自己的事。uart通訊先是一直保持高電平,傳送資料之前有起始位0,而後是8位資料位(資料位是固定長度,福特率分之一),完了之後是1位停止位(保持高電平))。(資料位是低位在先,高位在後)

uart通訊雖然是兩條線(txd和rxd),但是實際上一條線就足夠通訊。 (半雙工)

i2c

而i2c(兩線穿行介面)屬於同步通訊,scl負責收發雙方的時鐘節拍,sda資料線負責傳輸資料。i2c的傳送方和接收方都以scl這個時鐘節拍為基準進行收發資料。

i2c每次通訊都必須有兩根線才能進行通訊。

i2c匯流排是開漏引腳併聯的結構,因此外部要加上上拉電阻。開漏電路外部加上拉就構成了線「與」的關係,所謂的線「與」就是講,所以得器件都是高電平才是高電平,有乙個為低就是低。(這樣做每乙個器件都可以做主機)

i2c的其實訊號定義為在scl的高電平期間,sda給乙個下降沿,表示起始訊號。資料部分i2c無固定波特率但有時序要求,只有在scl為高電平期間,sda才允許變化!(但是在i2c匯流排的起始和結束時例外。)高位在先低位在後。(因為在scl為高電平期間,接收方要來讀取當前sda的訊號)(這麼來講的話,ad裡面的i2c器件pcf8951,p331原文」pcf8591的轉換時鐘週期為i2c的scl,8個scl週期完成一次轉換(),所以當前的轉換結果總是在下乙個位元組的8個scl上才能讀出,因此這裡的第一條語句的作用是產生乙個整體的scl時鐘提供給pcf8591進行時鐘轉換,第二次讀取的是當前的轉換結果,如果只使用第二條語句的話,每次讀到的都是上一次的轉換結果。」)停止訊號是在scl為低電平期間,sda由低到高產生乙個上公升沿。

(全雙工)

spi 穿行外圍裝置介面,高速、全雙工、同步通訊

(全雙工)

通訊的三種型別:

1.單工:只允許一方向另一方傳送資訊,而另一方不能回傳資訊。比如電視遙控,收音機廣播。

2.半雙工:資料可以在雙方之間進行傳播,但是同一時刻只允許一方傳送給另一方。比如說對講機。

3.全雙工:資料可在雙方之間進行傳播,也允許同一時刻兩方同時接收資料。比如打**。

裝置樹之I2C和SPI例項

clock frequency i2c匯流排頻率,常用值有100000,400000 i2c具體例項如下圖所示 圖1圖2上圖1描述i2c控制器屬性,比如暫存器屬性,中斷屬性 從中斷屬性可知 i2c控制器使用spi interrupts方式,中斷號為51,高電平觸發 上圖2描述i2c控制器子結點屬性 ...

I2C和SPI異同及使用注意

1 iic匯流排不是全雙工,2根線scl sda。spi匯流排實現全雙工,4根線sck cs mosi miso 2 iic匯流排是多主機匯流排,通過sda上的位址資訊來鎖定從裝置。spi匯流排只有乙個主裝置,主裝置通過cs片選來確定從裝置 3 iic匯流排傳輸速度在100kbps 4mbps。sp...

認識C 2 常量以及宣告方法

定義變數 int a,b,c 宣告三個int型別的變數 a b c,為給初值 bool flag false 宣告bool型別的變數,初始值為false double db 0.1235 wchar t chr fhaf string str duwenhahhah 宣告乙個字串變數定義方法 int...