|
|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
* v9 g8 t1 x$ u! l, LVoid UPP_TASK(Void)
9 h+ X9 w s; \. ^{
! ]( \8 K9 U u$ w+ [- A# M- m; R6 [' P) M# I, W/ ~
int i,j,k,target_int_count=2;
- a# X: h- p, a& u6 N9 z" R( C% k; r char ch[2];
' f6 R( n, ]( {- u/ t k3 e# @/ C& f% T6 F
% _ d* p+ Z# M& q2 j% D4 v$ s {* m+ p) f
upp_interrupt_count = 0;
7 a; @' N) G% I: w Z9 p, [ upp_error_count = 0;3 G$ E' [; ^$ @& ?& t: O+ V
0 n" {8 I* N/ T0 B6 O1 x' A
UARTPuts("\tResetting uPP buffers...\r\n",-2);( l% Y; |7 T) Z6 L
// Initialize data buffers4 G v1 ^9 b4 N4 ?8 B7 b7 i
for (i = 0; i < upp_frame_size; i++)
3 U/ s7 ?( E( P% H3 g) C, o {' i2 C( }" b3 a; H
upp_buffer_b =i;3 ]: M S3 `4 f+ c) e3 f
upp_buffer_a = 0xDEAD;7 ?. ?( l1 H. | Q t* T
}
0 q, h, N9 m4 ^ H$ a% n# K8 T* J' g5 ? `' p1 R& X
//for(i=0;i<1024;i++)
; f+ b% e9 B) G // temp=0;
0 q, S% J7 j8 h- C# I
* H$ A8 Z- u3 Q //UPPReset();
/ K3 r- c+ g9 v /*启动UPP DMA传输*/
- l& ~' ]! h. M/ z* m UARTPuts("upp_prog_dma_i\n",-2);& Q- v& ~8 v. A9 e# y8 K. A0 ~
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;4 u$ }6 A. ?3 s
upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
% z3 c% c+ l1 P/ W5 ?" ` upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
0 F1 a: I5 T5 ^, A6 g
+ O4 c2 O3 Q( v. V UARTPuts("upp_prog_dma_i\n",-2);4 Y) @# L* \( w3 ?2 Y9 b' ]
upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
/ P2 I2 z1 a/ K, D( ]7 w upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
! Y5 @) `& w; [0 h8 j6 x4 ` upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);6 l/ H3 W. ~. g# M k
; N# T5 Z" R, W$ e& ^' o0 _( V6 q
/*等待UPP传输完毕*/1 k8 m4 V! ^9 c" f( Q
//i=0;' Y5 A4 ^! i( ^0 ^+ h$ b; M) f
//j=0;7 g/ l* B; j( K& k3 }
while (upp_interrupt_count < target_int_count && upp_error_count == 0)9 a& p6 J* M! u
{
- A& u+ c9 B, H. n4 N+ ^ /* 测试UPP传输的同时操作普通DDR数据4 a- H" }. u9 [ s# M: [" `
temp=i;
. G' o) o U+ \/ M. g' ]4 f& b$ z2 E i++;1 r# s7 n' c* S6 z
if(i==1024)
8 v( I8 p0 i/ Z$ k& d6 b {
4 S7 D1 ^, _, L' i7 z+ ^# G i=0;9 j8 x5 a7 D# s% h4 k ?- \
j++;6 d# I5 I1 {* @; `
}
# j4 ?( N, u/ H0 h3 ^' u */5 b# V6 `" y7 ~* v
4 E( z5 u3 Y4 _# E4 M2 `9 N4 Y
asm(" nop");8 ]6 L- G& u p8 f1 u9 V' M1 \, {% E
% u1 S- Q3 H& u! t3 u( {
//UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);' x v6 l" m# R- y
}
6 k1 E) N9 w Q4 Z+ \$ F6 d" w0 t/ s: m7 i
/*检查UPP传输的数据是否正确 (loopback modes only)*/# R! j. l0 R2 w& |! j& x# ~
//UARTprintf( "i=%d\n",i);
. {$ l/ U0 @5 Z; m/ g+ l' u //UARTprintf( "j=%d\n",j);4 J9 { w8 I" z3 j1 j
UARTPuts("Data mismatch in buffers.\n",-2);4 _. @# w- v; u3 ?
if (upp_interrupt_count == 2 && upp_error_count == 0)
O1 i% G/ q5 O3 w {8 ]# I& K3 ~# L# S
for (i = 0; i<upp_frame_size; i++)
# ` V. X! m4 ^; n {
0 V5 f( o! J/ S5 p: ?9 f if (upp_buffer_a != upp_buffer_b)" x4 N; r/ j+ }" b
{9 u9 a5 F2 Z4 c( [3 k
upp_error_count++;
9 f) U4 R/ Z) _2 P" F5 g6 ? }/ Q' l k. q" P# v* `# A
}
* @+ s1 c( V$ y6 ` }
# H$ j( k# n6 B% @. x
: J4 k4 `: h! ^6 A/ N /* 报告通信结果*/
; B Y; S& k, d$ V if(upp_error_count != 0)
8 R1 F! V5 Y7 H5 W: H- U* c; _0 B UARTprintf( "upp_error_count=%d\n",upp_error_count);) }5 M& K- u5 X ^3 A
else4 v' E) [# S1 y1 v4 e
UARTPuts("uPP transfers complete!\n",-2);
6 P, Y- b2 A/ Z' `+ Q: {2 M# ]) n1 K* B; B
UARTPuts("Do you want to print all the data?(y/n) ",-2);
9 i4 w& n- V/ }. ]6 } UARTGets(ch,2);
9 V. q, t+ w( {+ M/ k2 @$ A UARTPuts("\n", -2);
2 x+ r- P* `8 U& W q
' Y. J l' O+ i6 p if(ch[0] == 'y')
5 Z$ i, W5 V* v* ~3 \9 |! U8 g+ O {$ P, Q! c" t" j; W- ?( d+ [& B
/*打印全部读到的数据*/
" b( z9 n& E% t! O. n* e% |; @ for(i=0; i<upp_frame_size; )
9 O& Q" W" y* `/ H# o {
9 E" Q: W" @) u5 |' L for(j=0; j<5; j++)
. {8 l2 H# d/ R+ M% ] {
7 x7 \' b$ R' x. C" c3 F1 g UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);
- e. N6 m8 V3 ?; u0 \ i++;
) p( b+ D3 Y0 N$ p$ s //if(i >= 4096)
, K$ N& C) G) s4 h1 E // break;. v( O% m( \6 I' e
# q6 w' U+ C# [* J9 _& `5 O1 d
}1 x) w1 W8 E! z1 x6 | D
UARTPuts("\n",-2);
$ E5 u/ [& T% T' Z) {" f7 Z }
. C/ ?! |* M( |9 A }
7 Z" e! N( I7 N2 e1 h4 i: G! |/ i% B8 @
}
4 N* G) h# H% e2 Y1 o2 m- ~( ?) H E) T- a6 u
: P0 t) b/ e& c |
|