|
|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?9 J" X0 W' N- Z0 I
Void UPP_TASK(Void)) C% ~' x8 Y2 t& j+ \2 U
{
. j+ G3 L3 v; v' N
+ _& W% e* X0 O! r" z9 X int i,j,k,target_int_count=2;
, g/ ~5 }$ u! C0 F* }, T5 I; c. m! O, h char ch[2];: s* P, a5 K- A7 N# H l
* P! z8 @# h/ v4 U Q, m
8 Z* @, @- ]- {2 H( x
$ z. c$ s9 d0 V6 K# H$ X upp_interrupt_count = 0;- d# `4 t4 d) X; P
upp_error_count = 0;
. S, U1 P) s, l- ^- x. D% ^0 A7 w- I6 t7 K5 J4 L0 P' }
UARTPuts("\tResetting uPP buffers...\r\n",-2);* ~) J: c* Z! x: G$ y
// Initialize data buffers7 V6 J. u+ e% m0 X- q E+ d4 V- r
for (i = 0; i < upp_frame_size; i++)
0 k' h; p4 W+ u0 ?1 y9 H {/ ]: h& Y+ [6 E0 N! v5 |
upp_buffer_b =i;
* c; D/ m1 E& I8 B upp_buffer_a = 0xDEAD;
! |( _8 z! T- m( Q& Y9 R }4 ]+ b1 n# R) w4 r" m' x
. l0 Z- o0 g1 S& H" i3 A. L; m: a //for(i=0;i<1024;i++)
1 F9 |+ {# o" A+ ] // temp=0;
1 M9 L; l- c" z) F! o/ @, \8 n7 p( w6 [
//UPPReset();2 a" R; Z) U8 j y& @
/*启动UPP DMA传输*/
9 c% R- K8 z: q: L UARTPuts("upp_prog_dma_i\n",-2);
0 V& i6 I! D- f8 q, B0 a upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;4 G5 }1 s4 K4 m4 i
upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
( c2 F7 M; F+ Z$ F upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
& i, M& }8 }- R; Q0 w5 S' x0 ]2 C% k& ~3 y, c
UARTPuts("upp_prog_dma_i\n",-2);
' u; G9 h/ I% |$ {% A$ }: { upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;+ @; T) T% Z# p" a, H
upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
+ g" w% G4 b. Z/ M3 H7 q upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);9 u, k* w" ?" g0 y+ W# Y+ K
* N: x% B% g3 u9 q# | /*等待UPP传输完毕*// J' D5 J8 L, n9 ` ] s
//i=0;
% c9 {1 | H% b3 z/ N; H- @4 U //j=0;
9 m" ]- G4 q& }! F% _3 S0 d: a5 b# @. ] while (upp_interrupt_count < target_int_count && upp_error_count == 0)7 ~. G& {" o% J( f$ c
{( j+ d U' [2 [# i1 ], K5 X5 A; T
/* 测试UPP传输的同时操作普通DDR数据
$ J z0 K- F' ]$ ~: J5 { temp=i;
7 }. e! p5 x7 u) \- a7 h i++;
4 ?: M- D) D9 M if(i==1024)$ T: \9 W1 ~6 u8 X! x
{, Z/ @, ?; e9 N& k, I/ W4 o! W
i=0;
! y; n, ^" y. Y* S4 g6 } j++;
) w* X. l: `: |% q/ a }
# x. E/ S* X, Y+ t; t& E# x9 t */4 S! t. r& k$ Y
B! B( g% h! {8 ?: Z t asm(" nop");+ P! `- l. t/ y8 \
8 i0 x; ^) p0 a/ l
//UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);8 m! m3 Q, c! c, E* x2 l; e
}1 p1 \# |0 U, q1 P7 f6 u
' o1 L5 I- J) b /*检查UPP传输的数据是否正确 (loopback modes only)*/
0 `0 M3 r3 h8 ?% ]1 i+ I //UARTprintf( "i=%d\n",i);9 f/ W* U% M7 e4 d2 ~% |
//UARTprintf( "j=%d\n",j);2 H4 v9 @9 M! _5 ?
UARTPuts("Data mismatch in buffers.\n",-2);
$ a& L2 _( t' k) r! n3 \ if (upp_interrupt_count == 2 && upp_error_count == 0)7 I1 Q7 D; C/ {
{
, D! A2 L% N# p( p4 o. \1 |6 Y; F# y! n# \ for (i = 0; i<upp_frame_size; i++)2 Z4 B: p" \ w+ t9 Z) ~2 h% \
{( [5 y9 I1 a' `+ [# { t) Y7 r
if (upp_buffer_a != upp_buffer_b)
2 L! P. M1 h8 P( Q7 l! N8 m" q { l/ W4 T2 J) A& b# H
upp_error_count++;4 m+ h8 A8 @+ u# Y! l; v! j7 A
}
, f% D% o. f- Z$ x }4 y4 Y! J# k m
}
' E2 g4 A2 r; h2 S2 W/ A& i4 W, C" ^; Y" {
/* 报告通信结果*/
+ ?% S& k5 l0 Z) e- [! i if(upp_error_count != 0)
9 L) `! P! x: R' @' M0 r9 h; m1 R$ R UARTprintf( "upp_error_count=%d\n",upp_error_count);: m/ O3 @0 U' T2 h" q F
else
" n C" ?% q: K9 P, Q. K UARTPuts("uPP transfers complete!\n",-2);! E# H2 `7 Y3 E' C4 K( ^
3 y$ R J8 f0 p1 P& u% q
UARTPuts("Do you want to print all the data?(y/n) ",-2);( u# C1 C" d8 T
UARTGets(ch,2); \3 `3 s" R. O$ E$ u, c0 J
UARTPuts("\n", -2);2 n9 l: x; {) P
. c! E- j; Q9 z3 s5 X3 F
if(ch[0] == 'y')
* p7 _6 ^: _6 ~$ P) s' {9 u {
2 W7 ^! ?, v2 d- ^+ d8 N! f /*打印全部读到的数据*/4 J% P) S4 L( }3 R! |
for(i=0; i<upp_frame_size; )
( w I/ ^' l& b- J# M" T {7 n t, R1 J- C/ }: R& ^
for(j=0; j<5; j++)5 R* V% h& v* J) f
{
9 f Q) p8 o6 N# Z& ? UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);2 s) a% i; w* P$ o2 H. J
i++;
* Z% W* I3 V8 C* ~$ C4 p2 _7 l6 } //if(i >= 4096)
9 G% I$ \2 Q7 ~. \ // break;
1 f5 }& X8 Z' ?
+ _: j e0 [7 d* S7 ` }
$ h! {2 s/ P# s/ e3 K" G m UARTPuts("\n",-2);+ g/ H5 [# W/ \& h
}
- z! G( q r9 ]! h' p }
- i( @% Z4 W0 R9 R1 c
/ W6 z/ y, Q; u}
1 A& B) ^1 S2 q/ \
7 C- c0 e- _8 Z4 n0 H% V8 Z4 a* _3 m9 E3 y7 S
|
|