|
|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
6 Z( c5 N6 C J) K6 L* lVoid UPP_TASK(Void)
( i! Y# O5 C0 I# Q{
5 h' y6 M) s7 A0 _2 I
5 V0 R2 H1 w. ~ int i,j,k,target_int_count=2;
0 N. V& }2 k7 ^" J4 G7 I char ch[2];7 `1 x4 X3 U$ Z% G; u/ O Q
4 A1 E- |) |, d, E- W
) D% l% u! z1 J! N) k
" @- d9 Y$ a( p0 {
upp_interrupt_count = 0;
& w2 }, _4 X! E/ ^1 S) i \ upp_error_count = 0;
9 U2 V5 ^, F( k" A: T1 h+ F7 r4 _* E8 b0 s6 @, ?# V
UARTPuts("\tResetting uPP buffers...\r\n",-2);' [( E% U" _$ |, P: R
// Initialize data buffers
5 |$ w; S4 \6 S2 G for (i = 0; i < upp_frame_size; i++)
6 W& S; r1 Q$ H* ` {
/ m s( ~* r3 _2 | upp_buffer_b =i;
. n1 c9 @- Z) P) g. W4 i5 _1 W upp_buffer_a = 0xDEAD;6 F- d) w! @: G4 X4 z, M
}9 |& U; s2 o3 w1 b3 R$ B0 E
/ y. _6 C; W2 E P# p
//for(i=0;i<1024;i++)
6 {& D0 ^. q7 U3 F0 u // temp=0;
2 x, X9 O% Y. u* r1 T4 g- e9 E) u0 V
//UPPReset();0 l2 i; ~' Z( ~0 B8 u6 l& S: G' [
/*启动UPP DMA传输*/' q( ^, }* r [0 X
UARTPuts("upp_prog_dma_i\n",-2);& _( d# r: t1 w
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
& R5 x( t( w3 S7 E2 z3 c7 d upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
* F# o& [0 L* `1 [+ m upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);: p2 [: X! [% {5 w: Y6 j: t$ g
. T) T' f$ a6 e. W# @. H UARTPuts("upp_prog_dma_i\n",-2);1 R4 Q9 N! |/ R" i9 M- `! h
upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
# [5 K9 |- e# K S1 G upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);# E3 l; |, w) T4 U; q' ]
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
9 t6 \- b, z6 T2 D4 I) k2 N5 p& H. `3 A1 L
/*等待UPP传输完毕*/* ^( a2 G) \9 Z' y% V3 n
//i=0;
\5 j) t0 Z4 A+ T: X. z" V //j=0;/ U! B0 f/ }$ `% o
while (upp_interrupt_count < target_int_count && upp_error_count == 0)9 A2 F1 i b9 x+ S3 i* K" e# \
{3 \, n1 O# U' I8 O4 b' h% B R7 t
/* 测试UPP传输的同时操作普通DDR数据' {4 s- B+ F2 g
temp=i;
0 V* V" K& D5 f4 R; f i++;
- }( _# t6 K# M$ u$ Z& u if(i==1024); W. [6 p+ g0 v( W' r7 Y6 c; J/ m5 F
{
* Z# ^+ S, d" a, t# [( T! e i=0;
- H' L' Y7 q8 C C: L- z! b1 W j++;& Q0 _8 u5 z. U+ ]/ j
}8 r. f; z7 P- M" a" w: ^; H6 C" }/ H
*/
. b- U: a- p2 b" l) ^3 @+ T9 u+ H8 `; ?
asm(" nop");
3 L! ^" z0 U6 m- f( [' q5 X/ u( O x1 z- L" O
//UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);. \% k4 f Q+ q/ L" }
}
7 U* J P2 u. G9 `) f5 k( S' T3 Q% z
& G, ?$ I* h1 C# r6 G+ g /*检查UPP传输的数据是否正确 (loopback modes only)*/1 Z3 D: D, F& a! f* h
//UARTprintf( "i=%d\n",i);
5 h9 _; ?9 o5 J. W/ w2 N //UARTprintf( "j=%d\n",j);
1 j/ O" I G5 u% A( k9 R UARTPuts("Data mismatch in buffers.\n",-2);% T3 J) V9 ]3 ^' u/ O
if (upp_interrupt_count == 2 && upp_error_count == 0)1 F& r' n+ ?& u8 ?0 v9 ?
{
" u" i. Z! t3 y% E/ G) a3 S for (i = 0; i<upp_frame_size; i++)! a( l( i, Y+ _. W$ r* q7 q- G
{
9 D/ x# }+ S+ I# P( I if (upp_buffer_a != upp_buffer_b)
5 s5 p( c* F1 @4 H2 W T+ y6 k {
( @* R1 b' n) y8 V. M upp_error_count++;! ?. ?3 Q+ M! O7 h# c: D$ T" d
}, P* R1 Z* y2 ^! [/ _: f# p
}5 `; ~- v6 \; `5 b2 h
}2 T" Z, k n0 i+ r
q/ ~/ t, R4 c2 c /* 报告通信结果*/
) |: p8 q i6 k, A/ d& k: G2 P if(upp_error_count != 0)( @8 b6 m8 `9 Z
UARTprintf( "upp_error_count=%d\n",upp_error_count);
' c B% b* @& ^1 x else
\4 o6 f. \+ N2 J8 b; R, y UARTPuts("uPP transfers complete!\n",-2);4 q5 H; Z; Y+ ^8 c6 F4 }, Q/ ?
' S( `' o8 e( u UARTPuts("Do you want to print all the data?(y/n) ",-2);
H" p4 ~/ D: U( E. x0 _ UARTGets(ch,2);
) w2 ]5 B6 g9 o4 n UARTPuts("\n", -2);6 f( ` f5 U0 l$ x
2 h3 D+ M9 a1 A$ V( |
if(ch[0] == 'y')1 r0 u# V, f1 q, p9 H9 |
{
2 v; q5 w1 d3 V. F$ ^3 f. P /*打印全部读到的数据*/
2 _4 `; [5 f8 `' z9 \( z) N/ G for(i=0; i<upp_frame_size; )
6 r7 @9 B0 Y3 G% D" x {
( s6 N/ s9 ^$ B2 D$ e& @7 j for(j=0; j<5; j++)
; W8 p; d4 q1 F {7 h3 e* ]) E) E9 I. U% A0 j
UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);
; j7 u& d5 X# Z' P' u1 y i++;- t/ [: k9 a9 @4 ~* v* z$ c
//if(i >= 4096)
- n% f& a' j1 a // break;
& t4 a C' c+ j3 o7 u6 |: }9 ]8 G. U% n& F
}
5 ?2 Y8 z% O8 j! s; i0 d* K8 D UARTPuts("\n",-2);
3 \" n5 x1 h1 _7 c3 h S, u6 { }3 V* ?0 C- D" s+ s# @7 x
}6 b, v. E3 e3 [, [+ L* t
) d% x i; D! i
}
6 h0 |0 E8 L8 d; E: R: S7 P$ K ~" n1 G. n& ?$ H! V
2 {! U/ j+ M% O; `, U |
|