|
|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
& X% c: }+ |0 E5 R! H% @Void UPP_TASK(Void)$ A+ H' ~3 w) D2 d; e1 W
{
H G# I5 x8 s; m4 o. c7 u; d0 x* S6 e
int i,j,k,target_int_count=2;! ^1 C! }, l/ n7 K p, p
char ch[2];0 m4 X% L2 H( Y7 w, h+ k8 k6 j! K
" J( R) S0 T, ~% `' V
6 c) n" k) }8 g
& T/ i: O2 d+ q) ` upp_interrupt_count = 0;
- x2 c' k1 n9 N" G# E y upp_error_count = 0;
7 D8 `; v1 Q: p. v8 p7 X* s4 R- i5 M
UARTPuts("\tResetting uPP buffers...\r\n",-2);
1 Z. F& Z3 Z( Y& `, F( t // Initialize data buffers3 Q& T9 y; C: Q1 K7 w
for (i = 0; i < upp_frame_size; i++)% h) N k5 |! S I
{
2 \. \/ z5 h, C& H upp_buffer_b =i;+ Y! C9 s. R6 R6 p5 ~
upp_buffer_a = 0xDEAD;
8 ~, H7 d, f; S. S. Y; X }
% D" J* ?! _1 k9 D: X4 e$ q# _
0 ?5 n# }- G6 t* b! u //for(i=0;i<1024;i++)5 |! ]4 b& S" C- |
// temp=0;
( i( T7 Y0 M3 u# H+ S9 A) \) ]0 W) |* q( C' p( `! h
//UPPReset();
8 _6 C5 U2 l# k5 A- X h# o( f0 a /*启动UPP DMA传输*/, ?' P; z( I+ J5 E3 w/ j
UARTPuts("upp_prog_dma_i\n",-2);/ I6 l, u2 J X, f
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;' f7 L4 U( L$ ]3 k+ \& q
upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
( x# p! q3 J* X% u* H4 J upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);# J8 J5 n4 [ q! u) d
. w8 M7 l: ]) ?5 q. l
UARTPuts("upp_prog_dma_i\n",-2);
7 F; t5 o6 } v# i upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
' C) U) u% [" V0 g6 g, u upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
( D0 N* ^6 c9 {; A, d' l1 c3 O* h upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);8 |- u1 [% k# P) Y& p
* ?2 P% l, w/ n% k. e( g; E- L
/*等待UPP传输完毕*/
* c0 Z+ [8 B) d R //i=0;8 F$ M7 ^/ d& G8 [ ?
//j=0;1 ?- U% N, W5 B5 j$ \. l
while (upp_interrupt_count < target_int_count && upp_error_count == 0)
9 [! E7 T# ?7 z4 x3 i {- L! O/ H" W. \3 u L) `
/* 测试UPP传输的同时操作普通DDR数据
+ w* m$ {$ j. U/ H temp=i;5 _9 g( N/ W1 H
i++;
% E# J, { S1 }, ^) H4 o if(i==1024)
+ p2 e' i$ e# v {
$ x, ]# u5 {5 S i=0;( y! t- r6 P( @4 _/ z
j++;2 M* }3 Q7 {$ r$ ^
}- C/ J8 _& d3 x2 Q% q& f. H! h0 t
*/
3 S5 M1 E' L/ d$ p6 P Z; b! n# G0 F L, K6 d0 @
asm(" nop");
( m( I9 O0 \7 B) N1 O+ }2 B
9 A% ~3 W) Y% o2 T2 G. P7 y) q //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
4 K5 m; G1 N0 G5 t$ c1 S }! Z" M2 ^0 u; d( |
* b& F; Z+ G G k6 B5 Q5 } /*检查UPP传输的数据是否正确 (loopback modes only)*/" Z: H1 z2 @4 T- D$ J) O7 J
//UARTprintf( "i=%d\n",i);: B2 E$ Z& g H! M) |+ G
//UARTprintf( "j=%d\n",j);* V. j0 E( \1 G4 a4 G3 L
UARTPuts("Data mismatch in buffers.\n",-2);
, Q1 X# I* l* [5 @# k, k1 d; i# g( J if (upp_interrupt_count == 2 && upp_error_count == 0)
. k5 `9 Y. ^) X9 K* K7 J3 n {" j- q! \) U6 `7 r. G9 v" n2 h
for (i = 0; i<upp_frame_size; i++)
: y. @" E8 K; n {) q5 \7 e' o% P3 w/ L* H# t
if (upp_buffer_a != upp_buffer_b)
0 c3 `8 C7 J' { a, a. T+ o4 x {* x8 u7 s) }! Q& U9 `% M
upp_error_count++;
0 s( T( p+ l: d/ ?6 @ }
$ |# t3 L9 o! w, o5 _4 T }' g+ j6 R; @% s/ Q- o
}7 h3 Y7 A/ u# d7 w$ e$ B( C0 t! `
# @4 y; o) R% w/ N0 T+ U5 V* A
/* 报告通信结果*/
2 Z- i( G5 _( h( S( | if(upp_error_count != 0)
, U# ], x/ I* k H1 j8 k UARTprintf( "upp_error_count=%d\n",upp_error_count);( |7 j h: V3 i: S
else4 p% x% `9 t7 H# h& i
UARTPuts("uPP transfers complete!\n",-2);9 k* P$ Z" x- b; f+ _! m2 a& F M
3 D( l1 V4 d `4 H% E
UARTPuts("Do you want to print all the data?(y/n) ",-2);
- y5 R! O( f" F* y9 k UARTGets(ch,2);
: l, Z4 p+ y9 q0 c O6 c UARTPuts("\n", -2);" I: _$ u# a, W* o* D+ e5 H
& m2 a n3 o2 S7 ~: n+ j" M$ Y
if(ch[0] == 'y'); h/ R% P0 l. M% }0 k
{
, ?9 A+ J5 W0 s0 O1 c% ]2 H, C9 O /*打印全部读到的数据*/
3 z. z3 C, _ S- z# B for(i=0; i<upp_frame_size; ) Q3 F* L# J( U1 u D3 t0 V+ l$ K
{! J% P# ]1 A, T- g0 k
for(j=0; j<5; j++)8 O5 g8 f) z9 v
{
5 ^7 S% \0 w0 r, y1 l x/ w* @ UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);
5 r* @* T4 }% r$ `) J i++;$ `5 ?' ]3 x, {) D% \0 _1 c
//if(i >= 4096)
k- g( I& s! h/ Q6 g // break;
* m, Q# B9 V: p/ p: X' f/ V, W( g' k: T+ D
}
0 v0 Y, t7 N) p5 V X. ~ UARTPuts("\n",-2);" U- x2 q# q$ t2 b7 [) S& _
}
% S& ^. p( z$ B5 `& ?: } }4 m% q6 X8 K" F: D- m
$ a& n9 p4 p! S( i1 V" _$ |}
& x, l8 J8 Q8 R$ v* K1 l0 B9 _, s, p% l4 u: L' u- u( Q
& Y( k7 f* h5 E |
|