|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?! s& e5 E1 Y. i$ o- f9 S$ l. q
Void UPP_TASK(Void)4 k1 }. m. q0 E$ M9 X
{- U0 y/ h0 c7 E5 }2 w6 {
; A# _# j6 J: X, ] int i,j,k,target_int_count=2;
: h4 J4 {3 V4 N char ch[2];
2 n G! { {, }8 l& E1 A4 Q/ E! q" }0 P! a
/ G7 V$ L# Z( X. W
^, F5 c8 d# Y) I upp_interrupt_count = 0;
$ u: Z5 O% F* s8 j! H$ X* \ upp_error_count = 0;
% a/ _) V$ _6 D6 q
4 y4 ]; ]: _1 }+ t UARTPuts("\tResetting uPP buffers...\r\n",-2);0 D) L* }( H' Z8 l
// Initialize data buffers4 C* D5 O, P$ v; q4 N( B% [: C
for (i = 0; i < upp_frame_size; i++)
% `% k6 q! K* k3 c {- V( H) ?& q% |. G0 Y2 g; S
upp_buffer_b =i;
. `, \1 {$ \6 r6 | ]" m upp_buffer_a = 0xDEAD;
, |" J# n, d/ U# d2 K9 Q' j }
) M' T' M5 ]7 Q: b1 r6 x
' _" [+ e- P5 t8 t/ l# I6 t //for(i=0;i<1024;i++)
8 J4 y C6 [6 a; ~0 f // temp=0;
5 w5 ~* |- Z% I2 b4 v# Q9 @4 d: ~3 Y: W
- `/ K8 X# b9 l) t& F" S" m //UPPReset();
4 E( a. K% b5 K, m# E3 n! ~ /*启动UPP DMA传输*/
: e3 a' P( d# J$ A6 O UARTPuts("upp_prog_dma_i\n",-2);( m, @( Y& l: |% n. |5 M0 T! t% v% ]
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
: S& f0 K$ ^( C9 O3 }! s# [ upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);, O/ m) K" X& } n0 [# f8 c
upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
& |$ Z6 o$ E+ J" i' }- Y1 b
3 I' r0 x7 ^ X9 f) ^3 C( Q UARTPuts("upp_prog_dma_i\n",-2);
9 q5 C7 C x: Z: B; ~$ F- C upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;, o; q+ w+ L2 n( w7 w9 s
upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
5 T% E* l0 q" J" c) a upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
; u8 E$ l1 z* P3 [5 {! d' B ?6 v& g/ U0 a
/*等待UPP传输完毕*/3 h, n& h$ i- ~$ ]+ j
//i=0;
4 \! v) z0 l* _7 K4 n% j //j=0;0 I/ r( X6 Y3 p! p3 @0 b' @
while (upp_interrupt_count < target_int_count && upp_error_count == 0). l" J5 B* I% a7 f" x6 M
{9 D/ c c' D: _
/* 测试UPP传输的同时操作普通DDR数据
: P# Y5 g0 a5 u" b) C5 T ~ temp=i;
0 F# R. Q! W5 C( {4 x5 X# p i++;
/ ^2 E8 q- j1 M k2 J if(i==1024)
) _0 E) r- u: U$ x& C2 m2 O {
' G( R- ^$ c3 F; ^- ` i=0;
# R) F; V u V. ] D* B" D0 ` j++;
+ R2 M! f% F' T% _3 `+ N5 X# J }) ^8 u# j' {; e, J. F
*/: v% k% G! \9 ]: l- A) G# [
, d; T* h7 H/ O6 I) r
asm(" nop");
0 Y- c x6 Z6 ^6 ?* |8 W S4 T3 h3 p9 l$ b9 x* N
//UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
" e* j! D7 T7 r- Q) U }
( }* D" m. a- {8 u6 A. Q' U. u! s( e
1 B$ @+ t; \" D! L/ l3 G /*检查UPP传输的数据是否正确 (loopback modes only)*/
- G+ B2 V1 @3 g //UARTprintf( "i=%d\n",i); I) m) R4 G( p& A# E. F
//UARTprintf( "j=%d\n",j);
/ k" P) ?9 e, J8 J( M UARTPuts("Data mismatch in buffers.\n",-2);& h& w; u H- e7 e+ S9 o
if (upp_interrupt_count == 2 && upp_error_count == 0)
# L! U2 o8 @: Z {1 L+ q+ R5 g3 J0 l; {
for (i = 0; i<upp_frame_size; i++); t9 f& ?( f# w4 r0 P) L' ?
{
2 F+ W5 [, }1 E4 \ if (upp_buffer_a != upp_buffer_b)
8 U. h7 J5 M2 i {
* ?& }8 T; E( G% [ upp_error_count++;
, r+ M' R0 x. F8 b/ J0 ~ }
7 P' u9 A7 f. m. ?/ J1 k$ A }3 E* L) c# p- p9 K3 j- m
}9 x+ m! n4 c6 w. q; g# B
r% I- }( e/ \4 q: y5 j /* 报告通信结果*/; n# ]* u2 Q( W7 Y; W" [
if(upp_error_count != 0)
% d7 ^7 z7 o( J; \' n UARTprintf( "upp_error_count=%d\n",upp_error_count);. }9 W% v* o/ h4 F4 M
else" r4 K2 i; p6 Y9 `
UARTPuts("uPP transfers complete!\n",-2);/ s( E3 T, {, Z J* L/ R
( n3 \$ Z, n9 l5 @: h i- A: b UARTPuts("Do you want to print all the data?(y/n) ",-2);$ W }9 x! ~4 i
UARTGets(ch,2);. M$ p1 U @5 C, \7 G. G
UARTPuts("\n", -2);
, n' K0 w( y9 _+ \9 M1 S# w* a5 o1 e: I5 m0 @' h
if(ch[0] == 'y') H: O' _; V- a0 o7 {( k
{
9 J- P- D/ f& }; G# p /*打印全部读到的数据*/8 V C! q, x6 I+ ?0 R
for(i=0; i<upp_frame_size; )
& {9 ] h3 S# }3 A0 G {& q" E7 q# }. C6 Q ~
for(j=0; j<5; j++)' ?5 |5 @: f+ a) t& d
{
& j7 w X- w1 g) P6 O5 i UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);
: x1 ~* h/ W8 _! k) k; m- H2 s i++;
3 K0 S+ X o3 Y; R //if(i >= 4096)
4 k3 ~: j( @5 q // break;3 R+ f3 I* l& ^3 r* `! c t* t
0 Y$ O. B, n+ m( d
}4 R+ j/ E# w) G2 P# p0 z
UARTPuts("\n",-2);8 k; x2 a1 q; U) [0 s/ y& v
}1 y. d+ _# \. F6 B6 O% d+ c
}% F$ x6 y! @ `( d/ ?
0 G$ n% S( M$ N# N3 _4 K
}
5 H) _- z5 k( i) K T5 d! V
w1 C( w0 a% L1 _$ q! U+ `( {8 t" R o
|
|