如何通过I2S播放音频剪辑?(DA7212编解码器)

⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.xmece.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
7个职位/ 0个新职位
最后发表
manisrinvas
离线
最后看到:1年4个月前
加入:12点45分的2018-11-19
如何通过I2S播放音频剪辑?(DA7212编解码器)

嗨,团队,

我想在I2S上播放音频剪辑,比如短音频剪辑-连接到设备,断开等等,所以。我转换.wav文件转换为C代码(我用WAVtoC软件转换c代码)并存储在闪存中。下面我将.wav附加到c代码文件中。

我使用DA7212编解码器在I2S上播放这些音频片段。

这些音频剪辑有8k采样率,每个样本16位。样本总数约3500个。

我尝试用中断方法来传输512字节的数据,请检查下面的代码

  1. 元素数量定义为3500个样本
  2. Unsigned short PowerOndata[NUM_ELEMENTS] = {---------};包含3500个样本值,
  3. uint16_t * firstarray = STEREO_AUD_DATA;//数据以立体声格式存储
  4. 无符号短STEREO_AUD_DATA * NUM_ELEMENTS [2];

空白ConncetAUD () {

int i = 0;

//以立体声格式存储数据

for (int i = 0;我< NUM_ELEMENTS; + +) {

STEREO_AUD_DATA[(我* 2)]= PowerOndata[我];/ /左

STEREO_AUD_DATA[(我* 2)+ 1]= PowerOndata[我];/ /右

firstarray = STEREO_AUD_DATA;

虽然(我< 15){

如果(HAL_I2S_GetState (&CODEC_I2S) = = HAL_I2S_STATE_READY) {

HAL_I2SEx_TransmitReceive_IT (&CODEC_I2S firstarray rxBuffer, 512);//在这里获取回调事件- hal_i2sex_txrxcpltcallback

显示(“语音提示:% d \ n”* firstarray));

我+ +;

osDelay (200);

3.更新回调函数中的数据。

空白HAL_I2SEx_TxRxCpltCallback (I2S_HandleTypeDef * hi2s) {

firstarray + = 512;

我确定我配置的编解码器寄存器正确,我可以播放音乐和所有连接到BT。我使用的是stm32f4系列微控制器,DA7212连接到这个控制器。

设备:
bmcadam
离线
最后看到:1个月5天前
工作人员
加入:2015-09-16 16:25
下午,

下午,

使用“这些音频剪辑有8k采样率,每个采样16位。”附加了一个寄存器写入I2C到HP的设置文件。

问候,

manisrinvas
离线
最后看到:1年4个月前
加入:12点45分的2018-11-19
谢谢您的回复,

谢谢您的回复,

初始设置类似于地雷寄存器的设置。我已经测试了语音提示,如“POWER ON”,但它不工作。

你测试了哪些数据?或者你用声调来测试?

bmcadam
离线
最后看到:1个月5天前
工作人员
加入:2015-09-16 16:25
它是用音乐来测试的

它是用音乐文件测试的。

manisrinvas
离线
最后看到:1年4个月前
加入:12点45分的2018-11-19
好吧,

好吧,
音乐文件存储在sd卡通过i2s你可以播放。我的理解正确吗?

但我想通过存储在闪存中的样本数组在i2s上播放音频剪辑。

bmcadam
离线
最后看到:1个月5天前
工作人员
加入:2015-09-16 16:25
听起来这是软件

听起来这与软件有关,而不是DA7212的操作。

manisrinvas
离线
最后看到:1年4个月前
加入:12点45分的2018-11-19
是的,它会是一个问题

是的,可能是固件的问题。我一试就告诉你