|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
! N; o' ~& }+ Z3 P, w( P3 J* A' h ?8 QVoid UPP_TASK(Void)( J" S) R# X) }- W. c: r: u: n: s
{
) e m2 a8 [ B$ Z! z& K$ k+ B; j# Q- q _
int i,j,k,target_int_count=2;
. L" {% l. q7 X char ch[2];
% W" H7 N3 K7 j' v2 }. B1 ], W( y1 m$ |/ j+ V4 ~1 L
* x) k+ R. u y) d
+ }; F6 q; h3 l0 K* z+ `3 l
upp_interrupt_count = 0;
2 Q8 w0 a1 c' c, S upp_error_count = 0;6 X. {9 B! Y( e" Y% |5 U
5 q8 H) r% i+ W8 h' \# q/ t3 `( t UARTPuts("\tResetting uPP buffers...\r\n",-2);6 C/ ^( q6 t& T0 @) m
// Initialize data buffers7 W" ~ ?5 ~) S7 u+ a$ L. q3 _( \3 `
for (i = 0; i < upp_frame_size; i++)
8 a% w! Y$ U/ j0 k {% G; r+ k) d( ]
upp_buffer_b =i;
+ p' z( ^7 p9 i m upp_buffer_a = 0xDEAD;" Z* s2 Y% P* W! b( E3 A, x- X: I' m
}. Q" G/ M3 y" `
+ c4 a+ n) K0 p( v* P( ^
//for(i=0;i<1024;i++)9 y0 Y1 I* g% P) w' j' t
// temp=0;
$ h8 z" g0 U+ A2 x! r" O" l7 E
: U: d p6 c9 {( ?5 A //UPPReset();
4 h9 C: k% b3 k8 ~! | /*启动UPP DMA传输*/
! P$ \1 b9 K! ^0 I m1 q8 Z* X UARTPuts("upp_prog_dma_i\n",-2);
+ k( u6 j# k- Y% S2 u6 w upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
; d$ o: p" o0 Q8 [0 \- y6 ~# x upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);- L X# U' V( g3 E" T- `, B
upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16); h N% h5 o; J1 \9 C" v5 X
+ ?+ X2 d `. k UARTPuts("upp_prog_dma_i\n",-2);5 k" s8 {7 o% H% u- h
upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;/ Q6 O5 o+ m8 g. R( d
upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);+ ^2 t4 t) w3 f8 N; O7 Y
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
6 h/ r$ a! }* p* U/ N9 t, }9 {& \; a$ X( F; ?
/*等待UPP传输完毕*/0 \. r. z+ S1 m+ P* o! @( g8 n- D6 S
//i=0;
2 `1 m$ P1 R2 M! C //j=0;' Q: A$ C& g+ h3 ?( h' y# N3 \
while (upp_interrupt_count < target_int_count && upp_error_count == 0)$ G" a0 T8 f. C" u
{
4 ^+ b! ?+ v3 Q /* 测试UPP传输的同时操作普通DDR数据
4 p" T3 l% Q2 x$ I5 e5 o temp=i;
; D2 g: M$ X5 V, V$ s i++;( r7 t; w4 v( b% A
if(i==1024)# ]3 ^. B e6 k" i: y
{9 C" O/ i! \: I' v+ X/ w% {
i=0;) [: s: s" O& u9 P) H
j++;- y; n# I- u/ x& l
}
& U+ L! k: c/ D; a, M2 r */8 ~1 E9 Q$ n/ ~, ?" @9 V7 b
$ q( ]! r' _$ o) y$ c; z- ]6 D
asm(" nop");) S& |; B4 ]1 e: m, j
/ [# V, }3 u+ R //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
/ q3 {8 m1 A$ a9 T- c2 ~! E }7 [$ ]2 B0 f: t7 V3 \
4 Q& l4 Z+ [1 o- s /*检查UPP传输的数据是否正确 (loopback modes only)*/5 [# e& o, u2 Q' A
//UARTprintf( "i=%d\n",i);
9 Z5 G1 z0 p( t //UARTprintf( "j=%d\n",j);
$ z; ?- I8 C w9 ? UARTPuts("Data mismatch in buffers.\n",-2);6 ^9 _, L/ s9 U9 u1 r% [
if (upp_interrupt_count == 2 && upp_error_count == 0)
/ \9 Z7 B c: J% }% R: @# R( ? {# L5 O/ \ [6 W. C- y) C
for (i = 0; i<upp_frame_size; i++)
7 N4 L& l% b: u9 c/ p- m0 c ` {: N$ ]$ T2 @: g4 O! L9 |3 V
if (upp_buffer_a != upp_buffer_b)) r) F% A- k; w4 u
{
. H- F3 K+ A% C1 q3 J/ L: q upp_error_count++;& D5 `6 q; E- R* i3 P2 g% ?
}
; [4 b! e! {: q }
; D7 j) e' c: y8 O, o' c' F4 } }' X2 c1 k/ w! i4 r7 H1 d& r3 O" R
- X- x. Q& o+ B, c2 k8 i4 F& a /* 报告通信结果*/
: a9 s0 ]' t" i2 P1 [7 }6 \+ ~( @ if(upp_error_count != 0)9 M7 h$ P: H: x8 H$ L) e
UARTprintf( "upp_error_count=%d\n",upp_error_count);/ M3 [2 u& k# t# k+ z
else
- c4 R/ I% q7 @1 @& i UARTPuts("uPP transfers complete!\n",-2);' m# a S: W) f5 }+ J& T. B
z3 Q( {7 s2 b; l* I: ~ UARTPuts("Do you want to print all the data?(y/n) ",-2);4 |+ T5 S! l8 N, @: _
UARTGets(ch,2);+ N) m+ T* l S2 R v- T. g
UARTPuts("\n", -2);
; I) }* I" h! h% h* y/ F) O- Q8 L# l& u6 V( h6 i
if(ch[0] == 'y')
9 f# Q0 g, C4 r' { {
4 U. Z) `7 `" U* E /*打印全部读到的数据*/6 h9 H' @: i" \- | z) T
for(i=0; i<upp_frame_size; )) u7 X" z1 I- K
{! p, m' _+ `) P+ X& D2 n
for(j=0; j<5; j++)( ^" v7 ]4 U4 R+ {
{
( @/ T3 Q5 \7 r UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);( F( V! ^) G' _9 ~
i++;" g2 w/ C% C5 A# I4 }. F
//if(i >= 4096)
* y8 w5 U) `5 L // break;
. c, L0 h( h( _6 ]
5 ~3 j% a, [4 D6 c, q }$ A/ w5 Q; j1 Q1 x* d0 k
UARTPuts("\n",-2);
- p5 q; _* _7 F M; @/ n }
% F1 v5 k' l3 O% q" Z }# b3 r0 E/ s4 }3 p5 y
" A9 n9 ]! J$ j2 N& U, A}
, |1 B; [ [1 s$ R0 i
# x6 y; y. f! y6 y! m; C
1 M! M5 I* f( \7 m6 t+ F |
|