|
|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
4 q. T2 K. K2 r1 o9 [6 UVoid UPP_TASK(Void): Y3 X- d2 U3 K# @
{
+ t9 H1 f* Z" A) ]: c( ~% z/ Z2 u7 {7 \0 L* V% m \! M
int i,j,k,target_int_count=2; r7 _4 i; D" \, ?
char ch[2];
- k+ ?* ~& U4 D, S) P u4 M# P E, |( S$ e$ H' q* `
: [( |0 K2 E5 R/ w- }2 ~6 y5 r3 G% @/ ^8 ?7 V; Z+ g2 l
upp_interrupt_count = 0;
1 y9 V3 ~) R) l. p7 h" _ upp_error_count = 0;
2 T8 l& f3 ?$ t* |. v- h) R
- v" g5 ]+ p: N6 O% O. N- ]' K UARTPuts("\tResetting uPP buffers...\r\n",-2);
! D! ^& x- V4 Q // Initialize data buffers
7 l# q+ G# V% j, v9 _9 D5 r for (i = 0; i < upp_frame_size; i++)
+ C1 D3 p( x4 c3 L3 v {
U) k2 X6 I6 v& {2 @ upp_buffer_b =i;
& r/ ~1 ^$ F; m- N upp_buffer_a = 0xDEAD;0 t s# S2 F1 K) ?7 G9 e8 k G$ X
}. a4 J: ^- |. l8 ~- w
1 h& ?3 h( F8 Q# z1 C* B
//for(i=0;i<1024;i++)/ m3 A: K+ G8 S. L. D" `3 M& X$ N; C8 O
// temp=0;0 v& `4 v: U0 l. t" p
7 O3 @" Y' C/ C //UPPReset();
! C/ o: B3 p& o8 K' h6 A } /*启动UPP DMA传输*/
4 s$ `; Q$ A i* F, i% s6 u UARTPuts("upp_prog_dma_i\n",-2);
7 r+ s& u* A: }. o upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
7 L% }2 U5 y' D" V upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
& l* K# J0 T# G2 T: [7 C# ]( ?0 s& A9 u upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
$ f5 n1 h8 j+ g' Z" Z# j4 P9 F5 b6 Y/ l/ @6 ?
UARTPuts("upp_prog_dma_i\n",-2);! ^8 h. ~3 a; F: w5 q
upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;6 X# J7 k L o; @* e! j, Y( @
upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);3 t I; y6 Q% J5 v4 u
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
! i7 p0 z- `9 H% u7 [) G# u6 B& l5 U7 S! Q$ T8 Y' D# i
/*等待UPP传输完毕*/! a7 }* v6 t3 h/ P
//i=0;
, y: ?+ M) @8 h0 o2 q //j=0;
; y8 ~7 V8 b; e while (upp_interrupt_count < target_int_count && upp_error_count == 0)
7 n V/ c" V( w( G c {# `8 I. C6 i0 T; M
/* 测试UPP传输的同时操作普通DDR数据" x3 [1 T: M) v
temp=i;% T6 A$ D$ r4 ~4 M, t5 X9 h
i++;
; T2 y+ C/ v; E4 } Y4 @& T. P& e if(i==1024)- w2 }7 w/ H+ T, j/ A# v% M
{+ T q$ e* R. i& i) }
i=0;
Z6 i- Y* b* Z j++;
% i% J' t1 _+ s" f! I1 m }
- b0 Y: @/ g! b. L0 g3 q */* p; V8 n" G$ K5 p
/ W) ~! {- ^# h3 ~
asm(" nop");
8 W- N3 R" A- P* K0 {) }$ U; X5 Z1 M: d3 z" t' U( Y
//UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);; B( P' r2 R& T- n: t- q
} \' {* I* t5 M& c. d6 I% v
+ S9 J( t. Y0 W5 t( X
/*检查UPP传输的数据是否正确 (loopback modes only)*/: }+ i9 N( B: H; ]3 J
//UARTprintf( "i=%d\n",i);
1 E$ k2 y! u' {9 B //UARTprintf( "j=%d\n",j);1 Q; l/ F1 _* P Z% R+ @
UARTPuts("Data mismatch in buffers.\n",-2);
' M* ]0 O& z$ n9 c" ? if (upp_interrupt_count == 2 && upp_error_count == 0)0 c( c. E. w" h- n
{
! _' o7 ~# `- F1 j( m, ?7 } for (i = 0; i<upp_frame_size; i++)
5 S p2 g5 k$ E9 P9 j {0 ~" g h% s a) v4 v
if (upp_buffer_a != upp_buffer_b)
: Y% ^. X4 W r {
a$ {2 ]- y! J% I4 J4 F+ V upp_error_count++;
1 H+ R, o+ i) E7 y+ [& l }
% R# q F1 p% f1 K }
! L. n/ H- |7 w- R& f1 N/ O }
/ U1 B' p9 ?: ]4 k9 R7 a6 b6 L
% C+ `% a" s# P2 l: z% b: j /* 报告通信结果*/ L0 v5 ~" f" \2 x ~: w) d
if(upp_error_count != 0)3 s1 j) n$ A$ L- @: @ x
UARTprintf( "upp_error_count=%d\n",upp_error_count);
7 Q/ ]( Z5 h1 h w else. f. P. g, g6 b, A) v: w
UARTPuts("uPP transfers complete!\n",-2);) C/ w* I7 _6 R& i
$ S% |2 h1 G/ I0 |. p [0 i UARTPuts("Do you want to print all the data?(y/n) ",-2);) d2 c# P: X# f+ H( K$ D4 m$ \4 v K
UARTGets(ch,2); Q$ u+ V) h6 `3 X& W+ o% A
UARTPuts("\n", -2);5 J$ x' P R! e% s( W
, Q- l$ Z& o8 b8 G* E- i, a if(ch[0] == 'y')
& l, P* L9 l }) `" u8 k {
8 t% j( n% f( e5 T, Y6 e* T /*打印全部读到的数据*/2 a, p( o, A; d# ^- |" D( F2 `
for(i=0; i<upp_frame_size; )7 ]7 h, H' R' W" ^7 H# Y+ s6 n8 y
{
3 q; _! K" b P1 h. O* |( Z5 G9 ~: i for(j=0; j<5; j++)
- I% T$ Z( z5 F3 e3 V8 D {$ W. `8 S5 U3 s! R1 s0 j
UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);3 b, h% W2 w) }( |. s% F. r
i++;
/ y8 w+ K3 z, W' G n, |- F //if(i >= 4096)
) H5 T$ f I/ z* J' X5 Z% B6 i // break;
- O- {2 t7 U! x
* |, q; ?/ p% w" d6 g5 E/ u- _ }7 m6 q! ]$ Y. F; N/ i8 }+ f
UARTPuts("\n",-2);
+ }5 f' ]+ ?. `' S: L }
# U Y" K6 P1 ^# J1 _0 O! w }
( s; O. f* `7 S% ~# y4 X
5 a3 K. ?: u' ~( W# h}
) |1 }. t" _% L/ Z* m8 ^9 q
% ]$ X; e! W! e; v/ D) d3 }1 ]7 f! K( \& |0 B
|
|