打印
[DemoCode下载]

基于M460的MP3录音机

[复制链接]
514|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本范例将音频编解码器录制到的声音编码为 MP3 格式并将其储存至微型 SD 卡中,而此 MP3 档也可以通过音频编解码器来播放
本范例使用音频编解码器来录制声音,将此声音数据编码为 MP3 格式后,会将编码后的数据写入微型 SD 卡中。
为了使用此范例代码,用户需要准备一个微型 SD 卡并将其插入 T-Flash 卡槽。接着,用户可以按下按钮 BTN0 来开始录制声音,当按下按钮 BTN1 时即会停止录制。MP3 档会在录制完成后自动播放,也可以透过按下按钮 BTN1 来进行播放。用户可以藉由定义 REC_IN_RT 与否来决定是否进行实时录音。如果有定义 REC_IN_RT,当接收到声音数据的同时,会将其编码为 MP3 格式并储存至微型 SD 卡。相反地,如果没有定义 REC_IN_RT,则录制到的声音数据会先储存在 HyperRAM,直到停止录制后才开始将这些数据编码为 MP3 格式并进一步储存至微型 SD 卡中。
此 MP3 录音机适用于人声录制。支持单声道模式,数据长度为 16 位,采样率预设为 16 千赫兹,比特率预设为 64 千位每秒。此外,该录音机提供了不同采样率及比特率的组合,如表 1-1所列,用户可以藉由定义 REC_SAMPLE_RATE 及 REC_BIT_RATE 来做配置。


本范例为用户提供在线录音及脱机录音,用户可以根据 config.h 中是否定义了 REC_IN_RT 来选择其中一个使用。
在 main.c 的 main() 中,调用 SYS_Init() 及 SD_Init() 来初始化外设时钟及相关的多功能引脚,包含 UART、I2S、I2C、PDMA、HBI 以及 SD。在 while(1) 循环中,它会一直检查 PH.0 与 PH.1 引脚的状态以及 g_u32RecordStart 与 g_u32RecordDone 的数值来开始或停止录制。
当 PH.0 为 1 且 g_u32RecordStart 与 g_u32RecordDone 为 0 时,首先,只在 REC_IN_RT 没被定义时调用 ClearHyperRAM() 来清除 HyperRAM 里所有数据,接着调用 Recorder_Init() 来配置录音条件、初始化 I2S、音频编解码器以及编码器,然后使能 I2S 接收功能来开始接收声音数据。若没有定义 REC_IN_RT,当 g_u32RecordDone 为 1 时,禁用 I2S 接收功能以停止接收声音数据,接着调用 MP3Recorder() 来将声音数据编码为 MP3 格式且将编码后的数据储存至微型 SD 卡。
若 REC_IN_RT 有被定义且 g_u32RecordStart 为 1,当 I2S 每接收到一帧数据时,编码声音数据以及写微型 SD 卡的动作就会被执行。值得注意的是,如果编码声音数据及写微型 SD 卡的时间大于 I2S 接收一帧数据的时间时,I2S 在这段时间所接收到的声音数据将不会被处理。这个情况会在微型 SD 卡性能不佳时发生,此时,错误标志 g_u32ErrorFlag 将不再为零,UART 信息会告知用户部分声音已经遗失。如果用户想要得到高的录音质量,请更换更高性能或者更高速的微型 SD 卡。


下载地址
https://www.nuvoton.com/resource-download.jsp?tp_GUID=EC0120220531132955

使用特权

评论回复
沙发
sadicy| | 2022-9-3 14:44 | 只看该作者
音频好做么

使用特权

评论回复
板凳
asmine| | 2022-9-3 20:05 | 只看该作者
开始推音频了么

使用特权

评论回复
地板
koala889| | 2022-9-5 20:07 | 只看该作者
学习下,音频不太懂

使用特权

评论回复
5
Stahan| | 2022-9-9 20:10 | 只看该作者
音频不太懂

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

85

主题

859

帖子

1

粉丝