[工业级智能控制MCU 匠芯创D133CBS] 5- 使用RTT-软件包结合IIC读取BH1750
本帖最后由 御坂10032号 于 2024-8-19 22:55 编辑<p><strong><span style="font-size:24px;">简介</span></strong></p>
<p> </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> 中提到的bug 已经在Gitee上反馈了Issue, 开发者会在下一个版本修复这个问题。 那么目前来说我们如果想使用软件包驱动的话就需要自己在github上下载了。</p>
<p> </p>
<p> </p>
<p> </p>
<p>那么在本章评测中,我们将来看一下在匠芯创D133CBS上快速的使用软件包来结合IIC来读取外部的BH1750光照传感器。 那么在本章节你将会学会如何手动下载并且配置软件包等。</p>
<p> </p>
<p> </p>
<p><strong><span style="font-size:24px;">步骤</span></strong></p>
<p> </p>
<p>1- 由于我们这次要使用的是IIC,也就是在下图左侧红色标记处的IIC0, 我们需要先在menuconfig中开启IIC0</p>
<p> </p>
<p> </p>
<p> </p>
<p>2- 开启IIC0, 如果出现设置不生效的情况请参考我前几篇帖子,我会在文章的最后附加上之前的文章链接</p>
<p> </p>
<p> </p>
<p>3- 打开RTT软件包的网站 <a href="https://packages.rt-thread.org" target="_blank">https://packages.rt-thread.org</a>/ 搜索BH1750</p>
<p> </p>
<p> </p>
<p> </p>
<p>4- 在GITHUB上把源码下载或者clone到本地。 复制除了Sconfig的外的所有文件到你自定义项目的根路径下(由于当前的版本 软件包自动更新有问题,可以放到第三方包下面,也可以放到自定义项目路径下)</p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p>5- 把 bh1750.c最上面的 <strong>#ifdef PKG_USING_BH1750_V100</strong> 删除掉,并且删除最后的 <strong>#endif /* PKG_USING_BH1750_V100 */ , </strong>因为我们没有使用pkgs --update 的方式,也没有在menuconfig里配置开启BH1750,因此这两个宏不生效。 注意,我这里没有使用最新的BH1750驱动,我是用的是V1.0.0. 不带Sensor框架的。</p>
<p> </p>
<p> </p>
<p> </p>
<p> 6 - 在主程序中我演示了两种的调用方法,第一种使用的finish的 msh_exec 方法调用了软件包里已经暴露出的MSH command<strong> MSH_CMD_EXPORT(bh1750, bh1750 sensor function);</strong></p>
<p>第二种,则是直接调用bh1750 的函数进行数据读取。 互斥锁为可选,这里使用互斥锁是为了保证BH1750 一定会在读取之前初始化完毕。 释放的方法则是在初始化完毕释放互斥锁。</p>
<pre>
<code>#include <rtthread.h>
#ifdef RT_USING_ULOG
#include "bh1750.h"
#include <ulog.h>
#include <msh.h>
#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, &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> </p>
<p>释放互斥锁</p>
<p> </p>
<p> </p>
<p> </p>
<p><strong>实验现象如下</strong></p>
<p>c30598b2b4e953303b7c9a64c6c71cf8<br />
</p>
<p><strong><span style="font-size:24px;">总结</span></strong></p>
<p> </p>
<p>通过 匠芯创D133CBS 和RTT软件包的结合,大大的提升了开发的效率。期待下个版本开发人员修复好 pkgs -- update</p>
<p> </p>
<p><strong>历史测评链接</strong></p>
<p> </p>
<p>[工业级智能控制MCU 匠芯创D133CBS] 1 - 开箱及其环境搭建 <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 - 创建项目及其注意事项 <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>
<p>板子直接上rtt啊。<img height="48" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/wanwan41.gif" width="48" /></p>
damiaa 发表于 2024-8-20 14:24
板子直接上rtt啊。
<p>直接RTT</p>
页:
[1]