|
|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
^" w7 k+ w1 `# N' D% j3 TVoid UPP_TASK(Void)3 a) F: r/ N, z5 K% P4 O3 m9 R2 l
{
8 G" x* P! ^# q$ C# l+ v' Z! u
0 I' \ _ f- b. t h9 Z+ k# K int i,j,k,target_int_count=2;2 T! Z; {, T# X1 m0 J; I F
char ch[2];- ^. X3 W7 z; ?' i* E2 n3 |4 K
- t$ y3 `5 ^% v5 b, i$ z8 `
: v* P1 M, J+ [+ D2 w
- V+ Q+ W3 H7 K7 p upp_interrupt_count = 0;
1 E" |" V( U' J+ U upp_error_count = 0;3 S* F3 w7 q, r* `. c, I2 ^
+ ` q: e# R1 {5 o
UARTPuts("\tResetting uPP buffers...\r\n",-2);
9 k8 q g: g0 n7 I) F) Q // Initialize data buffers
0 |8 {( `3 \& \% I7 ^ for (i = 0; i < upp_frame_size; i++)
1 B& m; u2 F5 U+ h; h# z {
- l: D% x4 j. j y& H upp_buffer_b =i;
. v+ X6 q9 l6 Y8 i5 z" A% r. V upp_buffer_a = 0xDEAD;; i. V! i6 J* n% x, |4 k
}
) y) n' d) U- N+ ^. C& Y. `- V5 U) i
//for(i=0;i<1024;i++)7 {4 l6 O8 o0 V: g0 J- z
// temp=0;
9 y% [8 T& M9 |. Q- @8 o3 \, b6 E7 l+ l- x5 g
//UPPReset();: H+ ]& E+ A4 ^0 V7 u3 l
/*启动UPP DMA传输*/) x( e: Y5 g0 a0 I2 p. g* K) @
UARTPuts("upp_prog_dma_i\n",-2);! f" A# m# { m1 m7 [- }! b+ O9 A
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;/ v2 D+ Z( E! n* a( K# V! Z0 O
upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
9 C: e- e5 J3 O upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);4 e* n' \$ S& {; F6 o5 [ u
/ n1 ?+ w4 U' \% {* }* M$ ? UARTPuts("upp_prog_dma_i\n",-2);
( D$ U+ D; ^7 F7 O8 K upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;0 c1 y6 i0 A4 Y5 o
upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);( P3 g+ \% B+ l$ i1 S7 Z
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);' y' ]) A. M7 z" y. X) q
5 |2 s6 L( K& n8 X% C4 D9 s4 |
/*等待UPP传输完毕*/
& i5 `: J# |7 d4 T //i=0;
2 X3 Z( c% Q7 V7 L/ F0 { //j=0;
/ r3 X1 t0 n" q: v' _ while (upp_interrupt_count < target_int_count && upp_error_count == 0)
$ U5 @; B1 w8 ]0 k {. X* Z( G# K# {" ]! g; Y6 k
/* 测试UPP传输的同时操作普通DDR数据
' k7 ~$ o, r. ~% `. L" U S7 |3 C temp=i;7 r& S1 [6 o7 F1 p0 S# V0 }
i++;
5 {' [& h( U; |. \7 e$ K6 G' P if(i==1024)
; Y( [) L& d, m5 p) E {
! L! W1 \" t. {; M9 y6 b. _. a i=0;; A) Q2 y$ X& R: ?
j++;
9 m3 G/ ? f1 R! A/ n: y }5 {7 C: f, E) |7 K6 h
*/
. ^% \4 e* P6 a* ?; ^8 `& D
% D4 ?$ X6 C0 y asm(" nop");
4 U+ _5 B6 p! K4 H( `- K0 s9 I5 p7 b2 i1 o. x; X
//UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);; o# L7 T `$ g
}# L, I% ]) K/ p8 r' x
1 ^/ w* q; }; t2 u) v; `
/*检查UPP传输的数据是否正确 (loopback modes only)*/( Z; @2 t: B% c$ V9 C p' u
//UARTprintf( "i=%d\n",i);
4 Q6 @+ {) @! A/ Q: ? //UARTprintf( "j=%d\n",j);6 e) M1 N! e+ A$ Q& q( _% m6 z
UARTPuts("Data mismatch in buffers.\n",-2);
# z( X( h- c" I5 [ if (upp_interrupt_count == 2 && upp_error_count == 0)2 _ ]1 u' G' u
{
. P @8 R) d* @8 }2 v" m for (i = 0; i<upp_frame_size; i++)9 u, s6 E! e6 ~; a- n
{: q: J, `9 [3 b. y! M: i- a+ R
if (upp_buffer_a != upp_buffer_b)
% i# O7 T6 e" O2 p S0 a {
2 \. U- F: ? Q! S. H/ v1 S upp_error_count++;$ I! `. q( K L) o; ?
}& B' f3 S# L. J8 \* e; R
}0 ~% } L. Y" w: F0 ]' E
}: M/ A+ R9 t" a8 S
5 A/ Z; ?0 K0 i9 Y' Y
/* 报告通信结果*/
# b# B8 B, m3 N7 u$ `2 G- K( c if(upp_error_count != 0)
x7 W3 B& Y$ d UARTprintf( "upp_error_count=%d\n",upp_error_count);
( O; L' r+ X2 d9 K4 y% ? else& g! P! w* y5 q: @2 G! g
UARTPuts("uPP transfers complete!\n",-2);
4 o# ?5 q' | \2 j! Y Z4 _6 j+ H$ i+ |6 s! Q: G- A4 f. T3 S
UARTPuts("Do you want to print all the data?(y/n) ",-2);: j% u0 s9 W* \" o, c6 b' |0 t, {& S
UARTGets(ch,2);# b- a( W' _2 g# [& G% p) S
UARTPuts("\n", -2);
; ~9 d( _ f" h9 D7 E; B% l/ _7 A+ N7 F
* d' X: O5 W p J- m if(ch[0] == 'y')' b- Z8 J+ Q& {8 i! E$ G
{
: o0 r' k0 ?6 {9 n/ ]8 W /*打印全部读到的数据*/
# h& S6 E4 s& x( L3 o/ Z for(i=0; i<upp_frame_size; )
# e3 |% V# S1 l9 `6 Y {1 J$ S3 k$ K* s( f4 w. ]2 i
for(j=0; j<5; j++)
, v% X5 H& T4 C5 k5 a @ {% m1 `' }; R& `* W _/ h
UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);# P4 q1 C+ Y7 H7 Q! k
i++;' W% S& Z; x. C6 w1 f" Y
//if(i >= 4096)) T/ o: g0 l, t& _/ F* p O" n5 I
// break;- U( U5 n" G" Y% `) O; W
9 c0 g% C# z6 B% }
}# I p$ U% U! U% h
UARTPuts("\n",-2);, m. _# ~' a( y; J# X1 D2 F* n
}1 h( ~. @+ X+ j. J# l( f% w
}
{$ Q7 A4 Q. V2 L/ h, X8 r
# ^; U; E) B8 c; | }: U}8 C1 l( b! i7 p
, [2 w/ C O% ?" e: L# e
! d7 d5 l$ n& b. p) b |
|