|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?6 q/ x$ k/ d& {: d# [ _2 |
Void UPP_TASK(Void)
1 A& M _' m) B% B8 x) E+ i{0 e( k& F" X, x. V( ~1 M
3 ~) [7 k) _! U: C6 Q
int i,j,k,target_int_count=2;% M# ^" \" E& T' U6 d3 z
char ch[2];! i3 {4 L/ H; O3 b8 o" H" F8 k
, N2 d+ L/ F$ }. c( v
2 Y' ^8 }4 q. \" K
' r8 A/ ^5 \' Q( a upp_interrupt_count = 0;
. B# m5 V- c- [; G0 A) @ L& s upp_error_count = 0;" U' J: r, _( A9 h
. f' \0 M! O! A$ P' `) ?% Z; Y& ` UARTPuts("\tResetting uPP buffers...\r\n",-2);, K) Q! J+ t- R% L; l6 l! f2 Q \
// Initialize data buffers
: R) B+ d6 y- `* c: e for (i = 0; i < upp_frame_size; i++)
' X* N6 C& p& o3 Z$ _ {2 Z. c2 B; x W: r6 D3 i6 a& b3 s
upp_buffer_b =i;
, ^" m1 ^3 x; _" @8 E6 Z( L, y upp_buffer_a = 0xDEAD;
; j1 j% Y; |$ r5 d }
/ i# } j. K9 L1 @7 s# N5 n
! R8 S6 ]& J V+ G3 Q0 k- D //for(i=0;i<1024;i++)6 J6 }1 p. `- T
// temp=0;
/ n) \0 {2 h g1 y! I( I
9 Y4 a# p! A( u9 m% T //UPPReset();7 v7 _5 S( r7 P( M; B) z! ]; B: X& E
/*启动UPP DMA传输*/
/ ^% M+ X" y5 N7 B: c3 Q* J( d UARTPuts("upp_prog_dma_i\n",-2);
/ s6 |, T, k/ j- P2 u8 [* A7 g upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;5 v. K) g: S r$ T# b
upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
5 U6 U# J! V; X0 e6 H+ @8 J upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
6 w6 P- W( d/ L3 ~3 Q& i8 A/ A+ t' C L: ?) N. [
UARTPuts("upp_prog_dma_i\n",-2);
. l0 z& G. K9 V) R7 l upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
# G" h: V* v1 L& D: O; }9 f upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);7 u& {! I2 y0 C. n4 ?3 Y
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);3 i6 A% e5 z, }/ P" V
3 \. p: m) M- N+ X) A. M; p9 s( a
/*等待UPP传输完毕*/4 w1 V/ Y. y5 Q1 X- K' T3 s- C+ v; R5 v
//i=0;
$ T% q3 |2 }5 t2 G7 I. j //j=0;
8 e& E/ J! z/ j0 G0 R) A; g; A while (upp_interrupt_count < target_int_count && upp_error_count == 0)3 H: l3 {7 c! d8 j" U' Y) K
{( |$ ?" u% P/ ]1 T. s
/* 测试UPP传输的同时操作普通DDR数据8 @9 D- P5 M0 E0 o/ z7 k
temp=i;& l+ E D2 A; l3 d+ D% B
i++;
, J0 s" \& G% B if(i==1024), k5 Q% R; w5 k0 m
{
! i/ n5 o2 P# n0 B i=0;
+ w _) {- P1 G9 `5 q# r j++;" r+ h! d( Z, r! F, c
}6 K) I6 _) ~: Y! }
*/6 J5 P5 g/ N/ ]/ a" ?+ V5 m/ [' c4 T
, Y9 D9 o9 c3 l( P q
asm(" nop");
% `3 ~' \+ l: O, l0 l. d V9 I5 v3 S5 ^# I
//UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
, c/ @% A% l/ L) _% m' Y% Y }! J {- k# {$ [0 H/ \
" H( y$ A3 A4 c1 t% [1 L b
/*检查UPP传输的数据是否正确 (loopback modes only)*/. a q) `. z2 k0 l
//UARTprintf( "i=%d\n",i);
% v1 G, |3 T3 @- Y1 G2 F$ D //UARTprintf( "j=%d\n",j);
- ?; W M8 a6 o, l" u# M UARTPuts("Data mismatch in buffers.\n",-2);) m& g) s+ E; y, _
if (upp_interrupt_count == 2 && upp_error_count == 0)* W8 p6 Y) e% B8 @
{5 F8 ~. n/ |0 E( z* r4 q4 X7 H
for (i = 0; i<upp_frame_size; i++)
0 E0 ?3 X c5 l$ b- O O {, X% \ u( ~5 E
if (upp_buffer_a != upp_buffer_b): r0 D, X* ]! B6 H5 l+ v3 ^; R
{
r u9 }* T7 a, d" R upp_error_count++;
$ `- P' X( ]; y- }% ]- S }
' r& b+ \5 E2 e8 p }
, \" l9 L% [. ?4 i- V; d }7 \, x1 C. T$ ]" F4 @4 t' X
/ a2 A/ [% X$ y% i* T, H5 V /* 报告通信结果*/! a( ?" L% [" [6 G9 ^; Q* t
if(upp_error_count != 0)1 @" S+ D% e( P$ q& a7 V& G
UARTprintf( "upp_error_count=%d\n",upp_error_count);# F; h5 z# R F9 j% p6 M
else0 Z; u0 ]. [: F' v. A
UARTPuts("uPP transfers complete!\n",-2);
" u, t: T6 {# B" x* v( C! k( O* C/ R" [
UARTPuts("Do you want to print all the data?(y/n) ",-2);
! d5 m$ r W( N. x% o4 _ UARTGets(ch,2);
. U# ?9 w: _# L" g UARTPuts("\n", -2);* c- W, [5 V$ w
. X; e9 l4 i0 f+ L* H
if(ch[0] == 'y')
2 z- W# Y/ x( X( M/ _: l& e9 | {# L! ?6 d% K$ n) c. }8 t, f0 A
/*打印全部读到的数据*/$ W+ P: O. Q$ _' Q& [
for(i=0; i<upp_frame_size; )
0 j% h2 M+ Y% [! c9 ?* d$ o {$ y0 s& n7 p/ Y/ E8 ~
for(j=0; j<5; j++)% L7 S h. H" `' o: ^8 R: ~
{
: O* D! M8 t. G# _ UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);
d! M3 o1 l/ C' V( R i++;5 ]7 ^* X9 D) J6 U* O4 X5 e
//if(i >= 4096)* @% e$ j' H. b3 ~7 u j' B
// break;* F/ u: G6 m; N) y x$ A% {
. p' p" U1 R& E, }; U0 ?
}1 }: j2 k5 {8 ^5 N. A W$ _' w8 E+ f
UARTPuts("\n",-2);
& ^: O3 @" x5 R: B }
. X- k) f" p" N; p }/ H3 u/ x( p+ |7 a0 h* B
4 o( `1 O: L K: b6 X* i+ |
}
) G7 r$ p* S" f- O) _1 Q
8 R$ z& h: Y0 f: @' s0 u
2 m( [0 V9 P! b2 s+ E& {8 t |
|