|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?7 y4 o* }9 G: R4 P
Void UPP_TASK(Void); O$ g/ Y0 W1 H$ a! q2 K- a0 E Z
{# x: p% O7 f2 h, J% W' F* I" a, X
0 I) R! r+ y! s& R% Z7 Z# L5 j
int i,j,k,target_int_count=2;+ L, ]0 M, R$ P+ l. p
char ch[2];1 U8 `( F( B4 V9 V
3 R. S, ^* |; M% w. [4 i. ]) n( D* X/ u6 D: P' m
9 t$ g& A5 t. S4 J/ ?) u! o
upp_interrupt_count = 0;7 e, b( b$ |) z5 i7 ^% e6 `" g
upp_error_count = 0;9 }4 T$ d7 Y' ?1 M5 z
7 o0 `3 V. Z# v. f; R
UARTPuts("\tResetting uPP buffers...\r\n",-2);/ e3 D" r8 w; w6 {" O1 N5 _ A
// Initialize data buffers
7 [! j! L, I H0 u for (i = 0; i < upp_frame_size; i++)
! L' }# C y4 w2 g3 V {
& q- R8 T# O6 q; h i upp_buffer_b =i;- g$ Q$ |& j0 B, c+ w. G
upp_buffer_a = 0xDEAD;/ l5 C4 p3 j& J- `4 L
}5 ?2 k8 f. Y$ b" j; `
- D" {2 K( N6 A. v: T& ?; e& s# w0 Q- m //for(i=0;i<1024;i++)
8 F: Y6 y( @9 O, @ // temp=0;* i, m s6 G5 L/ s# r
& |" @7 N1 \6 H+ a
//UPPReset();: w7 z+ G* n. }9 }! M- x, e% V6 E
/*启动UPP DMA传输*/
1 G5 T! k4 `3 w8 U+ P- R. r UARTPuts("upp_prog_dma_i\n",-2);0 O$ Y+ X" E( n1 u9 O6 M3 ?
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;$ s$ _+ h, S: T; ?
upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
) e' G( p7 V L& K' J# O upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
2 q& S5 |: ]* }$ d; u0 j# r* \+ i' C. K# `
UARTPuts("upp_prog_dma_i\n",-2);+ \& |$ Z; `' v* e' V. s
upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
$ U3 _: y- W1 Q8 J# F upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);) \0 P5 O; a! q6 f
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);9 W* U3 K' e" A) `8 _
) r& c5 g! ~# b: ], M k, a+ i
/*等待UPP传输完毕*/4 ]. a: d# z( D6 h8 v0 V. W
//i=0;- F. b0 w4 T P0 X7 A
//j=0;) q7 D# W; I* U2 w5 T
while (upp_interrupt_count < target_int_count && upp_error_count == 0)' u B3 _ E4 Y
{
4 X1 O4 x1 @' ?/ I; m _ /* 测试UPP传输的同时操作普通DDR数据
8 m' K. T. ]0 B3 x* n temp=i;
% X8 F& t+ g1 ~6 o! A" g i++;
, _ J# _3 K! Q! n0 p! I5 U if(i==1024)
% i8 Q7 p4 p3 e" t) b2 t4 ` {
& c' O9 W: L/ g. D p, r* u @ i=0;0 p$ u- z6 h. R+ q& W
j++; S; h$ t4 M3 L# Z1 l+ a& ~
}
/ }- E* s5 E) y2 C1 B* m */
3 J) h3 e- L" S9 l" J) B% F: t8 ?& o/ q+ A: h
asm(" nop");
& a/ @, N$ _- h4 O5 V+ H) \
0 @% T- E8 R$ T- G5 B6 _) ?* E6 H //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
8 w R& @( K8 u# O+ l0 k% K7 L }
# w z) R$ k" p3 @+ ~( e. O0 ?. t4 O8 P
/*检查UPP传输的数据是否正确 (loopback modes only)*/ X" l+ H' o+ K* ]5 B
//UARTprintf( "i=%d\n",i);
) C" U5 S0 ], B$ `4 w4 c6 A //UARTprintf( "j=%d\n",j);
8 J" _, O3 i: z UARTPuts("Data mismatch in buffers.\n",-2);
; Q; j0 w8 I2 t+ `( S if (upp_interrupt_count == 2 && upp_error_count == 0)3 a8 ~: k( m& Z$ \- x8 }$ X
{* d3 T% n4 g- T' L
for (i = 0; i<upp_frame_size; i++)
8 Z1 V1 O$ @4 G! C* I2 m {' f6 W" |$ [# S" y7 B( i) W
if (upp_buffer_a != upp_buffer_b)7 k) H2 B0 t1 ?
{8 d! R5 o4 T4 @
upp_error_count++;
9 `+ K% i+ y8 H) }# V }
2 ?9 |- ?4 `& G1 |9 |, H0 I }
+ C$ g- |3 f" V: w }
7 w; k8 ]6 P# O# L& O1 A5 e& {4 t
8 X! E2 |4 r5 H2 U K /* 报告通信结果*/
4 B4 z1 e: l2 c1 a; [8 P e if(upp_error_count != 0)% Z0 U: I7 T* r, s: g' n3 Q
UARTprintf( "upp_error_count=%d\n",upp_error_count);
( e' A5 r/ D F) f2 w else
9 K! q% x: o- Z Y$ u" o y UARTPuts("uPP transfers complete!\n",-2);
2 \& i0 S: l* c* q( [
( B0 N5 b R! q0 M8 a UARTPuts("Do you want to print all the data?(y/n) ",-2);- z9 I! y% L+ K5 d% G0 l n. d- H
UARTGets(ch,2);
, l# g D) x- ?; X+ { UARTPuts("\n", -2);
6 j# R% D5 i) F; a6 l
4 b6 g7 B* t4 O) s) C( A, R if(ch[0] == 'y'); z" [* O' H A/ p
{1 r6 [+ `6 d/ m4 M. |4 m
/*打印全部读到的数据*/1 i, t' f% V9 z. A7 d% \5 Y
for(i=0; i<upp_frame_size; )% C0 K5 M& S$ }' r! z, b2 w4 Y' D1 x
{% u" I% T0 Z _' D, N( b; l7 B
for(j=0; j<5; j++)
" j5 }% c3 ~' g. N: a6 q2 h1 a3 C& l {. t) J- J3 g5 B- U* }$ y0 e) }
UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);
7 W; p* @$ y6 { i++; y8 z; N7 z W- r9 z# B( S2 {9 J$ N
//if(i >= 4096)' e- m1 Q9 b' u) S+ c
// break;
( K& n$ M* r+ u8 I' b
1 o5 W6 A" ]0 B4 A+ t7 A. c }5 U5 g/ K, a9 q* N4 M
UARTPuts("\n",-2);
/ v. T8 D2 Q1 \0 b }
# d; v5 r; ]# A6 ^; |. m }! O3 h0 R% E' [! H1 L3 s- J# K: C7 H
4 z* t, H/ r% X% X5 F, G4 a
}
1 j4 j: x) n" y- U% Y
$ u" ^ s) } I8 `; l' g) V1 X
/ c' c: d/ L1 y$ B) i. Q9 [& i |
|