|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?1 X: X0 r9 K2 y6 l3 z! W
Void UPP_TASK(Void)" A: z) V5 K8 P( s4 |
{7 V* a1 j' n) _6 o
, a3 @& w6 x( X) y5 W ?; E' |
int i,j,k,target_int_count=2;8 g) F1 L) x8 D6 p6 J% o2 M+ e$ P, z
char ch[2];2 L V! |0 C0 j- d1 a
( v$ P' J8 H7 u& n) ^) w$ @( s2 S9 Z. \$ b
2 P) ^- x0 m. x% g* O8 E& V/ ]. |1 z
upp_interrupt_count = 0;3 x2 B4 a; \" K, l
upp_error_count = 0;& H# W2 I& S4 Q" ~+ N% j6 B
( `' x9 W: |' Z( A- r. w
UARTPuts("\tResetting uPP buffers...\r\n",-2);8 [: u5 |5 w. r7 K% T4 K
// Initialize data buffers
: |. t1 C! t' Z/ f. q. l, T3 i for (i = 0; i < upp_frame_size; i++)
$ d" y; f& I. l {9 B" i# s9 ^0 g$ i1 C
upp_buffer_b =i;. x! v$ p0 a1 G' u7 H
upp_buffer_a = 0xDEAD;
2 \- t. \2 y& k6 m+ z: ^8 ] }
( ]' n* g9 |: Y* a1 a$ D: J8 s. J
& @9 _0 X, F- ~: ~4 w //for(i=0;i<1024;i++)0 H% h% }1 M3 v
// temp=0;) X3 ?7 I) p8 n& t$ h) l E \
2 ~2 ]6 u9 x' U/ U
//UPPReset();9 [) h* H0 Z6 D8 F8 e& Y6 [% I
/*启动UPP DMA传输*/
7 i3 o4 E7 d* I) s. C' T* Y* Q UARTPuts("upp_prog_dma_i\n",-2);
# ~( P) g: r5 \8 ~ upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;: |9 Q; Z% ^8 g4 U, e3 U7 h# i! j
upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
. K9 P3 H* p0 C7 b e, L$ ^" Z upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
5 \: [$ W+ G4 l
1 i: h* L: |" q UARTPuts("upp_prog_dma_i\n",-2);, P0 l2 C! J% E0 ]6 r; \: _: w4 e
upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
3 Q/ v& I7 n! d1 w6 J upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);! u9 x; U- T5 }, O0 A5 U
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
5 g1 m7 k/ N$ P
( L9 m L1 ?2 w S /*等待UPP传输完毕*/4 p, g" s+ s. I; f9 B3 V/ b
//i=0;. `; l2 y7 S/ E( E4 G& n
//j=0;
6 c C5 @, A" B' k v( \- n while (upp_interrupt_count < target_int_count && upp_error_count == 0)5 h" W! v8 V8 O
{
- N' H! U! G1 I, S /* 测试UPP传输的同时操作普通DDR数据5 Y: |% D5 x) `" W
temp=i;# s$ \, p0 Z* ?/ M: x# j$ O0 F
i++;
[3 p. p, }2 f, ` if(i==1024)' O0 ~- W' j! ~9 p5 w: W* I+ g: s3 v
{
4 V( @; f9 Z, z- Q6 v/ q2 u i=0;
/ R3 H+ F7 V& N5 ?9 l! C! B4 Z j++;
9 C( ^0 X- d! @' N4 h2 ]7 A, { }
# O& k8 X, \* h( r* y */& V8 \3 \2 ~6 D# F0 n
: b/ T* @/ Q2 y5 Z. I- i asm(" nop");( U& ^ I# I# [: w: U
2 o( [4 n5 D2 B6 k" j
//UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
- U" v9 C6 S5 e! F8 O2 K }& Z1 v: ^& ]1 G; K6 z/ w/ i, R
5 @9 A. K3 z0 q
/*检查UPP传输的数据是否正确 (loopback modes only)*/2 u( B6 c& A; M
//UARTprintf( "i=%d\n",i);" l6 Z# b3 V# `3 t8 f
//UARTprintf( "j=%d\n",j);# ?0 F2 d& P3 f% z, d$ r: [, W: _ V
UARTPuts("Data mismatch in buffers.\n",-2);
8 \2 }9 I3 ` _7 q* n8 z9 T if (upp_interrupt_count == 2 && upp_error_count == 0)& o# v# V: B6 [6 @& f% W1 [
{! [1 n. w \% o5 j- c/ K2 x* q8 u
for (i = 0; i<upp_frame_size; i++)
# u% T4 d! K+ H3 L8 q {, p& s% K' K/ ?' j8 o) Z. f! a# Z
if (upp_buffer_a != upp_buffer_b); a, F! @! Q2 N t6 i$ W
{
( }0 S( f; p8 P, W' e upp_error_count++;
' T5 R, F0 f! a2 y/ A }; M$ w. S! c/ _7 T- G) B+ b0 S
}
1 j4 X$ n3 D2 X- S' X/ P }
* {* l( x- f+ y$ x( X" |4 Y% ]9 A3 ^% U+ S
/* 报告通信结果*/+ j, m4 n& x @: @7 P2 J1 Q A
if(upp_error_count != 0)
; w& s" b" S* S8 t; L7 p UARTprintf( "upp_error_count=%d\n",upp_error_count);
" j) H, Z7 K' ^7 ? else
9 ?2 T- M0 D4 f) u UARTPuts("uPP transfers complete!\n",-2);
* c8 _* z" V) L7 q; q) {
; D& Q/ R: A% S1 s7 H UARTPuts("Do you want to print all the data?(y/n) ",-2);
- N$ v$ f2 E2 G1 o7 B, t1 ~ UARTGets(ch,2);
9 }' r, `$ F: p Z: P UARTPuts("\n", -2);4 I0 W6 ?; e9 f6 J/ J
4 }+ `9 n1 x8 }6 y4 |& [# S
if(ch[0] == 'y')
/ |4 F1 K- P, D8 L4 A( ] {
/ K6 N5 T: G! f /*打印全部读到的数据*/7 D6 q. R6 Y( X: S4 V
for(i=0; i<upp_frame_size; )# m$ `" k3 P: d8 `1 A+ F
{5 O& Y- F" B( Z3 I9 u
for(j=0; j<5; j++): M9 A: i! W2 s
{
" @/ N2 I/ }' {& i; c+ S5 h UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);
( N8 t5 _. K' _. g9 S# \ i++;
: }, v( m, U0 e( T1 @% P% Z //if(i >= 4096)# k T. d2 F7 C& [' W$ B" |( v
// break;
2 _: K) B9 _' K, p' L' _% |+ M
9 \/ v6 V1 t) G8 u( o! {! R$ I4 F1 I }
( B0 i3 B6 H8 G+ x7 @ UARTPuts("\n",-2);
2 n" O; j7 q0 h# z% N, N }
4 {/ G! m+ X7 t8 d. h& a }
( q! N: I3 A) E. s# L2 @' v2 U8 V) t' J& V# n5 _4 L: o* }
}/ |7 `. a/ b; G" z( O/ H* @
4 l( e2 z A9 R; l g* Z( A
) t; }2 [0 [% t) v
|
|