我花15个月,做了块STM32学习板!实现20+功能!

来源:立创开源硬件平台 开发板 6 次阅读
摘要:工程名称:Muse Cube : STM32掌上终端/mp3 工程作者:dydcyy 前言 今天逛开源广场,看到一个【很适合单片机小白练手】的开源项目。 这,是一个掌上终端,也是一个STM32学习板!它有20+功能…… ——如果你想用STM32,做一个完整项目。 ——如果你想锻炼自己的资源整合能力——比如将一个192KB RAM里塞进RTOS+GUI+音频解码+模拟器 那这个项目,会非常适合你参

工程名称:Muse Cube : STM32掌上终端/mp3

工程作者:dydcyy

前言

今天逛开源广场,看到一个【很适合单片机小白练手】的开源项目。

这,是一个掌上终端,也是一个STM32学习板!它有20+功能……

Muse Cube  STM32掌上终端mp3 (3).png

——如果你想用STM32,做一个完整项目。

——如果你想锻炼自己的资源整合能力——比如将一个192KB RAM里塞进RTOS+GUI+音频解码+模拟器

那这个项目,会非常适合你参考学习~

下文会介绍一下它的具体功能,再分享硬件/软件设计方案!文末还会附上开源网址,方便你深入了解学习!

*0***1

功能&亮点

  • 高品质音乐:DAC最高32bit/192kHz解码+独立供电+低抖动晶振,声音干净,支持多种无损格式,通过3.5mm耳机/双扬声器播放

  • 外置解码:连接手机或电脑,可充当USB解码耳放,提升音质

  • 内置NES模拟器:能玩马里奥、魂斗罗……

  • 支持TXT阅读,能看新闻,小说等文本

  • 支持播放视频、浏览图片、播放像素画等

  • 支持倒计时、番茄钟、闹钟、桌面时钟

  • 可以当电脑副屏

  • 能查看代码

  • 有单词卡,每天学N个单词

  • 支持课表

  • 能模拟鼠标/键盘/手柄

  • 有备忘录功能,可实时记录事件

  • 轻量主机:可读取、拷贝 U 盘文件,支持串口调试,无电脑时可应急。

  • 便携:8×5×2.2 cm,可轻松装入口袋

  • 3大接口:USB-C、3.5mm 耳机孔、TF 卡槽,充电/听歌/扩容均方便

  • 1.54 英寸IPS屏:240分辨率

  • 续航一天:2000mAh电池,音乐播放/桌面常亮可支撑一天

  • Switch同款摇杆,玩小游戏/模拟鼠标时体验更好

*0***2

硬件设计方案

电路部分,作者用嘉立创EDA设计了一块6层板:

Clip_2026-05-25_11-31-09.png

原理图

Clip_2026-05-25_11-31-24.png

PCB图

硬件参数:

  • 主控:STM32F405

  • 板载 flash:w25q128 (16MB)

  • 扬声器运放:MAXIM(现为 ADI)的MAX98357A×2

  • 耳机运放:ESSTechnology的es9018k2m+es9601k组合

  • DAC 晶振:EPSON的38.4MHz TCXO

  • 电源:电源管理、DCDC、LDO、模拟开关、负载开关、限流配电开关,均选用TI的合适元件

  • 电路保护:在接口处使用ESD/TVS保护元件

*0***3

软件设计方案

5.1 软件架构图

5.2 开发环境

  • 集成开发环境:Keil5

  • 编译器:ARM Compiler 5

  • 底层驱动:STM32 标准库

5.3 系统架构

  • 程序划分:分为引导加载程序(Bootloader)与主程序两部分。

  • 引导加载程序:占用前 64 KB ROM 空间,借助 CherryUSB 的 UF2 协议实现 USB 拖拽式固件更新。

  • 主程序:紧随引导加载程序存放。

  • 实时操作系统:FreeRTOS,负责任务调度。

  • 图形界面库:LVGL。

  • 内存管理:基于 TLSF 算法,动态管理 80 KB 普通 RAM 与 64 KB CCM RAM。

  • 系统时钟节拍:由 SysTick 定时器统一为 FreeRTOS 与 LVGL 提供。

  • 程序监控:独立看门狗(IWDG),防止程序卡死或跑飞。

5.4 外设与信号处理

  • 定时器:TIM8(LCD 背光亮度调节);TIM2(RTOS 运行状态监测定时器)。

  • 随机数与时钟:RNG 随机数发生器;实时时钟(RTC)支持公历转农历。

  • 屏幕与输入:42 MHz SPI + DMA;拼音输入法(查表)。

  • 模拟信号采集:8 路 ADC + DMA(摇杆、Type-C CC 引脚、电池电压)。

5.5 存储与文件系统

  • Flash 存储 (W25Q128):8 MB FlashDB(键值+时序数据),剩余字库存储。

  • TF 卡存储:24 MHz 四线 SDIO + DMA,最高 32 GB,FatFS。

5.6 音频处理

  • I2S2 + DMA 音频输出,模拟开关切换扬声器/耳机 DAC。

  • I2C1 控制 ES9018K2M。

  • 音频解码库:libhelix-aac、libhelix-mp3、libfoxenflac、libdemac。

  • 支持格式:WAV、MP3、FLAC、AAC、APE。

5.7 USB 功能

  • 主从模式识别与切换:Type-C CC 引脚上下拉切换与电压检测。

  • 协议栈:CherryUSB。

  • 从机功能:CDC ACM(usb串口)、MSC(模拟u盘)、UAC1/UAC2(usb音频)、Display(投屏)、HID 鼠标/键盘/手柄。

  • 主机功能:串口助手、HID 键鼠、MSC 设备。

5.8 视频与图像解码

  • 视频播放:RAW RGB565;MJPEG(TjpgDec,240×240@30fps)。

  • 图片解码:GIF(AnimatedGIF)、PNG(PNGdec)、JPG、BMP。

5.9 综合设计思路

  • 优化性能:硬件接口、使用 DMA、减少内存拷贝、常用代码寄存器优化。

  • 保证可读性:简化代码结构、函数封装简单、避免复杂数据结构。

  • 减少代码黑盒:手动移植第三方库、所有代码可优化修改。

5.10 AI 使用说明

  • UI 部分:仅完成框架,AI 生成代码后对功能实现进行审查。一般不审查具体代码实现。

  • 除 UI 以外的代码:自己编写或参考可信的代码实现,AI 仅用作 Bug 排查。对 AI 生成的代码需经过检查后方可使用。

*0***4

结语

不愧是用15个月,精细打磨的项目!!在“玩具级”的资源限制下,作者实现了“产品级”的完成度与Hi-Fi音质啊有木有!

对于想进阶学习STM32的玩家来说,它堪称六边形战士,基本能“全面”覆盖你的学习需求:

  • 首先,这个终端几乎覆盖了STM32F4全部常用外设:SPI、I2S、USB、SDIO、PWM、ADC、RTC、IWDG、NVIC、RNG、Timer。

  • 同时,还集成了 FreeRTOS、LVGL、FatFs、CherryUSB、FlashDB、MP3/FLAC/AAC 解码、JPEG/PNG/GIF 解码、MJPEG 视频、NES 模拟器、DSP 库……

*0***5

开源网址

目前,项目已全开源开源内容如下:

Clip_2026-05-25_11-57-16.png

开源网址:https://oshwhub.com/dydcyy/mp3-based-on-stm32

相关推荐
评论区

登录后即可参与讨论

立即登录