良许Linux教程网 干货合集 一个集RTOS、GUI、蓝牙、电源管理等一体的嵌入式软硬件开源项目

一个集RTOS、GUI、蓝牙、电源管理等一体的嵌入式软硬件开源项目

在本项目中,我很高兴向大家介绍一个基于CW32单片机开发的软硬件开源项目。该项目包括许多常用的功能,例如RTOS(实时操作系统)、GUI(图形用户界面)、蓝牙和电源管理等。

一 主要特色

我亲自收到了该产品,并使用了一段时间。虽然还有一些功能有待完善,但整体而言,它表现不错。无论是用于学习还是作为项目参考,都是完全没有问题的选择。

image-20240206213352955
image-20240206213352955

图1

主要功能包含

1.电压测量+阈值判断,阈值电平可以根据需求自行设定满足不同逻辑电平的场景,并且保留“简易逻辑电平测试笔“好用的红绿灯提示功能;

2.通断测量,且阈值电阻可以根据需求调整;

3.二极管测量,点亮一颗二极管(注意!不是三极管!!!);

4.PWM输出,方便在一些场景下提供一个已知量对系统进行测试,也可以对无源蜂鸣器等进行测试;

5.PWM输入,可以对频率进行测量(甚至是对串口等数据进行简单的解码显示等功能,不过目前技术有限还没有实现);

6.直流输出,模拟出一个需要的直流电平进行测试;

7.可以连接扩展板进行配合测量。

二 电路设计

设计思路

在对测试笔进行设计时,我把整体分为了五个部分:模拟前端、电源与电池管理、单片机及外设、显示屏、用户控制。根据模块化的设计思路,我们可以在画电路图时更加有条理,也可以在进行PCBLayout时将布局按照模块进行大致区分,以便于进行走线等操作。

image-20240206213407012
image-20240206213407012

图2

我们根据需求对每个部分进行细化设计,来实现既定目标。在下面,将会结合电路图和PCB对我的设计和设计思路进行详细的说明。

image-20240206213411218
image-20240206213411218

图3 电源与电池管理

image-20240206213414885
image-20240206213414885
image-20240206213418305
image-20240206213418305
image-20240206213422707
image-20240206213422707

图4 单片机及外设

image-20240206213425598
image-20240206213425598
image-20240206213428318
image-20240206213428318
image-20240206213431761
image-20240206213431761

图5 模拟前端

三 软件代码和调试

该项目开源地址:

https://gitee.com/multifunction_test_pen/test_pen

文件结构:

1.GUI—LCD驱动和UI

2.FreeRTOS—RTOS系统

3.USER—底层驱动和app

image-20240206213434418
image-20240206213434418

图6

这里面包括单片机常见外设及应用代码,下面给大家看一些代码。

电池电量测量

**
**

BAT_ADC_ResultBuff数组存储的是电池采集的ADC值。

1.计算BAT_ADC_ResultBuff数组的平均值,去掉最大最小值,防止数据突变。

2.将计算的平均值。

uint16_t get_bat_val(void)
{
    uint32_t sum = 0;
    uint16_t bat_val;
    uint32_t len = sizeof(BAT_ADC_ResultBuff) / 2;
    uint16_t max = 0;
    uint16_t min = 0xffff;
    int i;
    for ( i = 0; i if(BAT_ADC_ResultBuff[i] > max)
        {
            max = BAT_ADC_ResultBuff[i];
        }
        if(BAT_ADC_ResultBuff[i] return bat_val;
}

占空比调节

占空比修改在PWM中断里面修改,只需要改变PosWidth值。

void GTIM1_IRQHandler(void) 
{ 
    static uint16_t TimeCnt = 0; 
    GTIM_ClearITPendingBit(CW_GTIM1, GTIM_IT_OV); 
    if (TimeCnt++ >= 100) 
    { 
        TimeCnt = 0; 
        GTIM_SetCompare1(CW_GTIM1, PosWidth); 
    } 
    /* USER CODE END */ 
}

界面显示

**
**

界面显示包含了显示内容和功能检测。

image-20240206213458050
image-20240206213458050

图7

为了方便测试,这里还引入了上位机工具,比如使用虚拟仪器软件进行测量:

image-20240206213501350
image-20240206213501350

图8

示波器显示:

image-20240206213504122
image-20240206213504122

图9

更多相关描述,大家可以参看:

https://dwi41yhz703.feishu.cn/docx/HDypdqqapoMlVpxNuH0cdr08nEh?from=from_copylink

更多源代码,可以参看:

https://gitee.com/multifunction_test_pen/test_pen

该开源项目使用CW32国产单片机作为主控,目前原理图、PCB、生产资料,以及源代码都公开,感兴趣的小伙伴也可以自己打样做一套。

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部