<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
"); //-->

博客專(zhuān)欄

EEPW首頁(yè) > 博客 > 「超級干貨」STM32CubeMX學(xué)習教程之硬件I2C讀取光照度

「超級干貨」STM32CubeMX學(xué)習教程之硬件I2C讀取光照度

發(fā)布人:智能物聯(lián)研習社 時(shí)間:2021-09-29 來(lái)源:工程師 發(fā)布文章

使用STM32 HAL庫讀寫(xiě)環(huán)境光照度傳感器(BH1750)

本文將教大家如何快速使用STM32HAL庫讀取光照度數據。


實(shí)現功能:通過(guò)App實(shí)時(shí)監測光照度數據。


五分鐘免費構建物聯(lián)網(wǎng)應用,立即免費體驗:

 https://auth.tuya.com/?_source=7c8653b7bd61bf9239a1a6c12e52124d  


一.使用STM32CubeMX創(chuàng )建一個(gè)新工程

1.如下圖創(chuàng )建一個(gè)新工程:

image-20210828120739333



2.如下圖選擇自己現有的STM32開(kāi)發(fā)板進(jìn)行開(kāi)發(fā):

image-20210828115324329



3.配置時(shí)鐘源


如果選擇使用外部高速時(shí)鐘(HSE),則需要在System Core中配置RCC;


如果使用默認內部時(shí)鐘(HSI),這一步可以略過(guò);


下面工程我使用的是內部時(shí)鐘,因此這一步是不需要的。

image-20210828114418492



4.配置串口


NUCLEO-L476RG板載ST-Link并且虛擬了一個(gè)串口,原理圖如下:

image-20210828115452591



使PC的串口與USART2之間連接。(打印日志口,同時(shí)也作為程序下載口)


接下來(lái)開(kāi)始如下圖配置USART2:



image-20210828115626599

使用串口1和涂鴉模組WB3S通信(單片機和WB3S串口通信,采用透傳的模式),串口1配置如下圖所示:


image-20210828115749857image-20210828120005508




5.配置IIC口


為了采集光照度數據(BH1750),單片機采用I2C協(xié)議和光照度模塊進(jìn)行通信,采用I2C1,配置如下圖所示:

image-20210831142209738



6.配置時(shí)鐘樹(shù)


STM32L4的最高主頻到80M,所以配置PLL,最后使HCLK=80Mhz即可:


image-20210826180846723


7.生產(chǎn)工程設置


image-20210831142511954


8.代碼生成設置


最后設置生成獨立的初始化文件:


image-20210826161522477


9.生成代碼


點(diǎn)擊GENERATE CODE即可生成MDK-V5工程如下:

image-20210826162035145



10.用KEIL5打開(kāi)生成的代碼,然后開(kāi)始添加自己要實(shí)現的功能函數。


二.BH1750驅動(dòng)程序設計

1.硬件設計

BH1750 照度檢測模塊搭載一個(gè)BH1750FVI,BH1750FVI是兩線(xiàn)式串行總線(xiàn)接口(IIC)的16位數字輸出型環(huán)境光強度傳感器,利用它的高分辨率可以探測較大范圍內的光照強度變化(1lx - 65535lx)。


BH1750的實(shí)物圖如下:


image-20210831150108972

BH1750的原理圖如下:

image-20210831145811207


管腳介紹


名稱(chēng)VCCGNDSCLSDAADDR

功能描述3~5V供電參考地IIC時(shí)鐘線(xiàn)IIC數據線(xiàn)地址線(xiàn)

2.軟件設計

參考BH1750FVI數據手冊進(jìn)行編程。


BH1750的器件地址由ADDR端口的高低電平?jīng)Q定。

image-20210831151712403


驅動(dòng)程序底層使用 HAL 庫的 IIC 初始化文件,包含如下頭文件:


image-20210831151922533

發(fā)送命令的函數如下:

image-20210831152009275


接收光照強度數據的函數如下:

image-20210831152106961


根據數據手冊中給出的公式,編寫(xiě)將從BH1750讀出的兩個(gè)字節數據轉換為對應強度值的函數(數據轉換函數):



驅動(dòng)程序設計完成之后就可以開(kāi)始進(jìn)行聯(lián)網(wǎng)功能的設計了。


三.平臺產(chǎn)品創(chuàng )建

??進(jìn)入涂鴉智能IoT平臺點(diǎn)擊“創(chuàng )建產(chǎn)品”(點(diǎn)擊以下鏈接)。這里不用糾結產(chǎn)品品類(lèi)的選擇,重點(diǎn)是為了拿到MCU-SDK文件,實(shí)際使用時(shí)可以根據具體的產(chǎn)品修改sdk內部的pid即可適配自己的產(chǎn)品。


 auth.tuya.com/?_source=7c8653b7bd61bf9239a1a6c12e52124d  


例如:點(diǎn)擊創(chuàng )建產(chǎn)品,選擇標準類(lèi)目>電工>開(kāi)關(guān)。

(當時(shí)為了測試用,所以選擇一個(gè)標準類(lèi)目,也可以在平臺上選擇其它品類(lèi)去創(chuàng )建也是可以的)



image-20210823115534415

選擇自定義方案,輸入產(chǎn)品名稱(chēng),選擇通訊協(xié)議為WIFI+藍牙,點(diǎn)擊創(chuàng )建產(chǎn)品。


根據要實(shí)現的設備功能,創(chuàng )建好DP功能點(diǎn)。

image-20210831142658185



創(chuàng )建好DP點(diǎn)之后,點(diǎn)擊設備面板,選擇自由配置面板,方便開(kāi)發(fā)調試,也可以選擇其它的面板。

image-20210828102747617


面板創(chuàng )建好之后,點(diǎn)擊硬件開(kāi)發(fā),對接方式選擇“涂鴉標準模組MCU SDK開(kāi)發(fā)”,模組選擇WB3S Wi-Fi&Bluetooth模組(在實(shí)際開(kāi)發(fā)過(guò)程中可選擇手上已有的涂鴉模組即可),固件選擇通用固件。


image-20210827104014520image-20210831143049655

四.MCU SDK移植

平臺產(chǎn)品創(chuàng )建完之后,我們會(huì )獲取到一個(gè)MCU SDK包,之后就可以快速移植到MCU了。

在解壓后的文件夾中找到mcu_sdk相關(guān)源文件和頭文件,全部拷貝到我們創(chuàng )建好的工程模板里的MCU_SDK文件夾里;打開(kāi)上面創(chuàng )建好的工程,將mcu_sdk的源文件添加進(jìn)對應組里,同時(shí)添加include paths:

image-20210531160912620


點(diǎn)擊編譯,會(huì )崩出幾個(gè)error,接下來(lái)就需要按照出error的地方注釋提示一步步修改代碼。


image-20210531162650067

uart_receive_input()為串口接收數據處理接口,只需將它放進(jìn)串口中斷即可,這里我們以串口1作為與模組通訊串口,調試中把串口2作為日志口,首先在main函數中添加串口1和串口2初始化代碼,并使能接收中斷(接收使能中斷已在串口初始化函數中體現):



20210907171737319


然后在stm32l4xx_it.c文件中添加中斷處理函數,然后包含 mcu_api.h文件并將uart_receive_input()接口添加進(jìn)去,添加完成后,刪除error注釋即可:



image-20210828104429211image-20210531162737760



再來(lái)看下一個(gè)errror,由于我們上一步已經(jīng)通過(guò)中斷接收的形式實(shí)現了串口數據接收處理了,這個(gè)多字節處理我們可以不用,直接把error注釋刪除即可。

image-20210531162850680


下一個(gè)errror:


image-20210531163026617

按照提示將該接口放在main函數的while循環(huán)內即可,別忘了在 main.c 中包含 wifi.h 頭文件。


image-20210831143209965

再來(lái)看下一個(gè)error:


image-20210531163323771

同樣的,按照提示將該函數放到main函數開(kāi)頭部分即可。


image-20210831143300925

然后是串口發(fā)送相關(guān):

image-20210531163756239


這里只需實(shí)現串口1的數據發(fā)送函數然后放進(jìn)去即可。使用STM32 HAL庫里面的串口單字節發(fā)送函數,以阻塞方式發(fā)送數據量,添加代碼如下:



image-20210828105450016image-20210828105352813


然后是DP數據點(diǎn)上報相關(guān)的:

這里我們可以直接注釋掉error提示,在實(shí)際開(kāi)發(fā)過(guò)程中再實(shí)現該功能即可。


image-20210828105606863


以下在主函數里面,添加光照度上報的數據。這里可以改成自己想要上報傳感器的數據。


image-20210901155930522

最后是產(chǎn)測相關(guān)的:



一般開(kāi)發(fā)者不涉及生產(chǎn)測試的話(huà)直接刪除注釋不用管就行。


下圖這個(gè)紅色標出的函數是進(jìn)行配網(wǎng)的,通過(guò)NUCLEO-L476開(kāi)發(fā)板上的用戶(hù)按鍵進(jìn)行配網(wǎng)連接。


image-20210831143448232


修改完上述幾處地方后,再次編譯,顯示error全部消除,至此涂鴉MCU SDK就已移植完畢,后續可使用涂鴉模組調試助手進(jìn)行測試。涂鴉模組調試助手的使用方法可參考調試助手文檔。


五.實(shí)驗樣機測試展示

image-20210831145405075

通過(guò)之前配置好的面板,通過(guò)涂鴉智能APP進(jìn)行配網(wǎng)實(shí)時(shí)采集光照度傳感器的數據。

image-20210831143630604

五分鐘免費構建物聯(lián)網(wǎng)應用,立即免費體驗:

 https://auth.tuya.com/?_source=7c8653b7bd61bf9239a1a6c12e52124d  



*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。



關(guān)鍵詞: 嵌入式 工程師 STM32

相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>