嗨,团队,
我想在I2S上播放音频剪辑,比如短音频剪辑-连接到设备,断开等等,所以。我转换.wav文件转换为C代码(我用WAVtoC软件转换c代码)并存储在闪存中。下面我将.wav附加到c代码文件中。
我使用DA7212编解码器在I2S上播放这些音频片段。
这些音频剪辑有8k采样率,每个样本16位。样本总数约3500个。
我尝试用中断方法来传输512字节的数据,请检查下面的代码
- 元素数量定义为3500个样本
- Unsigned short PowerOndata[NUM_ELEMENTS] = {---------};包含3500个样本值,
- uint16_t * firstarray = STEREO_AUD_DATA;//数据以立体声格式存储
- 无符号短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连接到这个控制器。
下午,
使用“这些音频剪辑有8k采样率,每个采样16位。”附加了一个寄存器写入I2C到HP的设置文件。
问候,
谢谢您的回复,
初始设置类似于地雷寄存器的设置。我已经测试了语音提示,如“POWER ON”,但它不工作。
你测试了哪些数据?或者你用声调来测试?
它是用音乐文件测试的。
好吧,
音乐文件存储在sd卡通过i2s你可以播放。我的理解正确吗?
但我想通过存储在闪存中的样本数组在i2s上播放音频剪辑。
听起来这与软件有关,而不是DA7212的操作。
是的,可能是固件的问题。我一试就告诉你