GY30是模块名
BH1750—光照度采集芯片
芯片工作流程![在这里插入图片描述](https://img-blog.csdnimg.cn/20190811163315422.png
数据转换:
stm32 HAL 库例程:
#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 // 上类似
void GY30_Init()
{
uint8_t Mode;
//发送启动命令
Mode = BHPowOn;
HAL_I2C_Master_Transmit(&hi2c2,BHAddWrite,&Mode ,1,0xff);
Mode = BHReset;
HAL_I2C_Master_Transmit(&hi2c2,BHAddWrite,&Mode ,1,0xff);
// Mode = BHSigModeH;
// HAL_I2C_Master_Transmit(&hi2c2,BHAddWrite,&Mode ,1,0xff);
// HAL_Delay(180);
}
void Light_Value_Get(void)
{
//Mode=BHModeH1;
// Mode=BHPowOn;
// HAL_I2C_Master_Transmit(&hi2c2,BHAddWrite,&Mode,1,0xff);
Mode = BHSigModeH;
HAL_I2C_Master_Transmit(&hi2c2,BHAddWrite,&Mode ,1,0xff);
HAL_Delay(180);
HAL_I2C_Master_Receive(&hi2c2,BHAddRead,BUF,2,0xff);
dis_data=BUF[0];
dis_data=(dis_data<<8)+BUF[1];//合成数据,即光照数据
temp=(float)dis_data/1.2;
printf(“Light:%.1flx\r\n”,temp);
HAL_Delay(1000);
}