主题 | 内容 | 教学目的/扩展视频 |
---|---|---|
MP3播放芯片 | 电路原理,跳线设置,手册分析,驱动程序与调用。 | 了解指令表。 |
师从洋桃电子,杜洋老师
📑文章目录
▲ 回顾上期🔍STM32 MP3播放原理与应用开发—MY1690X-16S语音芯片全解析(上) | 零基础入门STM32第六十八步
▲ 回顾上期🔍STM32 MP3播放原理与应用开发—与MY1690语音芯片交互全解析(中) | 零基础入门STM32第六十九步
▲ 回顾上期🔍STM32 MP3播放原理与应用开发—与MY1690语音芯片交互全解析(下) | 零基础入门STM32第七十步

一、系统架构与核心组件
1.1 硬件拓扑图
1.2 核心组件说明
组件 | 功能说明 |
---|---|
MY1690X-16S | MP3语音解码芯片,支持串口控制 |
DS3231 RTC | 高精度实时时钟模块 |
OLED 0.96" | 显示当前时间信息 |
触摸按键 | 触发语音播报操作 |
二、语音播报原理分析
2.1 语音文件命名规范
根目录/
├── 0001_现在时间.mp3
├── 0002_十.mp3
├── 0003_点.mp3
...
└── 0015_秒.mp3
- 数字前缀:4位数字标识播放顺序
- 语义命名:中文描述语音内容
2.2 播报指令协议
// 播放指定曲目指令格式
7E 05 41 00 01 45 EF
└─┬─┘ └─┬─┘ └─┬─┘
起始码 操作码 曲目编号 校验码
三、两种播报方式对比
3.1 无语法播报(机械式)
// 示例:14:05:09 直接播放数字
MY1690_CMD3(0x41,1); // "现在时间"
MY1690_CMD3(0x41,2); // "十"
MY1690_CMD3(0x41,4); // "四"
MY1690_CMD3(0x41,3); // "点"
MY1690_CMD3(0x41,6); // "零"
MY1690_CMD3(0x41,5); // "五"
//...(输出:"现在时间十四点零五分零九秒")
缺点:存在冗余发音(如"十四点零五分")
3.2 有语法播报(智能优化)
// 示例:14:05:09 智能处理
if(hour>=10){
if(hour/10==1) Play(11); // "十"
else Play(hour/10+1); // "二"
}
if(hour%10!=0) Play(hour%10+1);
Play(13); // "点"
if(min/10!=0) Play(min/10+1);
if(min%10!=0) Play(min%10+1);
//...(输出:"现在时间十四点五分九秒")
优势:符合中文表达习惯,消除冗余发音
四、核心代码解析
4.1 时间读取与显示
void RTC_UpdateDisplay(){
OLED_ClearLine(4);
// 显示格式:HH:MM:SS
OLED_ShowNum(4,3, rhour/10); // 十位
OLED_ShowNum(4,4, rhour%10);
OLED_ShowChar(4,5, ':');
//... 分钟和秒同理
}
4.2 智能播报算法
void SmartTimeAnnounce(){
Play(1); // "现在时间"
// 小时处理
if(rhour >= 20) Play(3); // "二十"
else if(rhour >= 10) {
if(rhour < 20) Play(11); // "十"
else Play(rhour/10+1);
}
if(rhour%10 != 0) Play(rhour%10+1);
Play(13); // "点"
// 分钟处理(省略冗余零)
if(rmin/10 > 0) Play(rmin/10+1);
if(rmin%10 > 0) Play(rmin%10+1);
//... 秒处理同理
}
五、系统扩展方案
5.1 多语言支持
SD卡根目录
└── 语音库
├── 01_CN
└── 02_EN
└── 0001_CurrentTime.mp3
5.2 应用场景拓展
场景 | 实现方案 |
---|---|
车站广播 | 结合时刻表自动触发播报 |
智能家居 | 与温湿度传感器联动播报 |
工业设备 | 故障代码语音提示 |
六、开发注意事项
6.1 时序控制要点
- 指令间隔:连续指令间隔需>50ms
- 文件排序:严格按照4位数字前缀命名
- 校验机制:添加重发机制确保指令可靠
6.2 常见问题排查
现象 | 解决方法 |
---|---|
发音卡顿 | 检查TF卡读取速度 |
时间显示异常 | 重新校准RTC模块 |
无语音输出 | 测量BUSY信号电平状态 |
七、相关资源
[1] 洋桃电子B站课程-STM32入门100步
[2] STM32官方文档手册
[3] STM32F103固件函数库用户手册(中文)
[4] MP3语音播报程序(含杜洋录制语音文件)
[5] MY1690(MP3音乐播放芯片)数据手册
💬 技术讨论(请在评论区留言~)
📌 下期预告:下一期将探讨SPI总线原理与驱动,欢迎持续关注!
点击查阅🔍往期【STM32专栏】文章
版权声明:本文采用[CC BY-NC-SA 4.0]协议,转载请注明来源
实测开发版:洋桃1号开发版(基于STM32F103C8T6)
更新日志:
- v1.0 初始版本(2025-03-16)