|
|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
% P3 H' u( u3 k" D2 b$ v- V$ RVoid UPP_TASK(Void)3 B! m% l% N6 d/ B
{4 h* r+ c% x6 b' D
$ o1 r' R5 J- q6 z0 O! P, O int i,j,k,target_int_count=2;
$ l# [4 W8 W7 T% e" O: }# U char ch[2];, M* S2 c) ?, [* I" r; @' `5 m
& |! I# A* o9 h# L$ Z
4 w! G5 a5 _7 D0 S$ @2 K# o) F" O/ v/ {; \+ e
upp_interrupt_count = 0;& t( N- Y: l/ d5 X
upp_error_count = 0;# F& ^7 C, ~- j
2 Z7 v. {2 I- S UARTPuts("\tResetting uPP buffers...\r\n",-2);* s' L2 }, m- a
// Initialize data buffers
1 h' z; n, r; K* L: `& { for (i = 0; i < upp_frame_size; i++)" z2 I# l5 g1 v- @
{
- V: v: ~- P- O/ l! C5 `6 @ upp_buffer_b =i;/ b! L( b3 O, }+ ?
upp_buffer_a = 0xDEAD;
3 o4 K" t2 U. A; @ h }& `% R, T0 \1 Q
: M7 O; q j( ]& s5 b8 D% \7 f //for(i=0;i<1024;i++)! m3 ?& C: G$ w4 w
// temp=0;
4 Z. _9 s. _4 M7 m4 }: q$ A: B
2 ~* x/ p$ m4 @) X" { //UPPReset();
- I% @" f, c& k8 A& Z$ C /*启动UPP DMA传输*/7 }5 ?, y& l1 i) c1 [7 z4 \
UARTPuts("upp_prog_dma_i\n",-2);
( Y) R" R2 {, o& ~$ m/ W upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
, o" ]5 \; n/ C( M$ m: ^) T upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
% O1 Z) {+ }$ G, z2 G5 O9 l @' s. g upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);( P+ j. f( P5 z) U
_) c3 u5 X2 G+ k$ n UARTPuts("upp_prog_dma_i\n",-2);
1 C' q( w! p9 k: ~- o upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
7 N8 i6 a7 [$ X3 i' X" m1 g9 w5 Z @ upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
" x e" k1 M& F V3 c5 R: A upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);4 j7 Z5 [/ c+ c4 [! L; ?
7 A7 ^5 O6 p7 T6 y& k# [) X1 d: h /*等待UPP传输完毕*// S8 S! A0 e8 m4 A7 [1 o6 r9 Z
//i=0;1 n# L8 w" R# S! N
//j=0;
0 V* h8 K( F' s4 Q8 { while (upp_interrupt_count < target_int_count && upp_error_count == 0)
3 U7 X' q: x( W$ Q w {
+ C3 y6 G+ T; F$ p5 T3 E1 \ /* 测试UPP传输的同时操作普通DDR数据# Q2 F0 I5 W- v: @/ d5 z
temp=i;
2 w& o2 D7 A0 ^8 S5 l' u3 h- K X7 _4 h i++;# q: r9 r( o8 n: e
if(i==1024)
9 ^4 B; _: g3 w {, }( s3 V0 _7 i+ h# _
i=0;
$ ]8 k1 W2 y+ K" F: p: L; h j++;0 f* m) n. v4 g D0 h3 ?
}
/ ~0 f' G. f; q( z! K */
- e r# G/ n! G8 P; w& ]5 ^
8 \ a5 x% O; P7 U K* ?4 [ asm(" nop");
2 |3 k- u8 @* K+ M( ~# ~5 c0 s/ j ?
: ^4 k2 Y$ K4 K" N) R5 c$ Q/ x //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
! t" E: W0 z: D/ i5 b. Q }
. W' V/ B2 w6 I2 P! w$ s6 Y
& z6 A6 S, d- O6 p: q6 A /*检查UPP传输的数据是否正确 (loopback modes only)*/
H6 I2 q) m% Q5 I* ]( |8 |- D //UARTprintf( "i=%d\n",i);
( H) N3 v9 s) l7 e, @& S/ Q //UARTprintf( "j=%d\n",j);# i# {) w q, q) j8 {
UARTPuts("Data mismatch in buffers.\n",-2);
' r/ o6 y, u) p/ S( K if (upp_interrupt_count == 2 && upp_error_count == 0)
6 w% c9 R6 Z0 R. U {
# o. _# J, k& A& z0 c for (i = 0; i<upp_frame_size; i++)3 W+ N( `% t; ~
{
! }; B5 U9 E* z: n if (upp_buffer_a != upp_buffer_b)
- s' P9 l4 P7 Z$ i, B7 P3 F" Z2 ^ {: k( y v5 w+ ]. j5 N
upp_error_count++;. g! f6 B! d" q% I, e0 c# t
}
- f0 K' n, P6 q }3 C6 f( J/ e5 z* Q# P9 G
}* u# f- w; J0 x o/ U P4 q
7 m5 h. E4 }* L
/* 报告通信结果*/
8 H- e3 L. P H* |3 S if(upp_error_count != 0)9 h5 Y9 K/ ` x* y5 l4 a
UARTprintf( "upp_error_count=%d\n",upp_error_count);
, X( {0 x) R$ V, _ else
4 ^) S6 k# S8 F8 O* G0 K UARTPuts("uPP transfers complete!\n",-2);/ }. u* }1 a5 g' F
; ]3 n" h8 S4 } r6 M% \+ u/ v
UARTPuts("Do you want to print all the data?(y/n) ",-2);( N6 A0 H3 d( Y9 T
UARTGets(ch,2);
; N2 v( E& d( }/ ^$ H: U$ `: b UARTPuts("\n", -2);, B" }0 c, P; l+ m, H, y
$ u; y0 {( K( R, e8 _
if(ch[0] == 'y')
' e2 v5 E% o: \3 n {% T6 U" X) k3 Z' c# ?) J
/*打印全部读到的数据*/
& n+ ~( I& s3 s7 y( h& Z* B+ E for(i=0; i<upp_frame_size; )
( Y& a0 G9 V, L8 A8 Y! M {: _( g; U- ^: p
for(j=0; j<5; j++)& P% v- H; _4 v" v
{
- [- b' p# U3 k: O& F UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);
Q# u& T7 U# A/ G i++;
/ m5 B; B( Y7 H6 p. ?2 ` //if(i >= 4096)3 e) ? G/ ]/ c2 v
// break;9 x8 ?3 F7 m& x9 A/ b
3 c; w$ V; c4 ~' ~9 r
}
q9 ^6 q9 v- `# Y4 p8 m UARTPuts("\n",-2);/ Y/ @- @: e% I5 _1 z; K6 _- F
}. U# G" [2 O4 s
}% P2 k. @6 N) @7 N0 l: r
$ D& z8 P* C" ^) J. q( _
}( R. ?9 q: T! w$ c# i8 n
/ N+ H* n( c! F( w( g
2 F2 q/ B; y" D* U. L7 m$ f |
|