|
|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?8 D& S- P0 x2 l1 F1 s- [+ g( v
Void UPP_TASK(Void)
. c6 z: _# n# i% i( w# r! a{1 k" ^" T! z2 j
. V* s" T! R; n; [ [% g1 ?" k
int i,j,k,target_int_count=2;
" F2 P% O/ Z. T char ch[2];
' P& L( `& _4 T; k) @& R1 l: U# ?% j3 {& m5 s
( y; |5 i0 @2 n, M# B' K$ J1 F4 A, U y1 o. y5 t4 Z8 U
upp_interrupt_count = 0;
) {' `) \9 R% P! ~& c upp_error_count = 0; _5 c4 J2 I) ]: g- A
% I6 _& c- i3 s
UARTPuts("\tResetting uPP buffers...\r\n",-2);
- t+ g8 `5 [2 ?- l* S: q y // Initialize data buffers
3 F/ s9 x( c6 e' @: c for (i = 0; i < upp_frame_size; i++)
6 u" x/ R' Q2 J1 | {
3 V1 Q, G z' Z) s+ \ upp_buffer_b =i;
# Y0 r+ U! Y3 w upp_buffer_a = 0xDEAD;4 A/ w# k1 B$ L& j' Y2 m. C/ S# W
}. I. Z+ G; A* m5 u; x( D* G/ p# \
- B: _+ P3 \; T+ u //for(i=0;i<1024;i++)- A9 n4 A: t9 k) m
// temp=0;
; ^. u3 f6 |) f# b0 P3 a8 J: t0 g* }* }9 w
//UPPReset();
/ m( e; t% ^5 D! T /*启动UPP DMA传输*/% r [3 P: I4 o
UARTPuts("upp_prog_dma_i\n",-2);
% w# J5 M+ `. N5 c& t5 H) O& T- r$ } upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;0 \+ j/ s3 u3 v: `% M0 K7 w
upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);+ g' U: e2 C" `) Z& h4 F% C9 ] f, I" w
upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);6 l; ?: ?/ F7 V3 S% q
! }! Q0 R( p5 A- a: i UARTPuts("upp_prog_dma_i\n",-2);5 z1 f; P! i) P5 O1 m% r1 ~
upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
$ C- \ v3 k0 B6 Q+ h: `# J& o upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);' P: D) b, \: |/ L4 Y! c
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);6 I" H6 O1 w: i
1 V9 h; D [( d0 f% J s
/*等待UPP传输完毕*/9 ?* h, W- [: k7 w( p9 P
//i=0;! v4 d% N6 o7 k4 `
//j=0;( V+ `/ ?" z2 D |8 j* |, A
while (upp_interrupt_count < target_int_count && upp_error_count == 0)
- i$ |+ W$ n5 C9 V% ?$ T1 ? {" p$ J0 U8 s* P2 X3 }) L8 D9 e
/* 测试UPP传输的同时操作普通DDR数据
7 s$ v5 Q" \: m0 j" f temp=i;( `, [# U9 q5 p
i++;
* ]2 U+ G) e: i5 ~) x4 V if(i==1024)$ l) H0 R6 |4 }5 t. U- _
{
9 @4 K; q$ \/ Q( k1 y i=0;
, ^% _% J, z6 ~1 }! [ j++;! P5 p* \" {* o, r% o4 S0 D- ]! q
}
# F- p+ N) w z+ n0 T% U2 c! L: ] */
5 v, P ~# T: c$ f# ]9 z5 e7 ~8 Y! Y
asm(" nop");. j& S# v$ r' D
4 u( D. h& U t* B5 X
//UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);* o/ V8 e; d$ O" P% b+ I C; i
}/ ?* y5 g/ L+ b8 r
8 k. z/ w& O( P7 b& d
/*检查UPP传输的数据是否正确 (loopback modes only)*/8 n7 y: L- B# G3 `7 V
//UARTprintf( "i=%d\n",i);7 _- D9 G8 c% Q/ }
//UARTprintf( "j=%d\n",j);
! D3 k6 i% d7 A UARTPuts("Data mismatch in buffers.\n",-2);
1 T; g: c/ v- O3 t, s$ A6 S9 f if (upp_interrupt_count == 2 && upp_error_count == 0)
5 y7 d0 D4 r: H( Y4 r8 B: ^9 c& ^/ k {
. r# o: }4 ] M) F6 V& G for (i = 0; i<upp_frame_size; i++)
% d1 q1 d' u t$ U4 E {
& g [8 V+ f I% O! V if (upp_buffer_a != upp_buffer_b)
$ H, A$ ~7 `3 F. f; S' `9 _( y {
% P( S+ n, B. h# e; S upp_error_count++;6 E( L/ m( a2 Z# w5 I! W) z( c
}
8 ^! F' G; @& a% B' T; T }
6 h/ |2 r3 V3 ?8 {: |" S }( o' v9 R7 f9 W& h# o
H. v6 k0 p& P2 G. U" W2 n( u /* 报告通信结果*/
K3 N6 ?! e; ]- } if(upp_error_count != 0). \. e3 g) ], ]9 B/ [
UARTprintf( "upp_error_count=%d\n",upp_error_count);$ Y: c4 e$ q% \2 @5 V
else8 x8 `3 z b; D! N: r! l
UARTPuts("uPP transfers complete!\n",-2);
* ^4 m+ H0 A! f- Y; S( ~6 E4 X
* {% X* T0 d$ X6 z2 c UARTPuts("Do you want to print all the data?(y/n) ",-2);. a$ n4 T+ x) g+ W5 I! p6 t- S8 C
UARTGets(ch,2);
+ u6 ]. y; I, U- A7 C @ UARTPuts("\n", -2);
* o/ B, h" G; ^' x- C6 b; P& T* R
. g8 a7 l' {4 I0 x- k9 F if(ch[0] == 'y')8 |( g" j( f0 v$ P; d8 I [" o
{; f% i- Y# I* b- Y! i
/*打印全部读到的数据*/
; V' s7 V8 ?5 q8 f+ n7 q p for(i=0; i<upp_frame_size; )
$ f. D* r$ f. X1 k* _ {3 z2 W) C5 Y5 O$ n( U
for(j=0; j<5; j++)9 r" j; Y3 s' c# h, u- `
{8 {- |5 r0 I6 A3 M+ c, h
UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);
6 U1 Y) h& a2 f i++;
9 b8 C7 c" T9 d3 t //if(i >= 4096); p% p e q2 ~$ ^- t+ \+ M
// break;
1 J) A7 F: s( K' @- C! N: F7 t6 v
9 G( H2 h. ^ x# U t) h6 { }
- t2 \7 Y2 p9 y$ G) e4 Y2 p# Q UARTPuts("\n",-2);5 \" p8 Q( V7 v
}4 h( H+ y! B- r) F
}
1 Q1 H8 T( W8 o0 L; f( R! k7 q
_* X. A5 r, ^3 k}9 F ?, C1 j5 k* p8 F
3 [( f: K+ F" q/ _9 I1 M4 ]
7 i6 r+ @3 A g- u' Q b |
|