|
|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
7 z& _. f# P4 a jVoid UPP_TASK(Void)
3 A) U8 }4 Y) {5 H5 i{/ }( v9 |+ P; R
" N/ q) A2 i+ x5 H- R e int i,j,k,target_int_count=2;' k- _8 ?3 O( Z4 I
char ch[2];- o, P' h0 u2 G' p+ p; o
8 d9 T% O1 ^6 y9 c x$ z- e( y# @8 G% l5 J3 ^2 a5 D
) l4 f/ C6 X1 f* k
upp_interrupt_count = 0;, P7 i, M; O) [7 j$ ^7 j
upp_error_count = 0;
9 _: v: a* v. h' Y
2 u( D7 T0 F8 r' b UARTPuts("\tResetting uPP buffers...\r\n",-2);$ @; A6 r$ G4 {4 U
// Initialize data buffers" o3 j7 a/ C4 r. S
for (i = 0; i < upp_frame_size; i++)
. D* ~7 ^* c8 W+ x- F% ]- j8 Z {
9 q0 z+ g; G: o3 j- | upp_buffer_b =i;
6 [5 H3 D+ Q9 Y# @8 l% x upp_buffer_a = 0xDEAD;9 e% R& i4 U( e* [, k
}
5 t7 k0 W0 \+ X$ G+ | P
1 {. n7 c0 s4 r. t* p' k //for(i=0;i<1024;i++)
5 h# ~# w0 b' W& d2 Y- g& }* p3 ]2 m // temp=0;. k, [$ h, E& W8 L7 Q7 N* {
) _5 [* {9 U; B' X7 S- a$ A
//UPPReset();
( K! s' H, U' a# r7 z# ] /*启动UPP DMA传输*/4 f3 ?# v& N! E) T# y$ v/ T
UARTPuts("upp_prog_dma_i\n",-2);- y+ H1 ?3 i9 m. g- G
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;' b+ I1 T7 j6 _ s/ @! B. |2 v
upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);% ^" S1 o! W) p) T( _4 A8 A$ y
upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);" \, e, `+ y7 u2 r/ t4 w* K
8 x: M& x) F+ f1 G9 V$ S+ e6 K
UARTPuts("upp_prog_dma_i\n",-2);
- X9 F& d+ P) K- ~ upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
" f6 h# _5 G% E2 f0 Z upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);8 I# v! c7 o0 y5 u0 I4 J: J
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);$ ? q, s @0 a; K
; ~+ X" Q$ r/ i- f /*等待UPP传输完毕*/8 W% Y0 ? J9 A
//i=0;
: i9 Z3 J8 W/ y, y' F/ t. |4 R4 j //j=0;
3 T' e. e0 d, q$ x A6 D while (upp_interrupt_count < target_int_count && upp_error_count == 0)
( T5 [: n# `8 }, l) E+ u3 e {) X; K* ^1 U5 U# M# R+ l+ X
/* 测试UPP传输的同时操作普通DDR数据) S7 T2 w6 [7 u( S
temp=i;
. {3 d( n) s4 O0 b& K: s i++;
4 b T9 {. F6 W |6 o: w. s! ]/ j: k if(i==1024)
: t% I x2 o% L( b* ~/ V4 t {
3 P; b7 Q# `5 `/ l0 u8 f' R7 | i=0;1 C* G* H$ G$ W6 z
j++;; C- Q2 o* d. v# g/ t8 r* w& E
}. \* P# ]. ^, f
*/
g4 v8 ^( @* R$ W0 G$ l O, h$ w9 ~# A# k$ l: m" P
asm(" nop");
2 a* A6 v: @5 a4 `
# j4 C! q& k: o. b2 A/ k //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
4 M1 j) J4 F( Q$ K' }, |$ p3 E6 h }6 o X; {, H) x, ?1 ?/ h
1 |" b" R; \+ C8 G& S /*检查UPP传输的数据是否正确 (loopback modes only)*/% Q, d' ]% N2 I% J" \# b6 V
//UARTprintf( "i=%d\n",i);
' [- i- D2 C( m //UARTprintf( "j=%d\n",j);
# Y. w; F0 t- g; A UARTPuts("Data mismatch in buffers.\n",-2);) f: l+ R0 j( p" m' q$ k8 d8 j9 m
if (upp_interrupt_count == 2 && upp_error_count == 0)' v z3 {/ G( L# l2 _+ @: d5 M- w
{- ]" X6 F( a; r" g. i
for (i = 0; i<upp_frame_size; i++): u( N" F( n" R
{4 n% Y: i% u8 @4 H) |6 {# K; z( M0 S
if (upp_buffer_a != upp_buffer_b)3 n: I- p' g3 U/ G0 ~/ _3 o
{
4 j$ E/ ~/ K8 O/ N1 z8 U! g/ s upp_error_count++;) T8 t, t( G0 i' H: W( v# ]- {
}' u3 Z7 k. c4 h( G1 \* d+ O
}! W$ L( `/ q5 B: k6 \3 k) u, L( p
}
/ n# u4 t Q$ P: @( U U( F
& L* G# r/ i: ], [ ^9 I /* 报告通信结果*/9 X) @8 I* L( k+ s
if(upp_error_count != 0)
7 C( v2 t2 Q7 A; D6 h UARTprintf( "upp_error_count=%d\n",upp_error_count);6 E& J, M3 M& x k' O1 Z$ B
else4 A( q y { V+ t( [5 ^
UARTPuts("uPP transfers complete!\n",-2);
2 n3 P* I" K4 L8 L: D) J! _5 w$ A5 p2 [3 [4 @" R C; X
UARTPuts("Do you want to print all the data?(y/n) ",-2);
) b6 g( _, G+ v# F" U UARTGets(ch,2);$ O0 M: B# J: e; T* O( x
UARTPuts("\n", -2);5 c! h$ a+ f. `
1 _0 I" s5 y) N c+ Q! a
if(ch[0] == 'y')6 p, E$ _9 ~$ b& \1 }/ n
{) ?% y8 L2 _' j+ Y* z
/*打印全部读到的数据*/
/ ~; K4 C1 r; H R# d; R+ b/ {3 p for(i=0; i<upp_frame_size; )
2 t/ H! k' z! @4 T+ a7 j: Q {
3 x, f G( x$ W for(j=0; j<5; j++)2 N9 q- `: t2 U: W5 e, Q3 I
{' k& \; \# p i( s
UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);# V3 q9 V6 C g/ S
i++;
4 B" O A" b1 H4 M //if(i >= 4096)0 m3 U8 i! r. A5 I3 P `
// break;
2 P2 ^6 ^7 I8 q% b$ S; ?& \) o% F5 \. X. ?/ {2 z
}
( J5 ]) o6 a9 }' }$ F% T UARTPuts("\n",-2);! `, |) J; Q. V @$ e$ Z/ n9 b
}
! V* M+ P- f# ~. M }: e% R% q! a+ Q
. N4 |: _# m4 W* Z! s# R0 y6 X
}
/ w* o4 `, o9 ^. n
" \8 i5 v- S5 V) O' H
5 _+ ]' |. ?6 o+ R8 g6 L" _2 h& L8 h |
|