|
|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
5 g; H# O( g( wVoid UPP_TASK(Void)
) L7 a7 a4 j( j8 h{
( _& z" G5 T& U' H2 l" O( z& @2 p: k+ A1 K' `" O
int i,j,k,target_int_count=2;
1 v' a; x2 v' I1 C, N char ch[2];
' m! j4 C. D L
6 E2 h. W5 |' E( m% q( ~4 p! R
4 z$ k1 g( t Y7 @$ d% N, S& l
9 E, U$ d! @ g9 f% p% Q upp_interrupt_count = 0;% w6 Y O" C$ F& `# u
upp_error_count = 0;# z4 s& L- J) [' T3 k1 E
9 L ^9 x+ ?$ S" h5 J1 B0 d- A
UARTPuts("\tResetting uPP buffers...\r\n",-2);
8 Q3 L( e& I6 i) y2 ] // Initialize data buffers& o1 D' k7 o( @- V1 F5 a: S3 |$ n
for (i = 0; i < upp_frame_size; i++)
2 S" ]0 l& L* l( J0 J" Z+ ? {
7 |9 j: N9 L. l1 ?. E$ k upp_buffer_b =i;
( M( A, w; Q6 l! g1 K, k upp_buffer_a = 0xDEAD;" |/ L: p. F# l2 p0 ^
}
! l+ X( w* p) ]- j/ O+ S5 j% u( U, c( q* |" h
//for(i=0;i<1024;i++)
A8 B* `5 F* `7 _$ Y // temp=0;. D. B7 j. w+ y; @
' K: d" P1 x0 J& |; l9 Z //UPPReset();
) |7 D# W6 y: Z% I, S1 \! D1 { /*启动UPP DMA传输*/
. Q+ j- s3 }7 ?$ E1 W) \ UARTPuts("upp_prog_dma_i\n",-2);
9 h# ], k$ Q `5 q upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;' m; ]: n+ n! B: ]. p- I
upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);1 ^8 d) D2 v0 q9 q
upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);' j- A" z7 ^/ C3 u
! x: R$ {3 g( h; f3 \4 i UARTPuts("upp_prog_dma_i\n",-2);8 c4 F2 i4 x W- p' V, u# h
upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
. M/ j" C3 }, m upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);- ^. A, Q% r2 ^5 ~1 k( R
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);9 H, K8 y2 S& s' x \+ y3 @
3 o, j/ s d+ J. b" Q
/*等待UPP传输完毕*/8 k4 T. ~) F4 \8 q* V
//i=0;( C! i, \, l- l0 K6 R
//j=0;
+ u6 M( h' Z2 R+ u6 p% g! _ while (upp_interrupt_count < target_int_count && upp_error_count == 0)( e0 P N7 I8 _# D. s
{
, M$ y4 ] [; e# L9 l8 K /* 测试UPP传输的同时操作普通DDR数据
$ p' b1 `( r2 P% Z' ? temp=i;
# g* @' v% p1 z3 H C1 d& T, P# J i++;- B1 f6 t' Z( B2 G/ @4 o7 w
if(i==1024)
' W5 ~: B; ?) i1 Y% y+ s {
4 M5 B* N) H5 c3 d2 L i=0;
7 z" I. d! n0 L/ b& P g j++;0 U& n& Y- \7 `( J+ B
}
+ z3 W+ c5 w0 H/ p2 q */
( o. T: j+ G* _0 k+ }6 n. K* z, z. T; r' { j) s9 Y
asm(" nop");
( t% t: n x2 {$ b# v4 ~2 F+ u
, W* |0 U, n1 ~, @1 n //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);+ q3 ~( q5 a O
}9 F+ M g0 L3 R/ z( v
) o; @% j0 Y+ s% j. O% w% @- t
/*检查UPP传输的数据是否正确 (loopback modes only)*/
" ~+ R2 r! [& p2 {* }# { //UARTprintf( "i=%d\n",i);
0 ^! `& z6 ^0 a0 P //UARTprintf( "j=%d\n",j);
5 W" K( @! M4 a, k( y, Y/ @ UARTPuts("Data mismatch in buffers.\n",-2);
* ~% I5 C+ B" c if (upp_interrupt_count == 2 && upp_error_count == 0)
9 g y X* i7 r. p/ C: [ {% b Y) Y, T: f: g+ \9 r% s: L2 g
for (i = 0; i<upp_frame_size; i++)
1 P1 S! q e* H7 I$ w8 H# z8 L {4 v B& a r6 k# X$ N
if (upp_buffer_a != upp_buffer_b)
7 q1 D6 P- S8 a' ]# V {
4 N5 K! k; H A+ F" Q upp_error_count++;6 U1 w& ?+ u4 L- S& {
}0 P" Q; L1 C# K
}+ Y8 r& b! [) [8 \; O# i7 F
}/ d8 G8 s/ s; Y, x6 M
, j& E/ W3 b+ [! I8 O# J% |8 E
/* 报告通信结果*/
* N8 j3 H" I8 M' S1 H: b- t% ~( J if(upp_error_count != 0)
# v) T6 F5 r* G UARTprintf( "upp_error_count=%d\n",upp_error_count);0 e* f* @( r7 ^, \- L. K
else
( E/ n: g" z4 `+ T3 i, v UARTPuts("uPP transfers complete!\n",-2);4 [: z! T' q8 `$ P7 X( R, c- n
; N) T& E: C6 p5 N/ X5 D n
UARTPuts("Do you want to print all the data?(y/n) ",-2);* n: n. {6 r0 e7 A: Q
UARTGets(ch,2);
0 G- \1 F2 ~$ M" t6 x' D UARTPuts("\n", -2);' I# {0 Y3 l! i7 q; \ R
' ?2 D* S" Y: n3 c# P4 x) G+ G if(ch[0] == 'y')
; a4 }: o7 L5 K$ W6 K1 [ {
" S1 [8 N* E# L& E: r3 m /*打印全部读到的数据*/
; [# Q v, B$ T for(i=0; i<upp_frame_size; )
8 @; q% @; A4 T: `: N8 W {
' Y4 e/ O5 C7 S; B) @) G9 i for(j=0; j<5; j++)/ y1 f% E# s0 S' p1 ?4 w$ a+ v! G
{1 T2 ]0 p- l8 u! u& {+ U; {8 s) v# P
UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);
, L" s+ Z! Y. }: Y) |/ Y i++;
' k, t( l; p; U( t //if(i >= 4096), E, ^/ z8 p ^# Z# N
// break;
% D* l" A. h6 P) }) g/ ^2 y3 h$ X. Y0 O5 x6 ` |
}
/ }5 u, ]. x' X0 S UARTPuts("\n",-2);! s+ M% k9 M' V$ a
}' J P- v; n2 n2 U! i; p
}
p# {( p2 i, O* C) f9 C1 W9 n: G4 H/ J$ v" N, e! ^. Z
}, u. l7 g# k* |: v. p% D
$ H2 n& ?2 C4 E* q, i1 W" m
6 W- { L8 ^: _3 {& o" D, x$ H1 x
|
|