STM32F103+CubeMX+Helix软解MP3并使用DAC输出,简易的MP3播放器

珠玉在前:F407的方案
链接中的方案基于F407,此处基于CubeMx写一个更方便移植到各个平台的版本,同时也记录一下一些bug

原理之前的方案都有介绍,我这里写一下cube的配置和其他HAL库API的使用
SDIO配置
配置SDIO,但是亲测使用4线的可能会有奇奇怪怪的问题,不知道为什么
因此这里只考虑使用SD 1bit,其次也要考虑SDIO时钟不能超过25MHz,因此时钟分频这里选择2
可以开启DMA和中断,但是中断优先级必须最高,不然被打断可能会影响读写
FATFS
配置文件系统FATFS,点了SD卡之后就可以比较方便地使用ST官方提供的库
DAC配置
这里只用到了单个通道,如果想做左右声道的可以使用两个输出,后面会有相应代码支持

DAC的DMA配置
DAC使用Circular模式,半字节数据宽度
定时器6
定时器6做为DAC触发信号,ARR值需要根据实际MP3文件的采样率做调整,比如是44100的话ARR就是时钟频率除以44100
部分代码贴在这里,大伙可以先从这个链接F407的方案下载他的MP3_Player.c然后在这里做修改,这里程序主要改成HAL库的函数,方便做移植
【注意:我这里是单个声道输出,双声道输出需要写两个dac通道】

比如,把 DAC_DMA_Stop(); 改为 HAL_DAC_Stop_DMA(&hdac, DAC_CHANNEL_1);

	//尝试解码成功
	if(MP3DataDecoder(&read_ptr, &bytes_left))
	{
   
		//打印MP3信息
		printf(" \r\n Bitrate       %dKbps", Mp3FrameInfo.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值