|
typedef enum
{
BHOP_POWER_DOWN = 0x00, /* 进入掉电模式。芯片上电后缺省就是PowerDown模式 */
BHOP_POWER_ON = 0x01, /* 上电,等待测量命令 */
BHOP_RESET = 0x07, /* 清零数据寄存器 (Power Down 模式无效) */
BHOP_CON_H_RES = 0x10, /* 连续高分辨率测量模式 (测量时间 120ms) (最大 180ms)*/
BHOP_CON_H_RES2 = 0x11, /* 连续高分辨率测量模式2 (测量时间 120ms)*/
BHOP_CON_L_RES = 0x13, /* 连续低分辨率测量模式 (测量时间 16ms)*/
BHOP_ONE_H_RES = 0x20, /* 单次高分辨率测量模式 , 之后自动进入Power Down */
BHOP_ONE_H_RES2 = 0x21, /* 单次高分辨率测量模式2 , 之后自动进入Power Down */
BHOP_ONE_L_RES = 0x23, /* 单次低分辨率测量模式 , 之后自动进入Power Down */
} BH1750_MODE;
模式设置为 2
BH1750_ChageMode(2); /* 高分辨率连续测量 */
/*
*********************************************************************************************************
* 函 数 名: BH1750_PowerDown
* 功能说明: 芯片进入掉电模式
* 形 参: 无
* 返 回 值: 无
*********************************************************************************************************
*/
void BH1750_PowerDown(void)
{
BH1750_WriteCmd(BHOP_POWER_DOWN); /* 芯片进入掉电模式 */
}
/*
*********************************************************************************************************
* 函 数 名: BH1750_PowerOn
* 功能说明: 芯片上电,进入工作模式
* 形 参: 无
* 返 回 值: 无
*********************************************************************************************************
*/
void BH1750_PowerOn(void)
{
BH1750_WriteCmd(BHOP_POWER_ON); /* 芯片进入上电模式 */
// HAL_Delay(10);
}
uint16_t BH1750_GetLux(void)
{
uint16_t usLight;
uint16_t lux;
BH1750_PowerOn(); // 唤醒 bh1750
usLight = BH1750_ReadData();
BH1750_PowerDown();
/* 计算光强度 = 16位寄存器值 / 1.2 * (69 / X) */
//lux = usLight * (((float)1 / 1.2) * ((float)69 / s_MTReg));
lux = (uint16_t)(usLight * 5 * 69) / (6 * s_MTReg);
if (s_Mode == 2) /* 高分辨率测量模式2 */
{
lux = lux / 2;
}
else
{
; /* 不必除2 */
}
_bh1750_lux.lux_value = lux;
My_Printf("BH1750 lux = %d\r\n", _bh1750_lux.lux_value);
return lux;
}
|
|