|
|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?) y( h* \( z" c; ^4 @
Void UPP_TASK(Void)
0 `9 M% o# Z* A q. s{9 Z8 y$ ~0 d+ S. Q; I' \
- [4 g/ D- v8 _ int i,j,k,target_int_count=2;
! J3 k. R2 |% Y( C char ch[2];
# Q# r+ n7 A4 N4 Q# s& `! k% m# [; M/ D- H2 B5 d' @3 Z
) }" S. Y3 v% d0 l$ k& h; t! @* q* J$ u4 i8 Y
upp_interrupt_count = 0;5 m; d9 n5 `. r. m5 I4 F
upp_error_count = 0;9 U7 c9 P* C; g' Q' [
) Y0 n }9 G+ m, B4 U! z1 f UARTPuts("\tResetting uPP buffers...\r\n",-2);
$ x! t1 K0 y3 m; P- \! n // Initialize data buffers
, W% F. \3 t4 D9 k7 B* B for (i = 0; i < upp_frame_size; i++)6 `6 r$ e7 D" p$ f
{/ ?# x: Z6 s- p5 b& o4 @4 p
upp_buffer_b =i;
q5 i6 t& ~" { upp_buffer_a = 0xDEAD;
* f4 y, Z; w( R }
/ k+ g6 x4 z' ?* Z0 j" ?' X1 ^1 \" ~: f0 s& s4 S( r
//for(i=0;i<1024;i++): H/ [. |1 P) j2 \: B: C, F9 h
// temp=0;
5 t3 y* Q! f, e% S$ `+ }4 X; P* X2 t
//UPPReset();
, W- \2 _1 T j6 i. ~! O /*启动UPP DMA传输*/( u: I/ K7 @# E( H5 _
UARTPuts("upp_prog_dma_i\n",-2);
) @! i) V) b) w) ~: [ upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;1 C: W5 @2 u( r* ^
upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);, w$ E7 R3 W# U# A2 _; ]
upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);" [" r$ M4 v8 z8 a
5 E, G Z+ b0 H% ^# I
UARTPuts("upp_prog_dma_i\n",-2);' [( m- X0 O% c8 s+ g5 ]
upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;5 E/ b' I w, P' w$ _0 |
upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);9 O3 N9 U: Z6 u$ a; u( I5 g$ ~4 I
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
2 E; G- `7 @2 A0 u# r' v" V) J
0 S0 `; f6 w8 c /*等待UPP传输完毕*/
6 S0 ?, M8 {3 G, |* o7 B0 f# f) ? //i=0;
6 s# O6 a" d6 E _6 K //j=0;
+ N0 X6 l( N+ l6 [ while (upp_interrupt_count < target_int_count && upp_error_count == 0)( U5 ^: m( _. F" R' Y3 s, P
{: F( {' @* Z+ T( t( {
/* 测试UPP传输的同时操作普通DDR数据, t- f7 j: Z2 v+ ]
temp=i;) M6 I2 c7 ~- `5 |* M1 p
i++;" o* k! t8 @; m) s) Y& ^, a, V) K* f
if(i==1024)
: T5 I2 Z* P* p2 s0 _% { {0 v8 d/ K# U# N& ]& \
i=0;
" ?- o- f8 t6 W* z9 O' H j++;
7 F7 r% `/ Z- ^. M5 U. } }8 w# N; I1 `9 x% E8 T. U9 @
*/0 D' r* f8 q2 r+ w$ F3 ?. f
0 K) e7 W6 s9 @, A
asm(" nop");
' O- [2 i' B+ x8 d3 j( Q. T4 c5 v {7 n% b# ~
//UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);- @# |1 R+ T4 y# y
}* E1 ` n& X" R" J
; w+ x/ Z4 V# w7 s% u% j
/*检查UPP传输的数据是否正确 (loopback modes only)*/& |, z5 Q% S- B7 w3 B) m/ O) D
//UARTprintf( "i=%d\n",i);
. z( h1 l+ A0 s: k1 Z* }& {. V3 H //UARTprintf( "j=%d\n",j);
0 M7 i" W+ F3 N. I. l UARTPuts("Data mismatch in buffers.\n",-2);
8 W6 N8 Q0 |( g- s2 B if (upp_interrupt_count == 2 && upp_error_count == 0)
; R6 O0 \% Q" J7 Z5 N; @ {
) C H0 ?2 N G8 J6 g- L for (i = 0; i<upp_frame_size; i++)' P9 l, K( ~/ H/ R
{6 A, l- r/ ]2 ~: A F! _7 i
if (upp_buffer_a != upp_buffer_b)' Y9 r7 |, f( U3 E `0 N( [
{
' \0 x9 n+ a6 _6 e' ~% w, G upp_error_count++;
: L: T) w2 V/ g }4 R- `7 r1 F3 l. x7 \
}0 t* |! y* F& z6 e
}# Q) j. K- ]: v! ~6 f
M( o4 L$ X) S6 x+ ] /* 报告通信结果*/
/ N* ^0 [% c* i" ~! m if(upp_error_count != 0)
8 [8 C! ^4 J$ ~& K) k( h, U) P UARTprintf( "upp_error_count=%d\n",upp_error_count);& |' F( e" @- G: s
else
8 t# b& w4 J8 m7 y& w$ Y o" c& E- ^/ r UARTPuts("uPP transfers complete!\n",-2);$ k; w" n8 K* h y( [
3 o2 d6 M. A1 B k2 e) Z7 x# d9 V3 ` UARTPuts("Do you want to print all the data?(y/n) ",-2);
' y# C7 J3 u5 T6 o# a6 c* A UARTGets(ch,2);
$ @) m7 H) `, @4 H( k: ? UARTPuts("\n", -2);
; X+ i% c n; @& j5 O' {0 S' f
9 u& A3 u5 }8 t4 e. Y if(ch[0] == 'y')
& |; L% m* @# V, c7 y4 {) i9 C- \ {
8 @' R+ n R, }# i /*打印全部读到的数据*/
- {: Q! `) _7 Y1 C& \2 E# y: R0 ^3 u for(i=0; i<upp_frame_size; )' l. h5 O4 V% [! z3 x* p% B* U
{
: N, o% M" r. m ~ for(j=0; j<5; j++)
% g0 C. L9 r; D: Z# F9 L {
; |; z9 q* \ O UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);6 [. f3 j# F$ U9 y$ O
i++;
; [% m; Z" T7 O8 h //if(i >= 4096)- i- `& W+ ~! c3 H
// break;
0 T- a0 @# o+ T) ?) g: _6 t9 q
" ]- r- j) h- e3 l% J, A0 y }* O3 a+ O) C0 Q x
UARTPuts("\n",-2);
% x; y9 E0 z- ~5 ] }( z; m, E! ?% ~2 s; w$ k
}
; G' w* T' X+ P9 x( k' A* k* ]$ q. t& Q/ j
}& ?) J2 e ^4 A, N( ~, W# p6 Q
. i7 w w+ i" v
/ C5 P# _' ~( ]' h) p |
|