CC2530的BH1750FVI驱动可用于协议栈中.docx

上传人:b****5 文档编号:7662263 上传时间:2023-01-25 格式:DOCX 页数:25 大小:17.53KB
下载 相关 举报
CC2530的BH1750FVI驱动可用于协议栈中.docx_第1页
第1页 / 共25页
CC2530的BH1750FVI驱动可用于协议栈中.docx_第2页
第2页 / 共25页
CC2530的BH1750FVI驱动可用于协议栈中.docx_第3页
第3页 / 共25页
CC2530的BH1750FVI驱动可用于协议栈中.docx_第4页
第4页 / 共25页
CC2530的BH1750FVI驱动可用于协议栈中.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

CC2530的BH1750FVI驱动可用于协议栈中.docx

《CC2530的BH1750FVI驱动可用于协议栈中.docx》由会员分享,可在线阅读,更多相关《CC2530的BH1750FVI驱动可用于协议栈中.docx(25页珍藏版)》请在冰豆网上搜索。

CC2530的BH1750FVI驱动可用于协议栈中.docx

CC2530的BH1750FVI驱动可用于协议栈中

一共5个文件:

BH1750FVI.c、BH1750FVI.h、I2C.c、I2C.h、zComDef.h

BH1750FVI.c

#include"I2C.h"

#include"BH1750FVI.h"

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

*MACROS

*/

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

*CONSTANTS

*/

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

*TYPEDEFS

*/

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

*GLOBALVARIABLES

*/

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

*GLOBALFUNCTIONS

*/

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

*LOCALVARIABLES

*/

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

*LOCALFUNCTIONS

*/

staticvoidBH1750_Write_Cmd(uint8_tcmd);

staticvoidBH1750_Read(uint8_t*BUF);

staticfloatBH1750_Convert(uint8_t*BUF);

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

*EXTERNVARIABLES

*/

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

*EXTERNFUNCTIONS

*/

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

*函数名:

voidBH1750_Init(void)

*功能:

初始化BH1750

*参数:

NONE

*返回值:

NONE

*调用函数:

voidI2C_Init(void)

*引用全局变量:

NONE

*函数全局变量:

NONE

*作者:

黄加伟

*时间:

2016/5/16

*最后修改时间:

*说明:

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

voidBH1750_Init(void)

{

I2C_Init();

}

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

*函数名:

voidBH1750_Write_Cmd(uint8_tcmd)

*功能:

向BH1750写入命令

*参数:

cmd:

要写入的命令

*返回值:

NONE

*调用函数:

voidI2C_Start(void)

voidI2C_WriteByte(uint8_ttxd)

uint8_tI2C_WaitAck(void)

voidI2C_Stop(void)

voidI2C_Delay_ms(uint32_ttime)

*引用全局变量:

NONE

*函数全局变量:

NONE

*作者:

黄加伟

*时间:

2016/5/16

*最后修改时间:

*说明:

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

staticvoidBH1750_Write_Cmd(uint8_tcmd)

{

I2C_Start();//起始信号

I2C_WriteByte(BH1750_Addr+0);//发送设备地址+写信号

while(I2C_WaitAck());

I2C_WriteByte(cmd);//内部寄存器地址

while(I2C_WaitAck());

//BH1750_SendByte(REG_data);//内部寄存器地址

I2C_Stop();//发送停止信号

I2C_Delay_ms(5);

}

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

*函数名:

voidBH1750_Read(void)

*功能:

读取BH1750的值

*参数:

NONE

*返回值:

NONE

*调用函数:

voidI2C_Start(void)

voidI2C_WriteByte(uint8_ttxd)

uint8_tI2C_WaitAck(void)

uint8_tI2C_ReadByte(uint8_tack)

voidI2C_Stop(void)

voidI2C_Delay_ms(uint32_ttime)

*引用全局变量:

BUF:

存储BH1750读取到的数据

*函数全局变量:

NONE

*作者:

黄加伟

*时间:

2016/5/16

*最后修改时间:

*说明:

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

staticvoidBH1750_Read(uint8_t*BUF)

{

I2C_Start();//起始信号

I2C_WriteByte(BH1750_Addr+1);//发送设备地址+读信号

while(I2C_WaitAck());

BUF[0]=I2C_ReadByte

(1);//发送ACK

BUF[1]=I2C_ReadByte(0);//发送NACK

I2C_Stop();//停止信号

I2C_Delay_ms(5);

}

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

*函数名:

voidBH1750_Convert(void)

*功能:

将BH1750读取到的数据转换成光照值

*参数:

NONE

*返回值:

NONE

*调用函数:

NONE

*引用全局变量:

BUF:

存储BH1750读取到的数据

result_lx:

光照值

*函数全局变量:

*作者:

黄加伟

*时间:

2016/5/16

*最后修改时间:

*说明:

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

staticfloatBH1750_Convert(uint8_t*BUF)

{

floatvalue_light=0;

uint16_tresult=0;

result=BUF[0];

result=(result<<8)+BUF[1];//o?

3éêy?

Y£?

?

′1a?

?

êy?

Y

value_light=(float)result/1.2;

returnvalue_light;

}

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

*函数名:

floatGet_LightValue(void)

*功能:

获取光照值

*参数:

NONE

*返回值:

NONE

*调用函数:

voidBH1750_Write_Cmd(uint8_tcmd)

voidI2C_Delay_ms(uint32_ttime)

voidBH1750_Read(uint8_t*BUF)

floatBH1750_Convert(uint8_t*BUF)

*引用全局变量:

*函数全局变量:

*作者:

黄加伟

*时间:

2016/5/16

*最后修改时间:

*说明:

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

floatGet_LightValue(void)

{

uint8_tBUF[2]={0};

BH1750_Write_Cmd(BH1750_ON);//poweron

BH1750_Write_Cmd(BH1750_RSET);//clear

BH1750_Write_Cmd(BH1750_ONE);//一次H分辨率模式,至少120ms,之后自动断电模式

I2C_Delay_ms(400);//延时400ms

BH1750_Read(BUF);//连续读出数据,存储在BUF中

return(BH1750_Convert(BUF));

}

BH1750FVI.h

#ifndef__BH1750FVI_H

#define__BH1750FVI_H

#include

#include"zComDef.h"

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

*MACROS

*/

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

*CONSTANTS

*/

#defineBH1750_Addr0x46//ADDR接地时的地址

#defineBH1750_ON0x01//通电

#defineBH1750_CON0x10//连续H分辨率模式

#defineBH1750_ONE0x20//一次H分辨率模式,测量后自动设置为断电模式

#defineBH1750_RSET0x07//重置数组寄存器值,重置指令在断电模式下不起作用

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

*TYPEDEFS

*/

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

*VARIABLES

*/

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

*FUNCTIONS

*/

/*

初始化BH1750

**/

voidBH1750_Init(void);

/*

获取光照值

**/

floatGet_LightValue(void);

#endif

I2C.c

#include"I2C.h"

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

*MACROS

*/

#defineNOP()asm("NOP")

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

*CONSTANTS

*/

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

*TYPEDEFS

*/

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

*GLOBALVARIABLES

*/

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

*GLOBALFUNCTIONS

*/

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

*LOCALVARIABLES

*/

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

*LOCALFUNCTIONS

*/

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

*EXTERNVARIABLES

*/

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

*EXTERNFUNCTIONS

*/

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

*函数名:

staticvoidI2C_Delay_10us(uint32_ttime)

*功能:

延时x个10us

*参数:

time:

传入时间值,单位:

10us

*返回值:

NONE

*调用函数:

NONE

*引用全局变量:

NONE

*函数全局变量:

NONE

*作者:

黄加伟

*时间:

2016/5/16

*最后修改时间:

*说明:

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

staticvoidI2C_Delay_10us(uint32_ttime)

{

while(time--)

{

NOP();NOP();NOP();NOP();NOP();NOP();NOP();

NOP();NOP();NOP();NOP();NOP();NOP();NOP();

NOP();NOP();NOP();NOP();NOP();NOP();NOP();

NOP();NOP();NOP();NOP();NOP();NOP();NOP();

NOP();NOP();NOP();NOP();NOP();NOP();NOP();

}

}

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

*函数名:

staticvoidI2C_Delay_ms(uint32_ttime)

*功能:

延时x毫秒

*参数:

time:

传入时间值,单位:

ms

*返回值:

NONE

*调用函数:

staticvoidI2C_Delay_10us(uint32_ttime)

*引用全局变量:

NONE

*函数全局变量:

NONE

*作者:

黄加伟

*时间:

2016/5/16

*最后修改时间:

*说明:

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

voidI2C_Delay_ms(uint32_ttime)

{

while(time--)

{

I2C_Delay_10us(100);

}

}

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

*函数名:

voidI2C_Init(void)

*功能:

初始化I2CGPIO口

*参数:

NONE

*返回值:

NONE

*调用函数:

NONE

*引用全局变量:

NONE

*函数全局变量:

NONE

*作者:

黄加伟

*时间:

2016/5/16

*最后修改时间:

*说明:

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

voidI2C_Init(void)

{

I2C_SCL_OUTPUT();

I2C_SDA_OUTPUT();

I2C_SCL_HIGH();

I2C_SDA_HIGH();

}

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

*函数名:

staticvoidI2C_SCL_OUTPUT(void)

*功能:

SCL引脚设置为输出模式

*参数:

NONE

*返回值:

NONE

*调用函数:

NONE

*引用全局变量:

NONE

*函数全局变量:

NONE

*作者:

黄加伟

*时间:

2016/5/16

*最后修改时间:

*说明:

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

voidI2C_SCL_OUTPUT(void)

{

//配置P1_2脚为输出模式

P1SEL&=~(1<<2);

P1DIR|=(1<<2);

}

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

*函数名:

staticvoidI2C_SCL_INPUT(void)

*功能:

SCL引脚设置为输入模式

*参数:

NONE

*返回值:

NONE

*调用函数:

NONE

*引用全局变量:

NONE

*函数全局变量:

NONE

*作者:

黄加伟

*时间:

2016/5/16

*最后修改时间:

*说明:

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

voidI2C_SCL_INPUT(void)

{

//配置P1_2脚为输入模式

P1SEL&=~(1<<2);

P1DIR&=~(1<<2);

P1INP&=~(1<<2);

P2INP&=~(1<<6);

}

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

*函数名:

staticvoidI2C_SDA_OUTPUT(void)

*功能:

SDA引脚设置为输出模式

*参数:

NONE

*返回值:

NONE

*调用函数:

NONE

*引用全局变量:

NONE

*函数全局变量:

NONE

*作者:

黄加伟

*时间:

2016/5/16

*最后修改时间:

*说明:

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

voidI2C_SDA_OUTPUT(void)

{

//配置P1_3脚为输出模式

P1SEL&=~(1<<3);

P1DIR|=(1<<3);

}

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

*函数名:

staticvoidI2C_SDA_INPUT(void)

*功能:

SCL引脚设置为输入模式

*参数:

NONE

*返回值:

NONE

*调用函数:

NONE

*引用全局变量:

NONE

*函数全局变量:

NONE

*作者:

黄加伟

*时间:

2016/5/16

*最后修改时间:

*说明:

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

voidI2C_SDA_INPUT(void)

{

//配置P1_3脚为输入模式

P1SEL&=~(1<<3);

P1DIR&=~(1<<3);

P1INP&=~(1<<3);

P2INP&=~(1<<6);

}

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

*函数名:

staticvoidI2c_Start(void)

*功能:

启动I2C

*参数:

NONE

*返回值:

NONE

*调用函数:

voidI2C_SCL_OUTPUT(void)

voidI2C_SDA_OUTPUT(void)

staticvoidI2C_Delay_10us(uint32_ttime)

*引用全局变量:

NONE

*函数全局变量:

NONE

*作者:

黄加伟

*时间:

2016/5/16

*最后修改时间:

*说明:

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

voidI2C_Start(void)

{

I2C_SCL_OUTPUT();

I2C_SDA_OUTPUT();

I2C_SDA_HIGH();

I2C_SCL_HIGH();

I2C_Delay_10us

(1)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1