BH1750程序测试

注意事项

1.DVI引脚电路,根据手册上显示DVI引脚上电要和VCC有一个时间差

电路图参考网络上的原理图可以这样接(下图),也可以接单片机引脚,用单片机引脚来控制逻辑电路的上电,实际情况测试直接接VCC也没多大问题

2.程序上要注意的几点

2.1     SDA引脚的读取

 #define B_LUX_SDA0_DAT  ((Gpio_GetInputIO(B_LUX_GPIO, B_LUX_SDA0)))

比如这个句宏定义读取SDA引脚的电平,有些单片机的库函数这个读取函数返回的是0或者1,而有些单片机的库函数返回的就是0或者(1<<pin),比如SDA用的是PA1,返回的就是0x02,所以在写程序的不要直接在数值上与这个函数

            dat |= B_LUX_SDA0_DAT; //读数据

而要写成这样

/*---------------------------------------------------------------------

 功能描述: 从IIC总线接收一个字节数据

 参数说明: 无

 函数返回: 接收字节

 ---------------------------------------------------------------------*/

uint8 B_LUX_RecvByte()

{

    uint8 i;

    uint8 dat = 0;

    B_LUX_SDA0_I;

    // B_LUX_SDA0_H;                         //使能内部上拉,准备读取数据,

    for (i = 0; i < 8; i++) // 8位计数器

    {

        dat <<= 1;

        B_LUX_SCL0_H;          //拉高时钟线

        delay10us(1); //延时

        if(B_LUX_SDA0_DAT)

            dat |= 0x01; //读数据

        B_LUX_SCL0_L;          //拉低时钟线

        delay10us(1); //延时

    }

    B_LUX_SDA0_O;

    return dat;

}

2.2 端口设置,在测试过程中出现读出数据全是0的问题,反复查找最好找到SDA设置成输入的时候没有设置上拉,可能是因为BH1750的输出电流不够吧拉不高SDA的电平导致

stcGpioCfg.enPuPd = GpioPu;

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值