|
|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
- G- q7 Z4 S+ f. t$ K) Q/ zVoid UPP_TASK(Void)) G6 L6 ~. a' O! a& _: T3 O! s
{1 @7 }1 Y; X% N. D/ H: W
& E$ m+ a4 U5 M4 P7 U
int i,j,k,target_int_count=2;0 n9 _& [9 `- g% C: W
char ch[2]; \! I0 I+ H; A, I% I7 w# |
: O$ |# |& z1 N p; h" ~5 T3 }# S7 V9 P' t( ~' A7 C* m! }
3 N0 _- ^9 l- y h+ e* O upp_interrupt_count = 0;" [5 N) j/ q; l4 a
upp_error_count = 0;
3 w2 |% v. m: _+ n
( t& p6 q4 a& O W+ K% T6 t UARTPuts("\tResetting uPP buffers...\r\n",-2);
2 s7 W. O3 [8 N" ?9 L6 l // Initialize data buffers b/ O- W1 z" F) c w- _
for (i = 0; i < upp_frame_size; i++), \1 }& q3 Q0 x
{# O) b" I9 X3 c/ P
upp_buffer_b =i;8 m- f" S/ D9 a1 M, E6 ~; G# }, s
upp_buffer_a = 0xDEAD;. J1 Q+ r! Z; c5 E' m, U. P
}
* Q- E- L: [8 g
5 X/ N. V# s% z0 Y& F2 O' m0 F //for(i=0;i<1024;i++)/ A6 I) p* {: |) ]5 h& k1 {# D- Z
// temp=0;
; t/ j+ @1 M" Z* \8 m7 F8 g4 `' E: Y5 d/ \3 b% M
//UPPReset();5 h5 i( \/ H. T8 j% _, c5 D% b
/*启动UPP DMA传输*/0 w. L' r! h9 `' f z
UARTPuts("upp_prog_dma_i\n",-2);
( R( J3 f6 q5 }4 v2 p" I upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
( s+ L6 X. z+ U2 E6 ^ upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);2 v- f' o8 U1 S. N: R, u
upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
% R1 ]& h8 E2 o3 E' D; ?" M! X \# V; o# r- D. n% q6 |% n- ^. P
UARTPuts("upp_prog_dma_i\n",-2);, T9 \1 O( P6 x' w& v
upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
- z4 N. S$ c# J E0 K upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
, m/ W7 o* C6 f6 g' S$ P8 S6 R upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
) y/ |4 Z0 h& H& I' e9 W8 j
* ^" | z+ \8 N4 T6 I- R /*等待UPP传输完毕*/( M# U- x% f. \1 Y. }
//i=0;
' D& d7 r6 M" k //j=0;* G+ u7 \! U! J- @
while (upp_interrupt_count < target_int_count && upp_error_count == 0)
6 ^, j$ O/ K, W; w$ k {
/ S$ g O* z5 ?- Z. F; W /* 测试UPP传输的同时操作普通DDR数据
! H' N4 \2 i/ D9 z9 ^) H temp=i;: V' X9 _3 j2 d" d6 j! C
i++;6 D4 \ @. ?- q6 P& d% F5 D
if(i==1024); g0 z2 M& k5 g
{/ E, ~% u0 ]) p6 k$ R: o
i=0;- h! q( E9 F1 Y' b- _- m
j++;
% O8 Z. c, w* @- k& x" y' }& F5 J }
$ z* I; v) z/ L+ d0 P */2 d( ?, D `. c6 }$ O( c# R- ] t4 E
, W P: b5 h" }) w3 S
asm(" nop");$ q$ k+ M$ l6 p" Q0 ?: [
/ @0 M' m8 O; i6 _6 Y //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
; S3 D7 ~# p3 ]7 B1 L+ y- Z }
j+ B) W5 f3 \ A8 i# k- Y8 Z
5 U6 H# ]3 T/ M& G- v /*检查UPP传输的数据是否正确 (loopback modes only)*/4 A! s* r& B- ]! z& R7 }! j
//UARTprintf( "i=%d\n",i);% g* o# w& Q( {4 F' e$ ? x
//UARTprintf( "j=%d\n",j);, L: B# p; n7 Z% G
UARTPuts("Data mismatch in buffers.\n",-2);
) y+ C1 P) [' p9 F- c* V if (upp_interrupt_count == 2 && upp_error_count == 0)5 f" b# n$ u8 L, o) r( c
{
. Q/ d6 i! P: Y, o! e- h* g for (i = 0; i<upp_frame_size; i++)
9 b# n8 Y$ K4 a1 j' k" c {$ g" C* ?+ L+ f
if (upp_buffer_a != upp_buffer_b)
! _% Z& v1 b5 G {
: `' S7 o- x t. K M: Q2 | upp_error_count++;
; J7 M' g+ [' M }7 s$ p( o* [1 z
}
k1 y5 B/ ^/ Y' C6 i/ Y }
$ p0 z) V# n+ t$ l6 C3 j6 z
& E- L- s; B& k M7 w j /* 报告通信结果*/) S; Z# `$ o6 v- Z* m
if(upp_error_count != 0)
+ ?7 i2 d- e4 U' O+ @ UARTprintf( "upp_error_count=%d\n",upp_error_count);
1 X% x0 u. M1 P& ~1 F3 K& x" B) j( W else/ K1 s H4 f# }/ @2 J+ A# G0 } h
UARTPuts("uPP transfers complete!\n",-2);4 ^/ \3 Y2 g q$ ~* Z x
/ i" v! y9 ^7 ^/ F O6 k H/ X3 U
UARTPuts("Do you want to print all the data?(y/n) ",-2);
3 j; @* D. H0 o9 i- |- D: l; a UARTGets(ch,2);
" W/ y V& i$ o UARTPuts("\n", -2);6 r! ]# |8 t6 [7 p$ O
+ R8 E: D% P+ V7 a9 I if(ch[0] == 'y')9 v+ r" g2 c! t2 i& a' f
{
% M/ ~+ t6 G) A; } /*打印全部读到的数据*/
6 i' W- n1 h) a; L7 \; ~2 l for(i=0; i<upp_frame_size; )
5 D, L. P+ Z0 \6 S; ]/ m {
% z% U m& @. n% B1 K8 G/ } for(j=0; j<5; j++)6 m- W1 P" t& w6 `1 Y4 m8 N. Q
{
) y8 A8 N- a3 f UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);2 s) t% Q9 K4 h6 {4 m. I
i++;) b ]$ A+ P' i$ I9 J
//if(i >= 4096)! \. k0 f6 O# y7 Z& r
// break;
& i+ k ^$ l$ D
6 L& A) b9 R$ p. R U' r: |/ z }
4 _1 [# y/ q7 H8 W- J$ m }; m UARTPuts("\n",-2);- a' S! ~9 c4 d- @ u! c( w% [# ^$ z
}! c; ?: \- h* ?8 M4 M9 U5 g
}; ^9 i' \ @* R5 d
& \, c3 N5 X4 j t. s/ S* }
}, y8 c4 b5 ]' d* z
* b# I1 p9 U+ S' Q; b* I6 g1 P( ]( b0 ~# F
|
|