|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?& x3 }, N/ M- P+ j
Void UPP_TASK(Void)
8 Q' U, p8 t6 R{
# b) y: `% S8 r- n- [. U) D2 x; n) o! O; B% X( x) ~% s. e
int i,j,k,target_int_count=2;
6 E. x! `* B- N: ` char ch[2];8 G% a7 u) B) e
% i$ C2 w. x5 }/ U$ P! U
: M- G0 {. u3 ~9 G% d0 s7 A }
7 W$ Y0 [ H" m) c+ }: B! e
upp_interrupt_count = 0;) c$ @) u7 N/ S$ e
upp_error_count = 0;* F) K# F7 F6 h1 e9 C3 \: @
& `- S* F2 K2 A. s, U! L+ G7 x S8 @
UARTPuts("\tResetting uPP buffers...\r\n",-2);
1 h: h( P1 K( N- a- }0 Z; \. s4 v // Initialize data buffers
) F) F# @( p2 { for (i = 0; i < upp_frame_size; i++)2 `2 r0 p' q {9 O: u8 t, n
{. H1 e9 V# i2 s- j6 \
upp_buffer_b =i;
: M3 i& e4 c: k* c1 r upp_buffer_a = 0xDEAD;
# y5 j$ h% v* z% _4 z9 Y/ k1 C }9 ^. Y( l0 T4 l7 u, [
0 _. J5 _2 N% `1 F# C. b: { //for(i=0;i<1024;i++); q7 z2 v! b: ?* v- ]
// temp=0;3 ~2 K3 @. C1 R- ]; s
+ A" ?+ k' Y4 l3 r& N" b
//UPPReset();3 A- H( \6 E: w/ c: ]. g3 W
/*启动UPP DMA传输*/, u' O0 W8 Q$ a6 |2 J
UARTPuts("upp_prog_dma_i\n",-2);
9 o; s/ B$ T# h* c upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;0 _" P5 M. Q ~" @" n/ A& e. j0 r6 o
upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
% _9 ?8 B6 o- q- j" N/ W upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
6 Y! Y! c$ W5 d! F* z1 B: C
" W/ X. V, D9 B' E- k( A* k. r% \ UARTPuts("upp_prog_dma_i\n",-2);
. r! F: U7 p. s: y( E/ e% m upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;/ T. f0 X: z4 {" [
upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);# z1 ]! }, `* Z3 k7 g: b3 \: D
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);3 U; n7 F& j. ?5 ~
3 j2 q7 @' |1 `. {$ R9 l) r
/*等待UPP传输完毕*/9 R) r5 `- e, j# t
//i=0;
8 e; m7 W$ Q/ l1 r( } //j=0;, ^0 e3 s0 A+ _1 `
while (upp_interrupt_count < target_int_count && upp_error_count == 0)) A# n4 S9 ?9 K& O3 V- t7 _
{! d2 k2 H5 _1 G* u- ]
/* 测试UPP传输的同时操作普通DDR数据+ y9 J, V0 T1 V# m
temp=i;
' |! N; `/ W0 H7 s( B i++;
6 I0 u6 q T8 y8 H if(i==1024) K0 z! z% m; y. h* D
{
v) l2 X7 A/ T8 K# ` D, V% O i=0;
2 X( U% }& \4 B/ C6 [! C j++;
! @, A! N0 D) m0 y7 o }
7 T' ]2 `4 H, N p: R */ K0 N( T/ `0 U2 \# t4 h
+ |$ P" _/ n: Q6 J asm(" nop");/ e- s/ n3 j+ u1 X/ L) Z% R; i
# `! M) T! L, K9 }" \
//UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
5 I4 F, d7 y' s. ] }
! @& ^ i9 Z6 P5 [7 ^: g- `8 U2 [- _. G m& I; }8 Y/ ?
/*检查UPP传输的数据是否正确 (loopback modes only)*/
) h" C3 k6 W5 G/ S6 S( E //UARTprintf( "i=%d\n",i);
' {, C% @' j; W' E( N; | //UARTprintf( "j=%d\n",j);
. X+ ~4 |6 U( |& N4 @ n UARTPuts("Data mismatch in buffers.\n",-2);
8 N* b6 `: R7 B1 `! c% X1 W if (upp_interrupt_count == 2 && upp_error_count == 0)
o+ Y1 w" `% L8 l {
8 b( m( k' J9 \# l0 } for (i = 0; i<upp_frame_size; i++)
# s4 x* I. d) o6 @ {' t5 Y3 h" k0 V R' \& d9 C/ n- [
if (upp_buffer_a != upp_buffer_b)
: E% V7 x8 Y0 Z: ~, ^& _# f {
' \; l0 u' I% W' m# H) u+ c upp_error_count++; L/ w! p, J( ] _6 ]
} q6 \' A; G/ O( I
}
R+ b/ G5 h7 N; @ }6 ?9 I6 U9 \( A; Q9 ?! U4 g
- F. @! ?" Q( Y* d6 Z /* 报告通信结果*/
3 r' a! N1 W4 k, O9 y( i$ ` if(upp_error_count != 0)
6 D1 {& q+ t0 y. g; z* B UARTprintf( "upp_error_count=%d\n",upp_error_count);
$ v* _( ^2 x- Z1 \ else% c2 n1 j4 G# i3 L( y
UARTPuts("uPP transfers complete!\n",-2);
( d; g8 a ^; y7 f$ c
+ A9 ` T* e3 k UARTPuts("Do you want to print all the data?(y/n) ",-2);
) n& s/ I( F+ C3 h+ \, F UARTGets(ch,2);
p+ u0 h' m4 G# ~ UARTPuts("\n", -2);3 ?; ?' `; y3 `. [6 o' W r
- j( ~/ ?: m$ w6 j- \ if(ch[0] == 'y')
5 C% j. i( P: y8 X& _! ~, C& T {
/ V; B* {% j3 w$ n /*打印全部读到的数据*/
- | A- l0 S* h: { h for(i=0; i<upp_frame_size; ); A) m# l3 i3 V! N2 z# h
{( N, p; q$ b4 ~1 f" D
for(j=0; j<5; j++)
5 g$ Q. t! R. N$ {/ O' n) A+ t: F {1 g6 o" c% A) [; A+ z6 D
UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);2 `# r8 K8 l+ q
i++;
9 [& f7 S( ^; C J) s, j+ N# f //if(i >= 4096)
8 |+ z. T4 M3 @/ k. o1 f4 L. l // break;
& c3 f6 p, m9 u8 N
1 ~4 w# h. q2 ~6 K c4 B% z- r7 u }
; o1 d6 D6 t9 x+ S Y UARTPuts("\n",-2);& J6 U; h) \7 J% F! Y
}
) Q: f q; Q, K( Q }: X* u& r7 N9 t# K
+ ^4 L) D7 [1 F/ R, b}) u; h9 |2 u5 ~5 i: i! l" S
3 A* i4 w3 R- [4 H
+ h: [$ [( u9 ^# m6 l0 C |
|