STM32 I2C匯流排通訊原理

2021-10-25 03:29:11 字數 1370 閱讀 4295

i2c匯流排是由philips公司開發的一種簡單、雙向二線制同步序列匯流排。用於連線微控制器以及其外圍裝置,是微電子通訊控制領域廣泛採取的一種匯流排標準。他是同步通訊的一種特殊形式,具有介面線少,控制方式簡單,期間封裝形式少,通訊速率高等優點。

i2c 匯流排在物理連線上非常簡單,只有兩條匯流排sda(序列資料線)和scl(序列時鐘線)及上拉電阻組成。通訊原理是通過對scl和sda線高低電平時序的控制,來產生i2c匯流排協議所需要的訊號進行資料的傳遞。在匯流排空閒狀態時,這兩根線一般被上面所接的上拉電阻拉高,保持著高電平。

i2c協議規定:匯流排上資料的傳輸必須以乙個起始訊號作為開始條件,以乙個結束訊號作為傳輸的停止條件。起始和結束訊號總是由主裝置產生,在匯流排空閒狀態時,scl和sda保持著高電平。

起始訊號:當scl為高電平、sda由高到底跳變時,表示產生乙個起始條件,如下圖s部分

結束訊號:當scl為高電平、sda由低到高跳變時,表示產生乙個停止條件,如下圖p部分

資料傳輸:資料傳輸以位元組為單位,主裝置在scl線上每產生乙個時鐘脈衝的過程中將在sda線上傳輸乙個資料位,資料在時鐘的高電平被取樣,乙個位元組按資料位從高位到低位的順序進行傳輸。

應答訊號:接收資料的器件在接收到8bit資料後,向傳送資料的器件傳送低電平的應答訊號,表示已經接受到了資料。這個訊號可以是主控器件發出的,也可以是從動器件發出的。總之,由接收資料的器件發出。

當傳送裝置要傳送資訊的時候,首先傳送7位的從裝置的位址,然後傳送1位的方向位,方向位前面介紹到了,0表示主裝置向從裝置寫資料,1表示主裝置向重裝置讀資料,完成前面的操作剛好8位也就是乙個位元組,然後等待應答訊號(前面也有介紹),當收到低電平的應答訊號,表示從裝置已經接受到了資料,可以開始通訊。

主裝置往從裝置中寫資料

主裝置從從裝置中讀資料

主裝置往從裝置中讀/寫資料流程的唯一的不同是,傳送從裝置位址後的方向位的不同,0表示主裝置向從裝置寫資料,1表示主裝置向重裝置讀資料

軟體模擬i2c時序

硬體控制產生i2c時序

STM32 I2C從機傳送資料 中斷方式

在除錯stm32 i2c中斷方式傳送資料時,發現上篇介紹的內容有很多不足之處,對i2c時序也有了新的認識。上篇文章介紹在資料傳送完成後,傳送nack和stop,然後向從機dr暫存器寫了乙個沒用的資料,目的是為了清楚傳輸完成事件。其實文件中說的很明白,再倒數第二個數之後傳送nack和stop,當時沒有...

I2C匯流排通訊

uart 屬於非同步通訊,比如電腦傳送給微控制器,電腦只負責把資料通過txd 傳送出來即可,接收資料是微控制器自己的事情。而 i2c 屬於同步通訊,scl 時鐘線負責收發雙方的時鐘節拍,sda 資料線負責傳輸資料。i2c 的傳送方和接收方都以 scl 這個時鐘節拍為基準進行資料的傳送和接收。i2c匯...

通訊方式 I2C匯流排

i2c器件的從機位址由4位器件位址,2 3位引腳位址和1位方向位 讀寫位 0寫1讀 i2c由 資料線 sda 與時鐘線 scl 組成 產生iic起始訊號 void iic start void 產生iic停止訊號 void iic stop void 產生ack應答 void iic ack voi...