步驟1:一些Shell命令
sudo i2cdetect -y 1
您將看到一個表格,如圖所示。我已經安裝了BMP280溫度和氣壓傳感器。根據表,i2c地址為0x76。請記下該地址。
對所有i2c設備執行此操作。
步驟2:案例1:I2c設備具有相同的地址
這始終是有問題的情況。 i2c總線可以處理多個設備,但是它們應具有不同的i2c地址。有些i2c設備具有用于設置其他i2c地址的跳線,但許多設備卻沒有。在這種情況下,您可以使用i2c多路復用器(硬件)來旋轉i2c SDA(數據)和SCL(時鐘),也可以創建其他i2c總線或更多。
我將創建兩個附加總線, nl總線3和4
打開cli并運行
cd/boot
sudo nano config.txt
添加以下代碼行,最好在啟用spi和i2c的部分中。
dtoverlay = i2c-gpio,bus = 4,i2c_gpio_delay_us = 1, i2c_gpio_sda = 23,i2c_gpio_scl = 24
此行將在GPIO 23上以SDA和GPIO 24形式在SCL上創建一個附加的i2c總線(總線4)(GPIO 23和24為默認值)
還添加以下行以創建i2c總線3
dtoverlay = i2c-gpio,bus = 3,i2c_gpio_delay_us = 1,i2c_gpio_sda = 17,i2c_gpio_scl = 27
GPIO 17將是i2c總線4的SDA,而GPIO 27將是SCL。
Tipe控件X退出。
關于總線編號和順序的說明:
從不使用總線0和2,它用于其他的東西像帽子上的eprom這樣的板子
對于2019年4月發布的Raspbian版本:
您應該始終從config.txt中的最高總線(在這種情況下為4總線)開始,一直運行到最低總線(3總線)。
最低的總線必須始終是3總線。
如果您需要5條額外的總線,則這些總線必須雙向接入7,6,5,4,3的順序
最初編寫此Instructable時,此總線順序上的問題不存在。似乎對內核進行了更改。
關閉PI,將其關閉。將您的i2c設備連接到總線4(SDA到GPIO 23和SCL到GPIO 24),另一個連接到i2c總線3(SDA到GPIO 17和SCL到GPIO 27)。
打開pi。
運行:
sudo i2cdetect -l(小寫L)
現在您將看到i2c總線3和4是也列出了。同時運行:
sudo i2cdetect -y 3
sudo i2cdetect -y 4
現在,您可以用您的編程語言使用傳感器。記住要指定正確的i2c總線。
附件是流行的BMP280溫度和壓力傳感器的一個示例。沒有多路復用器可以如此快速地讀取2個BMP280。
還附帶了2個Sensirion SDP 810傳感器的示例。再次以比過去使用的多路復用器更快的速度工作
我創建了python代碼來從adafruit中讀取兩個新的BMP388。
將來我可能還會在https:/中添加其他傳感器/github.com/JJSlabbert/Raspberry_PI_i2C_conficts
步驟3:案例2:不同的I2c地址。
簡單。 i2c是一輛公共汽車。總線的目的是與多個設備通信。將設備并行連接到同一i2c總線。您可以使用總線一。
運行:
sudo i2cdetect -y 1
您將看到列出的設備。
責任編輯:wv
-
I2C
+關注
關注
28文章
1495瀏覽量
124547 -
樹莓派
+關注
關注
117文章
1710瀏覽量
105874
發布評論請先 登錄
相關推薦
評論