|
|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?. x( Z& I2 E; K0 E
Void UPP_TASK(Void)
. w6 g3 ^/ z) [& E Z& \ ?0 i{
1 ]& O+ j2 [. P* d; r; F7 l/ Y/ {* [; V# N
int i,j,k,target_int_count=2;
& _/ i. ^* }' |2 d4 b3 e- Z char ch[2];
9 i( l7 S) U" I8 I$ L+ |2 ]7 b7 ~' D. E. l) M. b- P. H8 G3 Z
# ?- m3 }, V, i2 I) d) K) Q1 e
4 l) X; o: M7 W* C' R0 e5 |5 t upp_interrupt_count = 0;
) o' U0 f$ K! H* R, s! ] upp_error_count = 0;: [5 y' l% Y( Z8 R, A T# {
2 `2 V, A7 g6 q
UARTPuts("\tResetting uPP buffers...\r\n",-2);; e7 F7 A# p( @ z0 {2 V4 @
// Initialize data buffers2 E* |! u, X$ H4 b- _: m, l; J. f
for (i = 0; i < upp_frame_size; i++)+ E2 l$ o8 W$ }) w4 E7 c- K6 R
{
6 R V* D2 n I8 a- b upp_buffer_b =i;
/ ~" R. W! b/ F; A$ s2 |" m upp_buffer_a = 0xDEAD;
* N% C9 @' x7 C4 R }! E/ b/ M/ M# p$ p" P- y) n
; J/ X7 S7 @* x+ V H& | //for(i=0;i<1024;i++)* Z r4 y% p2 ]6 D ?7 @
// temp=0;: e# X- d. x" [5 o! n) u2 |/ m
% A0 O: L5 ]2 B n+ M& d" `9 k
//UPPReset();2 x3 I" h- H8 g/ I! ?4 K
/*启动UPP DMA传输*/
5 I Z; r) G+ J" R. i2 R; k UARTPuts("upp_prog_dma_i\n",-2);0 R$ r r7 l( Q' M9 O3 ~
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;: [& r, z: I5 u, p* M j0 Y
upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
4 g4 N) o! y9 m. \, U upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
" z, L* W3 x; n+ s4 g: R& u/ W/ `% s+ q. N" a7 d2 z0 V
UARTPuts("upp_prog_dma_i\n",-2);- Q# |% }& A% K7 d0 f# t0 t
upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;& |3 @$ \+ s1 o* ]$ k) c
upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
/ J( [ K: }( B1 V! m- p" f upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);; F* e3 O% v0 ~* F
! z5 [' ?4 a9 ?+ M) L% s
/*等待UPP传输完毕*/' O* w- J# n3 e2 F# d8 G J
//i=0;3 e& N" k# U3 q
//j=0;( x; t6 ~0 q+ R% ^- ]
while (upp_interrupt_count < target_int_count && upp_error_count == 0)
1 e# e8 Y: h) ] {
9 m% ]- T' v6 O ~3 ]7 H /* 测试UPP传输的同时操作普通DDR数据
; u0 ~6 n' }# w; q temp=i;
6 p4 v. f5 a5 M0 l. b i++;; r' D$ |8 P9 g9 T4 i
if(i==1024)
. ]5 o S1 C, c' p9 x2 b {8 V* i7 O; }$ Z S( y" b6 ~
i=0;
8 N( A# r8 @ O: ~( K4 u+ R j++;
% f' I1 {/ E0 t9 i" i! n0 ? }
2 n, T- e9 ?7 \/ _6 J */
1 x, o9 u! G' A$ W7 x- O: F$ O" Q& u3 J: ~
asm(" nop");; M; t7 O+ u: _1 ^- Q
3 o; v3 J/ u( D3 e5 w //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);* X$ ~, j* u! b3 f
}2 n# |+ Q8 C6 @/ c( `; o
& Q: D# t( ^2 j# j/ U /*检查UPP传输的数据是否正确 (loopback modes only)*/" G* s% S: }5 p
//UARTprintf( "i=%d\n",i);. H5 v, }5 e" G Q" W6 a2 ?
//UARTprintf( "j=%d\n",j);) Q' L! X" u7 H w
UARTPuts("Data mismatch in buffers.\n",-2);& @# m' R+ _. r: Q& u
if (upp_interrupt_count == 2 && upp_error_count == 0)
4 g6 V1 S% q E1 ~9 `0 }7 h6 Q5 }! I {
3 k* U$ p, y9 x2 U5 A2 b for (i = 0; i<upp_frame_size; i++)
6 D, J3 G C" F/ }7 W, o {
% I4 I7 [( _1 t5 S3 o if (upp_buffer_a != upp_buffer_b)
% @: p5 D. p- E d) t7 [) _7 H4 e' f {. l; ?1 N4 }/ ~9 C; w$ J# {
upp_error_count++;
, E+ d9 g3 K1 X* }+ g. F }. z1 Q8 v& w: b: E) w! X* [. T2 g
}
7 e; V" O6 |) o6 w }: m! Q3 t0 T9 {5 @! K
4 h3 a% n3 ]4 D5 ?6 [2 q0 S8 Y' m5 v
/* 报告通信结果*/
" |1 o/ t, |' J5 o$ \ if(upp_error_count != 0)
1 }/ T! q4 f/ ~; o UARTprintf( "upp_error_count=%d\n",upp_error_count);
6 d( a- h/ V7 x) \4 e" D/ D! Y3 t else
6 Q3 T- ]3 B6 ? D UARTPuts("uPP transfers complete!\n",-2);
5 ^6 v C! L7 i2 y& R' d1 r
& @% }! F) ^8 x3 x; |8 g! Q UARTPuts("Do you want to print all the data?(y/n) ",-2);
; ~" S; E0 d0 s8 Y- h6 A UARTGets(ch,2);8 r* l1 O- e; O9 `/ t
UARTPuts("\n", -2);
P5 c; p, S5 n5 J0 r: @4 S2 \: t& l+ l; X" Y
if(ch[0] == 'y')+ d T, c* u3 b5 s( J
{$ v( |0 r2 z1 @* \1 v, S: _ j
/*打印全部读到的数据*/2 Q6 R+ ~& b. l) k3 M: B6 a, B
for(i=0; i<upp_frame_size; )9 N5 u5 q8 s. P6 K# X
{
; ?; Z, X& E0 P4 v! N for(j=0; j<5; j++)/ ?, a1 V8 g; K. z. \) p0 u" a
{
. I( h( G2 Y |: ]: t UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);3 D- f, X# m4 k' l, l1 D: ~, f; D
i++;/ s- E/ g; t. u
//if(i >= 4096)
4 H3 W) r! v- A- D* B* _ // break;. \6 M8 t5 t4 K+ ~) Y& [7 N
: o0 Z* m6 [" Y- s2 X& v% C
}: E5 D4 u& H0 r, E* }1 N
UARTPuts("\n",-2);- a: d0 [% L& @4 j. U/ _
} q; \, M$ s7 S& i
}! E6 Z! O) ], D" `) T% q G, k
* I A: [: P. o! L- J; g
}
" }) r; X* @! F, h; l; {
0 E) O: p7 h) y; p/ F8 N. m8 \0 `
& ] e# r# W; t$ N! j$ l( A |
|