嵌入式开发者社区

标题: MIC输入例程 [打印本页]

作者: amosjie    时间: 2015-6-4 21:02
标题: MIC输入例程
有用过MIN_IN这个例程的吗,小弟对里面的程序有点看不懂,例程里也没有比较详细的说明。
1、这个例程里AIC31芯片应该是工作在I2S mode下,即右声道数据紧跟着左声道数据,但是每个声道有多少数据呢?
2、MIC采集声音的输入,这部分数据给谁了?存在了哪里?是在缓冲区吗?如果是的话怎么到的缓冲区?MCASP和EDMA是怎么使用的?
3、Line_OUT输出的数据从哪里来的?
请有经验的专家给小弟解释一下,不胜感激。
下面是main里面的部分程序


作者: 希望缄默    时间: 2015-6-5 09:34
1、默认配置的是 16位声音格式
2、程序中有3个输入缓存变量 3个缓存输出变量
static unsigned int const rxBufPtr[NUM_BUF] =
       {
           (unsigned int) rxBuf0,
           (unsigned int) rxBuf1,
           (unsigned int) rxBuf2
       };

static unsigned int const txBufPtr[NUM_BUF] =
       {
           (unsigned int) txBuf0,
           (unsigned int) txBuf1,
           (unsigned int) txBuf2
       };

McASP 的输入输出 FIFO 寄存器只能被 EDMA3 访问
3、输入缓存变量复制到输出缓存变量
memcpy((void *)txBufPtr[lastSentTxBuf],
                   (void *)rxBufPtr[lastFullRxBuf],
                   AUDIO_BUF_SIZE);
作者: lushidegreen    时间: 2015-6-5 10:31
AUDIO_MIC_IN例程和AUDIO_LIN_IN例程是一样的,只是对AIC31的输入端初始化不同。
这两个例程我分析过了,相当复杂!
EDMA3的srcAddr和destAddr一直在改变,虽然有规律,就是循环指向缓存队列txBufn,rxBufn。
linkAddr也是一直在改变。
对初次接触EDMA3的人来说,数据的走向还是显得没那么清晰。

如果能出一个使用EDMA3的ping-pong缓存方式工作的AUDIO_MIC_IN例程,会更好一些。
作者: 希望缄默    时间: 2015-6-5 13:11
lushidegreen 发表于 2015-6-5 10:31
AUDIO_MIC_IN例程和AUDIO_LIN_IN例程是一样的,只是对AIC31的输入端初始化不同。
这两个例程我分析过了,相 ...

这个在后期我们打算会完善一下 根据客户提出问题的统计 大部分集中在 uPP EMIF USB Audio 这几个部分
所以对于这些例程之后会着重完善一下
作者: amosjie    时间: 2015-6-5 17:02
希望缄默 发表于 2015-6-5 09:34
1、默认配置的是 16位声音格式
2、程序中有3个输入缓存变量 3个缓存输出变量
static unsigned int const rx ...

版主您好。
1、我记得声音格式好像有16,20,24,32,不同格式是什么用?有什么差别呢?
2、是不是AIC31芯片ADC后通过EDMA直接把得到的语音信号送到输入缓存,输出缓存通过EDMA将数据传给AIC31,然后DAC后播放?
谢谢。
作者: amosjie    时间: 2015-6-5 17:03
lushidegreen 发表于 2015-6-5 10:31
AUDIO_MIC_IN例程和AUDIO_LIN_IN例程是一样的,只是对AIC31的输入端初始化不同。
这两个例程我分析过了,相 ...

您好,这个问题也请教下您。
1、我记得声音格式好像有16,20,24,32,不同格式是什么用?有什么差别呢?
2、是不是AIC31芯片ADC后通过EDMA直接把得到的语音信号送到输入缓存,输出缓存通过EDMA将数据传给AIC31,然后DAC后播放?
谢谢。
作者: amosjie    时间: 2015-6-5 17:04
lushidegreen 发表于 2015-6-5 10:31
AUDIO_MIC_IN例程和AUDIO_LIN_IN例程是一样的,只是对AIC31的输入端初始化不同。
这两个例程我分析过了,相 ...

您好,这个问题也请教下您。
1、我记得声音格式好像有16,20,24,32,不同格式是什么用?有什么差别呢?
2、是不是AIC31芯片ADC后通过EDMA直接把得到的语音信号送到输入缓存,输出缓存通过EDMA将数据传给AIC31,然后DAC后播放?
谢谢。
作者: 希望缄默    时间: 2015-6-5 17:24
amosjie 发表于 2015-6-5 17:04
您好,这个问题也请教下您。
1、我记得声音格式好像有16,20,24,32,不同格式是什么用?有什么差别呢?
2 ...

1、位数越宽理论音质越好
2、是
作者: amosjie    时间: 2015-6-5 18:54
本帖最后由 amosjie 于 2015-6-5 19:03 编辑
希望缄默 发表于 2015-6-5 17:24
1、位数越宽理论音质越好
2、是

谢谢!
还有一个问题,例程采用的是I2S模式,包含右声道和左声道。
一个BUFF里有2000个sample,每个sample中字节数为(16>>3)*channel,channel应该就是声道数,为2,这里我就有个问题,BUFF里的左右声道数据是怎么存放的呢?





欢迎光临 嵌入式开发者社区 (https://www.51ele.net/) Powered by Discuz! X3.4