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

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. gdb cheat sheet

    0x01 控制流 r run,运行程序. r < a.txt   run,重定向输入 si   step instruction 进入函数 ni      next instruction 下一 ...

  2. DevOps时代,企业数字化转型需要强大的工具链

    伴随时代的飞速进步,中国的人口红利带来了互联网业务的快速发展,巨大的流量也带动了技术的不断革新,研发的模式也在不断变化.传统企业纷纷效仿互联网的做法,结合DevOps进行数字化的转型. 通常提到Dev ...

  3. linux 下ab压力测试

    1.ab的简介 ab是apachebench命令的缩写. ab是apache自带的压力测试工具.ab非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试 ...

  4. PS 怎么去掉图片上的文字

    第一步:打开需要去掉文字的图片. 第二步:在左侧工具栏中选择“吸管工具”. 第三步:在文字附近选取颜色. 第四步:在左侧工具栏中选择“矩形选框工具”,并选中要消除的文字. 第五步:在菜单栏“编辑”中选 ...

  5. 4月23日 MySQL学习-DDL

    今日学习的是DDL的操作(数据定义语言) create table teachers (id int,name varchar(50));//创建一个表 给了两个类型alter table stude ...

  6. bugku web 矛盾

    $num=$_GET['num'];if(!is_numeric($num)){echo $num;if($num==1)echo 'flag{**********}';} 首先要判断get得到的数据 ...

  7. [CF 666E] Forensic Examination

    Description 传送门 Solution 对 \(T[1..m]\) 建立广义后缀自动机,离线,找出代表 \(S[pl,pr]\) 的每个节点,线段树合并. Code #include < ...

  8. MySQL表与表之间的关系

    表与表之间的关系 表1 foreign key 表2 则表1的多条记录对应表2的一条记录,即多对一 利用foreign key的原理我们可以制作两张表的多对多,一对一关系 多对多: 表1的多条记录可以 ...

  9. Linux环境配置错误记录

    1.  pip install --special_version  pip10. 版本. 使用命令: python -m pip install pip== 其中, -m 参数的意思是将库中的pyt ...

  10. POJ 1848 Tree 树形DP

    题目大意: 给出一棵树,现在要往这棵树上加边,使得所有的点都在环中,且每个点只能属于一个环 题解: 考虑DP: \(dp[i][0]\)表示使\(i\)这颗子树的每个点都在环内需要加的最少边数. \( ...