全部文档
OneOS简介 硬件支持 快速开发指南 编译构造工具 API参考文档 高级语言 用户编程手册 OnePos定位 应用笔记 FAQ

AUDIO设备用户开发


基础BSP配置--以STM32为例

工程及使用说明

如果在提供的OneOS源码中已经有适合的工程DEMO工程,则可以直接使用;如果没有请参照快速上手中的操作指南,新建一个合适的工程。

STM32CubeMX配置

打开oneos\projects\xxxxx(project文件夹)\board\CubeMX_Config下的STM32CubeMX工程文件,按照具体的需求进行配置,以下示例均以万耦一代开发板为例。

SAI接口设置

在 CUBE 工程中进行 SAI配置,如下图所示,选中 SAI1,配置工作模式,DMA等参数;

audio_sai_interface

SAI时钟设置

在完成SAI接口配置后,还需要配置其工作时钟。

audio_sai_clock

确认完成配置后,即可生成代码。

使用 Menuconfig 配置工程选项

1.在对应的 oneos\projects\xxxxx(project文件夹) 目录下打开 OneOS-Cube 工具,在命令行输入 menuconfig 打开可视化配置界面;

2.在如下所示的路径:Drivers→ Audio→ Using audio device drivers下进行audio参数设置:

(Top) → Drivers→ Audio→ Using audio device drivers
                                                                     OneOS Configuration
[*] audio data buff parameters config  --->
[*] Using SAI drivers  --->
[ ] Using I2S drivers
[*] Using ES8388 audio device  --->
[ ] Using VS1003B audio device  ----
[ ] Using wm8978 audio device  ----
[ ] Using cs43l22 audio device  ----
[ ] Using isd9160 audio device  ----

3.audio data buff parameters config中配置audio设备参数:

(Top) → Drivers→ Audio→ Using audio device drivers→ audio data buff parameters config
                                                                     OneOS Configuration
(2048) audio reply block size
(5) audio reply block count(please set as hard support buf number add 1)
(2048) audio record pipe size
参数 说明
audio reply block size 音频播放缓存block大小
audio reply block count 音频播放缓存block数量
audio record pipe size 音频播录音缓存pipe大小

4.Using SAI drivers中配置使用的SAI接口(该参数是保留参数,在播放时可以不进行配置,I2S接口意义相同):

(Top) → Drivers→ Audio→ Using audio device drivers→ Using SAI drivers               g
                                                                     OneOS Configuration
(sai_BlockA1) sai blcok name

5.选择驱动芯片,根据硬件支持的芯片名称,进入对应的配置项,以ES8388为例:

(Top) → Drivers→ Audio→ Using audio device drivers→ Using ES8388 audio device       g
                                                                     OneOS Configuration
[*] es8388 config bus drivers  --->
[*] es8388 data bus drivers(i2s/sai)  --->
(63) es8388 power pin
(Top) → Drivers→ Audio→ Using audio device drivers→ Using ES8388 audio device→ es8388 config bus drivers
                                                                     OneOS Configuration
(soft_i2c3) es8388 config bus name
(0x10) es8388 config addr
(Top) → Drivers→ Audio→ Using audio device drivers→ Using ES8388 audio device→ es8388 data bus drivers(i2s/sai)
                                                                     OneOS Configuration
(sai_BlockA1) es8388 data bus name: i2sx/sai_Blockxx

配置包含三种参数:控制总线参数配置、数据总线参数配置、电源引脚配置,总线名称一定要正确,是已经注册到系统内的,否则会无法找到总线报错。 控制总线参数包含总线名称和总线地址(针对I2C总线类型); 控制总线参数包含总线名称; 电源引脚用于控制芯片供电,和驱动绑定。

注: 1.音频框架采用边收边发的模式,因而一定要保证数据输入速度大于数据输出速度,否则会出现音频卡顿,杂音等问题! 2.开发新的音频驱动时可以参考已有的芯片驱动文件,需要实现相应的接口和配置。

3.音频播放需要持续占用资源,优先使用单独任务运行,同时保证线程的优先级大于其他较消耗时间的任务!

使用 Scons 构建工程

在上一步打开的 OneOS-Cube 工具命令行输入 scons --ide=mdk5 构建工程;

工程编译及实现

  1. 打开对应的oneos\projects\xxxxx(project文件夹)目录下的project.uvprojx工程文件;
  2. 在工程中将driver_test目录下的sdmmc_test.c和audio_wav_player_test.c加入到application子文件夹中;
  3. 编译并下载工程,运行程序;
  4. 打开串口工具如xshell、secureCRT等,通信成功后,即可通过输入help指令获得相关的调试指令,根据提示和设置进行输入和ADC测试;
sdmmc_test
sh />sdmmc_test
[255] I/VFS_FS tshell: Mount fat to / [vfs_mount][402]
Filesystem initialized!
sh />
sh />
sh />ls
Directory /:
System Volume Information<DIR>
zhou.wav            50883344
lin.wav             52616064
3.wav               43159596
zhang.wav           38382556
liu.wav             37643974
fei.wav             14018886
MUSIC               <DIR>
sh />
sh />
sh />wav_player
Usage:
wavplay_sample song.wav
sh />
sh />
sh />wav_player zhang.wav
wav information:
samplerate 44100
channel 2

注意事项

在音频处理中,音频文件采样率与SAI时钟关系需要满足一定的关系,如下表所示:

audio_frequency

因此,在处理时,SAI模块的时钟频率需要根据音频文件采样率,将SAI时钟配置为44.12564 = 45,158.4khz或者192*256= 49,152khz,误差越小越好。

results matching ""

    No results matching ""

    返回顶部