justd0 发表于 2021-6-24 00:28

蜜袋鼯 第③贴 RSL10-SENSE-GEVK 光照传感器驱动 写好了 分享给大家

<p><strong><span style="font-size:20px;"><span style="font-family:宋体;">上一贴还是5月份发的帖子。。</span></span></strong></p>

<p><strong><span style="font-size:20px;"><span style="font-family:宋体;">简单介绍了下安森美的RLS10 传感器的板子,同时也抛出了个问题</span></span></strong></p>

<p><strong><span style="font-size:20px;"><span style="font-family:宋体;">那就是为啥光照传感器的初始化是失败的?</span></span></strong></p>

<p><strong><span style="font-size:20px;"><span style="font-family:宋体;">按理说例程和开发板不应该出现这种问题呀</span></span></strong></p>

<p><strong><span style="font-size:20px;"><span style="font-family:宋体;">官方介绍中的开发板上光照传感器,原本型号是NOA1305,就下图中的这个。</span></span></strong></p>

<p><strong><span style="font-size:20px;"><span style="font-family:宋体;">但实际发给我们的是下图中的那个绿色小玻璃方块。</span></span></strong></p>

<p><strong><span style="font-size:20px;"><span style="font-family:宋体;">显然不是一个封装的的传感器...当时我也没深究这个点,但是项目中需要用到光照度的数据</span></span></strong></p>

<p><strong><span style="font-size:20px;"><span style="font-family:宋体;">后来看到版主虾大,也发了个相关的帖子,里面找打了硬件层面上的根本原因,</span></span></strong></p>

<p><strong><span style="font-size:20px;"><span style="font-family:宋体;">帖子在此<a href="https://bbs.eeworld.com.cn/thread-1166482-1-1.html">关于rsl10-sense-gevk板子环境光传感器不好用的问题</a></span></span></strong></p>

<p><strong><span style="font-size:20px;"><span style="font-family:宋体;">原来是发的货跟给的资料不一样了,升级成了V1.2版本的硬件了。</span></span></strong></p>

<p><strong><span style="font-size:20px;"><span style="font-family:宋体;">根据虾大的分析,这个小方块的型号是安森美的lv0104cs光照度传感器</span></span></strong></p>

<p><strong><span style="font-size:20px;"><span style="font-family:宋体;">(后来我也证实确实是这款传感器)</span></span></strong></p>

<p>&nbsp;</p>

<p><strong><span style="font-size:20px;"><span style="font-family:宋体;">管理员小姐姐也在虾大的帖子中也回复了会快速反馈个官方</span></span></strong></p>

<p><span style="font-size:20px;"><span style="font-family:宋体;"></span></span></p>

<p><strong><span style="font-size:20px;"><span style="font-family:宋体;">但那个帖子已经过去一个月了,我这两天上官网看了下,</span></span></strong></p>

<p><strong><span style="font-size:20px;"><span style="font-family:宋体;">这个板子的资料仍还是处于1.0的状态,丝毫没有更新的痕迹,</span></span></strong></p>

<p><strong><span style="font-size:20px;"><span style="font-family:宋体;">同时官方的例程库也停留在1.17.5的版本....</span></span></strong></p>

<p><strong><span style="font-size:20px;"><span style="font-family:宋体;">看来官方是指望不上了。。那就撸起袖子自己干咯。</span></span></strong></p>

<hr />
<p><span style="font-family:宋体;"><span style="font-size:20px;"><strong>LV0104CS 有了芯片的型号就好办了,到官网上找到了这个芯片的<a href="https://www.onsemi.com/products/sensors/ambient-light-sensors/lv0104cs">datasheet</a>,(文件我放在了文章最后)</strong></span></span></p>

<p><strong><span style="font-size:20px;"><span style="font-family:宋体;">通过阅读芯片的datasheet,可以看到这个芯片跟NOA1305一样,都是用IIC通讯</span></span></strong></p>

<p><strong><span style="font-size:20px;"><span style="font-family:宋体;">那就好办了,既然开发板只是替换了个芯片,那说明硬件接口啥的都是一致的,通常情况下改下寄存器和ID就行了</span></span></strong></p>

<p><strong><span style="font-family:宋体;"><span style="font-size:20px;">从数据手册的简短介绍中可以看到这个传感器的ID信息为0x13 ,</span></span></strong></p>

<p><strong><span style="font-family:宋体;"><span style="font-size:20px;">读写一共只有两种形式,可以配置的寄存器也就那么几个。</span></span></strong></p>

<p></p>

<p><strong><span style="font-family:宋体;"><span style="font-size:20px;">于是我用NOA1305的驱动库改了个</span></span></strong><span style="font-family:宋体;"><span style="font-size:20px;"><strong>LV0104CS的驱动出来,源文件如下:</strong></span></span></p>

<p></p>

<p><span style="font-family:宋体;"><span style="font-size:20px;"><strong>压缩包里一共有四个文件,分别是lv0104cs.c,lv0104cs.h,lv0104cs_lux.c,lv0104cs_lux.h</strong></span></span></p>

<p><font face="宋体"><span style="font-size: 20px;"><b>这四个文件和</b></span></font><strong><span style="font-family:宋体;"><span style="font-size:20px;">NOA1305驱动是一样的结构,因此移植也很容易,接下来介绍下使用方法。</span></span></strong></p>

<hr />
<p><font face="宋体"><span style="font-size: 20px;"><b>以sense_product_test项目为例,copy工程到工作空间</b></span></font></p>

<p>在工程目录下建立一个include文件夹</p>

<p></p>

<p><span style="font-family:宋体;"><span style="font-size:20px;"><strong>将lv0104cs.c和lv0104cs_lux.c拖入src中,</strong></span></span><span style="font-family:宋体;"><span style="font-size:20px;"><strong>将lv0104cs.h和lv0104cs_lux.h拖入include中</strong></span></span></p>

<p></p>

<p><span style="font-family:宋体;"><span style="font-size:20px;"><strong>在main.c中引用头文件,并将所有NOC1305的代码修改为LV0104CS的代码,如下所示:</strong></span></span></p>

<pre>
<code class="language-cpp">main.c

#include &lt;lv0104cs.h&gt;
#include &lt;lv0104cs_lux.h&gt;

...

int32_t lv0104cs_status = -1;

...

    /** Initialize LV0104CS. */
    retval = LV0104CS_LUX_Initialize();
    if (retval == LV0104CS_OK)
    {
      retval = LV0104CS_LUX_StartContinuous(0, NULL);
      if (retval == LV0104CS_OK)
      {
              lv0104cs_status = 0;
      }
      else
      {
              lv0104cs_status = 2;
      }
    }
    else
    {
            lv0104cs_status = 1;
    }

...

            printf(RTT_CTRL_CLEAR "Test status:\r\n");

            printf("LV0104CS initialization: %s\r\n", lv0104cs_status == 0 ? COLORIZE("OK", GREEN) : COLORIZE("ERROR", RED));
            if (lv0104cs_status == 0)
            {
                uint32_t lux = 0;
                LV0104CS_LUX_ReadLux(&amp;lux);
                printf("LV0104CS measured value: " COLORIZE("%lu", YELLOW) " lux\r\n\n", lux);
            }

</code></pre>

<p><span style="font-family:宋体;"><span style="font-size:20px;"><strong>编译一下,不出意外的话应该是0error的通过,然后我们debug或者下载到RSL10-SENSE-GEVK开发板中</strong></span></span></p>

<p><span style="font-family:宋体;"><span style="font-size:20px;"><strong>通过 JLINK RTT Viewer就可以看到光照数据了~</strong></span></span></p>

<p></p>

<p><span style="font-family:宋体;"><span style="font-size:20px;"><strong>LV0104CS还是有几个寄存器可以设置的,这些寄存器设置的配置我已经改好了,</strong></span></span></p>

<p><span style="font-family:宋体;"><span style="font-size:20px;"><strong>有兴趣和需求的同学可以尝试用下这些配置接口。</strong></span></span></p>

<p><span style="font-family:宋体;"><span style="font-size:20px;"><strong>LV0104CS的数据手册、驱动代码和移植好的</strong></span></span><font face="宋体"><span style="font-size:20px"><b>sense_product_test工程文件我放在下面的压缩包中了,各位自取。</b></span></font></p>

<p></p>

<p></p>

<p></p>

<p></p>

<p></p>

<p><font face="宋体"><span style="font-size:20px"><b>有什么问题,欢迎跟帖交流。</b></span></font></p>

littleshrimp 发表于 2021-6-24 07:25

<p>感谢,这真是“点睛”之贴。</p>

soso 发表于 2021-6-24 08:36

<p>哈哈 确实挺关键,我们再反馈下。</p>

dql2016 发表于 2021-6-24 12:07

<p>优秀<img height="48" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/wanwan79.gif" width="52" /></p>

w494143467 发表于 2021-6-24 17:59

感谢大佬!现在只能沾你的光了!我就直接拿来用了哈!

littleshrimp 发表于 2021-6-26 10:35

<p>那张板子的照片看起来不错 你是用什么设备拍的?</p>

justd0 发表于 2021-6-26 10:47

littleshrimp 发表于 2021-6-26 10:35
那张板子的照片看起来不错 你是用什么设备拍的?

<p>那个动图么?</p>

<p>哈哈 用手机<img height="51" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/biggrin.gif" width="48" /></p>

<p>没有滑轨,只好手动横移,所以还是有点抖。。</p>

littleshrimp 发表于 2021-6-26 11:27

justd0 发表于 2021-6-26 10:47
那个动图么?

哈哈 用手机

没有滑轨,只好手动横移,所以还是有点抖。。

<p>手机加特殊镜头了吗?</p>

justd0 发表于 2021-6-26 13:27

littleshrimp 发表于 2021-6-26 11:27
手机加特殊镜头了吗?

<p>没有啊,Redmi K30 Pro的那颗微距镜头</p>

littleshrimp 发表于 2021-6-26 14:50

justd0 发表于 2021-6-26 13:27
没有啊,Redmi K30 Pro的那颗微距镜头

<p>想不到现在手机的微距镜头都这么厉害了</p>

sunduoze 发表于 2021-7-4 18:44

谢谢填坑
页: [1]
查看完整版本: 蜜袋鼯 第③贴 RSL10-SENSE-GEVK 光照传感器驱动 写好了 分享给大家