如何在兩個Arduino開發板之間使用I2C總線進行通信

在之前的文章中,我們介紹了Arduino之間的SPI通信。今天我們將學習另一種串行通信協議:I2C(內部集成電路)。比較I2C和SPI,I2C只有兩條線,而SPI使用四條,I2C可以有多個主機和從機,而SPI只能有一個主機和多個從機。因此,如果項目中有多個微控制器需要作爲主機,那麼就採用I2C。 I2C通信通常用於與陀螺儀、加速度計、氣壓傳感器、LED顯示器等進行通信。

在本篇文章中,我們將使用I2C總線在兩個arduino開發板之間進行通信,並且使用電位計將值(0到127)相互發送。這些值將顯示在連接到每個Arduino的1602液晶顯示屏上。文章中,一個Arduino開發板作爲主機,另一個開發板作爲從機。現在讓我們從關於I2C通信的介紹開始吧。

什麼是I2C通信協議?

術語IIC代表“Inter Integrated Circuits”。它通常表示爲I2C或IIC,甚至在某些地方表示爲2線接口協議(TWI),但它們代表的含義是一樣的。 I2C是同步通信協議,也就是說共享信息的設備必須共享公共時鐘信號。它只有兩根線來共享信息,其中一根用於時鐘信號,另一根用於發送和接收數據。

I2C通信如何工作?

I2C通信最初由Phillips引入。如前所述,它有兩根導線,這兩根導線將連接在兩個設備上。這裏一個設備稱爲主機,另一個設備稱爲從機。通信應該並且將始終發生在一個主機和一個從機之間。 I2C通信的優點是可以將多個從機連接到一個主機。

在這裏插入圖片描述

完整的通信通過這兩條導線進行,即串行時鐘(SCL)和串行數據(SDA)。

● 串行時鐘(SCL):與主設備共享主設備生成的時鐘信號

● 串行數據(SDA):在主機和從機之間發送數據。

在任何給定時間,只有主機才能啓動通信。由於總線中有多個從站,因此主站必須使用不同的地址來引用每個從站。當被尋址時,只有具有該特定地址的從機將應答該信息,而其他地址繼續退出。這樣我們就可以使用相同的總線與多個設備進行通信。

I2C的電壓電平未預定義。 I2C通信靈活,意味着由5v電源供電的器件,可以使用5v用於I2C,3.3v器件可以使用3v進行I2C通信。但是,如果兩個運行在不同電壓下的設備需要使用I2C進行通信呢? 5V I2C總線不能與3.3V器件連接。在這種情況下,電壓移位器用於匹配兩個I2C總線之間的電壓電平。

有一些條件可以構成傳輸。傳輸的初始化從SDA的下降沿開始,在下圖中定義爲“START”條件,其中主機將SCL設爲高電平,同時將SDA設置爲低電平。如下圖所示,

在這裏插入圖片描述

SDA的下降沿是START條件的硬件觸發。在此之後,同一總線上的所有設備都進入監聽模式。

更多內容請訪問以下鏈接:https://www.yiboard.com/thread-1045-1-1.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章