資源簡介
通過STM32F103的硬件IIC讀取光照傳感器BH1750的數(shù)據(jù),已通過測試,能夠成功讀取BH1750的光照數(shù)據(jù)。。

代碼片段和文件信息
#include?“main.h“
float?result_Sun=0;
u8?BUF[2]={0};
u16?result=0;
u8?Sun_Data[4];
unsigned?char?gBuf[4];
unsigned?char?*gTemp;
extern?u8?I2C_Data[10]ret;
extern?uf?hex_float_value;
extern?I2C_INIT_INFO?I2C_Info;
void?I2C_Comm_Init(void)
{
??GPIO_InitTypeDef?GPIO_InitStructure;
??RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOBENABLE);
??GPIO_InitStructure.GPIO_Pin?=?GPIO_Pin_10|GPIO_Pin_11;
??GPIO_InitStructure.GPIO_Mode?=?GPIO_Mode_Out_PP;
??GPIO_InitStructure.GPIO_Speed?=?GPIO_Speed_50MHz;
??GPIO_Init(GPIOB&GPIO_InitStructure);
}
void?Init_BH1750(void)
{
??I2C_Comm_Init();
GPIO_ResetBits(GPIOBGPIO_Pin_9);
GPIO_ResetBits(GPIOBGPIO_Pin_8);
delay_nus(5);
GPIO_SetBits(GPIOBGPIO_Pin_8);
}
void?Start_BH1750(void)
{
??I2C_Data[0]=0x01;
I2C_HardWriteNByte(I2C20I2C_Data1);//傳感器芯片上電命令
I2C_Data[0]=0x07;
I2C_HardWriteNByte(I2C20I2C_Data1);//軟件復(fù)位
I2C_Data[0]=0x42;
I2C_HardWriteNByte(I2C20I2C_Data1);//寄存器高八位
I2C_Data[0]=0x65;
I2C_HardWriteNByte(I2C20I2C_Data1);//寄存器低八位
I2C_Data[0]=0x20;
I2C_HardWriteNByte(I2C20I2C_Data1);//精度
}
void?Read_BH1750(void)
{?
I2C_HardInit(&I2C_Info);?????//
I2C_Data[0]=0x11;
ret?=?I2C_HardWriteNByte(I2C20I2C_Data1);//發(fā)送測量命令
????if(ret)
??{
??I2C_Data[0]=0;
??}
delay_nms(150);//等待大于120ms,必須加這個(gè)延時(shí),否則傳感器沒準(zhǔn)備好數(shù)據(jù)會(huì)出現(xiàn)讀數(shù)據(jù)錯(cuò)誤
ret?=?I2C_HardReadNByte(I2C20I2C_Data2);//讀取光照強(qiáng)度值
if(ret)
{
??I2C_Data[0]=0;
??}
??else
{
result_Sun?=?((I2C_Data[0]<<8)+I2C_Data[1])/(1.2*2);
???//printf(“光強(qiáng)度:%f?lx\n\r“((I2C_Data[0]<<8)+I2C_Data[1])/(1.2*2));
????}
delay_ms(50);
}
void?BH1750(void)
{
u8?i;
??//Start_BH1750();
??//delay_ms(180);
??Read_BH1750();
hex_float_value.float_data=result_Sun;
for(i=0;i<4;i++)
{
Sun_Data[i]=hex_float_value.hex_data[i];
}
??delay_nms(500);
}
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????1947??2016-02-17?16:16??BH1750\BH1750.c
?????文件????????409??2015-12-11?10:10??BH1750\BH1750.h
?????文件???????7653??2015-12-11?10:12??BH1750\I2C_Driver.c
?????文件???????1152??2015-12-11?10:12??BH1750\I2C_Driver.h
?????目錄??????????0??2016-02-17?16:17??BH1750
-----------?---------??----------?-----??----
????????????????11161????????????????????5
- 上一篇:匹配濾波器測試用例
- 下一篇:阿倫方差作業(yè)
評(píng)論
共有 條評(píng)論