创龙科技
直播中

李戈

8年用户 182经验值
私信 关注

MIC输入例程采集声音的输入数据存在哪里?

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

回帖(8)

宋玉红

2019-11-7 13:36:31
AUDIO_MIC_IN例程和AUDIO_LIN_IN例程是一样的,只是对AIC31的输入端初始化不同。
这两个例程我分析过了,相当复杂!
EDMA3的srcAddr和destAddr一直在改变,虽然有规律,就是循环指向缓存队列txBufn,rxBufn。
linkAddr也是一直在改变。
对初次接触EDMA3的人来说,数据的走向还是显得没那么清晰。

如果能出一个使用EDMA3的ping-pong缓存方式工作的AUDIO_MIC_IN例程,会更好一些。

这个在后期我们打算会完善一下 根据客户提出问题的统计 大部分集中在 uPP EMIF USB Audio 这几个部分所以对于这些例程之后会着重完善一下 
举报

徐非姗

2019-11-7 13:48:06
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);
举报

李丽华

2019-11-7 13:56:44
引用: nvyywew2 发表于 2019-11-7 13:58
这个在后期我们打算会完善一下 根据客户提出问题的统计 大部分集中在 uPP EMIF USB Audio 这几个部分所以对于这些例程之后会着重完善一下 


这个在后期我们打算会完善一下 根据客户提出问题的统计 大部分集中在 uPP EMIF USB Audio 这几个部分
所以对于这些例程之后会着重完善一下
举报

白边赫

2019-11-7 14:09:17


版主您好。
1、我记得声音格式好像有16,20,24,32,不同格式是什么用?有什么差别呢?
2、是不是AIC31芯片ADC后通过EDMA直接把得到的语音信号送到输入缓存,输出缓存通过EDMA将数据传给AIC31,然后DAC后播放?
谢谢。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分