基于W801和Helix解码库的MP3播放器(W801单片机学习笔记)热血沸腾,流畅播放

1.前言

此前我有一篇帖子提出将Helix修改成能够运行在任何处理器上的解码算法。并着重以基于RISC-V处理器的国产单片机进行测试。此前测试了中科蓝汛出品的AB32VG1单片机,虽然解码没有出现错误,但是由于AB32VG1的处理器性能不足无法流畅播放,且超频至极限速度230MHZ后仍然无法流畅播放,未果,又踏上了寻找足够性能的国产单片机的道路。之后发现了W801单片机,该单片机额定工作频率就达到了240MHZ,且其处理器还带有一级指令缓存,这样一通硬核加持下来应该性能足够了,实测也是果真如此,热血沸腾,构想终于实现,国产基于RISC-V单片机流畅运行Helix解码库。

上文提到的两篇此前我发的帖子如下:

Helix MP3解码库脱离汇编指令束缚,运行在任何处理器上的解决方案_三月花科技的博客-CSDN博客

AB32VG1超频,编译器优化设置_三月花科技的博客-CSDN博客

修改好的MP3解码程序包下载如下:

CSDN下载:

HelixMP3解码库脱离汇编指令束缚,运行在任何处理器上的解决方案-单片机文档类资源-CSDN下载

百度云下载

链接:https://pan.baidu.com/s/1U4eVkZZ1IZaeGf4zzBerNQ 
提取码:SYHT

2.移植过程

2.1添加Helix解码库源码

添加Helix解码库进入工程后,记得先删除asm文件夹,因为这个文件夹里面的两个汇编文件是针对Cortex-M处理器的,RISC-V 处理器无法运行。添加后如下图所示:

2.2修改部分文件内容

现在需要使用C代码实现原汇编函数的功能。修改文件polyphase.c和assembly.h,具体修改的流程请见:

Helix MP3解码库脱离汇编指令束缚,运行在任何处理器上的解决方案_三月花科技的博客-CSDN博客

3.测试

3.1测试结论

正常解码,流畅播放。不得不说W801的XT804处理器性能非常优秀,其性能与Cortex-,M4差不多。DAC采用曾乐之邦的PCM5120A,连接W801单片机的I2S外设即可开始听歌。SD卡采用SD卡模块,并将W801的SDIO配置成单线模式。完整如下图所示:

现阶段除了移植了Helix以支持MP3格式音频文件外,还移植了FLAC无损音频格式的解码库,还有测试I2S时使用的WAV音频格式解码库,故当前供支持MP3,FALC,WAV三种格式。APE格式敬请期待。

3.2现阶段问题

现阶段是将歌曲名固定在程序中,还未实现自动搜歌的功能。而且,由于CDK使用的是UTF-8格式的文档,在程序中输入中文文件名将会出错。故只能用英文文件名,测试如下图:

 测试曲目:咱当兵的人.flac,由于不支持中文文件名,用了首拼

测试曲目:打靶归来.mp3(320kpbs, 16bits),我是一个兵.mp3(128kbps, 16bits) 

4.测试工程下载

4.1接线

SD卡部分(单线模式):

CLK        ->        PA9

CMD        ->        PA10

D0        ->        PA11

I2S部分(不含MCLK模式,因为PCM5120A无需MCLK,若使用其它DAC可以找到MCLK引脚设置处的代码,去掉注释,如下图所示)(该函数在userapp/audioplayerbase/playerbase.c):

BCK 位时钟        -》        PB8

WS字选择(声道切换)        -》        PB9

DO数据输出        -》        PB11

DI数据输入        -》        PB10(本例程中未使用,播放器只涉及数据输出)

4.2下载链接

CSDN下载:

基于W801的音频播放器-单片机文档类资源-CSDN下载

百度云下载:

链接:https://pan.baidu.com/s/1arpoAyh3sZXESIooQq3qiA 
提取码:SYHT

4.3例程使用注意事项

现阶段是将歌曲名固定在程序中,还未实现自动搜歌的功能。请确保SD卡中对应目录下有与程序中相对应的文件,或者修改程序为SD中现有文件的文件名。程序修改的地方如下图:

 文件位置如左侧所示,右侧调用PlayMusicFname函数时修改第一个参数即可,第一个参数是文件名,后面两个参数是播放时所需的二值信号量,请不要修改。

其次,由于CDK使用的是UTF-8格式的文档,在程序中输入中文文件名将会出错。故只能用英文文件名。

  • 15
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 34
    评论
基于W801单片机的智能手机充电器是一种能够更加智能化管理和保护手机充电的设计方案。这款充电器采用了W801单片机作为主控芯片,通过其强大的计算和控制能力,实现了多种功能和优化。 首先,基于W801单片机的充电器可以根据手机电池的容量和电压等信息,智能调节充电电流和电压。通过与手机之间的通信,充电器可以了解手机电池的具体状态,并根据需要进行快速充电或是低电流充电,以达到最佳充电效果,同时避免过度充电对手机电池的损害。 其次,充电器还具备安全保护功能。例如,基于W801单片机的充电器可以实现过充保护,当手机电池充满后自动停止充电,避免过度充电导致手机电池损坏。另外,充电器还可以监测电流和电压的异常情况,一旦发现异常即刻停止充电,确保手机充电安全。 此外,基于W801单片机的充电器还可以具备智能管理功能。它可以通过内置的计时器功能,记录手机充电时间和充电历史,帮助用户了解充电习惯和充电特点。同时,它还可以与用户的手机APP进行连接,实现远程控制和监测。用户可以通过手机APP查看充电器状态、调整充电参数等。 综上所述,基于W801单片机的智能手机充电器设计具备智能调节充电电流和电压、安全保护功能以及智能管理等特点,能够更好地满足用户对手机充电的需求,提供更加智能和安全的充电体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 34
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值