|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
/ M' |% I/ ] r) c/ l2 m; IVoid UPP_TASK(Void)
7 d9 y q/ A) D{
1 z) w0 e, q; j3 C' F9 U$ l/ y) A- J# C% x: k
int i,j,k,target_int_count=2;6 ?! h* `- Z/ S
char ch[2];( F/ e8 w! H& h9 n) J! r
: [* V# X7 ^: q( O) I9 d
/ I7 S k1 l( `0 |( X5 w, M8 |: m8 o& {
; L. M9 w0 s8 E1 n ?/ K
upp_interrupt_count = 0;
8 w0 p& P3 X y" g ~- ~' I3 ^ upp_error_count = 0;# B- z X/ W$ T. Q. W3 @
0 ?5 L) M& K3 |# e7 L2 C; X& _) S UARTPuts("\tResetting uPP buffers...\r\n",-2);
% n7 a' Z5 {6 o8 @ // Initialize data buffers ~9 e# A- c* }; C: t/ v
for (i = 0; i < upp_frame_size; i++)
5 N. C9 f1 |; ~& _7 N3 H7 H s {
2 n7 a' w) D ~. q upp_buffer_b =i;/ ?, M6 I; C3 j4 T5 z9 b0 I+ y
upp_buffer_a = 0xDEAD;9 c" A' H* F) Z" c
}
% u& c7 E( P8 }3 X( }% s( D% @! _2 s: U* M- r$ c) c8 E
//for(i=0;i<1024;i++)
& ~- r' X3 t/ y2 Z9 ?) u // temp=0;- a: l2 A0 ]. r+ y6 w2 [/ c! n' `
* l, e [+ P/ @+ ~1 n! ?7 i //UPPReset();
# S% `* F b6 B! A5 z /*启动UPP DMA传输*/
+ j: j( K, x$ M8 Z% g5 ] UARTPuts("upp_prog_dma_i\n",-2);
; c0 O9 o7 T8 J/ M7 h, k2 X upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
( a# m( C4 m8 h* @. G upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
5 F. c* T% N* } upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);$ w2 F. a: k% M* D G+ F2 {
) d' k- j& O. V: v2 _; ^' G& N
UARTPuts("upp_prog_dma_i\n",-2);
: s9 A" d8 J6 _0 ^7 j/ ~ upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
, g9 @( v. t+ q& \) U upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
3 d2 a" p2 X ~+ I7 B Y upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);8 y) C! s5 I5 B( H: {
5 s0 d8 y& X8 h1 Z* Z$ t /*等待UPP传输完毕*/
( d( e4 g: D6 w! U+ t //i=0;
# A. J1 m F3 X7 l( d/ K //j=0;
- U' x. A2 K. J: W. ^* W# J5 Q9 o0 d while (upp_interrupt_count < target_int_count && upp_error_count == 0)
2 w9 V" i9 w! V" l& H/ Y {
& i, y7 ]& s* L- M /* 测试UPP传输的同时操作普通DDR数据 y' u9 `. h6 O3 U& _
temp=i;6 Y- p2 t3 t _: \+ D; f! f1 W
i++;1 P- C- L* T' `% t0 Z) E6 v1 y
if(i==1024)$ `8 |0 K7 m. H0 x
{$ }3 K `# I! h m) Z- s
i=0; k" ~* F* W& p# z' X0 W1 b
j++;% q2 O% X9 d3 ?, p: \6 v9 s
}
% B% e/ w1 g4 k- ~; h *// Q6 p- Z+ S! L1 i) ] \) v
/ v' q; g2 g* n
asm(" nop");0 C/ F& c( k4 Z/ E
' F$ y- [6 i0 D, F0 m6 i! k //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);% C! `3 R* n+ b4 A+ ^( B
}
- g. x* r% c- W" z& [) T' B" f8 M
/*检查UPP传输的数据是否正确 (loopback modes only)*/6 u# A" W' ~7 A) Q$ e1 ?8 O
//UARTprintf( "i=%d\n",i);" y: b6 b1 ~) Q9 o3 r5 o/ W
//UARTprintf( "j=%d\n",j);
/ n& Z0 c+ Q& D/ }( B UARTPuts("Data mismatch in buffers.\n",-2);, E9 ~9 a0 i9 Z1 m
if (upp_interrupt_count == 2 && upp_error_count == 0)( b7 C$ B* M* _- H7 k& v4 h
{
7 p# _/ L1 H4 l: q( O) q for (i = 0; i<upp_frame_size; i++)
, ^2 d+ T. ~6 X; ]) r {# b h5 C/ r1 e- }( `4 ]; R- Z9 `
if (upp_buffer_a != upp_buffer_b)7 `. _1 t5 ]: c
{0 K; K, P# {9 u8 D; f! i
upp_error_count++;7 O0 j$ N. a4 m* r" q. Q' ]; Z6 ~
}
4 l0 {# j* n; m q( u) z }
& a& F0 e8 O' B0 k }1 \- P" q3 |) q; K& @, H
2 Z/ `; h2 _" v9 ?$ l
/* 报告通信结果*/( p' `' |5 r3 |# z) p* x
if(upp_error_count != 0)
' O2 S, l! y9 ` UARTprintf( "upp_error_count=%d\n",upp_error_count);# h1 {+ _ G. D( `. O4 N, C
else
& k/ r; [' z! a8 i. T* a1 r8 d UARTPuts("uPP transfers complete!\n",-2);
$ ]7 `6 @. b" q7 ]! R; [' O0 L3 a. Z7 p9 o' ~- |* b. Q
UARTPuts("Do you want to print all the data?(y/n) ",-2);
, x* F) _0 A+ P- W/ X% j: g. } UARTGets(ch,2);
! Y/ z+ H) G6 [5 u UARTPuts("\n", -2);3 \, Q7 s |+ K. ?
`7 m% {% F% A
if(ch[0] == 'y')
$ x" r, e# H4 |2 N5 O5 f3 g {4 E+ e" v) U# e' p1 ^
/*打印全部读到的数据*/+ s+ S! I" J. n5 |* y
for(i=0; i<upp_frame_size; )
6 `% t5 o W2 t" R& b8 d$ \. a$ J {
- x+ S+ |1 b2 _0 I' ~! \ for(j=0; j<5; j++)
% ^+ G6 S: z3 W ^5 }. a( U {
; E# s* W9 I& s6 [! K UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);1 \( M; C) _3 w/ `9 v r
i++;% @5 _/ Y% P4 z k0 y
//if(i >= 4096)) Z5 q( K3 _" U. P J3 M( {
// break;
/ \1 T; @ U* {) l! h5 g& ?
9 J. h0 d- ]! D }
" z- H4 C' | o. a UARTPuts("\n",-2);
( _9 F- }9 o5 Y# T+ V }
0 D4 _. @3 N. i- |4 x4 Z }4 O0 X( F4 v2 Y" H
1 c2 _2 c) z8 ~! o" r% Q+ c}
3 G) w7 b/ y7 M. p! A+ U$ C1 c
' q: \( A& }: J N2 h3 p! j) ?2 {( T; N# Z: t4 s, w0 d' w9 e) t
|
|