山景BP10_128DBG开发板TF卡放歌实验回顾

前言

最近在学习上海山景公司的BP10_128DBG的开发板,因为网上关于BP10开发板的帖子也比较少,在学习的时候也没有太多的参考资料,基本上都是官方的历程。芯片的相关资料也没有像ST、NXP这些那么全,所以我把我自己的学习心得分享出来,大家有需要的可以参考。

一:添加的文件、静态库

中间层添加了audio和fatfs

 添加的.a静态库

 

 

src文件夹下添加audio_decoder_in_use.h文件,里面定义了用哪些解码方式的宏

然后在audio_decoder_api.c中定义了各种解码方式的函数,注意要添加#include "audio_decoder_in_use.h",否则定义的函数就是灰的,不能使用。这些函数的具体实现被编译成了libAudioDecodderLibrary.a静态库。

 Mvstdio.c中就是一些上海山景公司封装的一些C库函数或系统调用

二:先进行IO的复用和SDCard初始化

与之前SD卡读写block不同,这里使用了文件系统

三:进行分区挂载

current_vol的定义,该数组用来记录用哪个分区

使用f_mount函数进行挂载

 f_mount函数相关参数含义

ffpresearch_init(&gFatfs_sd,NULL,NULL,acc_ram_blk)、f_scan_vol(current_vol)初始化sd卡挂载的分区

四:循环扫描TF卡中的每个歌曲文件

f_file_real_quantity()可以返回当前TF卡中文件的数量

我的TF卡里只放了两首歌,所以用串口打印出来的值就是2

五:几个FATFS文件系统中的结构体

FileType结构体中记录了常见音频编码类型

 

 FIL结构体记录了File这个类中的成员

 Ff_dir是描述文件夹的类

六:打开音频文件,初始化相应结构体

调用f_open_by_num来打开文件

通过get_audio_type((TCHAR *)file_long_name)来获取音频文件编码类型

打印song相关的一些信息(Song nametype

在FiileType中第7个是mp3,跟音频文件匹配得上

七:audio_decoder结构体初始化

通过文件系统读取音频文件之后将得到的文件句柄传入audio_decoder_initialize()函数中进行初始化

 audio_decoder_initialize()里面主要初始化了audio_decoder这个变量

注意AudioDecoderContext结构体中定义的4个函数(initializedecodecan_continueseek)在确定音频解码类型之后都会指向.a编译的静态库。

一些mp3wma相关函数的实现编译成了libAudioDecoderLibrary.a库,audio_decoder_api.c文件中的函数最后都会调用.a库的函数,该文件就是一个简单的调用。

通过audio_decoder_get_context_size()可以得到文件大小(差不多)

audio_decoder->song_info结构体中记录了相关音频文件信息(作者、专辑等)

SongInfo结构体

调用AudioDAC_VolSet()可以设置音量,这个函数是在dac.h中

准备工作做完之后就开始解码了,先用audio_decoder_can_continue()判断一下是否能进行

然后再判断一下音频文件的采样率和SampleRateCC是否相同,不同的话就重新赋值,修改AudioDAC的采样率。其实在前面已经做过了一遍这个操作。

 

之前已经做过一次采样率赋值的操作

 判断一下DAC0循环FIFO中还有多少空间,如果小于pcm_data_length就死等

 然后根据通道数进行不同的配置,读取数据,以两个通道的为例

最后就会从DAC0输出音频,将音频文件放到文件夹里也可以,是一样的效果。

总结

以上就是本文的全部内容,非常感谢你能看到这。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

门牙会稍息

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值