BH1750 STM32 驱动程序

简介:

BH1750FIV是一个采用标准IIC总线接口的环境光强传感器,此传感器适用于获得像键盘LCD和手机背光灯等光强。买的淘宝上贴好的模块,gy30

指令码:

/*************************************************************/

#define BHAddWrite     0x46      //从机地址+最后写方向位
#define BHAddRead      0x47      //从机地址+最后读方向位
#define BHPowDown      0x00      //关闭模块
#define BHPowOn        0x01      //打开模块等待测量指令
#define BHReset        0x07      //重置数据寄存器值在PowerOn模式下有效
#define BHModeH1       0x10      //高分辨率 单位1lx 测量时间120ms
#define BHModeH2       0x11      //高分辨率模式2 单位0.5lx 测量时间120ms
#define BHModeL        0x13      //低分辨率 单位4lx 测量时间16ms
#define BHSigModeH     0x20      //一次高分辨率 测量 测量后模块转到 PowerDown模式
#define BHSigModeH2    0x21      //同上类似
#define BHSigModeL     0x23      // 上类似
/*************************************************************/

BH1750FIV工六种模式分为连续型和一次型,连续型又分为高精度12和低精度模式,单次型同样分为高精度12和低精度模式。单次型与连续型的区别在于单次型读完一次数据就会自动转为PowerDown模式。

各模式测量所需时间

时序图

Bh1750采用标准的IIC总线结构,驱动程序也简单,从图可以看出设置高精度连续读模式先发送IIC起始信号再发送7位器件地址+1位写标志位也就是0X46,然后从机应答之后在发送模式指令等待ack应答后发送IIC停止信号这样一条模式就设置完毕。代码如下:

void bh_data_send(u8 command)
{
    do{
    iic_start();                      //iic起始信号
    iic_byte_write(BHAddWrite);       //发送器件地址
    }while(iic_wait_ack());           //等待从机应答
    iic_byte_write(command);          //发送指令
    iic_wait_ack();                   //等待从机应答
    iic_stop();                       //iic停止信号
} 

读取数据参照时序图也比较简单,先发送IIC起始信号,在发送7位器件地址+一位读写标志位,等待从机ACK应答,这时主机开始读取IIC数据,再主机读取完8位数据,主机要向从机发送ack应答信号告诉从机接收数据完毕,然后再读取低八位数据,主机发送非应答信号然后结束IIC通信。代码如下:

u16 bh_data_read(void)
{
	u16 buf;
	iic_start();                       //iic起始信号
	iic_byte_write(BHAddRead);         //发送器件地址+读标志位
	iic_wait_ack();                     //等待从机应答
	buf=iic_byte_read(1);              //读取数据
	buf=buf<<8;                        //读取并保存高八位数据
	buf+=0x00ff&iic_byte_read(0);      //读取并保存第八位数据
	iic_stop();                        //发送停止信号 
	return buf; 
}


     这样基本驱动就写完整了下面写一下综合测试代码:

int main(void)
{
	float datalx;                 
	USART1_Config();
	delay_init();
    iic_init();
	
	bh_data_send(BHPowOn);    //发送启动命令
	bh_data_send(BHReset);    //清除寄存器内容
	bh_data_send(BHModeH2);   //设置高精度为模式2
	delay_ms(180);            //设置完成后要有一段延迟,手册上说最大180ms就可以了
	while(1)
	{
		datalx =bh_data_read()/1.2; //根据手册读取的数据除以1.2就得到单位位lx的光强度检测值。
		printf ("%f",datalx);
		delay_ms(500);
	}
}

    串口输出结果:不同光强如图所示。

     工程下载:点击打开链接


  • 10
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
### 回答1: BH1750是一款数字式既测量光照强度又可校正的光敏电阻器,广泛应用于照明控制、自动调节亮度以及气象站等领域。而STM32是一系列由意法半导体(STMicroelectronics)公司开发的32位 ARM Cortex-M 微控制器。BH1750的驱动文件则是用来在STM32上操作和控制BH1750传感器的文件。 驱动文件通常由两部分组成:低层驱动和应用层驱动。低层驱动主要负责与硬件进行通信,包括配置 I2C 总线、发送和接收数据等。应用层驱动则封装了一系列功能函数,方便上层应用程序进行调用和使用。 在STM32上使用BH1750传感器,首先需要对I2C总线进行配置。然后,通过发送特定的控制命令来设置BH1750的工作模式和测量精度。可以选择连续测量模式或单次测量模式,并设置不同的测量精度。在连续测量模式下,BH1750会持续检测光照强度,并将其转换为数字信号输出。在单次测量模式下,测量完成后,传感器会自动进入关机模式,以节省能量。 在应用层驱动中,可以提供一些功能函数,比如读取光照强度等。通过调用这些函数,可以获取到当前环境的光照强度,并进行相应的处理和控制。 总之,BH1750STM32驱动文件主要用于在STM32上操作和控制BH1750传感器,包括配置传感器的工作模式和测量精度,读取传感器输出的光照强度等。通过使用这些驱动文件,可以方便地将BH1750传感器集成到STM32的应用程序中,实现相应的光照控制和调节功能。 ### 回答2: BH1750是一种数字光强传感器,可以用于测量环境中的光照强度。STM32是一系列微控制器芯片,常用于各种应用,包括嵌入式系统和物联网设备。 BH1750的驱动文件是用于在STM32平台上与BH1750传感器进行通信和控制的软件代码。它提供了一种简化的方法,使得STM32开发者可以轻松地使用BH1750传感器来获取环境光照强度的数据。 BH1750驱动文件通常包括以下功能: 1. 初始化:设置传感器的工作模式和测量精度。 2. 启动测量:发送命令给传感器,开始测量环境光照强度。 3. 读取数据:从传感器中读取测量结果并转换为可用的数据格式。 4. 控制功能:例如设置传感器的测量范围、校准传感器等。 5. 错误处理:在与传感器通信时,可能会出现错误,驱动文件应该包含适当的错误处理功能,以确保数据的准确性和稳定性。 在编写BH1750STM32驱动文件时,需要了解BH1750传感器的通信协议和寄存器结构,以及STM32的GPIO和I2C等通信接口的使用方法。驱动文件应该能够将这两个部分有效地结合起来,实现对BH1750传感器的控制和数据读写。 通过使用BH1750STM32驱动文件,开发者可以轻松地将传感器集成到他们的STM32应用中,监测和控制环境的光照强度。这为一系列应用提供了便利,例如自动照明系统、环境监测和调节等领域。 ### 回答3: BH1750是一种数字式光强度传感器,可用于测量光照强度。STM32是一种微控制器,常用于嵌入式系统中。BH1750 STM32驱动文件是用于将STM32BH1750传感器连接的软件文件。 BH1750 STM32驱动文件是编写在STM32开发环境中的固件驱动程序。该驱动程序通过设置STM32的通信接口(如I2C或SPI)与BH1750传感器进行通信。驱动程序提供了一系列函数,可以通过读取和写入寄存器来配置传感器,并读取传感器测量到的光照强度BH1750 STM32驱动文件通常由以下几个部分组成: 1. 初始化函数:该函数用于初始化STM32的通信接口,并配置BH1750传感器的工作模式和范围等参数。 2. 读取函数:该函数用于读取传感器测量到的光照强度,并将其返回给主程序使用。 3. 写入函数:该函数用于向BH1750传感器写入配置信息,例如设置测量模式和采样速率等。 4. 中断处理函数:当传感器测量完成或发生错误时,此函数将被调用来处理相应的事件。 5. 示例代码:通常,BH1750 STM32驱动文件还包含一些示例代码,以展示如何使用驱动程序的各个函数来实现特定的功能。 通过使用BH1750 STM32驱动文件,开发人员可以方便地将BH1750传感器与STM32微控制器集成到他们的嵌入式项目中。他们可以使用驱动程序提供的函数来配置和读取光照强度,以便进行自动控制、监测或数据记录等应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shenhuaifeng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值