嗨,团队,
我想播放音频剪辑在I2S像短音频剪辑-连接到设备,断开等,所以。我转换.wav文件到C代码(我用WAVtoC软件转换c代码)并存储在闪存中。下面我附加了。wav到c代码文件。
我使用DA7212编解码器在I2S上播放这些音频剪辑。
这些音频剪辑有8k采样率,16位位每个样本。样品总数约3500个。
我尝试用中断方法传输512bytes每个数据,请检查下面的代码
- 元素的数量被定义为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;
}
我确信我配置了正确的codec寄存器,我可以播放音乐和所有的,连接到BT。我使用的是stm32f4系列微控制器,DA7212是连接到这个控制器。
下午,
已经附加了一个寄存器的设置文件来做I2C到HP使用“这些音频剪辑有8k采样率,每个样本16位位。”
问候,
谢谢你的回复,
初始设置类似于矿场登记册的设置。我已经用“POWER ON”这样的声音提示进行了测试,但是没有效果。
您测试了哪些数据?或者你测试了音调生成?
它是用音乐文件进行测试的。
好吧,
音乐文件被存储在sd卡上,你可以通过i2s播放。我的理解正确吗?
但是我想在i2s中播放音频片段通过存储在闪存中的样本数组。
听起来这和软件有关,而不是DA7212的操作。
是的,可能是固件出了问题。我一试就告诉你