|
|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
2 p& v6 p' h" ? j" NVoid UPP_TASK(Void)' Y, c d) ?/ h" G0 m/ G: Z
{
; ^- \; _0 i6 f; f
$ m: G2 _; V! P2 Z' p& d int i,j,k,target_int_count=2;
# w0 y4 u2 b/ i# i* n char ch[2];
5 t5 J& c8 ~8 m& H8 t% s# R4 ^% Y# H5 P+ c9 e
. g' g3 z: K/ u! Y5 U2 M2 m# O
/ J7 o v! |& m+ m0 X
upp_interrupt_count = 0;9 J; ^) e) m4 H( u# J
upp_error_count = 0;
3 E0 T8 E, ?, @3 |: Y% c6 v3 N, S. M+ o! r# B
UARTPuts("\tResetting uPP buffers...\r\n",-2);
- O. o' r B& P) ?) W% [ // Initialize data buffers
1 T3 V% R A0 C3 [5 M' X S for (i = 0; i < upp_frame_size; i++)
4 e# v( h8 {) }& n( r' s {
4 J+ t4 s2 T: f1 t* @) b! ~ upp_buffer_b =i;
' b" S9 Z3 }2 p$ h' e upp_buffer_a = 0xDEAD; C0 z$ Q0 {8 E$ M: h7 c
}+ e2 v3 g- l1 n$ Q, ^
. G8 W, {8 y9 b: G. ] //for(i=0;i<1024;i++)
0 R% j3 [& b% `3 b0 ]8 T2 O // temp=0;% |; r; x* s# y. t! U' ~
( I A! _: ]% c
//UPPReset();
3 e$ `( Y. g( |, `/ Y# [ /*启动UPP DMA传输*/. ?6 c7 e) b6 ?# K( F
UARTPuts("upp_prog_dma_i\n",-2);6 X0 g2 j1 ?3 F0 ?7 y
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;2 a8 u/ p0 C g3 }
upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);5 W9 S/ s3 a$ K9 N, I4 r$ ?
upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);: e! e- ]( p6 B. I2 \
1 [1 j" w2 D9 O7 u UARTPuts("upp_prog_dma_i\n",-2);
0 \4 L! Z; T' l$ N upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;4 F' Z2 U4 z K+ L: J
upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);: ?( `6 y; K1 G0 ]- B
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
% v$ L: T$ [7 H8 W) x% T( ]+ K' r) g
/*等待UPP传输完毕*/+ L9 \+ m3 }+ h+ e" T
//i=0;" u$ `6 O$ [* [" O
//j=0;& N G; K' k0 h" J+ I
while (upp_interrupt_count < target_int_count && upp_error_count == 0)5 w, q0 W3 m8 H( j! y
{& Z$ W% a1 x) p+ U' |
/* 测试UPP传输的同时操作普通DDR数据
3 x- G1 ^1 n- b7 j2 u; H* v temp=i;
& u' E! t9 Q' g' X9 k1 q i++;
' S1 R7 b0 |# y if(i==1024)
8 Y: S. i, Q+ W G S/ F! R: L {# k: r7 f& W! D8 p
i=0;0 R q0 }6 ]( _3 i
j++;
* ^# E" U( @5 Y- }1 d }
( u! m/ g) W k# ^& N* m' x G6 J4 M */1 b( c8 [7 W$ Y& V) }* O
$ e4 }- B# d* L) J6 T @, { asm(" nop");! K. n# A3 L% n$ }4 q/ P
3 a3 C4 g" X5 n
//UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);. j! Q8 j5 K( z, c3 {3 \
}8 r9 X: N6 D( t9 t+ p, {
- j/ ?6 z) V& l, _' P) s) h /*检查UPP传输的数据是否正确 (loopback modes only)*/
- a P- i& k( n& E% x5 g) p$ o% u //UARTprintf( "i=%d\n",i);
, v; S. ?* ?7 p2 }6 \ Y //UARTprintf( "j=%d\n",j);% p3 O6 E; Q" \5 k# e! Z
UARTPuts("Data mismatch in buffers.\n",-2);2 P6 v" W: ~3 x( j0 k
if (upp_interrupt_count == 2 && upp_error_count == 0)
) S1 L( y, o( {6 |% F* F! I4 e2 s {
2 Y$ b f; B1 n& Y: {, V w for (i = 0; i<upp_frame_size; i++)) b8 M8 Z7 P7 L4 O
{7 G( C" O$ s5 B7 i* C7 {9 t7 O
if (upp_buffer_a != upp_buffer_b)
; `6 M# T% n8 F9 P {
! {: h( v, f' K/ X6 [ upp_error_count++;
0 u- w6 N/ f# H0 ?7 G+ ~ }
# D+ ]; M+ Z M% Z }
7 Z9 j# i1 ]# R" k$ {7 |. [. p8 s }. o% G. H0 w1 ]$ m* W
i3 ]* R, o% y5 K
/* 报告通信结果*/9 r6 q8 f& e0 I$ {
if(upp_error_count != 0). H5 ~3 _$ p. y. Z" ^2 t- g- H& ~
UARTprintf( "upp_error_count=%d\n",upp_error_count);
. j/ t2 f; R* }( v0 X else$ j% d C( p& b$ K/ J' z6 l* _
UARTPuts("uPP transfers complete!\n",-2);+ K8 V0 I% ?# J; p
+ ]$ a) d" R0 t- a: }& H UARTPuts("Do you want to print all the data?(y/n) ",-2);! E9 j/ O6 B3 u7 j* b
UARTGets(ch,2);
1 \% y' u J% c1 r1 w8 A9 G UARTPuts("\n", -2);
6 Y: G c6 ^+ E0 B% n$ |7 v3 `/ c) w. q, a- |- k
if(ch[0] == 'y')
, A1 b0 ~" l1 q% p {
/ ]; \/ g2 |' \2 S$ _* A /*打印全部读到的数据*/6 T" `1 P0 g% k4 s, K
for(i=0; i<upp_frame_size; )
& U" B. c% L V0 T | J {
! j7 Y* T% ?7 [" X/ C/ W, Z& ~: R z for(j=0; j<5; j++)4 }0 I9 ~ v }+ _7 P, a6 p
{* l* a6 k2 d: X" H' W$ b7 h( N5 n; B
UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);, B/ P6 |/ S. ]5 k- q
i++;% ~/ a" o. O. h6 _% A" B) \
//if(i >= 4096)
8 G! m3 }9 k' j, [7 j // break;
9 ^$ J) y. L! z# H. ]: a- I+ h. n! X! L5 p
}
; H) }) s% d+ m' j' P UARTPuts("\n",-2);0 o/ }7 \5 n! Z& w! Z2 D" b$ _
}( V% b4 s: ]$ J
}2 S4 D, i0 V# _5 y7 t
0 Y( w+ @# s0 S
}- v, Q# B" N8 }7 Z. K' B {/ |
: ~. L0 u, _9 D/ p/ f+ U7 q7 G9 R1 X. j$ T2 l" y( @: U
|
|