|
工程师和各位发烧友大家好:我最近采购了创龙OMAPL138开发板用于音频信号处理,用了AIC3106+EDMA进行音频数据采集,然后处理(6748核心),在处理过程中碰到了一个问题,希望大家帮忙。问题如下:' L4 R. G& K; f7 s @0 t7 x. ?( C2 l8 ^
我修改SlaveLinein这个例程中,从三缓冲换成两缓冲,通过EDMA3把数据保存在两个地方
& Z0 Z& `& t S1 `+ [data[0][] 储存左声道数据data[1][]储存右声道数据, 然后data[0][]的数据复制到Mem_Copy_float(ConvIn+SYNCLEN-1,&data[0][0],2*BUFF_SZ);; [3 ]/ e# }/ T3 L; l1 x* D0 T
Convin数组里面,然后做本地信号localSync做卷积DSPF_sp_convol(ConvIn, LocalSync, ConvOut, SYNCLEN, CONVOUTLEN);/ m6 M/ [; [. s" t$ h0 g8 |+ c
1 n# i. O2 t0 H% ~& U( Y5 M
CacheInv((unsigned int) (rxBuf0),sizeof(rxBuf0));4 n7 U5 C8 T6 p) `; ?3 C
CacheInv((unsigned int) (rxBuf1),sizeof(rxBuf1));
6 X" @& p2 N2 D' Z% } \ N# H! X. i
% j, O, \! V( t# ~0 J2 }' i( Z#if (CHNUM==2)
$ ~9 U+ Q: S' F {
( R3 x+ b/ Y- n! y2 R$ n temp=((rxBuf1[4*i+1]<<8)+(rxBuf1[4*i]<<0)-OFFSET); //左声道 把8bit变成16bit
8 Z l( T' K7 B( t. k data[0][i+BUFF_SZ]=1.0f*temp/32768.0f; //转换成浮点
& t& l; V& g0 [) \ recdata_ch1[cnt]=1.0f*temp/32768.0f; //保存数据不处理
- {" [# G& t) Q3 v7 K temp=((rxBuf1[4*i+3]<<8)+(rxBuf1[4*i+2]<<0)-OFFSET); //右声道' \+ o; U' l4 Q7 E( n$ n& d) X, U2 G
data[1][i+BUFF_SZ]=1.0f*temp/32768.0f;
- q: s( ~+ u3 v, N" w# ~ u recdata_ch2[cnt]=1.0f*temp/32768.0f;" \( c2 n. Y% c
cnt++;' b$ \" T2 a# }: O
}
; \" B1 F9 c" P5 }
+ |5 W5 Q9 l! p7 s* t8 X; ]' i2 t+ e) U8 Y0 W! V2 m l. ~- B
4 A" r$ @! ^% |- B! K5 C2 X
而recdata_ch1和recdata_ch2的数组很大,在48k采样率下可以保存25秒的数据,recdata_ch1和recdata_ch2不参与任何计算,只保存数据,用于观察数据是否正确。
6 S. p3 t$ y6 Q9 Z5 O8 EEDMA采样双缓冲模式,缓冲区长度160ms,每次缓冲满以后数据就复制到ConvIn,做一次卷积,做卷积的时间远远小于缓冲区的时间,这个保证数据不会丢失。
/ D. i' q1 j& s, |出现的问题是,如下图所示,在信号空白信号中出现微小的噪声,而两个微小噪声的周期刚好就是一个buffer长度160ms, \' w* [3 {- {+ R/ ]/ H
6 `5 ]4 z; c# G8 L9 T" {2 J$ Z4 n. P" P
! K5 \+ D( V; } n. y# X
当我把卷积处理去掉的时候,信号是正确的,如下图所示
. n" n6 o7 I+ {, ?/ V/ X/ B# |
, @; ~: C/ P8 `. K6 l0 U y/ Z( \1 p A4 q) a t) F& Z! }
. @0 q$ n* T# ~7 v1 C& Z" W上述所有数据放在DDR2中,在main一开始启用cache 1 d. o6 }- f& t; k" s9 {
CacheEnableMAR((unsigned int)0xC0000000,(unsigned int)0x10000000);
* ?/ `( v& c6 M0 \& Z! R J+ ~ CacheEnable(L1PCFG_L1PMODE_32K | L1DCFG_L1DMODE_32K | L2CFG_L2MODE_256K);
( S( ^4 Q$ u! U
" j) v! Z* Q( y
! i) s: ^4 _7 C$ Z0 |# ?$ S我估计是数据一致性的问题,但是,不知道要修改哪里,怎么修改,麻烦大神给一些提示或者指导。感激不尽。3 c" Z o! u) z) `
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|