|
|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
3 R" V: V/ }6 B) U; S0 ?Void UPP_TASK(Void)
& Y6 O5 x* M- B i' [{
; l- p/ H0 y! Q c& Y
/ b6 W5 M2 D& y8 p5 v2 L int i,j,k,target_int_count=2;
7 u* V; ?' M- L5 S& r+ A: A* a char ch[2];
3 w. I% o6 W2 h' G
: f" F3 V6 @1 h6 f# K
7 U: @) G1 B) B" S% S1 p1 q+ r. Z1 C$ ]# s( S; M5 i
upp_interrupt_count = 0;. }2 _ a) O3 f5 ]2 |1 G" g, E
upp_error_count = 0;# u) Y" v2 U# M$ K0 Q, Z
+ m8 C: T, Q8 K x' @
UARTPuts("\tResetting uPP buffers...\r\n",-2);1 `7 r# ^ b n1 Q' j4 ]
// Initialize data buffers# ]4 ?$ u* k) |3 w1 n" R1 r
for (i = 0; i < upp_frame_size; i++)* N% T$ t- O2 A4 x8 X" q
{6 O0 F' w4 F2 @4 F% e
upp_buffer_b =i;( _, `# h, s9 k- ~& F; Y) O
upp_buffer_a = 0xDEAD;: B0 Z9 O/ D! K% e. E8 Q4 X
}
; F8 Y3 A# U6 F8 {5 q
# R+ p* r" }( h7 |0 A7 | //for(i=0;i<1024;i++)
1 }/ R! Z, m" h' ^ // temp=0;$ m4 M( C9 S+ e; ~+ u2 z
1 {; d# G& c0 [$ C3 ?/ \9 C$ t //UPPReset();* p4 V n/ S# I, f: T4 }
/*启动UPP DMA传输*/* S2 z$ u2 m* c+ L8 n1 v
UARTPuts("upp_prog_dma_i\n",-2);' t' H) X F2 s# f: c" Y8 J1 @) `
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;; G ]; f7 }, q1 W* m. ~
upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
4 m0 j7 t8 Y- d$ O! k( N upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);9 `- H) L- I% |; G" ?9 i( G; T. p
0 R0 v7 C) f" z# {$ I4 I UARTPuts("upp_prog_dma_i\n",-2);
8 X* E* S- k* P8 E/ H# l. m2 M upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
, X1 G2 g" F+ v: c4 G v upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);! n2 e- y# W0 ]* L6 z
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);# V5 L% n/ G4 E- @+ A5 v
# ^& f- }- \: e
/*等待UPP传输完毕*/3 F) ?1 ?3 F, y8 v7 ?1 m
//i=0;
5 L) Z5 |& V' F, u" a8 E //j=0;
+ \$ f7 G" h5 r0 m9 C while (upp_interrupt_count < target_int_count && upp_error_count == 0)/ U* s1 ?& k# q& _8 l$ P V* L
{
% Q$ o3 h9 M9 B0 ~2 p- c( _( u /* 测试UPP传输的同时操作普通DDR数据3 R$ ^2 L, p0 X% U5 H. m
temp=i;
. L, d6 ]3 Q1 { i++;4 M& D3 ~- c: l9 e j
if(i==1024)
. }7 v4 A* a. _! ~& E: z0 D {
: T5 h& r+ v0 F; C5 R# @ i=0;4 `' R: p; c8 w& Q% t" ]
j++;) |$ e' T- P* W4 N! X! ]2 F4 A6 c
}
( D% [. D' E4 Q3 `: H; { *// ^3 H. b R( Y) D
! u6 H( A3 j7 {2 f9 s) Q- z# N5 ]% G4 h5 Y asm(" nop");
( P/ f: ]$ M9 a1 x9 b) U& m, |! {6 N$ p
//UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);9 P) `0 h( I' G
}
9 ?. M" Y/ U9 B# `) m! I+ @7 ^; G) H5 N, q
/*检查UPP传输的数据是否正确 (loopback modes only)*/
2 N; b2 h- H8 m; f //UARTprintf( "i=%d\n",i);3 x9 Y! y5 _' o' H
//UARTprintf( "j=%d\n",j);
' K) p; L. v- m% a0 O3 W8 E/ V8 L UARTPuts("Data mismatch in buffers.\n",-2);
. ]) a9 D# w5 L) ]. y if (upp_interrupt_count == 2 && upp_error_count == 0). c1 O; E6 I' f2 i: P: A3 W( x
{
" h3 w4 S5 m$ y4 q& t for (i = 0; i<upp_frame_size; i++)
# ^1 g- E! i) U {' p0 m/ v. ^% I/ M' y1 r
if (upp_buffer_a != upp_buffer_b)
1 L' J+ K0 s. Y7 v {
- {! | v0 ~: R8 V- @. P! Y! y upp_error_count++;5 d; w6 ~1 B& F1 A; s W
}# n, A" R% p2 I D
}
0 L/ C/ W! @* `# I1 g }
1 e) ]3 s* {, m8 q* D5 O5 F' J; X" _+ i/ O! z
/* 报告通信结果*/
9 M/ W6 d% Q5 Z4 W if(upp_error_count != 0)" L: G5 i8 }2 E, d5 K9 C1 O2 U
UARTprintf( "upp_error_count=%d\n",upp_error_count);
( [/ t% J. M( q7 v, |& v4 _ else7 e0 }# [) k3 {4 |; y7 z
UARTPuts("uPP transfers complete!\n",-2);; [$ f; m4 |0 ? o8 C" S
3 q, u: f8 Z% a2 I3 I UARTPuts("Do you want to print all the data?(y/n) ",-2);8 L1 }- P1 Y/ R( C& |( e
UARTGets(ch,2);* C2 A. d% W7 [/ z" ]: i$ p
UARTPuts("\n", -2);+ N4 q+ Q; G9 Y) l
0 Q* r) U/ n, A, o* v2 } if(ch[0] == 'y'); C0 E1 D3 V2 \0 M
{/ ?* L ^$ z6 ]0 u7 [
/*打印全部读到的数据*/8 E$ l5 W- h! ]+ h
for(i=0; i<upp_frame_size; )$ X( ]$ c2 Q* b
{
% G7 V# t6 G2 C5 F6 n for(j=0; j<5; j++)
2 H6 U+ ` ]1 G {
9 y7 n1 n* |. b- r2 K, U. v; Z+ @ UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);' R8 }) k/ }6 P h# P0 `
i++;
4 ^+ d E1 C2 b- S- B# c //if(i >= 4096)7 Q( K/ ^! b1 r ?
// break;
. A% Y- ?* U) Z
* A' R, O- G0 \# e+ f7 S }. C5 b" X. H/ m+ `5 h
UARTPuts("\n",-2);& T/ C- @9 l1 F; }: C
}' w0 j: f- t6 H' J/ S* v
}
1 m ]4 X% s U n' Z7 V8 O, f. y* _0 m( `
} f" I3 \0 _5 Q( a" v; ~: b1 a. ]
1 J# M, ^! ?. j
( P2 @ m$ c' H, n. s m
|
|