|
|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
4 i) u b" ?1 X( R1 A1 I9 d- _5 eVoid UPP_TASK(Void)( `# C' s( v' r5 a- S5 k
{6 y& n# U# w7 c
* h, g' R0 V, J2 _
int i,j,k,target_int_count=2;
: g- R5 v2 i8 [/ L& N char ch[2];. |5 J+ f. q6 `, X
8 l8 X7 D% X4 k: A6 E+ u
: w% V$ x8 F4 Z2 i! ~& s0 f/ u8 X
# x! C: u, j; R' \& Y# r7 A upp_interrupt_count = 0;0 F5 F, X* |% p }7 P. U
upp_error_count = 0;
! b% w; U' }8 _% S2 b8 I0 _# e h+ ?" x; _; h/ N3 i
UARTPuts("\tResetting uPP buffers...\r\n",-2);0 K! h. T" f1 n' v2 g1 w* p
// Initialize data buffers' ^; l3 }$ c4 X+ q) T
for (i = 0; i < upp_frame_size; i++)1 C/ T2 W6 Y7 e6 R
{8 w/ i' P) z# i2 v
upp_buffer_b =i;
, q9 L% ^- u2 M: j/ T. @: G upp_buffer_a = 0xDEAD;- G }- O9 [% b% O
}
9 D! V) d/ U, }" _1 h/ Q$ k/ [+ @$ e6 i
//for(i=0;i<1024;i++)
8 n' n h3 h: r0 n. \& V7 r // temp=0;! }" q+ H4 i; n: T
* T- {* t- R2 I6 Y
//UPPReset();- f5 x G+ x) M) S+ \( Y
/*启动UPP DMA传输*/4 A: M, L* x1 q3 @6 I$ H
UARTPuts("upp_prog_dma_i\n",-2);) E1 S) G, `8 N' b% L4 ~! w* i5 e
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;5 w: @+ V5 w& L& d3 C1 [7 I
upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);5 R2 n _/ x2 a( ^5 X( y6 e
upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
% k! k: p% X; f' z1 v" ~# j9 C! ~+ w0 [5 u$ y
UARTPuts("upp_prog_dma_i\n",-2);
* J9 r7 u/ N0 @$ I$ L upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;! x& n l% _3 p4 Z; W& E
upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
& S. Q& G' e, X4 S7 }; H0 K upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);' b) ^- `, @5 `/ b+ k+ d
! S8 Y% I0 X* d, `4 @7 y# x# Y
/*等待UPP传输完毕*/8 ~* m3 k! U t) b
//i=0;
9 e% n5 H% v- ?7 N' f //j=0;. l3 _( c9 U6 O3 a4 |
while (upp_interrupt_count < target_int_count && upp_error_count == 0)
! P7 v7 J& [' e% t5 {# l {! s' ]3 q4 F6 T% Z, o
/* 测试UPP传输的同时操作普通DDR数据
; D/ i" v+ W6 F8 N& k# v" @, E5 N temp=i;7 @8 f! T& M; C. x4 {! ~
i++;
8 M$ c2 j3 ~/ T$ v8 ~ if(i==1024)# Z/ ^7 R# `, c
{% Q6 m" c/ L3 O- L9 D& I& C
i=0;
2 \9 h4 {- H8 e; W+ w- g l/ N j++;
9 e% |( n$ Z6 L, V1 C! i0 x+ N+ J5 B3 F5 k }/ _* n( ]& K# S8 }
*/
2 Y% F1 U& Y/ `. l* V' Z
+ z y% ]6 {3 Q/ @2 r% r7 P asm(" nop");
# l* Y+ s6 R2 Q g4 d+ f4 x' _
//UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
3 i w ^8 K# s, Z2 d9 _ }! G: O( _- v" @* v" d# o7 K* f3 w
( V/ \2 W ]6 y" v
/*检查UPP传输的数据是否正确 (loopback modes only)*/
* W# j& {8 W7 ~ //UARTprintf( "i=%d\n",i);$ N d* X; r n8 T& q; D& v. f
//UARTprintf( "j=%d\n",j);/ @& f, J/ x$ Y! n% b
UARTPuts("Data mismatch in buffers.\n",-2);8 b# `! n5 b7 L9 E- S
if (upp_interrupt_count == 2 && upp_error_count == 0)
4 K) G7 i+ ] @: W; P {
6 @( |% m) D# i/ z; _2 }( [ for (i = 0; i<upp_frame_size; i++). l$ l* s! S- {" _8 A
{6 h) N7 h' H+ Z5 z: V9 \( }
if (upp_buffer_a != upp_buffer_b)
' g9 s8 y2 i1 g6 r {6 _( y4 [! s; Y) D$ ] T
upp_error_count++;- [/ F2 f8 j8 @; Q0 ~
}+ y- e7 | b# A2 p8 P5 T' v3 i1 F
}
: J6 a2 H! p/ M! g& e8 B/ { V }
- r; H/ T) p8 v
( h8 h$ E# S* [ s# q& E* ~ /* 报告通信结果*/
3 y7 \ {! H, h- u- E, U if(upp_error_count != 0)
1 p0 M: ]+ C3 ?0 v# ] UARTprintf( "upp_error_count=%d\n",upp_error_count);
- M7 b3 c E$ R( u. }' L else7 m9 r* l9 t2 v% P4 C9 [
UARTPuts("uPP transfers complete!\n",-2);
) [8 L' Z8 K- L
2 Q- p7 K1 ?* R t8 l UARTPuts("Do you want to print all the data?(y/n) ",-2);
; P" r) P- }3 f! N# N UARTGets(ch,2);
. T! }% U( ]6 `2 U# o1 F: [ L UARTPuts("\n", -2);# c( L H4 t3 N; P7 b9 B
5 ^# F* X! U7 H& k. ~- j2 t if(ch[0] == 'y')
/ ~4 u% A* H7 m) q' E {# o1 S' ~. f" R
/*打印全部读到的数据*/% |( N& a7 ~1 }: e1 {# k: O
for(i=0; i<upp_frame_size; )
! B& _) l6 L7 |8 S {- ^: i( |6 M" i* G
for(j=0; j<5; j++)) k' k |0 Q6 p( {/ n7 l
{
# a: Q+ b& o8 e8 y0 k. M7 A/ f% J& Z UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);
7 x1 b3 v% K1 X0 a i++;' Q. }; _3 _6 [1 X2 E/ {
//if(i >= 4096)- W3 W1 B( K- a8 O- C5 p. L. u+ l
// break;% g* t% a7 m7 c$ _4 E; y+ K
9 A( D2 d4 `4 c9 i0 e V& N3 X# O
}
" v4 p7 a: t. O% Z/ V9 t& g UARTPuts("\n",-2);4 x( F/ s9 v) @/ H A. K9 n) S
}
: n3 G9 ^2 ~% K, Z; u- U }
. P+ {6 A7 P( O* g" o- l* k$ e: i# d8 I0 w/ A T0 }3 m7 j
}
4 R' V, }% D8 O0 p5 D' E( Y
$ u8 g( U& M4 r( F) m, x5 H$ D7 u$ p
1 r e2 J2 h# f( G* m8 Z |
|