|
|
工程师和各位发烧友大家好:我最近采购了创龙OMAPL138开发板用于音频信号处理,用了AIC3106+EDMA进行音频数据采集,然后处理(6748核心),在处理过程中碰到了一个问题,希望大家帮忙。问题如下:( J0 T) ]! u7 d: V6 A7 e
我修改SlaveLinein这个例程中,从三缓冲换成两缓冲,通过EDMA3把数据保存在两个地方
% h+ U' l6 s) V7 C1 N( G Y* ydata[0][] 储存左声道数据data[1][]储存右声道数据, 然后data[0][]的数据复制到Mem_Copy_float(ConvIn+SYNCLEN-1,&data[0][0],2*BUFF_SZ);
# {8 |, M) {! PConvin数组里面,然后做本地信号localSync做卷积DSPF_sp_convol(ConvIn, LocalSync, ConvOut, SYNCLEN, CONVOUTLEN);
, [( j! T9 S# O5 ^# m" S* @! U7 | ?8 n, X; N1 C+ @) z/ T( ?: A
CacheInv((unsigned int) (rxBuf0),sizeof(rxBuf0));7 b! K4 t' u% v( w7 O! I6 R
CacheInv((unsigned int) (rxBuf1),sizeof(rxBuf1));
9 X* y0 ?% V% ~7 Y2 t2 c F9 K7 e6 R" S' X e0 o& e0 W! B2 J" u
#if (CHNUM==2); p' ~+ T _1 J8 }& w! L' m0 E& I/ J9 z
{
; f( I8 S) u. h# f, h temp=((rxBuf1[4*i+1]<<8)+(rxBuf1[4*i]<<0)-OFFSET); //左声道 把8bit变成16bit+ |7 }5 \# C' S$ u% U6 J
data[0][i+BUFF_SZ]=1.0f*temp/32768.0f; //转换成浮点
3 s! [; O+ M% x9 E recdata_ch1[cnt]=1.0f*temp/32768.0f; //保存数据不处理
- I) s5 X7 V; N3 U temp=((rxBuf1[4*i+3]<<8)+(rxBuf1[4*i+2]<<0)-OFFSET); //右声道# v0 ~) j& K( J+ T6 t* r
data[1][i+BUFF_SZ]=1.0f*temp/32768.0f;
* f4 H0 A9 B0 F% y) }5 J( d, ~ recdata_ch2[cnt]=1.0f*temp/32768.0f;
) B& q9 i n7 Q8 v1 [# q0 c cnt++;
4 c' Y8 C: p. |+ W( d" t# v! E }
" T( q7 m e" R. ~' c
! c$ @5 I |, \) ^% o1 s% ]3 j
. p& T4 z4 R- w/ F
而recdata_ch1和recdata_ch2的数组很大,在48k采样率下可以保存25秒的数据,recdata_ch1和recdata_ch2不参与任何计算,只保存数据,用于观察数据是否正确。, y% ~3 M2 Q) D. S
EDMA采样双缓冲模式,缓冲区长度160ms,每次缓冲满以后数据就复制到ConvIn,做一次卷积,做卷积的时间远远小于缓冲区的时间,这个保证数据不会丢失。
9 y6 B, q) F' @# b5 |出现的问题是,如下图所示,在信号空白信号中出现微小的噪声,而两个微小噪声的周期刚好就是一个buffer长度160ms1 G5 T( ?- B* l7 F3 k
+ E) O! t: F( k
' P# ^: X1 f/ L* `" e
- y+ ?- h/ [6 f! X" y# O$ C当我把卷积处理去掉的时候,信号是正确的,如下图所示8 b7 S4 I& i: T+ p" R/ _ F7 ]- {
: r" g: q' u1 E# _6 [
! |( v1 A Q) _' o# ]6 }1 Q, `2 f2 d, r$ G0 v+ @1 ]
上述所有数据放在DDR2中,在main一开始启用cache
6 B" ]; S& B* b CacheEnableMAR((unsigned int)0xC0000000,(unsigned int)0x10000000);
# o3 V" y( \& q; d+ i( |+ p CacheEnable(L1PCFG_L1PMODE_32K | L1DCFG_L1DMODE_32K | L2CFG_L2MODE_256K);" H: B# \. l {1 X" Q
7 n& a* d5 ^$ _; V8 v- {
% }2 f! y4 f8 y% p: _; [我估计是数据一致性的问题,但是,不知道要修改哪里,怎么修改,麻烦大神给一些提示或者指导。感激不尽。
+ W3 j _* f- G+ o |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|