|
|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
2 _9 G; H' B3 k' [8 VVoid UPP_TASK(Void)
5 i% p) W+ A0 J8 C7 l{8 a! V+ A& P$ f5 Z( \
7 p' `' q8 M# W2 e int i,j,k,target_int_count=2;
1 O! b7 Y' O/ D3 C# s char ch[2];; X$ G# p! E+ ]$ J$ X
6 |, A; `3 Z* b; X# u4 t9 }$ A
; f8 p0 a8 ~% D) T j' J% U5 \; ^9 e9 T1 ]1 Y& o
upp_interrupt_count = 0;
& S- i/ H- T& u2 t, g upp_error_count = 0;* x9 R: ~4 W3 E! ^3 q
- e: y6 Y( a, V: x
UARTPuts("\tResetting uPP buffers...\r\n",-2);4 Z2 s, N6 W5 G0 W
// Initialize data buffers
6 r1 h [- i+ y; l" w- T for (i = 0; i < upp_frame_size; i++)
6 ?$ H; y: ~. K4 `" @* B3 h {, a! \9 T: d. j. @& m( }+ k. e3 I
upp_buffer_b =i;
5 }8 i$ m& k: V P ^( z) ~ upp_buffer_a = 0xDEAD;
* t+ }/ N& I# ^+ ?" l, N: } }% v9 ^6 G. F+ \0 R# S2 t
; d: b* a$ t* P9 u- e
//for(i=0;i<1024;i++)
' r+ f# K4 r- H, g- s // temp=0;: `; Z" M( h; j: ?5 b# r! ?( G
- W1 C5 Z2 s- Z5 f$ b: L, h //UPPReset();5 d" f6 w9 B+ j/ ~4 P' m
/*启动UPP DMA传输*/
( }5 T/ b1 x5 [& u0 D UARTPuts("upp_prog_dma_i\n",-2);
2 d! }' R H h( `6 ]' \5 K upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;8 M3 A1 ?1 [7 D: N4 J/ R
upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
. k$ ]& m7 Y& H( F! ~ upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
1 K+ f! q5 ~# s$ r6 y: A7 B4 p! k4 P3 | n1 a
UARTPuts("upp_prog_dma_i\n",-2);9 `' s0 v1 ^4 M6 n/ s
upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
6 N% a- t7 ?& l# r( ]. j upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
1 Y6 G3 b; B* N% V8 n2 l upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);7 V9 ?! z G: O" v1 z
. t, I+ w3 a+ Q% W /*等待UPP传输完毕*/+ D9 a; D: p% E3 k# t0 H
//i=0;
+ I! J+ `+ r" f o6 k //j=0;
) A; i: N% p( @ while (upp_interrupt_count < target_int_count && upp_error_count == 0)
/ B! q: y( |& g& m9 O* g { J$ v7 n+ j0 u3 f2 Z
/* 测试UPP传输的同时操作普通DDR数据; Y- G2 p/ t8 V2 t
temp=i;8 ?7 U n- O; l0 i! D1 w( b1 b# |5 C
i++;
- t: b; ~' s: l7 R if(i==1024)
5 r) d% }( K9 V5 h" n% P/ p {( o8 i2 B' L% k# ~
i=0;
- b4 i& F7 b. m/ x; x+ U' d1 c! j. L j++;3 i, i. w" `) o$ J& @+ I+ Z& ?# I
}9 ^5 k3 F8 t6 [- ]9 L
*/ A( I# W1 U& q4 t! T
4 E% [% N: m- B( L9 E( B5 k2 [
asm(" nop");
+ g# _4 O4 m4 w7 f* n8 p: v4 R
) m! \* M6 x0 h //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);) u0 y& A" R V. q8 l* [1 z- Z
}
* M9 w4 y7 v j) M/ f' M7 X, g( n4 H
/*检查UPP传输的数据是否正确 (loopback modes only)*/
1 I! b! f9 h8 U S0 ?1 V //UARTprintf( "i=%d\n",i);
6 h2 f) V9 f: I/ B1 w4 }; a //UARTprintf( "j=%d\n",j);
8 T$ Z2 c7 j6 ] }. a* p UARTPuts("Data mismatch in buffers.\n",-2);9 e j$ k; V" E; y! z0 u) U
if (upp_interrupt_count == 2 && upp_error_count == 0), |# V2 }. W: i% w; d! C9 F
{
0 I- M: C6 Y( T: e x( Z for (i = 0; i<upp_frame_size; i++)) Q8 X# ?3 B. ^3 Q4 [
{
; I) O( |$ q0 ~" J6 E if (upp_buffer_a != upp_buffer_b)
9 X6 Y7 u. P( i: m: T {
& M2 v d1 x: l `3 Y upp_error_count++;5 ]0 a3 X$ K4 W: d; T) V
}9 y0 t2 v4 p0 Q9 [6 R) ?
}! B2 F8 x0 r1 k% C9 W# j
}1 G) q+ o( B4 _; ?( {3 ?
1 C$ J E- m& [& H0 U& E
/* 报告通信结果*/8 P! x2 [& Y% m1 X* {( u8 m
if(upp_error_count != 0)
+ O9 s. N- w d/ |' ?% Q- w, ^ UARTprintf( "upp_error_count=%d\n",upp_error_count);
( d7 \4 G2 t3 o else t; B" N1 F6 T! ^2 u1 e
UARTPuts("uPP transfers complete!\n",-2);. J5 _" w1 P1 k+ v
4 L7 w8 V9 i; X, z7 z
UARTPuts("Do you want to print all the data?(y/n) ",-2);
- I' c V! t! @ O; B# F UARTGets(ch,2);
( q% t) f7 S# C. B UARTPuts("\n", -2);. w4 U$ |! y+ L: c0 e
) f# Q' g3 h! d& r) S if(ch[0] == 'y')+ s b. C( Y, i/ o u4 V, F/ ^; T
{3 V1 Z2 s) q" T5 y( M
/*打印全部读到的数据*/
: Z# b$ @8 {; z$ t for(i=0; i<upp_frame_size; )
; o- W7 ]+ u/ |( X5 O0 e {# s1 y! H* G3 m$ n
for(j=0; j<5; j++)
2 r* L6 }% |& r7 q9 F {
6 Q& _! H+ T% b U( l1 [ UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);( L C* Q3 @; {
i++;
5 C' O" r: v5 k% W //if(i >= 4096)9 E, s* v( q2 f& p+ Z& a* w
// break;
9 Q! ], W( Q# Q1 l6 E$ t/ n% n" ~* O
}
. ~. C# P7 k& S6 |; \) M UARTPuts("\n",-2);
2 _) E; a" q1 {0 ^& z: d }
* f- K1 _% ~! y; e6 d }$ C# k `- W7 d7 \1 a
4 y7 |/ z1 S7 K" q( u+ [- [}+ ]; F% Y2 b, `# B R5 p; m5 F( i( f
J3 e, y; t! |& r- U$ X
9 r W& i' M d' g4 s- e |
|