|
|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?/ f# }' p: D" |" ~ a
Void UPP_TASK(Void)
5 m0 n; e$ C$ E/ ?9 J) ?) t' a8 p7 a{3 M& G6 S5 c9 D- y3 b
% G" x5 G: H- B9 S; O T$ Y: y) c
int i,j,k,target_int_count=2;
% W4 n" q8 M; z8 P8 _$ _ char ch[2];
) J$ m7 Q) H# L2 }* `2 O2 M1 N4 P1 i/ K$ k3 i1 h
8 }' f7 K& n& C8 @( ^6 ~' n$ }: c t
upp_interrupt_count = 0;0 |. V, v. V3 J6 p! W3 z. m n( w9 H
upp_error_count = 0;
2 I" y$ C2 V1 u: R8 Q0 @
* e$ S: S9 q' q( Z: v: V6 z UARTPuts("\tResetting uPP buffers...\r\n",-2);
& i3 d& l3 @" D- t6 C( e8 x // Initialize data buffers
8 o- u8 L: E3 |0 M for (i = 0; i < upp_frame_size; i++)6 K$ `1 n0 w; E6 p
{, @1 \) T* }( g5 O" S
upp_buffer_b =i;# @0 o4 x) P) J
upp_buffer_a = 0xDEAD;! f4 Z8 h; G8 d: D
}' `, a8 O0 [2 y7 L2 H
2 G' x% s. S# Q2 q
//for(i=0;i<1024;i++)$ P. r/ x9 D- n. K! t
// temp=0;
/ Y& I- ?7 O9 x2 |" I4 [3 a/ L2 d. j+ L7 S I. d* S$ q% X1 Z
//UPPReset();
! E& r6 K5 c. r. j /*启动UPP DMA传输*/, ~/ V0 K/ G( E& r
UARTPuts("upp_prog_dma_i\n",-2);5 T& ?+ d/ `6 ?+ q" k
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
- N5 O2 O& [2 F1 y upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
8 Q! f9 m2 V( i& w6 V8 R upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);1 I3 {0 ?' D" Q; b6 G' t7 t2 X: a
& k1 ^7 I n8 y( G# m3 D
UARTPuts("upp_prog_dma_i\n",-2);
- Y* ]2 @2 `* ^# \2 h upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;; H& }. [4 p3 Y: H
upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);2 u8 O: S* Z6 B |8 {2 c
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);/ Y6 _2 @2 u l6 w
4 L: b7 \2 { o, C /*等待UPP传输完毕*/
2 ^" a% ~* Y$ B( K+ O/ d& z //i=0;
4 R; F+ N0 V+ p4 X t0 C, x //j=0;( p% b t( Y% R* N# v4 r
while (upp_interrupt_count < target_int_count && upp_error_count == 0)
- W3 I; F: J2 Z w {1 r; a! ~0 w) ^2 e$ t; g0 L5 i
/* 测试UPP传输的同时操作普通DDR数据
' X3 y+ {0 u6 u# l# Z; \9 O$ g temp=i;
6 z6 X; `3 w( h7 k2 \8 S i++;
: r4 x* {/ f! Q) q if(i==1024)
6 T {% F, ^( E9 s" Z; i1 G3 U6 x {; ~- d) H/ Y9 i; Q. l. U" d; M
i=0;
" g3 H; o3 ?1 ~/ Z4 P j++;
5 J$ D+ d: y e- [. P r }
# _2 g( Z$ t5 k5 T4 D */. v% X" w9 B) Q) `: v0 U6 J
8 W& w1 a6 h7 f4 A asm(" nop");
! q* E# U' s1 ~; ]6 ?( o$ Z0 S. c/ v6 l% H- D- b2 E7 s+ H' M. p
//UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);6 j/ c* P+ s) Q6 Q
}9 E, N4 E. P; s3 p! b
0 A/ l7 `) G z1 M" d" C /*检查UPP传输的数据是否正确 (loopback modes only)*/* J' P1 _5 D d5 p3 v+ f4 L I
//UARTprintf( "i=%d\n",i);. d) t4 C9 W* v! s9 F, R6 O" n/ G
//UARTprintf( "j=%d\n",j);
+ K/ z( M* O; ~) n UARTPuts("Data mismatch in buffers.\n",-2);9 h# H8 ]2 U( w1 [2 e
if (upp_interrupt_count == 2 && upp_error_count == 0)
- Q+ W1 h5 z, i" k* u* W {
: ~2 R4 n; a; O/ u- a/ G8 V6 L for (i = 0; i<upp_frame_size; i++)
. C( x8 |, L" D0 ` a {5 b+ y0 E4 ~8 C& O) C
if (upp_buffer_a != upp_buffer_b)
' R4 F* \5 V6 `" ]) u- j {' m# `" Z- K. d @9 c
upp_error_count++;
N7 ^" D* d, E) A }" B4 g8 d# P8 i7 u4 n
}
- n0 ^( j9 {" i9 ?0 x" z$ Z }
# r* s4 T D( g9 y
. N0 @$ G5 j4 S /* 报告通信结果*/
# _" y7 m# b: E if(upp_error_count != 0)( D, Z( k7 T% D( c5 n/ |. R
UARTprintf( "upp_error_count=%d\n",upp_error_count);. Y6 t( y& `+ }! j0 f, M
else
- @; ~' K& T+ f! K) y: G UARTPuts("uPP transfers complete!\n",-2);( u% [$ l$ B- H3 L
: ?( ^* C. y% O! K3 O UARTPuts("Do you want to print all the data?(y/n) ",-2); u# n6 f7 _) z! L. W
UARTGets(ch,2);
' P% z$ `- @: h, w4 E2 T UARTPuts("\n", -2);
/ l5 h+ `) y+ v6 q: i1 @; d o( X/ A( C6 ?" c$ ]3 n$ S
if(ch[0] == 'y')
6 i% s, P0 I3 H; m# g {
5 @' W. W! M+ D' Q C, x& T /*打印全部读到的数据*/
6 B6 }& s$ t/ o6 B& B0 v for(i=0; i<upp_frame_size; )* J" `+ H# I7 [: R7 r. o6 p6 \
{' W6 H, Z* `. C$ e
for(j=0; j<5; j++)
/ \+ @8 ^& _6 b: ?2 k% {. C- E1 J# U {: Y2 b! R D, I1 @! z
UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);1 O) y# k, k% v. c4 L
i++;
; l1 e/ j, t& B& t //if(i >= 4096)$ g* A+ A3 K2 W0 @ V# j6 h6 V
// break;
5 O4 |) Z- J/ F9 x E# T8 L* r( N5 p4 @* W b
}7 K, x M3 w( G; B
UARTPuts("\n",-2);
U5 X+ Y+ m+ ?4 X }1 ^6 h. j/ E% {8 J
}
1 l# j1 B$ g9 N
( @% B& P) ^. n9 k" Y+ u1 k8 [}
/ s' f! L8 r1 T: O z
5 o0 ]6 e l6 i& ~, a8 Z, O( T( r- l+ x4 b4 d
|
|