爱玩板卡+基于stm32F030F4P6单芯片超低成本数字音频播放器
#线上活动
3044 人阅读
|
1 人回复
|
2017-06-28
TA的每日心情 | 奋斗 2022-6-20 16:11 |
|---|
签到天数: 19 天 连续签到: 1 天 [LV.4]偶尔看看III
进士
- 积分
- 1397
|
|
本帖最后由 sumengqi 于 2017-6-29 13:16 编辑
方案分享:早些日子实现了用stm32软件编码spdif协议的数字音频数据,然后通过SPI总线实验SPDIF信号的发送。近来突发奇想,可以使用目前性价比最高,价格最低的一款M0内核CPU实现珠子音频播放器,也就是数字转盘。
功能:读取TF、SD卡中的WAV音频文件,在单片机的指定引脚输出标准SPDIF信号。
具体实现原理如下:
首先使用几个普通IO口模拟SPI总线,来实现对SD卡/TF卡物理扇区的读取,然后移植FATFS文件系统实现FAT32文件的读取。到此为止就可以正常读取WAV文件了。接下来要做的就是将WAV文件读取至缓冲区中,然后将缓冲区中的原始wav数据通过软件编码为spdif数据,编码后的数据是原始数据数据量的两倍,所以需要另外开辟一块内存空间。为了不使播放断流,使用DMA功能来将编码后的数据传送至spi总线,SCK时钟必须是音频时钟以保证播放速度,可以使用音频晶振作为系统的主时钟。但是为了降低系统PLL对输出spdif信号音质的影响,建议使用SPI的从模式,这样可以从SCK接口输入一个高质量的音频时钟来保证spdif信号时钟的稳定度。因为stm32f030f4p6只有16KB的flash和4KB的ram,所以使得编码一帧spdif数据变得困难,这里采用了边读取边编码边DMA发送的策略,每次处理很小的数据量,使得在仅仅4KB的ram下实现读取WAV文件并输出SPDIF信号的任务。
|
|
|
|
|
|
|
|
|
TA的每日心情 | 开心 2024-1-11 05:07 |
|---|
签到天数: 4 天 连续签到: 1 天 [LV.2]偶尔看看I
秀才
- 积分
- 263
|
沙发
mkkop
发表于 2017-7-31 22:05:19
|
只看该作者
|
|
|
|
|
|
|
|