|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
4 |, c* y* O5 f: ^" PVoid UPP_TASK(Void)
+ c9 B0 A5 q: o( C9 ?0 b: X- v; M+ h" J{
, o! J4 }! y9 g* e% z5 C: p
: Y4 H, a: n& y: T int i,j,k,target_int_count=2;
2 n, I! t' H# e3 C; c char ch[2];( p+ d# f: i4 \' J; Y9 Y' D6 i9 c
9 M# q% s% a4 M; B7 Y) I- I
5 O! Y/ x. t" F9 w
# Y4 H$ g p" ?7 [ d5 ?8 \
upp_interrupt_count = 0;
- u2 @' B* C1 j2 H" i! Y upp_error_count = 0;" ~' I, S( m; m- U, v! j Y
$ s/ A. {; M, {2 c# ]$ f
UARTPuts("\tResetting uPP buffers...\r\n",-2);- t" {3 @* r1 g0 e& `: k( Z
// Initialize data buffers
% f' N* l, U$ j5 i- I for (i = 0; i < upp_frame_size; i++)+ ~7 E, N/ q! ]. b E
{( a2 f0 u) K" d# |6 f
upp_buffer_b =i;
& }; f6 c: w- n' C3 g$ T7 P upp_buffer_a = 0xDEAD;5 Z* e9 v. }7 n4 i3 ^0 j a
}2 J, R6 A& `0 ?5 ` |& @! b3 W
5 z( r9 K v5 b5 D7 b0 L //for(i=0;i<1024;i++)
7 e# a' P( T) _2 x/ X // temp=0;8 g, z8 f0 q6 x2 j6 _
N* @4 [. ~0 K& _# J( E //UPPReset(); G2 l3 i! s2 h
/*启动UPP DMA传输*/
! _+ V* _* W; | UARTPuts("upp_prog_dma_i\n",-2);; n8 ^* J& S4 ]
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
. u, z( E5 H0 W" d5 l upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
2 h: ^$ o7 m7 } u1 s upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);" H" i, ]7 A7 U+ z* g3 J
- E. O, z5 q2 e' t
UARTPuts("upp_prog_dma_i\n",-2);
) N, u6 P5 T& M! {! F; m" o upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
+ R( k5 z- u9 e( M9 s/ o7 `" R+ n' ~; P upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);5 b& x. |4 h) h- u: d' c
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);( f8 Q/ K6 X4 z& N8 F% h% F/ b1 r0 F
4 a$ `) Z, O! H /*等待UPP传输完毕*/
# O- _7 [" m/ P7 `5 ?9 x) F8 H. y //i=0;
3 ^9 ]0 I; S( c+ q1 I$ ~* Q //j=0;$ W4 |5 b2 ^8 c! k9 }' m R. {
while (upp_interrupt_count < target_int_count && upp_error_count == 0)
; s/ S- Q9 h5 m- G2 s* V+ H; T {
3 y6 t- i3 l h& c /* 测试UPP传输的同时操作普通DDR数据
, i- b! j8 k6 t9 q' u8 ^) l' A. P% u temp=i;
0 {( _! r: t8 M6 S+ Y. @ i++;
% u5 L! \8 l1 M! u if(i==1024)
! v9 L5 r" U4 }# s/ G3 Z! Y {7 `+ H; h) j# [7 B
i=0;
% ~- G8 g+ E4 X' O* R: Y j++;
) |" B2 ^5 b2 e' \8 \; s } \" \$ K" G' f$ b: e1 z7 k% b
*/
' H) g7 Y6 K. j
/ A' q3 X+ I' w6 v% ^: s asm(" nop");
+ U+ x1 A+ r/ h3 u3 D8 o; r' u5 r0 h. h" G
//UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
* R( ]1 n2 V( P M2 l }
% R/ ]6 S0 D7 L' ~
& D5 k4 w4 a+ ?& m H4 t# T9 I /*检查UPP传输的数据是否正确 (loopback modes only)*/
& ]+ _2 Z- U( x' J //UARTprintf( "i=%d\n",i);
5 Q) I/ g: V0 B //UARTprintf( "j=%d\n",j);1 |3 `+ Y6 \; l
UARTPuts("Data mismatch in buffers.\n",-2);7 c1 x9 u1 B* V/ e) ~' I: K, p9 |
if (upp_interrupt_count == 2 && upp_error_count == 0)
v8 W+ g" ]* [- v5 w. I! K+ @* m {: t. ?2 s! M2 r- c/ M( ]+ N
for (i = 0; i<upp_frame_size; i++), k% v: W2 Q) P. \. u' K
{2 J/ D0 A1 N% x3 ]
if (upp_buffer_a != upp_buffer_b)/ A1 `* U( t( P+ t
{
- k: w( L j" D! }6 D upp_error_count++;6 @3 g1 j- R6 V6 |
}
! r3 w/ O9 k; _# i# z' R. K }
/ F) Y* J1 j7 J" H }
3 C) I# u. e2 |& \# ^6 w q# e; P' h1 N5 s5 c
/* 报告通信结果*/
( I( N9 a, |9 Z& c7 q4 ` if(upp_error_count != 0)
b! c2 S# A* w" w6 ~ UARTprintf( "upp_error_count=%d\n",upp_error_count);
, Y/ Y7 T4 {& S# G else
8 {; J m G! e9 J% @8 E UARTPuts("uPP transfers complete!\n",-2);
0 s$ {- S, f7 I1 ?- s! a; O4 c# y7 a4 [: E% f. M/ D
UARTPuts("Do you want to print all the data?(y/n) ",-2);$ V ]5 G/ X$ \. ~3 u- L
UARTGets(ch,2);
5 u1 ^! @. Z# v7 P UARTPuts("\n", -2);
& l" D/ V" H: h/ s V* V
n# S2 D2 H6 X* U$ Y if(ch[0] == 'y')
" u7 G3 v4 ~( z+ u% x0 H& d& l {
c/ W% y7 [: n( @# |9 g% B /*打印全部读到的数据*/: i9 C+ x4 |' G u( K! _" g4 |
for(i=0; i<upp_frame_size; )
( H6 f% j! H/ \$ F3 t9 x; F {3 I2 o! k% G: d$ c3 O3 X
for(j=0; j<5; j++)
% V1 q9 z3 U' M. X* b6 k {
- Z1 |2 S* O: Z5 z8 B# b* D! d UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);$ f# F) m5 m. Q7 S/ t, U
i++;
; Y* I' B. u% O _ //if(i >= 4096)
8 i r+ R1 L5 p/ H4 g E1 p/ c // break;/ X8 j% w1 \6 q/ r" `# c: L
( X& C& V% \& s: \ }
. L; L, a5 I5 O7 @: n# Z+ T! n UARTPuts("\n",-2);
6 Q6 k0 G8 @0 p- { }
- e$ M7 d e/ h, E }$ q; Q8 S4 K- T3 A9 w3 R: G
, i$ A3 x( W/ t' d% F/ C7 l, ~}
' [; p) X- K& z8 N2 Q3 M( A2 K) L
: W6 |( E% L& e' X
|
|