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