|
|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
* V x5 l" ^9 h. K% X" lVoid UPP_TASK(Void)
4 A3 o8 z+ @! J# I1 W0 u{0 K- t; n3 j. z7 G) Q
3 f* D! w/ q* C+ H7 O
int i,j,k,target_int_count=2;
9 X( A7 I' @& r+ m char ch[2];
0 M& E0 r$ a3 f: ~' l
3 b4 e/ i# V; e0 g- t% d5 j3 S K
' }$ U5 y6 u, i9 l& t7 ~6 C
! V1 x) F; j- K- w4 L" g$ F4 _ upp_interrupt_count = 0;# j3 ]3 z5 w. N
upp_error_count = 0;
( @& ~ V8 h3 T( J+ X6 i
/ `4 y2 ~4 m7 S4 q/ n UARTPuts("\tResetting uPP buffers...\r\n",-2);- n7 s) {" w$ k$ } }# |8 o
// Initialize data buffers
; Q1 _: y' Z2 m$ J8 x5 N for (i = 0; i < upp_frame_size; i++)
! ^& P! v7 e+ K: d& e' S* ^9 \ {
+ A$ I1 U' {7 N# k upp_buffer_b =i;
5 j" d. A1 ]7 ?! r/ }+ u upp_buffer_a = 0xDEAD;6 |- ^3 H" Y, H B6 [
}6 U8 [) V: u V- ?3 Y0 { T6 ~
! o( C1 e' Y! ~1 h
//for(i=0;i<1024;i++)4 _8 y. r+ I$ `+ p/ T+ ~ G$ g
// temp=0;
, H$ S# ?, i6 P; N; W' Z7 e1 f) a2 D# J' J0 n d
//UPPReset();
) s1 A3 z! D5 n, w' f /*启动UPP DMA传输*/3 M* s0 h: a0 q% p0 |
UARTPuts("upp_prog_dma_i\n",-2);/ b% P, f% a6 L# }) D" W0 q
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
0 }4 G* H& m3 Z- W2 m: I upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);' _( a6 @. |2 w- Z+ v9 [3 u
upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);# A0 B) b% }3 j. ]! f
A0 J2 K1 Q6 Z3 U* H+ d% s UARTPuts("upp_prog_dma_i\n",-2);
8 w3 b+ J( v1 P& R upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
7 Y* c% d" P& [; p9 m upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
F1 x. g7 T3 W3 @+ b8 `$ {% [ upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);8 `) R' q, e6 ^! \
5 }: }+ o0 v7 O" a /*等待UPP传输完毕*/
4 ~( L" u- m) }- C5 T' X( w. M" p8 h% h //i=0;7 @: Q6 h( Z5 V
//j=0;
4 s( L" {8 J+ r7 }. T& b% { while (upp_interrupt_count < target_int_count && upp_error_count == 0)! u- U# G& I. @' I) ?
{5 o+ q( c/ d2 u& [7 W
/* 测试UPP传输的同时操作普通DDR数据
% Q. t4 p4 o7 q" k B @. A2 L temp=i;: k4 o1 n1 X9 B+ k, A
i++;
6 @3 q5 c2 [2 u8 F4 i7 m if(i==1024)
2 m9 A- U+ q, D4 _2 K! u1 H" M {$ f# x$ ^" R1 Q" s& M$ A; Q
i=0;
1 ~! `8 S7 B" d% Y j++;
+ X z8 ?3 c! `! N }
* R2 E4 t, [& E& n* D3 b' q0 i$ u */
) ^- R& K' L1 }) a$ t$ `) \7 J. f% v5 H; ]' \
asm(" nop");& q! q2 g. ~" k$ C9 g& W
( ^2 t$ d# R6 p9 g //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);4 X# C! V" h; W, V- N' f% _9 P
}% B3 S+ V- j; ^8 o3 D* a! k7 [
5 I' o# ?/ G6 Q% } /*检查UPP传输的数据是否正确 (loopback modes only)*/7 G W& a/ c2 \/ C% Z7 O; m" t
//UARTprintf( "i=%d\n",i); z1 F+ \3 A8 D/ p2 `; i: G
//UARTprintf( "j=%d\n",j);
5 f6 e- [7 U4 e2 V UARTPuts("Data mismatch in buffers.\n",-2);% s) d H8 w1 X5 o3 B: n( k
if (upp_interrupt_count == 2 && upp_error_count == 0)
" ?5 B3 N1 _8 i; ?6 ^, J7 t {' r* ~6 \7 c' V9 m& h
for (i = 0; i<upp_frame_size; i++)
" X4 G. J" q( z) y; G3 F {
* w( g, P0 d0 _& o& E if (upp_buffer_a != upp_buffer_b)6 a% D) w. u% N% s
{' M* `4 s* }- Q7 K3 X
upp_error_count++;
. T) c- ~+ b; k, N; H' l9 W }( a7 \5 A+ \8 d' ~" U( d5 y
}
, x; f; O8 d# j }
2 d% W% V( x; I& R% b
/ z: ]) Z X9 J) C: b /* 报告通信结果*/
5 |, Q7 J! W5 Z& i! ~ if(upp_error_count != 0)* t6 g, \7 J; Z0 `( [7 p, o% ?
UARTprintf( "upp_error_count=%d\n",upp_error_count);
/ R' K( H7 z) ^1 p6 x- S! P9 q& L else& n# b. Y: }+ { n
UARTPuts("uPP transfers complete!\n",-2); v/ y$ w6 M# U" E6 K- F
) T; }% A! K5 v9 H
UARTPuts("Do you want to print all the data?(y/n) ",-2);
1 x. T+ y2 S4 ^; T+ A$ s5 H UARTGets(ch,2);, @3 v: @* F$ I& E2 _
UARTPuts("\n", -2);( z: ~& J% L/ Q3 |: n+ a7 G1 p
- f( }% Y* r/ W+ W& y if(ch[0] == 'y')
* D! C u/ A+ E/ @/ S {
l% c# S! a' `) }9 w5 |3 E! Y /*打印全部读到的数据*/3 w/ v$ h/ `; O% u0 l
for(i=0; i<upp_frame_size; )
7 }; k- {/ y" J/ D, {, X {9 ?/ n: [% E1 l8 c; c1 `
for(j=0; j<5; j++)
4 T2 _* i/ g# j+ Z; ^ {
/ m" y$ P7 c2 c- P3 w" m UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);
# S9 t( B) ]& I/ e' b- G0 M i++;+ n2 h/ ~' P* H+ ]8 H% _4 A
//if(i >= 4096)
1 s8 a+ B/ j4 K% ?5 U) i7 I // break;4 l; F6 X$ x" a/ o; K, ]
. l+ o7 b, B6 A3 O4 u4 _
}0 O9 T: g1 x1 n: w
UARTPuts("\n",-2);5 z) @" m! I1 }" ]$ L2 L0 N8 b
}5 a& V' H$ ?9 H3 X. \. l# M) D
}" w" X; [* J5 h. y p
3 ? ~: e% |) I$ U0 p9 l}7 y5 K5 Q8 ~* T; T! L& \
+ I* W+ `. `5 ?) ^3 H$ H
" a1 U# \" ~% r8 m, w |
|