查看: 5587|回复: 1

[原创] 【正点原子号令者RT1052试用】六、音频例程优化+增加mp3解码

[复制链接]
  • TA的每日心情
    开心
    2022-6-16 19:35
  • 签到天数: 649 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2018-7-26 01:36:04 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 踏平幼稚园 于 2018-8-4 08:49 编辑

        上次体验rt-thread+gui,使用起来很方便。正打算进一步中使用,结果sd一直不能正确识别。回去试了原子的例程是可以的,对比半天也没发现问题,干脆先跳过直接先用原子的例程,等有时间或更新了再试。原本想先测试网络部分,但是网卡驱动好像也还没有例程可以用,最后改了从音频部分开始。

        原子的音乐播放例程目前只支持wav,对比stm32f429的例程,其他解码移植难度不大就试着先从mp3开始。期间分析wav代码,发现有可以优化的地方,缓冲区只需要2个就够了(例程里是4个),而且fsl库中音频驱动文件中有相关中断配置及中断函数,不需再户重新实现。以下具体过程:


       音频驱动优化:
            1、关闭sai.c中的dma中断函数,改用通过库函数的回调,调用关系:DMA0_DMA16_IRQHandler->DMA0_DMA16_DriverIRQHandler->SAI_TxEDMACallback->sai1_txcallback->wait_txfinished=true,这样通过wait_txfinished即可控制发送及判断发送是否完成
                 1.png

            2、优化audiopaly.h中__audiodev结构体,saibuf[4]->saibuf[2]
                   
    1. typedef __packed struct
    2. {  
    3.         //3个SAI解码的BUF
    4.         u8 *saibuf[2];          //4个SAI音频缓冲区
    5.     volatile u8 saisavebuf; //即将保存的音频帧缓冲编号
    6.         u8 *tbuf;                                //零时数组,仅在24bit解码的时候需要用到
    7.         FIL *file;                                //音频文件指针
    8.         
    9.         u8 status;                                //bit0:0,暂停播放;1,继续播放
    10.                                                         //bit1:0,结束播放;1,开启播放
    11. }__audiodev;
    12. extern __audiodev audiodev;        //音乐播放控制器
    复制代码


            3、wav.c文件主要修改缓冲数据填充发送逻辑,改为填充第一个缓冲区后发送同时填充第二个缓冲区,待发送完成后发送第二个缓冲区数据并填充覆盖第一个缓冲区,依次循环,下图是主要逻辑部分,代码文末提供
                 2.png

            4、播放测试,gif不能声音只能看看了,木耳朵没听出延迟,效果还可以
                 VID_20180724_212446.gif

        MP3移植:
            代码来自原子的stm32f429例程,用上面的逻辑实现双缓冲区播放(原本例程中就是双缓冲区方法),移植后经测试可以播放,但是音质很差,同一首歌在电脑上把MP3转成wav后,板子播放wav很清晰,MP3播放就伴随着很多噪音,目前还不知道是解码问题还是程序bug,至少能播放了,下图是需要添加的解码文件及主要修改的代码
                 3.png


        代码: 实验48 音乐播放器实验.zip (2.93 MB, 下载次数: 28)
    回复

    使用道具 举报

  • TA的每日心情
    难过
    2021-2-27 22:16
  • 签到天数: 1568 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2018-8-24 22:57:40 | 显示全部楼层
    都是提高版啊
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-4-20 12:03 , Processed in 0.128080 second(s), 21 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.