|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
$ y, [. O# Y' jVoid UPP_TASK(Void)
5 W' q9 r6 }. ^: r' e{
7 z4 a- P, U$ a) b: M+ ]4 s3 u8 r* q3 H( f8 j |
int i,j,k,target_int_count=2;) ?5 e; k/ k b' C( Z ?
char ch[2];
: Y9 e) M# W+ V+ N; G8 r& V- k2 B8 `
1 v7 `) B2 ? g' `, c9 m4 x$ ]1 J' o c1 l* S. O+ ?
upp_interrupt_count = 0;
# A* Z/ t/ [2 w i: [9 o9 l& R upp_error_count = 0;) U6 ~8 L2 Q/ w) B7 z/ b
' H+ j3 u. ^) K1 c1 s2 d6 |* k UARTPuts("\tResetting uPP buffers...\r\n",-2);
q1 M/ U5 H2 f% D, J // Initialize data buffers/ n- Q+ \% H( `8 b
for (i = 0; i < upp_frame_size; i++): Y2 v7 e1 v8 U/ s* r8 c) D+ |6 ^
{: b1 [4 Q' r$ a8 r/ ?2 g2 b, I& k) T
upp_buffer_b =i;5 n" Y, x( |- H$ s: J% Y; h
upp_buffer_a = 0xDEAD;$ G4 h& q7 e: x
}
+ o- v* v( _5 l' J
4 a$ f2 w4 o; c$ {, j; x" J U f //for(i=0;i<1024;i++)
: g! @# U* [; e* ^ // temp=0;
: G7 V3 D1 s1 n8 ^/ F& ~5 ]9 H8 W4 B3 B
//UPPReset();, F+ Q+ r8 r/ F9 P. V2 g% k
/*启动UPP DMA传输*/
6 }0 W) Q3 {/ ~: k UARTPuts("upp_prog_dma_i\n",-2);
$ F9 C. z. g( z& n upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
$ B- _7 E ^6 h8 T. Z4 r+ t upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
8 ~, M2 f) o) f, v! N% c upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);) E/ @" R6 [2 c( |0 |6 K2 t" B
4 R( X% p, S* h5 ]4 n$ s3 o D/ [% n. J UARTPuts("upp_prog_dma_i\n",-2);* \5 _1 R" h9 X& s! q# @; g
upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;# U: F" w6 S+ B+ U7 b( m
upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16); l, b9 K }$ r5 s* T& E
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);) Q5 ~9 I% }% R/ ]* F7 c
- L+ Q1 Z1 J7 c( s5 ~0 X" V7 l. F /*等待UPP传输完毕*/
4 O r5 U* A1 z0 B; _8 } //i=0;
c( g+ ~$ ]$ d% w7 \+ d) o3 t, L //j=0;
# i; ]% S6 B5 T: n8 A+ {, t* v while (upp_interrupt_count < target_int_count && upp_error_count == 0)
' G7 A o5 b C9 u9 T {
5 g4 A5 W8 m/ x. o# Q /* 测试UPP传输的同时操作普通DDR数据% b( p! W4 M1 M; L/ @ a
temp=i;
, t y1 }: ]; H I, L; }( G/ J i++;
: F2 j# K3 r" c; x1 Z) Y if(i==1024), t7 g' u& I& Q% f
{
$ ?1 m! H, j9 s6 P; a& W i=0;
# ?. m& E2 d4 V& g j++;8 g( d* y) i5 X+ K2 Q. N
}: }6 g+ q7 G! B
*/
0 h6 |2 G7 M. S5 U1 Y* B5 P, V
( o! l! }6 W4 C7 Q$ O4 k- g3 a/ W asm(" nop");: O- \" z0 |. p; T7 F; L
2 i, I. `% {/ N$ G) v7 e8 O* \ //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);* M1 w+ j( R" W5 Z+ L2 J, a1 {
}
" r( y/ T) p: T8 C1 {
! r! A, m3 s# m% @ /*检查UPP传输的数据是否正确 (loopback modes only)*/
) o" h+ t6 S5 {' e //UARTprintf( "i=%d\n",i);2 p1 N+ U' q0 U, E
//UARTprintf( "j=%d\n",j);
" J5 \7 e# \ w; I! ~% | UARTPuts("Data mismatch in buffers.\n",-2);
& T7 [: L2 V7 j. } if (upp_interrupt_count == 2 && upp_error_count == 0): Z: O$ o$ J- I0 u9 N% g k
{% d! T/ v+ i/ d; y0 ]: |* n w2 q
for (i = 0; i<upp_frame_size; i++)
' T' R2 U0 |$ H& l& U6 T1 ~ {
, p9 ~3 P, ]& Y2 f( |7 z if (upp_buffer_a != upp_buffer_b)
# l( A# q# {; M( L; n {
; d- @ N. S7 B! M3 U' _2 W& |' \ upp_error_count++;
; ]$ ^4 E7 s U+ ~- _ }
: z0 h" V, S& t; m" ?) Y. m! ~+ V }
) d+ a0 g, g+ `9 R# Y' l8 H }7 d5 C: k1 T9 `2 P
- Z- u# J9 B9 g7 D: J3 c
/* 报告通信结果*/" Z! b& j: E2 b3 h/ s
if(upp_error_count != 0)$ B) n* p$ h$ E. k b
UARTprintf( "upp_error_count=%d\n",upp_error_count);
h- F* _ I6 E; x else$ p' ^% t$ \( ?: j
UARTPuts("uPP transfers complete!\n",-2);6 V. l: L; P6 k' f
9 ^; |1 d( Y o% N
UARTPuts("Do you want to print all the data?(y/n) ",-2);
- A7 e. K+ ~. N+ R# d4 L UARTGets(ch,2);
# g% O/ y- ]! ~7 _ \; D3 D UARTPuts("\n", -2);
! |/ @3 s1 v5 W, E+ q; K A2 V
" N0 R" X4 O+ A5 r' |6 [0 @ if(ch[0] == 'y')
H F5 c# d4 n8 H8 L) n {: \4 [0 y+ b _$ I7 G; M+ u( D O) I
/*打印全部读到的数据*/
( W8 [& T: E4 F) W& L9 O for(i=0; i<upp_frame_size; )
) P/ t; B- ]7 o/ y* A0 s1 z {: [7 V1 g# _3 x! y5 Q; T) y: P
for(j=0; j<5; j++)& w; z# M% H# q+ Z
{. G+ Y: q1 O! v7 Q& ^: _
UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);4 O# E. s, s7 B) H
i++;0 t% T! t' {* s
//if(i >= 4096)
7 n9 z( y/ L, I, o* i! p // break;$ d/ h7 K6 X- s
4 G# R8 n( V" e+ A+ B }0 T/ | W6 M# |1 E7 I% E
UARTPuts("\n",-2);' K; p8 F: i6 Q) Z5 M) `4 z
}8 }* ~9 E" Y# Z
}8 i, M' }1 V# c4 y
6 y5 p7 t$ d- z7 I/ c3 S% j
}
; m) J8 C$ N. k; f# v& [) @5 f/ @9 \/ R: S, N# ^
' G# ]9 W% \6 p. w: H; [/ h+ _; c! U, l
|
|