|
|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?8 v5 q1 F3 O! S7 f s# Z
Void UPP_TASK(Void)
2 r% L+ @! A/ ~% V4 K0 ]{
) r6 | d) r6 m) v
8 o' z8 e( Q7 r |! M `" O) l3 g6 x4 I int i,j,k,target_int_count=2;
6 P$ V0 u+ Q3 K1 I* c: L char ch[2];* [6 m0 @# L# Y: F9 v* o
( h% y. E" v4 i7 a, F! d$ i
' Z! S2 e' S; m1 U- C4 v- J. O! s' F% q- d
upp_interrupt_count = 0;
5 Y# U! N* E. a p# F( a" R# j upp_error_count = 0;
& Q9 q6 M+ i6 C0 e6 I8 C5 I8 F
6 J" L( ~/ S" K5 N U UARTPuts("\tResetting uPP buffers...\r\n",-2);
- ]! K# O; {4 b# \8 P3 L // Initialize data buffers
" J# U g: _3 \6 K/ ]9 M7 _9 I for (i = 0; i < upp_frame_size; i++)
' m& p N6 d" @: h {. `, O9 N# |8 ]( b) d* @3 L8 U
upp_buffer_b =i;, U9 c7 d( r* b* u" ?3 w/ X
upp_buffer_a = 0xDEAD;, [5 x) j. V2 B) `2 Z( ]6 X; g
}0 h/ b. L1 }" o! T. s
: _- u9 ?+ J; X3 }" H# f //for(i=0;i<1024;i++)
0 X) f! O2 n/ J2 c" D* b+ b // temp=0;/ |5 u0 ]: p, A# F
1 y: p& e) [+ }$ P //UPPReset();
+ M4 n4 y8 w1 L /*启动UPP DMA传输*/
. T8 H* c' Z" Y, n UARTPuts("upp_prog_dma_i\n",-2);
% q- \, c5 U' p9 D% d9 @8 Q; k upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;3 {9 a& ?$ n* E( j" j4 X
upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);6 `+ D9 S' e$ C9 |1 }. f3 L' ?- ]" k
upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);& y" t9 e/ k: {2 z' e V0 Q
" s: K/ T" b w) R UARTPuts("upp_prog_dma_i\n",-2);# ^" x* ]2 q5 F4 Q& K/ c9 f
upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
9 |! E+ y1 U3 b# Q9 f# L upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);. D8 U6 B7 v! |; D
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
6 ~* L# l0 U! F$ f+ F5 W( ~" i
k$ y' [3 }) E* g/ u /*等待UPP传输完毕*/- k1 s9 ?, X0 S0 e8 ]( d8 V8 _
//i=0;/ _. V' T# T+ ^
//j=0;
" k7 e% L6 c. y) M- @9 y+ c while (upp_interrupt_count < target_int_count && upp_error_count == 0)
# P* {3 f! }; {- N3 a3 _$ a {
6 D G% n* A7 O$ u; B /* 测试UPP传输的同时操作普通DDR数据
$ S& H$ u' F9 a R1 a, J temp=i;
8 ^. f* @. e5 o* F0 Z; K i++;
/ r0 ~6 `# k$ s8 {* P if(i==1024)3 }& \7 ~2 e$ _& `8 q S
{
: z- P, t" W# R! H i=0;
# N( p; o/ M0 t( }9 N5 x6 ]0 O% N. | j++;; \& }5 p. c' O% T, E9 a3 y
}1 C9 a# d3 _0 A7 z! Q
*/& u8 L% @3 `; C$ A; U
5 {" S( z9 O, [ E6 } asm(" nop");- M: q3 G: \- `. Z$ u7 `( h
! m* v6 X9 _* T% I- q //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);* ~$ K# ?! Y% a6 s4 P& v0 {5 ~
}
) t, e; G6 ?, d4 v7 t! w
+ Y( O% q9 D# w4 o6 k5 g7 D: M /*检查UPP传输的数据是否正确 (loopback modes only)*/
. y! S, ~2 H; J/ l0 r) L //UARTprintf( "i=%d\n",i);
# r; t" ?6 R3 J! u+ m* s- o# D //UARTprintf( "j=%d\n",j);
, | }/ w4 c$ X6 R6 f( J6 j) Z UARTPuts("Data mismatch in buffers.\n",-2);1 P( w) h' r; o5 E& ~
if (upp_interrupt_count == 2 && upp_error_count == 0)
& n1 T3 b) `$ @ {0 U X7 \3 a6 E0 O
for (i = 0; i<upp_frame_size; i++); t5 X3 h6 }' Q/ _1 |
{9 b- ~( U) _+ b7 w2 c
if (upp_buffer_a != upp_buffer_b)
+ L* V0 Y/ D e* T% O1 P; D {
! U; b' N* |( ^7 e. U upp_error_count++;; a0 y3 @% ]2 k% \+ M j7 X
}
3 y7 l3 E$ w, S) R/ |0 Y }
, V! ~& H) Y, Q+ C }
& p7 [: }) I) A0 H) U0 U" D5 A6 _2 t. J( _1 t; @
/* 报告通信结果*/
4 _: ^* n w8 X: N+ W4 @9 E8 ] if(upp_error_count != 0)
8 I" l: T$ _7 A5 V UARTprintf( "upp_error_count=%d\n",upp_error_count);- g- @+ b2 J- w3 r+ e# C1 ]
else
Q" G1 Z5 t* C- H8 ~ UARTPuts("uPP transfers complete!\n",-2);
5 r; m' s" Y0 c g8 @
* v+ D# b8 b% V0 X, E4 Z0 h: C UARTPuts("Do you want to print all the data?(y/n) ",-2);$ {9 q8 g" D% n& F0 D
UARTGets(ch,2);
2 C+ ]( z2 o. D. d R; q UARTPuts("\n", -2);; F+ D3 w8 D& n7 N7 g
, s, e0 X" `; h: B- f; g
if(ch[0] == 'y') y ~# e w c$ Y
{8 q5 K$ X, n+ e+ o! [
/*打印全部读到的数据*/: U' y- `1 b9 T7 w: v2 W& Z
for(i=0; i<upp_frame_size; )
- q$ P& U: \7 q {6 o7 Z8 h8 n9 H5 e, {/ g3 t
for(j=0; j<5; j++)
- U0 Z3 _) [7 S+ C9 a# d' Z9 V {
2 E1 c2 V/ h- O+ q7 D UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);
/ `4 G8 u" k8 ]8 ~ i++;) V8 f- _# V2 q! y4 }
//if(i >= 4096)3 }) o# `: i1 I- y
// break;" Q: w6 r2 ?) H
' J: z0 Q! Z5 \2 Z A R* `% ]2 t7 Q }, O0 `" s. }; Z
UARTPuts("\n",-2);% e" Y& P% _. P3 n8 B1 L' \
}
/ c* m/ }% |3 X6 N$ ?2 O+ Z7 \ }
+ v7 G# d ]# j7 @" H' A9 V6 B, R1 ~1 d
}5 H* E& T1 ^; T* a- N5 ?
8 R4 |( T+ W" ?) R% F9 ~0 `0 F+ s% Q# g
|
|