|
|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
$ s) m K- O# E2 o6 PVoid UPP_TASK(Void)% v" c9 c+ O& ~& q
{
, g; G; H, s; {# b1 [( r) C% J
7 Z# C3 y2 j8 @4 V' U- Z3 l7 M int i,j,k,target_int_count=2;" Y2 k1 Q- M" l7 F* k, X
char ch[2];3 m1 N) {5 p$ T
/ e: K- o7 ?# _. }6 D W1 g. A
) a. N4 a9 p& [/ T! X0 f
4 p- r, J7 ? v; f% }: [1 [* i upp_interrupt_count = 0;
6 N8 O n2 ?, Z& k. x/ W upp_error_count = 0;
\2 z1 j% b3 n2 O5 |5 A* }- `
/ w- M6 O0 P# X" y' [* d/ h; N8 j UARTPuts("\tResetting uPP buffers...\r\n",-2);
( ]6 h" u Z- |; O4 M2 H // Initialize data buffers6 U, S) R3 R4 T. Z: i) _
for (i = 0; i < upp_frame_size; i++)0 z: t2 T6 j9 @, ?" h; a0 n
{
4 Z& `! k) Z: @ upp_buffer_b =i;
# b# W# B8 d2 W. I4 u: O# W upp_buffer_a = 0xDEAD;
" v" Q" |' |* k# f( x! c- x }4 T8 n+ r& F* q% b4 u. l& x
2 J" `8 h# ^* y //for(i=0;i<1024;i++)( q" b8 z& o% W6 S8 _6 s
// temp=0;4 a8 w- i9 o$ \. @* w
" P- h# _! Q' @ v
//UPPReset();/ g& t; X; t! l6 p% s* @! S4 ^- W
/*启动UPP DMA传输*/
$ Q9 m# ^5 x4 D% D4 O UARTPuts("upp_prog_dma_i\n",-2);# y7 g1 U) r" H0 Z
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;' E5 X: x8 {( A+ f
upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);9 s3 n) D7 z1 R1 V2 D( O
upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
4 i7 L, M, Y2 r5 T) V! d- t& W$ p' ^8 E0 F3 g
UARTPuts("upp_prog_dma_i\n",-2);& n& d' {# \) ~/ x0 ?2 b
upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
# I2 e/ X% z+ @5 F upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);5 _1 I v9 m1 j2 y- j# Z
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);; H! s% H5 o) v" v. d0 \
1 _* z* Q; ]$ U) a /*等待UPP传输完毕*/
: k, r" u( X4 H" i' [$ T5 I X //i=0;
- C3 u" n$ N ?# S8 g" q: q //j=0;7 H& n* y- w: f8 ~2 V) J# Z
while (upp_interrupt_count < target_int_count && upp_error_count == 0)! r$ u" S. `! h0 X
{& X' s/ E, M3 q
/* 测试UPP传输的同时操作普通DDR数据8 D/ ~7 ? F$ { B$ {8 a0 J
temp=i;
% @. K, d& j# ]8 \ i++;
* b* c) H( _* |1 ]) G" L& g3 u if(i==1024)' y* _; v7 N/ Z0 s6 i8 \/ v) n
{- ^, U- [/ E+ V0 _# ]- l8 J
i=0;9 q5 `: q/ B$ D# `# ]" e" T! H3 Y
j++;& z- `" W% c7 Q! `! g
}
' ^6 B6 T1 D3 Z8 v# L */: [2 J* t4 C+ A/ M* y0 t. S
; o6 Q& X/ M0 c" @0 g- t1 d5 e
asm(" nop");" U# r1 z& n! ^; y
3 P9 t1 L* ~2 J; U# {/ B$ V& n0 \9 I //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);* M) s/ y: u$ D; c* a
} _$ ^4 \. S; U& \8 e4 G
( W! w: J$ m1 Z2 _* i
/*检查UPP传输的数据是否正确 (loopback modes only)*/" j7 R& C+ l/ j7 j* o/ i' N
//UARTprintf( "i=%d\n",i);
. I: q: r& C! y/ T7 T, a0 |, c+ R //UARTprintf( "j=%d\n",j);
, R, q9 U$ r* `& j' r: ^! J( X UARTPuts("Data mismatch in buffers.\n",-2);
# l- _6 y' E. `+ i if (upp_interrupt_count == 2 && upp_error_count == 0)
/ \- B1 {5 D* G" _& k. m {9 y% @2 V$ f& E3 v# l: }4 w8 N
for (i = 0; i<upp_frame_size; i++)
, c" B" V/ P5 Y0 [4 l) }, t* \ {: V1 k j, t$ V, k
if (upp_buffer_a != upp_buffer_b) K1 G* K' H5 N( g" b
{. l% z! x- u) ~
upp_error_count++;
4 o" ~3 [- q4 ?4 H5 r8 _3 a) S }
! @$ J% {5 r$ L* M, ] }. m9 R6 `: a$ z, ?( N
}/ Q" X' \6 P7 X8 I( ~
% F: b W, i' h. i
/* 报告通信结果*/
; S+ G% W" K' B+ z2 | if(upp_error_count != 0)) _9 E/ z1 g) O& C( F) |$ R: M+ }- \
UARTprintf( "upp_error_count=%d\n",upp_error_count);3 F: U# @: H( c4 d+ J
else
/ r' T! T. g$ k; s8 ^1 c UARTPuts("uPP transfers complete!\n",-2);
- i& ]* I% Z+ F- K W4 G" _# x. @9 Z( m9 E
UARTPuts("Do you want to print all the data?(y/n) ",-2);
* i! h& ~. [ f- P. [/ H* c UARTGets(ch,2);' S* m O: c9 e9 ]7 _
UARTPuts("\n", -2);
0 t. @) H( v0 x% S4 l- E7 o6 B: I4 `+ o, h5 q0 A2 u- P C' X
if(ch[0] == 'y'): r9 a3 ]# C7 p2 x3 q
{
; L$ y7 ~6 ?. z, N3 ^1 h /*打印全部读到的数据*/
' W- L) b$ [" g- ^8 l for(i=0; i<upp_frame_size; )% U1 w4 K M _5 t2 o8 d+ X' @( g
{
3 ^: A2 n" C! m6 M& i8 e$ L/ S for(j=0; j<5; j++), e; |- `2 x, d. x( G! F+ r
{
* R; }+ v5 V$ P% |9 p7 r UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);) ]6 C" @9 b! h1 a3 g$ h- T& b
i++;) d, D5 L5 T2 z. O
//if(i >= 4096); |. s& N4 N3 g' V7 v% v
// break;
" |' c& H; e) Y1 V9 x8 C6 ~, R. H* }% H5 U
}
- w) x. n) ?( J4 t UARTPuts("\n",-2);2 y8 Q5 ]+ c4 J
}6 F; k& _* \1 M! D
}4 q5 N L% I7 p0 s, m/ ]
7 W$ j8 k4 p# L2 i: P* ]
}
# c+ ]9 I5 }/ E. |
5 f: s" Q- }: R! [: s8 E. r5 G6 p+ z+ I. ]
|
|