|
|
操作步骤:将StarterWare\Application\AUDIO_LINE_OUT,合入 OMAPL138基于SYSLINK的双核AD采集处理例程。
9 Z( N' R3 ]; [目标:AUDIO_LINE_OUT播放声音。ad采集声音。
" \$ u/ R. O; l3 k现象:两者单独运行都可以完成各自的功能,将两者整合后,只要启动AUDIO_LINE_OUT,AD的数据就无法上传。(是不是两者资源有冲突?)* {* i. k' t; a ], H. C
详细程序如下:
, w0 z( O' f1 t' D1 C- f6 ~DSP侧 main_dsp.c
7 D8 q# ]4 g8 c j$ j( Bextern int lineOutmain(void);4 g# j- p+ D+ t2 T
Int main(Int argc, Char* argv[]) {3 ]% c9 @/ y$ @! Y
LOG_INIT();
7 A) ~& L5 b& R+ S" E Error_Block eb;: s8 }5 Y1 m$ a! \9 G9 f/ Q
Task_Params taskParams;& H0 t7 V+ t6 r- F* G2 l- ? W$ A; X2 B
* A% u1 [5 \' B8 G# h
LOG_INFO("--> main:");: E8 P8 x. u2 m8 [5 F5 @' ?4 M
% o% X; \/ ?4 b' _ Error_init(&eb);& n( d s8 k- m1 |1 i3 x& K1 m( }
! H2 U( L5 r& t
Task_Params_init(&taskParams);2 `6 s( H) H4 l" l! i }
taskParams.instance->name = "message_loop_fun";. V( X- Q b2 ~7 k% a+ ~# w# P
taskParams.arg0 = (UArg)argc;
% @7 n( S/ _1 d- Y3 z2 k6 q8 d; n6 e taskParams.arg1 = (UArg)argv;2 {/ m8 }; ^8 ~1 C7 U. `* f. b
taskParams.stackSize = 0x1000;
5 x7 t5 `# {" L4 R6 y% u0 C$ T Task_create(message_loop_fun, &taskParams, &eb); /* 鍚姩 message 绾跨▼ */
2 M7 U) @/ t8 n* o- ~8 {8 {, N2 ^( z0 V+ k; l5 h# Y. ^. \1 y9 K
if (Error_check(&eb))
1 d l% R& a$ J LOG_FATAL("failed to create application startup thread"); ) I; y! l4 U1 J9 H& Z- u3 ]& `
8 p2 ^2 `/ R0 L2 V/ x/ H y' I
lineOutmain();" z5 O4 i, \ y) `/ v- M1 X
BIOS_start();) Z8 i4 ]) [1 |/ `* I% |9 i% I. v
LOG_INFO("<-- main:");9 i3 i8 _. q- ] k1 K" x# }" ^5 ]2 Z
return (0);
- r0 Q' s2 l7 K' d}
" D1 F) `9 u% e/ h其中lineOutmain();是启动lineOut例程2 ?- v# O/ Q& h' m5 W9 u+ O
int lineOutmain(void)1 U v2 Y! E1 i: K( a& a4 |# f9 m+ k7 j
{# h' O/ U" l- F* d+ M7 Q5 I, u) \
unsigned int i;
; H: D* h1 ~9 W9 S" N
4 C. \0 g% A3 K: i6 \ PeripheralsSetUp();1 {- y/ v5 ^2 c0 P! d/ u: Z4 ~3 S* t
( u8 M' h* f5 s% }: ^ LOG_INFO("\r\n ============Test Start===========.\r\n");
- P$ g/ v6 A' J1 n5 q2 U9 w LOG_INFO("Welcome to StarterWare Audio_Play Demo application.\r\n\r\n");& l( E1 c. `4 C- t5 }8 \
LOG_INFO("Please insert microphone to the 'LINE OUT' port of TL6748 EVM.\r\n\r\n");
& h& n+ c6 ]6 X0 }. c4 x i7 @6 ~6 D+ a- x- r/ f& e
for(i=0;i<229396/2;i++)
8 ]6 g3 d; Z/ c$ n U {
+ u' `$ h9 W- ~* B& C toneRaw = (toneRaw1[i*2]) | toneRaw1[i*2+1]<<8;
8 [; P$ ] _1 U, }$ f }6 L D+ s* ]) }
: j) M. O9 K) m/ a% r" j IntDSPINTCInit();) S7 O- F! ]. S* T( {" m* S( i' y
9 ^! a1 K3 c2 W9 Y I2C0IntRegister(C674X_MASK_INT6);
* |, e4 O2 X& Q
- F( e/ R, C, C: O+ I- U; H IntEnable(C674X_MASK_INT4);: _: L) w. d$ z4 f: ]
IntEnable(C674X_MASK_INT5);
, r' Q: R2 [( Q; C- T# d- G/ U: N IntEnable(C674X_MASK_INT6);
: m' W/ T4 f) o. o* Z7 j! U8 J6 m5 S
IntGlobalEnable();
) y, w. C5 o5 J* o2 }1 e c' o& E0 Z# r! l* v0 `
AIC31Init();
$ i. ?! d/ _4 d9 r5 ]" I P ToneLoopInit();" q% G! J2 e" j5 m) x1 b" M
Start playing the tone looply
5 Z! T' C* e+ X% z: a# L5 F( _7 v ToneLoopStart();
; ?7 \$ y0 ?7 D1 K. ?7 P0 x$ N( X2 \/ e0 o Y: J+ `
LOG_INFO("\r\n ============Test End===========.\r\n", -1);4 H# [5 H0 ?* I
% @3 l! J. i4 y! T}
' z6 ^0 i8 F$ A, p, @/ o
9 h3 J) P" Z& Q4 O从定位结果来看,只要lineOutmain 运行了 IntDSPINTCInit(); AD就不再有数据发到ARM侧。请大家帮忙看看,两者是否存在资源冲突问题。谢谢。$ g; u( \8 s& R3 F0 r
7 |+ X4 C" O3 @: n5 \, x9 M& m* c
/ j( H5 K+ c5 M4 P* k. m
7 {3 k; }$ u. ~# V
( Q8 ]7 i' f$ b. T! K
: \) e' h8 x X% y. i. L' ~7 T1 I$ u |
|