|
|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?/ `5 [% k) Y9 c' h4 v
Void UPP_TASK(Void)
7 G3 ^: C' J$ M B{
2 K8 G2 ]8 P7 H2 p* o' P) u+ A# G. {' G2 q
int i,j,k,target_int_count=2;. k! |: Q! V5 c: W* g
char ch[2];
$ h2 x6 [1 Q" l6 C
' ?) W( ]) O9 O m+ [4 b b5 F
7 g$ {. Y Q0 o! M6 J' F4 Y
?1 {0 c u5 {) j- U upp_interrupt_count = 0;- s9 w: ~7 x# \- }
upp_error_count = 0;
$ }5 Z7 H3 B, _* Z0 ]+ k/ P, G) t1 A0 V
UARTPuts("\tResetting uPP buffers...\r\n",-2);
5 v& @( O: Y. p6 W // Initialize data buffers' {! d" G6 n/ W: }" N
for (i = 0; i < upp_frame_size; i++)
' c; `/ }+ O( R {
6 p- ~$ r- s+ {; F4 U upp_buffer_b =i;6 }( }0 f; A R- a' |
upp_buffer_a = 0xDEAD;
- N# o% W& K2 o" u; K }5 J# C, e } r+ y: [3 G0 `& t
+ `! M& @0 x4 X+ l) M. i //for(i=0;i<1024;i++)0 B# |6 K. {) l% m- J4 x
// temp=0;' Y' G2 ~* C3 \! M! R
$ |* x6 I1 ]8 F# U9 b( K
//UPPReset();6 o" j1 C! i9 r) W1 b+ n9 v6 t; v
/*启动UPP DMA传输*/7 w) c" }( l w) U1 w( o# H
UARTPuts("upp_prog_dma_i\n",-2);
0 M) N6 N7 L% F+ p0 } upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
) P& H K9 [" L- C) @3 D1 e upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);! _6 S- F' o1 U6 c4 L' \
upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);# f8 G! I+ Q, {7 A
/ @5 P& h% d+ C s8 M- I2 U
UARTPuts("upp_prog_dma_i\n",-2);$ i5 _+ k2 @7 }# b y+ E P
upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
Z! U" u: O* L, |) m& ^9 O1 v upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);8 o1 ^4 Z+ K. @
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);( _% _+ D, m1 d3 W
! }* v# D3 Z+ i' d4 r+ `
/*等待UPP传输完毕*/( ~: ~" O9 h9 i3 Q0 O
//i=0;: }* B4 S- N1 ?/ _ x( O
//j=0;
3 j% U: x/ j) T: _" Y while (upp_interrupt_count < target_int_count && upp_error_count == 0); S& o$ k6 ~! V# @- E. Z* s
{
1 B/ c: b' I! E+ x } /* 测试UPP传输的同时操作普通DDR数据
7 ^9 ?$ r$ F# o% I6 P5 x temp=i;+ P5 R- N6 ^" r/ y! h' ^. A& P* c
i++;8 T6 `5 P% l$ Y6 B. g! X
if(i==1024)
+ u o& I( C- T {
* q. f; H! I: {9 v4 a6 b i=0;- o8 P. z9 X, g" G( }7 R
j++;9 }* K) _2 c5 e
}$ \9 B6 ?5 n& H3 m9 z W
*/
( } O) m8 Z4 [# M+ Y" E$ T
/ r7 U1 d) _5 U% y asm(" nop");! p1 w: y2 ~( m
; Z$ \: y) |4 z% [ //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
' u& X4 ]6 G1 s% r0 `) a }$ o! G2 I9 }1 w: W& S) s( G2 }
, ]7 N) f$ }+ w$ m& N /*检查UPP传输的数据是否正确 (loopback modes only)*/& o1 j0 U8 Z7 ~. \
//UARTprintf( "i=%d\n",i);
4 F0 u1 @6 G2 H9 x; h$ Z //UARTprintf( "j=%d\n",j);" f3 [; u& n* J" ~9 l/ v
UARTPuts("Data mismatch in buffers.\n",-2);8 Q U2 H9 A4 Y4 ^3 U8 A% A" E( l \
if (upp_interrupt_count == 2 && upp_error_count == 0)+ b( g8 ~ P4 n2 V! A% k9 o$ ?# T
{" y1 x2 A/ |# ~) I: t/ M
for (i = 0; i<upp_frame_size; i++)
# B/ ` v* P5 t$ }& ^ {
9 i l6 @4 I7 V% z; w if (upp_buffer_a != upp_buffer_b) p' C6 A, s9 j1 F
{
# x& P) g. S& V upp_error_count++;5 n6 V: t4 X- s+ f7 G/ ^ e$ i4 p, b
}
# p- _% F' u3 i% e d6 p& c) O0 ? }% {/ U1 R, ?3 q1 ]5 [ i3 o
}
8 b( t2 X4 ?! w; s4 [4 F
6 \2 v2 N2 W# A5 M5 ^+ c+ x7 a /* 报告通信结果*/
9 P/ L+ d" u2 U6 i! i if(upp_error_count != 0)) i+ U8 j' f6 k6 f
UARTprintf( "upp_error_count=%d\n",upp_error_count);2 Y- i2 v7 ?; T# y- Q5 a
else
1 @" _- `" Q: o3 w' f; T UARTPuts("uPP transfers complete!\n",-2);
- y" r4 v( I. r% k4 T; A: T1 Y
2 T8 ^, X" w, r9 U UARTPuts("Do you want to print all the data?(y/n) ",-2);
* I" W4 l8 w$ J UARTGets(ch,2);8 N( g C; K5 T1 y+ W0 I
UARTPuts("\n", -2);
5 L& E2 U; _4 _5 e t; R8 z& }' a2 t. ~9 Q7 W& z6 p/ I. e) _" T
if(ch[0] == 'y')' O3 ~8 ~" F9 s# q
{; u1 l! ~: d, {2 `, W0 _
/*打印全部读到的数据*/
/ e) A) ~( |) C8 P, U* L for(i=0; i<upp_frame_size; ) m/ G) H+ ~$ H: Q
{
/ K* L0 Z' p* d( e for(j=0; j<5; j++)
- U3 s2 }: `! S' C7 |# t" q# v {9 N; c+ o; Z8 V# ^5 o- Z/ z8 o- R
UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);2 B% H( H4 O: O' G" _& @# }( ? }2 Y
i++;
3 H9 z5 p1 a* A //if(i >= 4096)8 l, Q/ r I! |$ P9 i/ N# @: F A
// break;1 p: ~, k: w2 J2 O6 n( n0 j
2 r5 u& @) z. b T }
; [ C# U% b5 V1 w% W% J UARTPuts("\n",-2);, C, k9 n5 e7 F& r, Y, K* U; }4 n
}
4 Q7 ~- {2 M4 t }
3 n* g7 `7 o* Z) I3 }/ t* w; B3 p' B5 m+ j! {, m& u+ R7 X
}6 c+ y- A/ Y3 [! O8 F
2 S- h3 h8 c! X% o9 C. z* w. `0 E4 H. Y2 x& h7 b6 d* u: _
|
|