|
|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
' T9 i5 y) G) h8 U; C! y" UVoid UPP_TASK(Void)
! s1 Q9 y1 ` Y$ Y* u8 v( y; i+ v{
" Z, V0 \0 ]$ ]3 Y: P- H; {$ t& m, c8 p6 A
int i,j,k,target_int_count=2;
{2 @3 t9 M7 y7 b3 [ }+ d5 z char ch[2];3 O* f7 `0 h$ O# T& k: z4 d2 l; I
5 Z* ~8 ~; k. t# U) P
: z! D$ F0 o8 g7 ]
' l) E. G- M- W upp_interrupt_count = 0;
) D+ ]" u% W$ K& G upp_error_count = 0;' m' F7 ^$ P* G" a# k d
9 T+ p" `& ]' [8 l UARTPuts("\tResetting uPP buffers...\r\n",-2);
; `' T8 y& P. G' h // Initialize data buffers
p: z$ ]7 L/ ~1 s5 ~ for (i = 0; i < upp_frame_size; i++)% g8 y6 g. t5 ?! o3 E8 f
{
3 U* u4 g$ G8 I8 |; r( s8 x: x upp_buffer_b =i;- V; S8 `7 e1 w$ ?) a
upp_buffer_a = 0xDEAD;
* M& {6 g: E2 @+ W# f }: r, M( u4 I2 ~; S' s* `' }) b
! C4 @8 d) D% {# r; D' O; E. P //for(i=0;i<1024;i++)
3 E/ U* R5 k1 y/ Q6 g // temp=0;0 z+ t0 W4 R$ f% _2 Z" s ~
6 g3 I$ y3 Y8 Z; E3 c4 p& w
//UPPReset();
6 n8 I9 P7 F7 @3 W) W+ o" B /*启动UPP DMA传输*/, Z1 q4 e7 k0 f5 s1 X0 A, P
UARTPuts("upp_prog_dma_i\n",-2);. q; m7 k/ ^ K6 ?/ o7 U$ K
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
6 n( a1 i8 U$ m9 L0 t% \ upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);$ _) W$ j& D& |/ s" L6 G/ t+ X
upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
' m) v5 h' }7 \, e2 {
: ?" l$ ?8 e5 E0 a/ c UARTPuts("upp_prog_dma_i\n",-2);
7 d& j: n) i! H& S$ N7 G" D upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
% c* y! B$ a1 r; v upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
1 ?( }+ L/ g K7 r- G upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
( p) x& ~6 O( l% }4 g' Q
5 F3 L5 |! T0 W2 v; L2 {4 o /*等待UPP传输完毕*/
4 S3 \: ~. M8 o0 s0 ] Q1 R //i=0;
* v6 r% u$ H$ L8 i //j=0;
6 k, t6 T% N1 M7 N$ z. R4 e while (upp_interrupt_count < target_int_count && upp_error_count == 0)
$ h M% h) P3 k& Q5 N" C9 D- G {
3 q+ t5 J4 l' }( E7 y; C /* 测试UPP传输的同时操作普通DDR数据$ D g% m# ]( p- I: s3 c* |
temp=i;3 y; a- a$ L% `1 a+ K G9 J
i++;. _ s/ L. F! t u% ]# x# a* @
if(i==1024)
" \% W$ A' U% P' C) m/ u& O5 U {. z" p3 N+ p( s6 b$ e% v
i=0;
4 e* c! a' G1 r j++;5 A4 S2 J6 T% G5 O9 p. c
}$ I3 K: Z9 Y" r# J9 F$ T$ n3 v
*/" A5 P0 \5 |" X
) C2 }2 N0 K% c- W4 l. l4 U) ?
asm(" nop");- t, \9 y0 j; W# `4 e: I
6 J1 n8 L/ t) P, K! F3 y //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);+ d9 s3 J+ I9 W
}
( U/ B) ?& B) _9 W1 @2 z# V. Y+ b* W
/*检查UPP传输的数据是否正确 (loopback modes only)*/
$ ~. m: a) f+ n3 O6 e. i6 ]) ? //UARTprintf( "i=%d\n",i);
$ t! L- R8 R* P9 }; V //UARTprintf( "j=%d\n",j);
! S9 A1 V& w- N" b% k UARTPuts("Data mismatch in buffers.\n",-2);
0 r0 `0 V7 Q7 J+ W if (upp_interrupt_count == 2 && upp_error_count == 0)
2 }: P& [8 W4 N; i) u5 n- u) J, Y; Y { ?" [. e" U- u( j* b, b
for (i = 0; i<upp_frame_size; i++)
9 ~$ l2 S! l' K* s2 b {
5 K5 E2 f' \9 u @8 g! ` if (upp_buffer_a != upp_buffer_b) N' N2 d' V* y9 b; E, W0 ^
{1 r- O- j9 a, U9 s
upp_error_count++;* |! y5 A$ p4 ^5 q! H) o
}
w' O: ~7 H4 d }
" q4 }) ^% g* w6 { }! G* `% z: j0 h
2 v9 P8 K3 ~- [' F" W: }6 P; U7 k /* 报告通信结果*/
% ^$ @% J1 ]' g+ X. ~% D if(upp_error_count != 0). f. E0 i5 v$ q. x
UARTprintf( "upp_error_count=%d\n",upp_error_count);
J; a) r3 C! h* P, N else
' R: O& p, z. `8 {1 n- T UARTPuts("uPP transfers complete!\n",-2);3 c* E' @; U3 B/ T6 k
. o: p. E' T& g# z4 R1 L8 Z UARTPuts("Do you want to print all the data?(y/n) ",-2);
1 b. G' {" {9 U2 h3 ^) E UARTGets(ch,2);
4 h) n8 G6 X/ T" q0 v3 M ^2 U- H UARTPuts("\n", -2);
* M, E5 j" E$ ] `+ o, i. @
' `5 S7 |; V+ W2 _0 \* }% ]- D if(ch[0] == 'y')
+ R' X% p B' B" B9 m% H: L; W" C {3 K+ z" t: J. b9 b
/*打印全部读到的数据*/
- s' _2 g$ ~/ Q! h+ m for(i=0; i<upp_frame_size; )
9 T4 z" B; }. g2 ^* `% C {
9 ~/ @3 {" Y* g for(j=0; j<5; j++)
( `$ ^1 H. [$ \! V4 E9 f {/ C- }# j% \9 H% ^& v; U3 G) |
UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);# X4 |1 d$ q$ ?/ o
i++;
- b4 Y4 \/ q9 C- L2 B8 v" ^ //if(i >= 4096)
; Q" `# m4 h; M% a5 \ // break;
! g4 E/ w9 S, F) v8 }& W
% m! m. p# g! n, { }% a3 ?2 @7 P+ F& @" N5 g% L# R
UARTPuts("\n",-2);
* _& J0 j8 z: n9 L; T( L0 V! d6 g }8 M' q/ c7 s6 a0 h5 f- W7 x
}9 h3 i9 ?3 L+ T/ h
8 q, ?! J( `& V& Y/ _% V3 P}
- e3 J) Q7 B' I( d7 S2 y1 I% o( b( B. G C! O7 i; m0 u
. X! q; |8 _0 q. J |
|