RT Thread筆記 BH1750軟體包的使用

2022-07-24 19:18:10 字數 2765 閱讀 6856

bh1750是一種用於兩線制序列匯流排介面的16位數字型光強度感測器積體電路。利用它的高解析度可以探測較大範圍的光強度變化。(1lx~65535lx)。

在rt-thread中讀取bh1750資料有兩種方法:一種方法是借助bh1750軟體包;另一種方法是直接使用i2c驅動框架讀取bh1750資料。

本次實驗我們借助bh1750軟體包來讀取bh1750感測器資料,使用rt-thread studio v1.1.0來建立工程。

目前只有軟體i2c驅動。儲存rt-thread settings檔案。編譯報錯:

那是因為我們沒有開啟i2c相關的巨集,drv_soft_i2c.c中模擬了幾個i2c,我們要確認我們使用哪乙個i2c與bh1750感測器相連。

這裡我們使用的是小熊派開發板,bh1750與mcu通過pb6、pb7引腳相連:

雖然pb6、pb7可以配置為硬體i2功能,但是我們這裡使用的是軟體i2c,所以這裡的pb6、pb7是當做gpio來用的。然後我們根據注釋的說明把**改為:

然後編譯報錯,錯誤提示這幾個巨集有問題。反反覆覆檢查,好像沒什麼問題,為啥就會瘋狂報錯。隱約記得有些例程例程中表示引腳好像不是這麼表示的,而是類似這樣的:

每個引腳都有乙個新的代號,而這些引腳與代號的關係可以在drv_gpio.c中檢視:

可以看到我們的pb6、pb7引腳的代號分別是22、23。然後嘗試著把上面的i2c巨集**改為:

編譯成功!然後試著讀取感測器資料,也成功了。所以,這大概是rt-thread studio v1.1.0的乙個小bug,模板工程的board.h裡關於i2c的注釋有問題,嚴重誤導了我們。。

若執行sensor read命令無資料輸出時,需要開啟\components\drivers\sensors\sensor_cmd.c,在sensor_show_data函式後面自行增加環境光照強度列印**:

case rt_sensor_class_light:

log_i("num:%3d, light:%4d.%d, timestamp:%5d", num, sensor_data->data.light / 10, sensor_data->data.light % 10, sensor_data->timestamp);

break;

(1)測試函式

(2)顯示資料

除此之外還有其它幾個應用相關的函式。

我們也可以模仿sensor_cmd.c裡面的**來寫我們自己的應用**:

static void bh1750_thread_entry(void *parameter)

/* 以唯讀模式開啟bh1750 */

if (rt_device_open(dev, rt_device_flag_rdonly) != rt_eok)

while(1)

else

rt_thread_mdelay(1000);

}}int bh1750_example(void)

return 0;

}/* 匯出到 msh 命令列表中 */

msh_cmd_export(bh1750_example, bh1750 example);

執行結果:

使用rt-thread提供給我的i/o裝置管理介面rt_device_find、rt_device_open、rt_device_read、rt_device_close來編寫應用。相關框圖:

關於rt-thread的i/o裝置模型可檢視往期筆記:【rt-thread筆記】io裝置模型

以上就是本次的分享,如有錯誤,歡迎指出!

我的個人部落格:

我的csdn部落格:

Rtthread學習筆記

rt sem init rt sem create rt sem take 等待 訊號量 rt sem release 放出 訊號量 rt sem detach 訊號量脫離2.互斥量 與訊號量不同的是,互斥量只能由持有執行緒釋放,其他執行緒不可釋放 取得互斥量的執行緒與高優先度的優先順序相同 rt ...

RT thread學習筆記之

1 往裸機工程新增 rt thread 原始碼 a 拷貝 rt thread package 到裸機工程根目錄 2 拷貝 rtconfig.h 檔案到 user 資料夾 a 將 rt thread 3.0.3 bsp 資料夾下面的 rtconfig.h 配套檔案拷貝到工程根目錄下面的 user資料夾...

RT Thread學習筆記之RT Thread簡介

rt thread是乙個功能強大,元件豐富的物聯網作業系統。物聯網作業系統是指以作業系統核心 可以是rtos linux等 為基礎,包括檔案系統 圖形庫等較為完整的中介軟體元件,具備低功耗 安全 通訊協議支援和雲端連線能力的軟體平台。rt thread kernel service library ...