|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
8 ?, C7 _7 O! m" jVoid UPP_TASK(Void)
* c* a$ j$ C# B" k{% F7 p9 p8 l' e4 H0 A, G
: ^9 n" _2 M2 p8 H# A3 H$ f* t! S
int i,j,k,target_int_count=2;2 {, ^+ L$ R5 G, ^) A4 J
char ch[2];
& R& Y& \' m$ c6 B8 F* y8 \; [6 _
, y ^4 ~# i+ D! o) `, z5 l8 l9 G8 L- j5 B0 J
: q8 O- T' O4 ]1 B: y7 g, _ upp_interrupt_count = 0;0 R. i8 _* @% N0 }6 s% e
upp_error_count = 0;
, P, @% x. Z2 X3 z. N; n0 M+ j: P/ C! W+ _% k% r3 [1 H
UARTPuts("\tResetting uPP buffers...\r\n",-2);
+ k. H L# r2 V6 N9 I+ A7 J/ f0 ] // Initialize data buffers9 g2 B. o& k! Q$ @6 n1 V/ x1 s" u
for (i = 0; i < upp_frame_size; i++)
+ A( g2 Z* A) z0 Z+ t {$ O1 Q+ ^' ~7 m$ u' C0 K! p
upp_buffer_b =i;
" M& z; v0 F" B! z, `0 P upp_buffer_a = 0xDEAD;
6 u' H6 H& o3 L) z' R }
) E7 ]& x0 j2 F0 ~: Z% | b7 B. e: X" i- |$ t, i: V4 m# \4 E3 I
//for(i=0;i<1024;i++)
. X7 k8 g# q4 I9 X9 n v- Z% d // temp=0;; S2 V) f/ H: J' x: ^: t ^
* c1 o- B; E4 F( F9 j5 Y
//UPPReset();
8 [7 F, Q" ^: @1 s /*启动UPP DMA传输*/
8 o7 Z/ [9 |4 |: u UARTPuts("upp_prog_dma_i\n",-2);8 C% D! i. \2 ~1 G1 _! _
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
' V1 g/ B! J+ u# H upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);: M0 |" L ?, P
upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);( Y6 B) _. e6 i- S
6 [1 X! H2 y( d1 B
UARTPuts("upp_prog_dma_i\n",-2);- a) p% d5 k' {, P, c
upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
5 T9 K- X0 z$ N" r upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);* D% x% ^" X3 t" G
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);8 U/ X" b6 f V- E, d7 ^+ q
2 j7 {# |, S" W9 ]
/*等待UPP传输完毕*/
_( L$ R- }4 l' U4 b //i=0;
! x9 E" o( {# W1 b% H# E b: M //j=0;
$ }% B9 U! k/ ?! L& t while (upp_interrupt_count < target_int_count && upp_error_count == 0)
( q- `. b- y [7 S+ P$ C* z {7 G1 z+ m- G s7 r' ^$ H( A
/* 测试UPP传输的同时操作普通DDR数据 i, T! K& g' W8 q; o
temp=i;
7 [' S) p( o5 j% J. }: g i++;
' L3 T6 }1 H: z) J1 } if(i==1024)
! ?6 G$ ?. D% M6 r2 b {& Y( T- P ~- p# h& Z+ W& w4 a
i=0;
# _" }) I: T0 S! w: z j++; z3 X! |+ I3 D$ H) Q7 j: A. w7 O
}
1 ^7 Z/ i, [# p: j */: r4 e7 n5 }% c6 A+ `4 q- E. U
, `5 s8 M. o, L8 @$ a9 h5 C7 |( r asm(" nop");
6 i& }1 ]( y; t0 U% C% v( _; K- r+ j8 f
//UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
3 J; X/ C6 R1 l5 e- s8 ^1 ]5 Y }
4 u8 P% {8 d$ t' M* x+ g: Y( l
- X; X( z# x5 p /*检查UPP传输的数据是否正确 (loopback modes only)*/
6 Y9 b/ n* c2 V! E( V //UARTprintf( "i=%d\n",i);$ H7 J3 H* h0 y' G* V7 S
//UARTprintf( "j=%d\n",j);
2 \) V/ n# u# I; u; D( k [2 {1 n. ^& T UARTPuts("Data mismatch in buffers.\n",-2);
( r- p) `8 D6 J7 O7 y1 R if (upp_interrupt_count == 2 && upp_error_count == 0)
5 r* u" s7 B- o {7 L# R2 W7 p9 ?& H% U
for (i = 0; i<upp_frame_size; i++): G: R4 s$ g# {7 H2 G( `
{
$ M1 I; V2 {+ g8 l0 B if (upp_buffer_a != upp_buffer_b)
5 {# E7 ?& S$ R8 r) W8 K {
& W. B. A( p8 B5 M upp_error_count++;
) y8 F' Q$ a8 W- { }
/ J$ b1 G6 p3 _/ A }
" I9 |4 f3 c6 N; g; s4 z }+ B D' k$ K& b, G! z/ Y; G
- A& C! ^$ p0 R% |
/* 报告通信结果*/
' H' M- r1 i- U- v8 N if(upp_error_count != 0)/ R8 Q1 q' ?, F' n% ?" E- J
UARTprintf( "upp_error_count=%d\n",upp_error_count);5 ], M: l% p5 y$ E& |, |- P' {
else
- l/ Y2 [/ o; }" N! d6 D6 r" }+ U UARTPuts("uPP transfers complete!\n",-2);, g% O7 I$ x3 D% \6 @. @
9 G, O5 @5 h7 C6 d7 K2 M
UARTPuts("Do you want to print all the data?(y/n) ",-2);
2 e; `. q9 i, F0 { UARTGets(ch,2);& b+ P. O% o+ x! t5 @) U/ A, r
UARTPuts("\n", -2);
6 _* ?8 E- V0 m; s( y5 }9 p# g; f( x+ e/ v, W
if(ch[0] == 'y')0 R1 E' L! M& P3 \: `1 j
{4 N$ _4 n6 B6 o# O: p
/*打印全部读到的数据*/
) O4 I. y* ~0 N. ` for(i=0; i<upp_frame_size; )
0 l- o2 y0 z/ P" b7 A4 J/ e {
' ?6 W( m" [9 k/ @5 c1 v2 n for(j=0; j<5; j++)
. \ ?0 S" q! d3 y6 U {/ D4 b; ~2 `4 T8 m+ E% {6 k
UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);' C' ~2 D7 ?' T9 x) q; [) s
i++;
8 K% G' F0 V6 {+ Z6 | //if(i >= 4096): z" `* c, X0 `0 S* c' O) q
// break;
# y' w% H5 Z) h) L
6 y) J; N H. R, l2 i }
9 V4 F2 J' M' f$ i% g5 Y UARTPuts("\n",-2);
+ c7 C# J3 ~& e( Y1 S2 R+ i$ _2 x }
6 F/ }; K; o) P r- u* _7 U }4 u3 Z) x* B D" |
" K+ g' A- W \! ^) a, Z}. g1 V, W' I. {1 B
$ s4 E2 n) L- T0 i+ }- y* T. k8 T# _4 \
|
|