✅作者简介:热爱科研的嵌入式开发者,修心和技术同步精进
❤欢迎关注我的知乎:对error视而不见
代码获取、问题探讨及文章转载可私信。
☁ 愿你的生命中有够多的云翳,来造就一个美丽的黄昏。
🍎获取更多嵌入式资料可点击链接进群领取,谢谢支持!👇
一、BH1750光照传感器简介
BH1750是一款数字式光照强度传感器,它采用I2C总线接口进行通信,能够高精度地测量环境光照强度。其测量范围为 1 - 65535 lx,并且具有多种测量模式可供选择,可满足不同场景下的光照测量需求。该传感器具有低功耗、高精度、体积小等优点,广泛应用于智能家居、工业控制、农业等领域。
二、硬件连接
BH1750通常通过I2C接口与STM32进行连接,以下是常见的连接方式:
BH1750引脚 | STM32引脚 |
---|---|
VCC | 3.3V |
GND | GND |
SDA | I2C SDA引脚 |
SCL | I2C SCL引脚 |
ADDR | 可选(用于设置I2C地址) |
当ADDR引脚接GND时,BH1750的I2C地址为 0x23;当ADDR引脚接VCC时,I2C地址为 0x5C。
三、使用STM32CubeMX进行配置
1. 选择芯片型号
打开STM32CubeMX,选择你所使用的STM32芯片型号,例如STM32F103C8T6。
2. 配置RCC
选择外部晶振作为时钟源,配置系统时钟,以满足芯片的运行需求。
3. 配置I2C
在“Connectivity”中选择I2C接口,将其模式设置为“Full-Duplex Master”,并配置相关参数,如时钟速度等。一般可将时钟速度设置为 100kHz。
4. 生成代码
点击“Project Manager”,设置工程名称、保存路径和工具链,然后点击“Generate Code”生成代码。
四、代码实现
1. BH1750寄存器和命令定义
在bh1750.h
文件中定义BH1750的寄存器地址和相关命令:
#ifndef __BH1750_H
#define __BH1750_H
#include "stm32xxxx_hal.h"
#define BH1750_ADDR 0x23 // ADDR引脚接GND时的地址
#define BH1750_POWER_DOWN 0x00
#define BH1750_POWER_ON 0x01
#