|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
3 d1 Z, H8 ?4 P* C1 Y2 R# n" NVoid UPP_TASK(Void)
) g5 X! s' n: ]) u2 _1 Y{0 Z8 q2 m0 u r, z9 z% y0 Q Y
, p0 o9 f; A; I
int i,j,k,target_int_count=2;' [. |7 r+ C9 Z/ e8 ~( ~
char ch[2];
5 a1 u0 o; Z7 P. B) _3 b& L) O! M% |8 i7 y M
, a5 o* k: h, n8 U" Q# R
' H" ~) o# q+ R8 y8 r1 v: @. \ upp_interrupt_count = 0;- b8 v. b3 L: N$ v7 U0 A4 P5 K1 u/ u
upp_error_count = 0;
2 J% `% p5 _! w
7 x1 e w% N3 {* M" N. \ UARTPuts("\tResetting uPP buffers...\r\n",-2);0 a `% a" D- x7 R4 n
// Initialize data buffers
# T$ C, k. e2 v5 ] for (i = 0; i < upp_frame_size; i++). _# Q) F" M( e! U
{. q8 T* ~. ]' D- |3 d
upp_buffer_b =i;! _/ |, ?! U- u/ Z
upp_buffer_a = 0xDEAD;6 v+ D" Z; a7 w, Y
}
8 g( w9 H d0 O! a+ w3 W- \' P
* k/ J9 e0 d. o3 f+ P% N //for(i=0;i<1024;i++)# I! s! k5 W' y, w; D
// temp=0;' V( X/ G& F- c& W% ?4 z1 `) Y0 Q
0 f/ O( U5 v0 x; p6 I2 h4 {
//UPPReset();
% W. I) t3 x3 k% P" T- u /*启动UPP DMA传输*/
4 v" w( V+ M$ }, a UARTPuts("upp_prog_dma_i\n",-2);! H1 z o' f/ b
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;3 d9 s$ x6 C" o# M
upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);& V8 s4 |6 `; A, O! i! ]
upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
% l8 P6 r$ S" G. e' g. W. h# J( P$ L
. Z! [+ J: o' K( H ~; ] UARTPuts("upp_prog_dma_i\n",-2); |7 s! l' F+ e
upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b; C- ?6 |' p8 J0 Z( P* g$ v
upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
8 P- e9 C- @6 B# T% y' z* u upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);2 q9 M* L2 q& c/ \) [( `
5 y3 l& ?- h5 K' R! U /*等待UPP传输完毕*/; y7 V8 R. `% |; l9 A* K$ A
//i=0;3 r- Z( V' g% A9 Q
//j=0;
* ]. J0 V) q% F b# }; } while (upp_interrupt_count < target_int_count && upp_error_count == 0)
. H! P$ O3 g' y) _( ]' S7 v1 v( F {3 H6 n' [7 S) \4 s: f1 h! z
/* 测试UPP传输的同时操作普通DDR数据8 {/ t% H1 v5 `/ t; O; p
temp=i;3 Z; O y9 X( a- W$ t
i++;
" Z- ~: Q9 j6 W if(i==1024); J4 h; h$ F4 _5 N2 p
{
& ]$ P& Q. `* w- y0 {9 \ i=0;
6 M; [9 R* J: y: M6 n: Y% z% Z* ^ j++;
; M# _4 V' e2 y! x }- k2 J" Q" l# K6 L/ @$ }5 k! K2 T& ^
*/
+ [! U8 `" @ \5 |2 |. b
+ D' |% b% d, x- }6 R" ] asm(" nop"); a' @2 C8 l u+ o2 ]
+ N5 U% f( u' I& m. c. u; {: a% p
//UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count); q: c2 p/ d; E( h2 o
}
3 P; g G! `2 g2 |1 S/ @. ]
( b/ e' J! _ c6 \8 V8 C/ X /*检查UPP传输的数据是否正确 (loopback modes only)*/! M# h& W: B1 u! E, g
//UARTprintf( "i=%d\n",i);7 h, w- R0 A& i$ q# H. v. j6 _
//UARTprintf( "j=%d\n",j);2 [$ o2 Q! S1 C9 U, h+ m( |! \. d/ m
UARTPuts("Data mismatch in buffers.\n",-2);
! P( e. w5 w; ]7 d6 x. j4 q& f if (upp_interrupt_count == 2 && upp_error_count == 0)
# F8 q: u2 [1 p8 C {+ |1 Q: A. w1 p4 ^. k- h0 G
for (i = 0; i<upp_frame_size; i++)4 l3 i; ]/ }1 n: I; O- \( `* v
{
) x! l e, v$ E% e9 ]' l) R& j if (upp_buffer_a != upp_buffer_b)' F O9 B+ |8 o, {
{
. z( q) ~# s4 C1 u/ W upp_error_count++;3 w: Y1 W+ F/ U
}
- L7 X! Z; `2 i. G! f7 a: V7 q }4 N5 ` w3 A! @1 e9 c- ?3 J
}
# {+ s+ v1 E( B+ P# Y& X
5 o a/ Q- G2 ^- Q- k. _+ U1 M /* 报告通信结果*/ I- k0 v: Y- G
if(upp_error_count != 0)7 w) v8 V" G# ]6 l
UARTprintf( "upp_error_count=%d\n",upp_error_count);
5 i/ U: ^5 S" j3 T) c else
- W9 W9 C$ c4 Z2 o5 h* J4 f; R* f1 Y UARTPuts("uPP transfers complete!\n",-2);( R |) K9 |9 Z/ v
5 Q5 k+ P9 g0 R5 [6 L0 ? UARTPuts("Do you want to print all the data?(y/n) ",-2);
! k* q! L I2 o! `3 A# {9 p5 n UARTGets(ch,2);9 C5 @1 }0 F$ W" d% F" m; g: @% [/ B
UARTPuts("\n", -2);3 X* x r* l) g3 r
5 r: w+ h+ X3 _7 `1 ~4 s5 I/ B
if(ch[0] == 'y')1 { @0 a' L) V' f" c/ E( M
{
1 t5 x* B3 Y }7 ~* r /*打印全部读到的数据*/% U9 \' S' q+ F$ S% ^! L+ L
for(i=0; i<upp_frame_size; )
3 T! i7 s- K: _5 h {
. C( Y6 Q% h- s- Y" H3 M& p for(j=0; j<5; j++)
3 r3 Z# N3 _$ @6 U" r {
% A3 m! _) E2 r0 n2 r$ ~ UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);
" J/ y$ Y% v5 f9 K5 h: u i++;
9 @1 T: c N9 a' q //if(i >= 4096)
$ P- x7 Q. a$ ?7 \, p$ g- F5 ~ g6 _7 \ // break;
3 c6 w8 C% x, ^' a' [" t4 R
i8 x; t: v/ a/ D }; [. k& `; b* b* G
UARTPuts("\n",-2);; _3 i2 j* V8 H- C: l0 w3 s5 }
}
/ B4 K' p$ ]% G& `# Y }! p$ ?* \8 j5 |6 \/ ]! [3 W! _. H: W
, b" r6 V! N5 M) i9 @
}
9 d% E- _( U7 P+ d' ]1 X, b( K' ^7 k& |
9 F! z2 s; O+ E. w! T' P, b1 q
|
|