|
|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
" m7 q5 _1 r$ ?5 @Void UPP_TASK(Void)% X6 I6 E/ R3 _* Q: N
{
* R( T/ e9 S# T9 S7 s5 M Z
; j9 x0 E x4 c int i,j,k,target_int_count=2;- e/ C# _* [1 \* T9 x6 p/ R
char ch[2];
B- N: u8 c: e# s# G9 P, `1 N
. U6 w) d( ?& T* M" h. W9 ~ Z. f R" `% ^8 E7 Z/ G
, L$ i- A; u& i4 H1 |! g7 f1 e& } upp_interrupt_count = 0;2 |: D8 M% Q4 n9 D: P% c6 a
upp_error_count = 0;
6 H+ Z) @1 Q& G2 {3 Q' H
9 g5 P# z9 C! u2 I7 {2 |4 w UARTPuts("\tResetting uPP buffers...\r\n",-2);
7 |) A# N' F6 }8 s. ^; }; _, e // Initialize data buffers
' q1 y3 ~) a6 l for (i = 0; i < upp_frame_size; i++)
' }# R" [9 \ m; o# _ M9 J {
( F3 n' ]# I W9 {7 W upp_buffer_b =i;0 H- M0 y# r, ]. f0 ~- [( S* z5 {
upp_buffer_a = 0xDEAD;9 ]' H& {4 u1 F
}$ V6 U0 c/ y, I4 p3 I
( ?( h6 d' ^: Z, \4 a //for(i=0;i<1024;i++)
0 V! K9 {- `: p, u4 C% g- Q // temp=0;
4 R/ W( \% n) {8 D }; ^# x# d5 V& k \ U. b/ H
//UPPReset();5 b! t- n; |5 ]3 n8 f4 U+ N
/*启动UPP DMA传输*/
# g& j8 i' m- @3 v UARTPuts("upp_prog_dma_i\n",-2);+ c: `. `# u1 @( ~1 Z. M' c* b
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;# g# F4 A# w* N5 s
upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
- \3 H6 M7 C: m6 U upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);9 a" S0 c( L! l% ^% p1 G
% W3 q: z. C. U% T$ S
UARTPuts("upp_prog_dma_i\n",-2);
# h( C0 `4 M9 k: f" N3 N$ X upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b; [% l' c$ d# D. K" y, W3 g
upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
& t2 {: [4 I$ ?$ t( U; ]2 q upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);) c4 }" C* U8 I, |
& w$ `( x, l' H8 m- R* L% M# k
/*等待UPP传输完毕*/' n5 y3 L5 |4 S5 s
//i=0;- N( a# D8 D" X2 z l" i2 A2 L# D
//j=0;
! y- X6 Z- E6 q- I while (upp_interrupt_count < target_int_count && upp_error_count == 0)
- k e3 |! y* s {
( H& ^3 ]' E5 T( L! u /* 测试UPP传输的同时操作普通DDR数据
% R% ]% i; T* p& ]& S; N0 e5 k temp=i;0 K+ i; O! U4 P" R. `9 {0 o+ @, }
i++;
$ f- ^8 v: o7 K& ^4 A2 D if(i==1024)
$ W! z$ x7 o1 Y# v) u' o( V {3 N9 K2 F* M0 M( U, O" G' ?
i=0;- P: d5 s/ L2 J. E
j++;. I* E7 N1 e( t0 f0 ~$ J
}4 q- o! h) d3 Y
*/% K; g& n0 D8 g- u5 B: r5 N
$ ~" B( t) p* {# g! j! M
asm(" nop");# G& f9 I- o( D" A
3 t6 ]! X) h, l; q
//UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
* z& T8 e" Y% r5 ?# w J; r }! o) R* }4 {7 ]2 q
0 M' C! I3 u* o! Y6 L1 V
/*检查UPP传输的数据是否正确 (loopback modes only)*/7 T! A6 p1 U# u3 o' b. d/ p4 S E
//UARTprintf( "i=%d\n",i);% }8 F. w, p& h
//UARTprintf( "j=%d\n",j);: C7 Q# B4 K6 Q" m ?8 E& u
UARTPuts("Data mismatch in buffers.\n",-2);! z+ F7 v) @$ ]; d- e, c, h
if (upp_interrupt_count == 2 && upp_error_count == 0)
# j2 q9 C2 B0 g4 P% {( U/ Z+ S {
6 S$ N: |7 Y3 a& S* P- x: }1 ] for (i = 0; i<upp_frame_size; i++)
6 ^( R& C" H* r9 a( i7 o {
/ o0 M, J0 R) | if (upp_buffer_a != upp_buffer_b). H; Y! {% t, Q" G7 v
{* Z% n$ R6 z3 E7 H9 e
upp_error_count++;+ A- |5 |" ]; w8 y
}
! f3 }5 ~/ ?% e& _/ H: T7 l( J# m, T }* T3 o1 q- Y9 v, [' Y
}9 c9 Z" P$ @5 r4 Q. O4 P/ W' A. f
3 ^( l. R3 b! j$ i /* 报告通信结果*/" ~' [: \9 w$ W5 m j
if(upp_error_count != 0)' w T) e% ]6 l2 ?& j
UARTprintf( "upp_error_count=%d\n",upp_error_count);/ G4 \9 H$ U& C* R) ~) C0 ^" [
else
" r4 @: r. O. o7 \6 p, n UARTPuts("uPP transfers complete!\n",-2);
q* L+ [6 q* z$ L* k
k# a$ P% \. Z" u0 [) K UARTPuts("Do you want to print all the data?(y/n) ",-2);# A* f1 J' K: q
UARTGets(ch,2);! g2 t( k2 z( D) _
UARTPuts("\n", -2);
) |+ ?2 F6 U7 _
' U; u- x" L8 e' @8 i if(ch[0] == 'y')3 u8 ~5 s. Z4 G n8 k
{
' Z. O. F d+ X/ E3 A) d! ` /*打印全部读到的数据*/
/ ~) o$ h; K& \. p for(i=0; i<upp_frame_size; )7 A3 M/ d/ U- i1 w; ]8 I3 d
{
! _" h' J+ X5 A, `$ w f9 ^/ S for(j=0; j<5; j++)
( y0 _8 z+ n M6 v$ Y( k! j {3 B7 V% Q$ D& l$ n& n8 v
UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);
9 P# }! j: q& G8 D$ z9 G" \5 @8 b' B3 R i++;$ k& ?7 Y2 ?) r( h( A
//if(i >= 4096)$ b* u) g2 S- u% A# R2 V1 n' l
// break;( p4 ]( ]" r% {. i6 ~
% y- m- o1 b) \; v' A }. f0 r6 T$ S$ a1 k
UARTPuts("\n",-2);% a7 P8 t9 i; c+ C' v& o f
}
* h8 D4 M8 i6 q7 F1 j }- s b Q# t) @8 G# z% W
# H% t& J* q5 n}
l' J' `+ I9 N7 s( z6 p' k0 N) [5 u) x- L
0 X6 N9 Z# F, H* n
|
|