|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
, p+ D* ~: v5 x; W! aVoid UPP_TASK(Void)9 J5 A; e4 ?+ n& x+ Q# O
{1 l5 n" o0 b' m" @* g
0 X8 ^; \6 e4 @ w' u: B
int i,j,k,target_int_count=2;) W# S9 F3 @; C8 Z
char ch[2];
4 ]( P$ ?! H; L8 r6 ], Y% z) v" t! V/ d0 [
6 n% @) J( y' k( }. {0 x9 m
0 w% s) n' Q2 @* ~& p* S# ^5 T
upp_interrupt_count = 0;2 X7 W3 _% O: I+ u5 a6 `* h( T
upp_error_count = 0;, U1 P% G4 f$ ~/ l& D8 g2 P5 V& M+ D
# r+ q c1 s+ ^8 ]7 e UARTPuts("\tResetting uPP buffers...\r\n",-2);6 n8 b+ u& [1 r+ t8 S$ z% \
// Initialize data buffers
]: Q) F% K# |) l3 f. j for (i = 0; i < upp_frame_size; i++)
5 w6 B |2 Z# J2 T& N {
* t* S. S- h* k. h) k* h9 @1 G& Q J upp_buffer_b =i;* k* A" R! [3 S. I1 `# A! ^1 R; |
upp_buffer_a = 0xDEAD;8 u0 o) W& o* C. V( ]
}0 K7 ?& u& U6 n/ ^: \9 F) r
8 w: C4 c0 ^9 a5 h
//for(i=0;i<1024;i++)
4 @+ u) U4 M, U, N4 K7 y, `( J# C // temp=0;" C: {- }1 ~6 I. G0 y" h/ P1 M* h
8 m$ @% D2 m; b/ S$ l
//UPPReset();
, F& H9 T$ w0 m /*启动UPP DMA传输*/
/ x9 D# I5 t8 ^8 e7 Q( f UARTPuts("upp_prog_dma_i\n",-2);$ H% V( [6 E, M# C- Y4 X% C
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;) r7 l* w+ ^8 y1 r
upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
0 M- n# w( X* u: Y/ T" c! ] upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
( L) A5 N7 f! ^$ Y6 R7 K6 X* P3 F
0 o V' K( U4 s+ x UARTPuts("upp_prog_dma_i\n",-2);/ T9 {# q5 l& X1 G# i. r
upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
6 a0 [. `& P$ o) ? upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
9 H, e3 v1 E$ h upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
e- D/ |9 e" N0 g P! Z! F" x$ |" ~' d+ Z, W
/*等待UPP传输完毕*/
4 Q1 E! d+ n* w6 _8 o0 m, T //i=0;
$ N7 U5 i. B- l4 N //j=0;! m) ]" g- i" w/ I+ T
while (upp_interrupt_count < target_int_count && upp_error_count == 0)' b1 D1 f, G7 W% H6 ^$ [
{
" M6 O; |- k u9 i8 | /* 测试UPP传输的同时操作普通DDR数据5 {* k3 J- e/ @- A# n$ e4 b
temp=i;
- D( F( L1 D" w4 [, O i++;9 H n7 l G& Y- Q* D- V2 t
if(i==1024)( G$ {2 q9 o6 |" T( I
{ x0 w% ?5 L- ?- \! r2 H6 j4 b; `
i=0;6 g( c% _) \8 z' U& I3 ^, f
j++;
# d/ t' e! Q6 ], ]( ?+ B# [" F }
- M0 G, K6 [0 u */$ |) M- \- K8 g# X' B4 r+ w3 s
; z2 W# h# M& O$ P y: Y' m
asm(" nop");
" j m1 |0 `1 r" i$ M: E% m7 ~9 J
Z: U4 O$ \7 J% e, X; Z: e //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);! q: {9 z/ e( R: e- A$ q7 I; l
}
1 ~7 C) @, n# H( W: K z" X3 z6 g; H! _' G3 C$ A: H: H. ]
/*检查UPP传输的数据是否正确 (loopback modes only)*/
/ f4 S5 b: X% x! E! F5 n. B! q8 p //UARTprintf( "i=%d\n",i);) r: O" }0 ]/ B* L$ t
//UARTprintf( "j=%d\n",j);7 f0 y$ k; `/ h3 J% O7 c+ e
UARTPuts("Data mismatch in buffers.\n",-2);: g& }& u# L6 }; x! h& o) l
if (upp_interrupt_count == 2 && upp_error_count == 0)
' T& C" Z0 f7 I3 j; W {
) {- h, ]4 O, ~$ T for (i = 0; i<upp_frame_size; i++)
. e/ V0 G' n; Q# R6 p {
/ c: V/ {0 G" b; N O$ e1 m) t if (upp_buffer_a != upp_buffer_b): z0 h; `6 W7 h* f
{
7 B' z j( M. R" c/ w, B upp_error_count++; S4 L( W! h: h- y6 g
}
: O" p( H! e, n. u/ h }
- \- x3 t& ?8 f# `: n( r" Z }- W' A2 v$ l% D5 S1 z2 D
/ U8 C. d" y/ t' m* Y5 z; r: s2 r& P1 U
/* 报告通信结果*/
) A7 Y7 i0 M9 L* E( z0 s if(upp_error_count != 0)
$ @; U- U: b0 Q1 C6 E1 ? UARTprintf( "upp_error_count=%d\n",upp_error_count);
* Y6 }: u( L5 n( j5 s) \8 ^) v else2 l/ K; N/ A# M, J0 c* V: f
UARTPuts("uPP transfers complete!\n",-2);
( G& @( N5 B" ~+ `/ Y
. Q/ b6 t2 }, r" ~ UARTPuts("Do you want to print all the data?(y/n) ",-2);
) H7 D- I! O1 E' y; } H4 U2 M7 j UARTGets(ch,2);1 [* Q; V& Z/ a+ r
UARTPuts("\n", -2);
% h) u1 H1 s4 k% A5 N( M9 \- G( ]8 V0 j
if(ch[0] == 'y')# O4 }) a2 h& S/ c m& t' C
{
# ~3 `& F4 V6 \) Z/ `5 V/ y4 q /*打印全部读到的数据*/
% Z4 ~4 Z* p9 `0 I for(i=0; i<upp_frame_size; )2 N# w w5 j9 m8 f9 b Q9 E' z
{
& y% ]4 }3 I4 ] for(j=0; j<5; j++)
* n9 j+ D0 }' L @$ D6 F0 z {1 i' g' I1 J; F# P1 A
UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);! d1 \! S7 d' E8 @/ g
i++;
, a! Y) J& U: L, q& z" I* i; y' { //if(i >= 4096)
9 k( r, ^! r+ S- F: x // break;
) E( `' a( N4 ?0 k. Q6 l
7 I4 U5 u5 I' `' H }
' y+ {8 f" |1 A! [: ^3 ` U) ^ UARTPuts("\n",-2); Y' e( e% G' w: C5 m _
}' D# z }: t- r. w
}
; M7 F q. W7 \) I+ k# W
. I. c, x( e& |+ m" Y! O' x `}
( g" P1 m, g0 Z3 i
7 q. G) Q) t. q" J6 I' m' u n
/ P' X1 ^# |+ X* t0 X( S |
|