|
|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
7 S5 l" M7 H( O' q2 Y, E; ]Void UPP_TASK(Void)
& ^1 x" V9 a; ^/ w+ {/ s{
0 t- Z) ^) l+ ?( P) w4 f
9 Q Z* H! [6 M& p int i,j,k,target_int_count=2;8 \. r' K7 ]5 e4 Q& k$ r
char ch[2];
% Y: O+ u- l1 S! ]/ P( }5 l9 ^" v* ^5 _( G# ~+ Q" w
- |# ~. \! W- q+ j F5 Q# m( f% k
upp_interrupt_count = 0;
; @# L7 R& H; {9 e3 U* t, S. L$ n. U upp_error_count = 0;7 _ B5 F2 f+ T- k6 L. \* E
6 h, A3 E5 N. ^. S- ~' M
UARTPuts("\tResetting uPP buffers...\r\n",-2);
4 P: h& n& l6 Y5 X! Y/ i6 v/ h! S // Initialize data buffers+ a( d2 T( Y4 P$ T$ E% O
for (i = 0; i < upp_frame_size; i++)
2 M v1 i2 Z8 X/ J' L { s- D9 o/ z; ?
upp_buffer_b =i;8 m6 E) j1 \% v$ b
upp_buffer_a = 0xDEAD;
! s0 v' ]- W$ P9 b! \( D/ m( c# u8 o2 a }/ D& f( q- ~! y. S/ \& A$ c, W6 ^1 A R; c( G
) a( `, J8 l& C5 [' ]
//for(i=0;i<1024;i++)
- ]6 ^7 G! ]: `. ] // temp=0;
. o& G3 ], P8 |$ y' M9 B* E& x* m3 j' Q6 ~- I4 V
//UPPReset();$ |5 t( v+ b4 R8 o2 A- Z
/*启动UPP DMA传输*/
2 y# j, [" y1 b0 w: T/ [* @ UARTPuts("upp_prog_dma_i\n",-2);
' [/ k/ k2 t+ N, l9 c, u upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
4 ^$ Y+ f# L( Z D; I/ M# T+ m upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);) B, e, k: {1 _1 g
upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
7 t2 V" E) }" L" H# ]8 X9 y
, J c. j: k6 R- J; c UARTPuts("upp_prog_dma_i\n",-2);7 {; b( {* M9 K* X& U
upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
: n6 D$ M8 {, b7 K upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
) l% K- Z# X7 x" Y upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
( B' u, g, R/ Z: z
' @! x& [. N4 C4 z* K' M2 b /*等待UPP传输完毕*/
5 _4 Z6 |& }1 X0 N) t& ` //i=0;' X0 y8 q; c R) X- q/ u- b: m. u) n
//j=0;4 u# o7 f% F8 F# c3 g' v$ Y
while (upp_interrupt_count < target_int_count && upp_error_count == 0)' _* R T2 Z6 ^2 b9 V# b
{
& [$ n& `# G$ Y /* 测试UPP传输的同时操作普通DDR数据& O" L6 Z+ H2 ^' j
temp=i;
6 k8 h% F9 j! { W* x i++;
1 G [* z3 M" Z4 ] if(i==1024)
1 N; Q; p7 @6 z0 O# A0 V {
6 h/ {0 i1 z: F- J i=0;
6 y2 o4 G+ ]) i) K' _4 R4 r- s( u j++;4 n3 r& X% `$ h2 r) ~! m
}. S7 M+ W' z5 M! i, i$ A
*/
5 b. ]8 z% v) O" a- V, D+ |9 Q2 W% V! l
asm(" nop");
5 z3 n: ^; V& q1 S3 V2 a# |5 y
6 u7 `5 f) h- K+ p+ B7 p //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
N5 E5 b( ^4 l) F+ x2 p }) @ z) X0 w' @
8 c2 T$ f: p7 x( l$ e5 K2 {( H: { /*检查UPP传输的数据是否正确 (loopback modes only)*/
|% ^3 L0 K2 ^ //UARTprintf( "i=%d\n",i);" I. S! {) a1 ~( @: j: L
//UARTprintf( "j=%d\n",j);7 [# |1 k% n4 o' O( S' R2 f7 D2 V
UARTPuts("Data mismatch in buffers.\n",-2);% A' j: P; |' Q5 d% d7 H5 R- E
if (upp_interrupt_count == 2 && upp_error_count == 0)' F( A! w8 o* Y+ Y
{0 P; g, w1 U1 b: e0 i. O9 X
for (i = 0; i<upp_frame_size; i++)
6 w I1 v( ] z$ O* u! |3 ` {' b) ^6 ] E( t. C6 A' v
if (upp_buffer_a != upp_buffer_b) L, z" t! [8 \* ^
{
! B/ G* Y7 E3 J( T8 ^ upp_error_count++;8 a; x( n2 J) m0 \; z
}
/ h; d* P3 R4 c! X! V) e5 d }0 [( d& C" R; r6 B# ?" F }
}+ ?, c. W% F5 H# ^" O
* f' E3 c6 p* Q' G4 a% K( K4 b /* 报告通信结果*/ ^$ _2 ]/ G# L
if(upp_error_count != 0)6 \7 u+ P! ~0 n" ? K) z9 e
UARTprintf( "upp_error_count=%d\n",upp_error_count);& y6 N- Q! P+ E7 ]& V# R- i+ c
else! s& k! D0 c" v4 p9 n
UARTPuts("uPP transfers complete!\n",-2);, E+ p9 w( e7 A( l6 T2 U
8 h* @$ k/ L% I; n' A+ P
UARTPuts("Do you want to print all the data?(y/n) ",-2);
) `1 q: ?7 p% G7 Z$ V2 }$ D F2 s UARTGets(ch,2);; | N& \6 U4 v, l, n, F
UARTPuts("\n", -2);
6 ?9 x% ?; G/ a7 ^5 R8 B3 L8 v8 T, K- ~
if(ch[0] == 'y')
! C4 C$ l, Z* r, A5 R/ h) ` {
& u/ K: ~- k) Y4 l5 _# C /*打印全部读到的数据*/
: C. e4 v: N$ l% X: B$ C for(i=0; i<upp_frame_size; )
+ \/ M6 f& t5 u! X4 n {
. }% f7 c2 k# L1 D3 c" T/ V for(j=0; j<5; j++)
( v% a8 T+ G& [% F- ? {% U* m" }# K, N* O0 K m) `- i* s
UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);+ @4 \2 E: [' K3 n
i++;
, h/ b3 q+ z/ m; b! g: y //if(i >= 4096)
) s. ?, O8 I$ i // break;
, _$ J3 e/ L& F* e
4 F( b, D7 y! M/ q }
( `- e. u" [6 G) K8 L$ ~" E UARTPuts("\n",-2);
% d1 @# @* d' }1 F }
2 P6 e1 j# B, w% G# j* y) d }
6 C3 r, Z( G. P, k H% X' T ~* C, X; G# o3 V( _9 H: h# @4 S% Q
}
- e( Y$ h4 B) n; Q9 e
* X& q' c n/ x. ~# u0 ?5 `# V0 C" A9 w6 P* q
|
|