御坂10032号 发表于 2024-8-19 22:56

[工业级智能控制MCU 匠芯创D133CBS] 5- 使用RTT-软件包结合IIC读取BH1750

本帖最后由 御坂10032号 于 2024-8-19 22:55 编辑

<p><strong><span style="font-size:24px;">简介</span></strong></p>

<p>&nbsp;</p>

<p>在上一篇文章&nbsp; [工业级智能控制MCU 匠芯创D133CBS] 4- BUG 反馈 (SDK lunch11 包更新错误) <a href="https://bbs.eeworld.com.cn/thread-1290904-1-1.html" target="_blank">https://bbs.eeworld.com.cn/thread-1290904-1-1.html</a>&nbsp;中提到的bug 已经在Gitee上反馈了Issue, 开发者会在下一个版本修复这个问题。 那么目前来说我们如果想使用软件包驱动的话就需要自己在github上下载了。</p>

<p>&nbsp;</p>

<p> &nbsp;</p>

<p>&nbsp;</p>

<p>那么在本章评测中,我们将来看一下在匠芯创D133CBS上快速的使用软件包来结合IIC来读取外部的BH1750光照传感器。 那么在本章节你将会学会如何手动下载并且配置软件包等。</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p><strong><span style="font-size:24px;">步骤</span></strong></p>

<p>&nbsp;</p>

<p>1- 由于我们这次要使用的是IIC,也就是在下图左侧红色标记处的IIC0, 我们需要先在menuconfig中开启IIC0</p>

<p>&nbsp;</p>

<p> &nbsp;</p>

<p>&nbsp;</p>

<p>2- 开启IIC0, 如果出现设置不生效的情况请参考我前几篇帖子,我会在文章的最后附加上之前的文章链接</p>

<p>&nbsp;</p>

<p> &nbsp;</p>

<p>3- 打开RTT软件包的网站&nbsp;<a href="https://packages.rt-thread.org" target="_blank">https://packages.rt-thread.org</a>/ 搜索BH1750</p>

<p>&nbsp;</p>

<p> &nbsp;</p>

<p>&nbsp;</p>

<p>4- 在GITHUB上把源码下载或者clone到本地。 复制除了Sconfig的外的所有文件到你自定义项目的根路径下(由于当前的版本 软件包自动更新有问题,可以放到第三方包下面,也可以放到自定义项目路径下)</p>

<p>&nbsp;</p>

<p> &nbsp;</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>5- 把 bh1750.c最上面的&nbsp;<strong>#ifdef PKG_USING_BH1750_V100</strong> 删除掉,并且删除最后的&nbsp;<strong>#endif /* PKG_USING_BH1750_V100 */ ,&nbsp;</strong>因为我们没有使用pkgs --update 的方式,也没有在menuconfig里配置开启BH1750,因此这两个宏不生效。 注意,我这里没有使用最新的BH1750驱动,我是用的是V1.0.0. 不带Sensor框架的。</p>

<p>&nbsp;</p>

<p>&nbsp;&nbsp; &nbsp;</p>

<p>&nbsp;</p>

<p>&nbsp; 6 - 在主程序中我演示了两种的调用方法,第一种使用的finish的 msh_exec 方法调用了软件包里已经暴露出的MSH command<strong>&nbsp;MSH_CMD_EXPORT(bh1750, bh1750 sensor function);</strong></p>

<p>第二种,则是直接调用bh1750 的函数进行数据读取。 互斥锁为可选,这里使用互斥锁是为了保证BH1750 一定会在读取之前初始化完毕。 释放的方法则是在初始化完毕释放互斥锁。</p>

<pre>
<code>#include &lt;rtthread.h&gt;
#ifdef RT_USING_ULOG
#include "bh1750.h"
#include &lt;ulog.h&gt;
#include &lt;msh.h&gt;
#endif

rt_mutex_t mutex_bh1750;

void init_bh1750()
{
    char init_command[] = "bh1750 probe i2c0";
    msh_exec(init_command, rt_strlen(init_command));
}

void read_bh1750(void *arg)
{
    char *args[] = {"bh1750", "read"};
    while (1)
    {

      bh1750(2, &amp;args);
      rt_thread_mdelay(500);
    }
}

int main(void)
{
    mutex_bh1750 = rt_mutex_create("BH1750 init", RT_IPC_FLAG_FIFO);
    rt_mutex_take(mutex_bh1750, RT_WAITING_FOREVER);
    init_bh1750();
    rt_mutex_take(mutex_bh1750, RT_WAITING_FOREVER);
    rt_thread_t task = rt_thread_create("read_bh1750", read_bh1750, RT_NULL, 4096, 5, 10);
    if (task != RT_NULL)
    {
      rt_thread_startup(task);
    }
    else
    {
      rt_kprintf("Failed to create bh1750 thread!\r\n");
    }
}
</code></pre>

<p>&nbsp;</p>

<p>释放互斥锁</p>

<p>&nbsp;</p>

<p> &nbsp;</p>

<p>&nbsp;</p>

<p><strong>实验现象如下</strong></p>

<p>c30598b2b4e953303b7c9a64c6c71cf8<br />
&nbsp;</p>

<p><strong><span style="font-size:24px;">总结</span></strong></p>

<p>&nbsp;</p>

<p>通过&nbsp;匠芯创D133CBS 和RTT软件包的结合,大大的提升了开发的效率。期待下个版本开发人员修复好 pkgs -- update</p>

<p>&nbsp;</p>

<p><strong>历史测评链接</strong></p>

<p>&nbsp;</p>

<p>[工业级智能控制MCU 匠芯创D133CBS] 1 - 开箱及其环境搭建&nbsp;<a href="https://bbs.eeworld.com.cn/thread-1290588-1-1.html" target="_blank">https://bbs.eeworld.com.cn/thread-1290588-1-1.html</a></p>

<p>[工业级智能控制MCU 匠芯创D133CBS] 2 - 创建项目及其注意事项&nbsp;<a href="https://bbs.eeworld.com.cn/thread-1290861-1-1.html" target="_blank">https://bbs.eeworld.com.cn/thread-1290861-1-1.html</a></p>

<p>[工业级智能控制MCU 匠芯创D133CBS] 3 - GPIO-IO中断 <a href="https://bbs.eeworld.com.cn/thread-1290902-1-1.html" target="_blank">https://bbs.eeworld.com.cn/thread-1290902-1-1.html</a></p>

<p>[工业级智能控制MCU 匠芯创D133CBS] 4- BUG 反馈 (SDK lunch11 包更新错误) <a href="https://bbs.eeworld.com.cn/thread-1290904-1-1.html" target="_blank">https://bbs.eeworld.com.cn/thread-1290904-1-1.html</a></p>

damiaa 发表于 2024-8-20 14:24

<p>板子直接上rtt啊。<img height="48" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/wanwan41.gif" width="48" /></p>

御坂10032号 发表于 2024-8-20 23:42

damiaa 发表于 2024-8-20 14:24
板子直接上rtt啊。

<p>直接RTT</p>
页: [1]
查看完整版本: [工业级智能控制MCU 匠芯创D133CBS] 5- 使用RTT-软件包结合IIC读取BH1750