|
|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?5 G2 G2 l; ]: V7 ~+ [5 X
Void UPP_TASK(Void)+ o9 L$ N p$ E- K! a- C6 r( k9 v
{( k2 A7 [/ C i+ ^7 p# s
+ _2 w6 Y+ H# I
int i,j,k,target_int_count=2;. B* O: j7 A% L4 t
char ch[2];
5 u8 b: e. _# v0 s9 C
" ?$ d; y! f9 E! W
; J6 K( _% u& Q5 ?2 Q, j% s- Y& J0 f& X F/ d1 z6 M. Y
upp_interrupt_count = 0;
; f8 g% p$ @+ }& {2 m upp_error_count = 0;8 C7 e) n2 M1 u7 z) q3 ?6 C3 s
- k+ i' b9 ^8 ^/ W1 `! [9 F
UARTPuts("\tResetting uPP buffers...\r\n",-2);
( c0 m% N, O' p' ]( f9 A // Initialize data buffers8 v5 g6 m! h g( p$ W. m: ?( Z
for (i = 0; i < upp_frame_size; i++)) i$ }0 H( Q" i# d$ v, Z. H9 k( E$ t
{
* h- E K0 Z2 c: n; u% f4 Q# D upp_buffer_b =i;! Z* _2 C# R) S! W; n0 f# L n% _) G
upp_buffer_a = 0xDEAD;
- O# S7 G! O7 Q* ]1 o) O' R }
' g$ q% v( L" A- D% Z# j p! }
$ N% Y9 x/ Y4 P' w* L, J //for(i=0;i<1024;i++)! c/ Q0 w- p2 k+ e' I2 o
// temp=0;- `( g/ F3 Y0 W1 H6 U
# `5 \$ Z- P) o' T/ i0 E //UPPReset();
* D1 I& H! e; B$ \; m- J8 N /*启动UPP DMA传输*// s' Q& a, H4 z4 R0 E2 U
UARTPuts("upp_prog_dma_i\n",-2);
6 s5 |4 \2 W5 o2 \1 V! x upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
6 f @2 |5 L$ O) y% d: H+ T/ H upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
/ P" ~8 l) ^0 Z: [ upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);2 n0 a9 q: W0 O; j5 o1 P# X$ ]( J
- o- i& o0 w, _
UARTPuts("upp_prog_dma_i\n",-2);
* ?) i* Q0 R$ z; U9 A' a% a- ? upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;4 q. `! N+ ^" t. q7 N$ I
upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);- Y6 n6 U5 I7 P5 \ ?- @1 v
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
6 d1 ?8 U8 i" U% b3 M7 ?$ [% T% V9 w. r4 |9 D% J
/*等待UPP传输完毕*/
1 U* D2 X7 x" o, S2 ^" w; V+ o! [ //i=0;
8 b& F. r7 w% H0 S: U. [: @8 _ //j=0;
- I1 e3 f! g1 ^, B+ L; _ while (upp_interrupt_count < target_int_count && upp_error_count == 0)
2 g1 @6 X0 `" g* b2 t% {( X2 ] {4 H' l$ l. g: \& L) `. L4 B' Z! i
/* 测试UPP传输的同时操作普通DDR数据
/ Q6 {. _7 X7 V* } temp=i;4 J2 x' e. S$ r
i++;! b0 ^6 Q5 |$ T* \* q
if(i==1024)
9 T7 U i! A5 l {6 j0 A& `1 F+ j! [) m" N
i=0; J5 Q2 R0 L" \2 U; k/ R
j++;
' h6 [, `3 d. m# [4 y7 v }- r& G* c5 t$ @0 O. \7 |
*/
9 p; I9 o3 ?' E1 o
. Z; H6 z- \ T. s asm(" nop");
- ~9 u7 n" f; j' n3 o6 w
! L' y7 l0 U0 u) R x$ \% w //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
$ c) P# U2 t. M8 E3 g* L6 y }
: Z9 v- Z* r& `1 Y$ ^
9 Z# `& F9 {( u' z; x; ]7 t /*检查UPP传输的数据是否正确 (loopback modes only)*/
) a6 k8 N& a1 @ //UARTprintf( "i=%d\n",i); P* f! h1 F( y
//UARTprintf( "j=%d\n",j);
9 U8 ^/ A6 c6 i UARTPuts("Data mismatch in buffers.\n",-2);' r# N0 k8 z2 n- E& f
if (upp_interrupt_count == 2 && upp_error_count == 0)" }6 i2 ^9 g4 X7 i3 z. E
{ J4 P- G: N3 d3 s# n& G8 m( W- I. o5 w
for (i = 0; i<upp_frame_size; i++)
& r! G9 @/ F& F% }4 C; f6 \ {( m" f/ n0 N& S/ }7 S
if (upp_buffer_a != upp_buffer_b)$ D/ _+ \1 n! [" h) b
{
6 u8 n/ Z, p) a) f' a/ W upp_error_count++;# q6 x3 D( B& \ p4 B# \7 v
}! `/ j. H% v3 d3 c! A; `
}1 w- ^/ Q8 c& f1 m# o" X& Y# ?
}
" ?' Y1 \0 X2 T0 \# z( U, O/ X9 y* F, i0 ?; V) [0 B" [5 M
/* 报告通信结果*/
6 W. b0 P9 I: J" r if(upp_error_count != 0)
! d/ {( E1 T$ |: B6 k4 c- E UARTprintf( "upp_error_count=%d\n",upp_error_count);7 j' g# ^8 G6 W" |" i' X) W8 m
else( P- i) W# r4 |' l
UARTPuts("uPP transfers complete!\n",-2);
9 @0 X5 K: P1 {! J; C2 }' h
3 H3 m I+ i; q+ D. [" E+ V5 s UARTPuts("Do you want to print all the data?(y/n) ",-2);0 Z O2 w; @* L5 {. {" R
UARTGets(ch,2);
3 C- c8 T8 M( l+ ]7 n& q& f UARTPuts("\n", -2);, c- z: L/ H' l6 o
6 M' g6 h! O/ f
if(ch[0] == 'y')
4 W" C8 Z1 S# { {
9 F8 @5 D% M( C6 d /*打印全部读到的数据*/2 y/ j) e5 y0 B2 z
for(i=0; i<upp_frame_size; )
; S4 ?- X) V: _( J6 F. z: c2 Z: g {
' f1 _6 |6 T1 y3 y; }0 B! r6 ? for(j=0; j<5; j++) k" T' ]- g7 w9 c! j
{
, U! K( n9 B* u! o5 O* V; m1 ` UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);3 s Y/ d1 P a$ Z6 F
i++;. \$ S" W$ W7 T6 f: B" u
//if(i >= 4096)% k* V. ^0 |2 u4 d1 i
// break;8 B' Z$ U, G7 v# k* |6 z
# ^. [9 R" w5 t+ I* f; R }
8 c: H( y& N( O4 a5 i. Z% y) } UARTPuts("\n",-2);+ \2 U4 F$ [# L' ]' k D6 _) Q
}
. E, D1 A/ d2 [( v }; h9 A! v( d( \: c$ D5 e7 g
, h1 o% K# ~4 a}! }7 f1 E" J4 U5 J" [
+ g& B4 a% Y$ N* i$ O& K8 t% E
|
|