CC2530的BH1750FVI驱动可用于协议栈中Word文件下载.docx
- 文档编号:20785794
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:25
- 大小:17.53KB
CC2530的BH1750FVI驱动可用于协议栈中Word文件下载.docx
《CC2530的BH1750FVI驱动可用于协议栈中Word文件下载.docx》由会员分享,可在线阅读,更多相关《CC2530的BH1750FVI驱动可用于协议栈中Word文件下载.docx(25页珍藏版)》请在冰豆网上搜索。
*EXTERNFUNCTIONS
/************************************************************************
*函数名:
voidBH1750_Init(void)
*功能:
初始化BH1750
*参数:
NONE
*返回值:
*调用函数:
voidI2C_Init(void)
*引用全局变量:
*函数全局变量:
*作者:
黄加伟
*时间:
2016/5/16
*最后修改时间:
*说明:
*************************************************************************/
{
I2C_Init();
}
voidBH1750_Write_Cmd(uint8_tcmd)
向BH1750写入命令
cmd:
要写入的命令
voidI2C_Start(void)
voidI2C_WriteByte(uint8_ttxd)
uint8_tI2C_WaitAck(void)
voidI2C_Stop(void)
voidI2C_Delay_ms(uint32_ttime)
staticvoidBH1750_Write_Cmd(uint8_tcmd)
I2C_Start();
//起始信号
I2C_WriteByte(BH1750_Addr+0);
//发送设备地址+写信号
while(I2C_WaitAck());
I2C_WriteByte(cmd);
//内部寄存器地址
//BH1750_SendByte(REG_data);
I2C_Stop();
//发送停止信号
I2C_Delay_ms(5);
voidBH1750_Read(void)
读取BH1750的值
voidI2C_WriteByte(uint8_ttxd)
uint8_tI2C_ReadByte(uint8_tack)
BUF:
存储BH1750读取到的数据
staticvoidBH1750_Read(uint8_t*BUF)
{
I2C_WriteByte(BH1750_Addr+1);
//发送设备地址+读信号
BUF[0]=I2C_ReadByte
(1);
//发送ACK
BUF[1]=I2C_ReadByte(0);
//发送NACK
//停止信号
voidBH1750_Convert(void)
将BH1750读取到的数据转换成光照值
result_lx:
光照值
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
value_light=(float)result/1.2;
returnvalue_light;
floatGet_LightValue(void)
获取光照值
voidBH1750_Write_Cmd(uint8_tcmd)
voidBH1750_Read(uint8_t*BUF)
floatBH1750_Convert(uint8_t*BUF)
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<
iocc2530.h>
zComDef.h"
#defineBH1750_Addr0x46//ADDR接地时的地址
#defineBH1750_ON0x01//通电
#defineBH1750_CON0x10//连续H分辨率模式
#defineBH1750_ONE0x20//一次H分辨率模式,测量后自动设置为断电模式
#defineBH1750_RSET0x07//重置数组寄存器值,重置指令在断电模式下不起作用
*VARIABLES
*FUNCTIONS
/*
初始化BH1750
**/
voidBH1750_Init(void);
获取光照值
floatGet_LightValue(void);
#endif
I2C.c
#defineNOP()asm("
NOP"
)
*函数名:
staticvoidI2C_Delay_10us(uint32_ttime)
*功能:
延时x个10us
*参数:
time:
传入时间值,单位:
10us
*返回值:
*调用函数:
*引用全局变量:
*函数全局变量:
*作者:
*时间:
*最后修改时间:
*说明:
无
while(time--)
{
NOP();
NOP();
}
staticvoidI2C_Delay_ms(uint32_ttime)
延时x毫秒
ms
staticvoidI2C_Delay_10us(uint32_ttime)
voidI2C_Delay_ms(uint32_ttime)
I2C_Delay_10us(100);
voidI2C_Init(void)
初始化I2CGPIO口
I2C_SCL_OUTPUT();
I2C_SDA_OUTPUT();
I2C_SCL_HIGH();
I2C_SDA_HIGH();
staticvoidI2C_SCL_OUTPUT(void)
SCL引脚设置为输出模式
voidI2C_SCL_OUTPUT(void)
//配置P1_2脚为输出模式
P1SEL&
=~(1<
2);
P1DIR|=(1<
staticvoidI2C_SCL_INPUT(void)
SCL引脚设置为输入模式
voidI2C_SCL_INPUT(void)
//配置P1_2脚为输入模式
P1DIR&
P1INP&
P2INP&
6);
staticvoidI2C_SDA_OUTPUT(void)
SDA引脚设置为输出模式
voidI2C_SDA_OUTPUT(void)
//配置P1_3脚为输出模式
3);
staticvoidI2C_SDA_INPUT(void)
voidI2C_SDA_INPUT(void)
//配置P1_3脚为输入模式
staticvoidI2c_Start(void)
启动I2C
voidI2C_SCL_OUTPUT(void)
voidI2C_SDA_OUTPUT(void)
voidI2C_Start(void)
I2C_Delay_10us
(1)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CC2530 BH1750FVI 驱动 可用 协议