www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 工業(yè)控制 > 電路設(shè)計(jì)項(xiàng)目集錦
[導(dǎo)讀]您有一個(gè)微控制器和兩個(gè)相同的傳感器,這意味著它們具有相同的I2C地址。如果沒有多路復(fù)用器或配置傳感器的I2C地址的可能性,則無法將它們連接到相同的I2C總線。然而,STM32 Nucleo 64 F401RE板提供了幾個(gè)獨(dú)立的I2C總線,允許將每個(gè)傳感器連接到其單獨(dú)的I2C總線,以避免地址沖突。

您有兩個(gè)傳感器,具有相同的I2C地址,您希望為每個(gè)傳感器使用單獨(dú)的I2C總線連接到Nucleo板。

您有一個(gè)微控制器和兩個(gè)相同的傳感器,這意味著它們具有相同的I2C地址。如果沒有多路復(fù)用器或配置傳感器的I2C地址的可能性,則無法將它們連接到相同的I2C總線。然而,STM32 Nucleo 64 F401RE板提供了幾個(gè)獨(dú)立的I2C總線,允許將每個(gè)傳感器連接到其單獨(dú)的I2C總線,以避免地址沖突。

在本例中,我們使用支持多個(gè)I2C總線的STM32 Nucleo 64 F401RE板。作為傳感器,我們有兩個(gè)盛思銳SCD41二氧化碳傳感器評估板。您可以使用任意兩個(gè)傳感器,無論它們是相同的產(chǎn)品還是具有相同I2C地址的不同傳感器。評估板很方便,因?yàn)槲覀兛梢詫⑺鼈兣c評估套件中包含的電纜連接起來,允許我們在不焊接面包板的情況下連接所有東西。

一般工作原理

我們要連接的兩個(gè)SCD41傳感器的I2C地址為0x62,無法更改。因此,為了從微控制器與兩個(gè)傳感器通信,我們將為每個(gè)傳感器使用單獨(dú)的I2C總線。每個(gè)I2C總線需要一個(gè)引腳用于SDA線,一個(gè)引腳用于SCL線。在軟件方面,我們需要初始化每個(gè)I2C總線的“TwoWire”實(shí)例并配置引腳?!癟woWire”是標(biāo)準(zhǔn)Wire庫的一部分。作為最后一步,我們將創(chuàng)建傳感器驅(qū)動程序類的兩個(gè)實(shí)例,并使用標(biāo)準(zhǔn)I2C總線初始化一個(gè)實(shí)例,使用自定義I2C總線初始化另一個(gè)實(shí)例。

布線

STM32 Nucleo 64 F401RE板具有預(yù)定義的I2C引腳。我們連接到電路板的Arduino引腳頭,并使用I2C1和I2C2的預(yù)定義引腳。

關(guān)于STM32 Nucleo 64 F401RE板的更多信息可以在st.com上找到。

上拉電阻

在每對I2C線(即數(shù)據(jù)(SDA)和時(shí)鐘(SCL)線上安裝上拉電阻對于良好的信號質(zhì)量和健壯的通信非常重要。您可以在I2C上拉電阻介紹中了解更多信息。

Nucleo板和開發(fā)套件板都有內(nèi)建的上拉電阻。因此,我們需要將一個(gè)電阻連接到每條I2C通信線路上。在這個(gè)例子中使用了四個(gè)8.26歐姆電阻,并且使用面包板進(jìn)行布線。

接線圖

R.1到R.4代表阻值為8.26歐姆的電阻器。

?SEK-SCD41 A引腳1至R.1 (SCL,黃色)

?r1到Nucleo Arduino連接器引腳15 (SCL,黃色)

?r1到Nucleo Arduino連接器3V3

?SEK-SCD41 A引腳2到Nucleo Arduino連接器GND

?SEK-SCD41 A引腳3到Nucleo Arduino連接器3V3(傳感器供電電壓,紅色電纜)

?SEK-SCD41 A引腳4到R.2 (SDA,綠色)

?R.2到Nucleo Arduino連接器引腳14 (SDA,綠色)

?R.2到核子Arduino連接器3V3

?SEK-SCD41 B引腳1至R.3 (SCL,黃色)

?R.3到Nucleo Arduino連接器引腳6 (SCL,黃色)

?R.3到Nucleo Arduino連接器3V3

?SEK-SCD41 B引腳2到Nucleo Arduino連接器GND(接地,黑色電纜)

?SEK-SCD41 B引腳3到Nucleo 3.3V(傳感器電源電壓,紅色電纜)

?SEK-SCD41 B引腳4到R.4 (SDA,綠色)

?R.4到Nucleo Arduino連接器引腳3 (SDA,綠色)

?R.4到核子Arduino連接器3V3

我們稍后在軟件中的配置必須記住的是我們用于I2C總線的引腳。

軟件設(shè)置

首先,您需要包含Wire庫:

為了用正確的引腳配置I2C總線,我們需要實(shí)例化兩個(gè)“TwoWire”實(shí)例,并傳遞用于I2C通信的引腳。

它們的作用域應(yīng)該是全局的,因此定義在‘ setup() ’和‘ loop() ’之外。

然后,通過I2C總線向傳感器發(fā)送命令的代碼需要知道哪個(gè)傳感器使用哪個(gè)總線。因此,您需要相應(yīng)地配置傳感器實(shí)例。首先,為每個(gè)傳感器創(chuàng)建一個(gè)驅(qū)動程序?qū)嵗?。它們的作用域?yīng)該是全局的,這樣就可以從‘ setup() ’和‘ loop() ’中引用它們。

然后,在‘ setup() ’函數(shù)中,為傳感器分配I2C總線:

現(xiàn)在可以向傳感器發(fā)送任何I2C命令,例如啟動測量和檢索值。

本文編譯自hackster.io

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀
關(guān)閉