在写此博客之前已经看了几遍数据手册了,现在已经调试成功了,可以读出来数据,还有不如意的地方,写此博客整理下思路。

1、BH1750fvi介绍。

这是一个16bit的数字传感器,使用I2C作为通信接口,照度的测量范围是1~65535lx。其实从这里就已经能预见最终读出来的照度原数据是2byte的。

这里具体介绍这款传感器的一些特点,例如接近人眼感测的灵敏度,我的毕业设计是要做一个台灯的调光装置,这款传感器的灵敏特性真好适合。此外这里还提到最小分表率0.11lx,最大感测100000lx。

2、电气特性

我在使用时接的电压值是看的卖家的参考资料选择的(3~5V),这里也讲到这个芯片供电电压Vcc值范围是2.4~3.6V。卖家说的电压值是电路板的供电电压值,这里要注意数据手册上说的这个值是我们在设计芯片外围电路是要参考的电压供电值。

3、工作模式

数据测量的流程图,模块上电,传感器是处于掉电状态(PowerOff),需要写入命令让传感器切换到上电状态(PowerOff),再发送数据测量命令,有单次测量模式和连续测量模式。单次测量模式是测量一次后,传感器切换到掉电状态,要再测量需要重新上电。这个图很容易读懂,虚线代表我们用I2c写入的命令(OpeCode),实现是芯片电路自动切换状态过程。

4、指令/命令

这里建议在编程的时候,用宏定义有规律有条理的组织在一起,模块化封装起来,方便开发。注意不同测量模式的测量时间和分辨率,根据需要合理选取。

上面这个表示总结的各种模式的特点。在手册的这个表的小面有一段问题提及了在H测量模式会抑制噪声,分辨率1lx,可以在黑暗场景测量。

5、驱动电路

这是在某淘宝店铺找的资料,这里重点关注芯片的DVL脚是怎么连的。这个DVI脚是I2C总线的参考电压端口,也是异步重置端口,在给VCC供电之后必须拉低至少1us,在其低电平时,芯片处于掉电状态(PowerDown)。至于原因我不理解,电路板上这个脚串一个0.1uf的电容和1kΩ的电阻,时间常数i=RC=1e-3,对应时间1us,所以在给VCC供电后,DVI在大于1us后才会拉高,和上面的时序图相似。

6、从机地址

在ADR脚拉低时:BHWriteAddr:0x46

        BHReadAddr:0x47

另外注意:在一次I2C通讯(一个I2C_Start和一个I2C_Stop)中最多只能发一次命令。

7、读数据格式

这是16位数字传感器,测量的数据是两个字节,读取数据无须发送寄存器地址(regaddr),测量完成直接读取即可。

不过在手册的后半部分讲到了可以通过修改Mtreg寄存器,修改传感器的灵敏度,随之照度和测量数据的对应公式也会发生变化,具体详查手册。

最后贴一些关键的函数:

BH1750FVI调试的更多相关文章

  1. C# Web应用调试开启外部访问

    在用C#开发Web应用时有个痛点,就是本机用VS开启Web应用调试时外部机器无法访问此Web应用.这里将会介绍如何通过设置允许局域网和外网机器访问本机的Web应用. 目录 1. 设置内网访问 2. 设 ...

  2. NodeJs之调试

    关于调试 当我们只专注于前端的时候,我们习惯性F12,这会给我们带来安全与舒心的感觉. 但是当我们使用NodeJs来开发后台的时候,我想噩梦来了. 但是也别泰国担心,NodeJs的调试是很不方便!这是 ...

  3. 微信公众号开发之VS远程调试

    目录 (一)微信公众号开发之VS远程调试 (二)微信公众号开发之基础梳理 (三)微信公众号开发之自动消息回复和自定义菜单 前言 微信公众平台消息接口的工作原理大概可以这样理解:从用户端到公众号端一个流 ...

  4. 写出易调试的SQL(修订版)

    h4 { background: #698B22 !important; color: #FFFFFF; font-family: "微软雅黑", "宋体", ...

  5. tomcat开发远程调试端口以及利用eclipse进行远程调试

    一.tomcat开发远程调试端口 方法1 WIN系统 在catalina.bat里:  SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compi ...

  6. Hawk 4.7 单步调试

    单步调试的意义 已经编写的工作流,可能会因为某些外界环境的变化而出错,此时需要排除错误,我们可以使用单步调试. 单步调试的本质,相当于只使用前n个模块,这样就能看到每个步骤下,流的改变. 例子 还是上 ...

  7. Visual Studio 2012远程调试中遇到的问题

    有的时候开发环境没问题的代码在生产环境中会某些开发环境无法重现的问题,或者需要对生产环境代码进行远程调试该怎么办? Vs已经提供给开发者远程调试的工具 下面简单讲讲该怎么用,前期准备:1.本地登录账户 ...

  8. iOS逆向工程之Hopper+LLDB调试第三方App

    LLDB是Low Level Debugger的简称,在iOS开发的调试中LLDB是经常使用的,LLDB是Xcode内置的动态调试工具.使用LLDB可以动态的调试你的应用程序,如果你不做其他的额外处理 ...

  9. 写出易调试的SQL

    h4 { background: #698B22 !important; color: #FFFFFF; font-family: "微软雅黑", "宋体", ...

随机推荐

  1. python day06

    深浅拷贝 1.值拷贝 ls1 = [1,2,3] ls2 = ls1 #ls2直接把栈区里ls1存的地址拿过来,也指向堆区里列表的id #原列表发生ls1改变(不是重新赋值),ls2也跟着发生改变 2 ...

  2. poium测试库介绍

    poium测试库前身为selenium-page-objects测试库,我在以前的文章中也有介绍过:这可能是最简单的Page Object库,项目的核心是基于Page Objects实现元素定位的封装 ...

  3. 关于当前Web前端技术的一些感悟和笔记

    最近这些年,随着前端应用技术突飞猛进,产生了很多新的前端框架,当然也引入了数不胜数的前端技术概念,前端不在是早期Web Form的拖拉处理方式,也不再是Ajax+HTML那么简单,随着前端技术的发展, ...

  4. Elastic Stack-Elasticsearch使用介绍(二)

    一.前言     写博客,更要努力写博客! 二.Mapping介绍 Mapping类似于数据库中的表结构的定义:这里我们试想一下表结构定义需要那些: 1.字段和字段类型,在Elasticsearch中 ...

  5. HTML之表单

    目录 表单的结构 get方式与post方式 输入 单行文本输入框 提交按钮和重置按钮 密码输入框 复选框 单选按钮 图像按钮 文本选择输入框 隐藏框 多行文本输入框 下拉列表框 新增输入元素 新增其他 ...

  6. 【调试工具】tcpdump

    [tcpdump]https://linux.cn/article-10191-1.html

  7. Netty 客户端断线重连

    client 关闭后会执行 finally 代码块,可以在这里可以进行重连操作 public class NettyClient implements Runnable { private final ...

  8. Spring Boot 2.x 编写 RESTful API (二) 校验

    用Spring Boot编写RESTful API 学习笔记 约束规则对子类依旧有效 groups 参数 每个约束用注解都有一个 groups 参数 可接收多个 class 类型 (必须是接口) 不声 ...

  9. BZOJ1112[POI2008]砖块Klo——非旋转treap

    题目描述 N柱砖,希望有连续K柱的高度是一样的. 你可以选择以下两个动作 1:从某柱砖的顶端拿一块砖出来,丢掉不要了. 2:从仓库中拿出一块砖,放到另一柱.仓库无限大. 现在希望用最小次数的动作完成任 ...

  10. Codeforces Round #543

    (比赛链接)[http://codeforces.com/contest/1120] A 给出一个长度为m的序列a 可以删除一些数 使得最后从没删的第一个数开始 每k个一截 截出的n个多重集合中 至少 ...