|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?9 [1 b% K2 s1 [0 J
Void UPP_TASK(Void)2 Q: ~2 g4 K" T- U$ D
{
9 J. @/ s# k0 w! E" B* l
) W* e" Z: J% }; M- m int i,j,k,target_int_count=2;/ B2 \7 ]+ [2 K( ~. V2 h+ n/ y
char ch[2];
! S0 ?! W5 o$ |/ H' ]9 N) ^9 W, L! Z
: O. A5 U9 v2 T) \& Q f
4 d* y. r( _; E0 b5 ?) ` upp_interrupt_count = 0;
' J) T9 S* j, C( x upp_error_count = 0;. |( L) v+ ?3 b
1 v5 h# s9 `' A" d) U UARTPuts("\tResetting uPP buffers...\r\n",-2);$ _3 P" c: O% A4 j/ v
// Initialize data buffers
g. }- ]( a( X7 q3 |+ i8 G for (i = 0; i < upp_frame_size; i++)
0 i7 n; e* s6 ~* I2 `7 m2 W {: t( l9 L8 b8 P7 B2 V+ C' Z; }
upp_buffer_b =i;
3 `( |9 \( F" R- A0 Q; v( X upp_buffer_a = 0xDEAD;* H8 z# L' D) ]' y2 F& f
}" O3 H+ S0 x1 [
. q# y! P5 o1 r5 j9 m$ a y* C) G //for(i=0;i<1024;i++)
' \% w# k" o3 P5 w. _ f- ^ // temp=0;- k e+ Y, q4 R9 O( ]" Q
9 l5 G7 I+ R& s1 f8 K7 \4 \
//UPPReset();
. [8 o4 n! E. G! v /*启动UPP DMA传输*/
$ K8 [" u A$ T# i/ L8 K1 |; y) u UARTPuts("upp_prog_dma_i\n",-2);+ @9 `" ^3 X' s+ s+ [
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
6 M6 Q" S$ I- d8 y* b" { upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);7 _, T5 j3 ^% D+ G2 r; ^
upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);/ s" V% v% x9 x X$ U
) k9 M; F% @" f+ `& C/ q' A F
UARTPuts("upp_prog_dma_i\n",-2);2 M u6 [0 p8 E
upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;$ E# d' Z1 I8 M* Z: E5 L: J
upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);( x7 J- m5 x1 y2 O
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);4 e3 v2 Y, j% ~7 C' d
6 J) V! E% z# a" g9 O( d
/*等待UPP传输完毕*/1 C7 f# k+ L% D N' W) H0 h$ {, {
//i=0;
$ \, y$ n- X4 q% d7 W4 O' ^8 j E //j=0;) Y2 X( B1 T+ I) t
while (upp_interrupt_count < target_int_count && upp_error_count == 0)
% T5 [; ?2 r3 U7 X- T { d4 N! `9 r! y+ Q. {) R9 u& z
/* 测试UPP传输的同时操作普通DDR数据/ U# I X' \; X$ w
temp=i;# Y& w, Y! Y; E- y3 J
i++;
) K0 Z! U9 q' P7 i if(i==1024)8 [# k/ f. J# P9 t, i7 s3 G( B
{, S$ t5 j# O" K) ^( m
i=0;
9 p. w$ O8 {6 T9 n0 M# W1 Z1 v" e j++;
; e) W$ L7 r: ^' W }
( _5 M$ P2 t3 g1 S5 a9 v */
2 S' u( W- d: o; {# \* f1 D/ I. Y2 y, `
asm(" nop");
5 K# h+ k; U- K6 h% {4 ~9 K# ^0 w6 f \* q6 w# H" ?% q
//UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
( B1 o" O+ \; J* N }, D& }# r, W1 z- T6 S4 h! _& [
- N T+ C$ _ s
/*检查UPP传输的数据是否正确 (loopback modes only)*/
' L, I1 o" }! |' w+ [, z- G. q //UARTprintf( "i=%d\n",i);
1 \ r& s/ S: w' C- }: e //UARTprintf( "j=%d\n",j);
4 q6 _2 |- T. Z UARTPuts("Data mismatch in buffers.\n",-2);7 K' t3 m' F$ Y4 C
if (upp_interrupt_count == 2 && upp_error_count == 0)
* ]6 c/ S7 @# j$ x2 H) q {6 O; |' \ V6 a; E
for (i = 0; i<upp_frame_size; i++)
# t5 V- m/ A* E3 y7 N4 {4 A1 `5 h/ e {: F) r8 z4 E" Q; \" B
if (upp_buffer_a != upp_buffer_b)& H1 x9 n U$ h8 c
{5 H# [0 e: e8 O: d, C6 ^
upp_error_count++;* `& `7 [5 ?( n9 P. X4 W6 r) z
}
# Q3 H5 ~' p' N. |+ s }
0 Q; @. g0 S9 X& K }
+ m8 o3 o: b9 z9 n2 o
4 N" |% J0 L5 \6 L1 Q- e/ c /* 报告通信结果*/
# [/ e. [4 J+ F! q% l9 ` if(upp_error_count != 0)/ o# i/ J+ [! e/ S! ]) @# c
UARTprintf( "upp_error_count=%d\n",upp_error_count);
$ E$ i8 c- F. O k else
, [9 t9 F4 m- t$ j UARTPuts("uPP transfers complete!\n",-2);' {# t; {, A/ W/ q; n2 @
# E: f( H5 q% [ u3 r1 G9 c UARTPuts("Do you want to print all the data?(y/n) ",-2);2 p( d# h3 U3 ?
UARTGets(ch,2);! u& f$ d/ y; R5 s2 n/ _
UARTPuts("\n", -2);
f' x" N1 e# W& }' Q6 r0 r
5 L B! F# L) y% e8 x" C- F4 i$ {: A if(ch[0] == 'y'); O% w: S; L- H, m7 ]% h: K
{+ s' R2 P' j# Q' L
/*打印全部读到的数据*/: Z2 Z5 a; Q3 z3 ~. k! F
for(i=0; i<upp_frame_size; )1 n# _7 i: n7 h& d' H+ B# |$ ~
{
) k0 g; b$ X' x4 f for(j=0; j<5; j++)
) X3 Z1 V/ z: c/ b7 `# @ {
- L; T# k& O, j# P, p& V UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);
% x/ k! u7 m$ e' R) C3 o) {: G i++;
. y) o9 _% j+ G8 f //if(i >= 4096)
& B! a/ Z4 t9 D4 E k& z, G2 z1 L // break;
& j3 t' f" W# ^ M; \- _1 |; P! D# T6 u& D9 ~/ ~- `
}
7 S5 U/ S; j- t8 ~ UARTPuts("\n",-2);9 O, T3 U: A% p. O- P1 s3 x% c. v
}/ I9 D8 U" k0 v. N
}
# c5 u) w% r; _" |4 J/ ^3 ~8 A) U! A& z! r, [, F( L, f* M
}
. Z; i2 Q' p7 c4 d8 A& g" J x2 s2 q
% {# a. n( t2 U* q
* ], n6 l( j/ l2 b( U/ w' u, s* Q |
|