如何通过I2S播放音频片段(DA7212编解码器)

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

嗨,团队,

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

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

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

我尝试用中断方法传输512bytes每个数据,请检查下面的代码

  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;

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

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

下午,

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

问候,

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

谢谢你的回复,

初始设置类似于矿场登记册的设置。我已经用“POWER ON”这样的声音提示进行了测试,但是没有效果。

您测试了哪些数据?或者你测试了音调生成?

bmcadam
离线
最后看到:1周2天前
工作人员
加入:2015-09-16 16:25
它用音乐进行了测试

它是用音乐文件进行测试的。

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

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

但是我想在i2s中播放音频片段通过存储在闪存中的样本数组。

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

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

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

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