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