|
|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
5 P4 c* X" @, xVoid UPP_TASK(Void). N7 e' d* @ d Q) q
{
$ ^/ ]4 h6 _1 d T( P v- |5 M; S& Q
int i,j,k,target_int_count=2;3 B4 o: Y6 G) J' N" D
char ch[2];
# ^, }2 ~* W; |/ G3 }4 g) K
/ v3 A1 [( T& H0 W/ r
$ h* j# B/ M% ^1 g6 ?# w; ^$ n8 ^5 V/ @ C+ O" W/ ]9 H
upp_interrupt_count = 0;. x0 n7 q$ M. l, g% Z$ s
upp_error_count = 0;
# ^6 D4 Y& F( D
; D6 n" L" M0 r1 b UARTPuts("\tResetting uPP buffers...\r\n",-2);& o) E5 }: t, C5 m: E t
// Initialize data buffers
" `" v. z- A; f! r8 ^ for (i = 0; i < upp_frame_size; i++)0 @0 B5 g9 m! _
{* Y) V% U* z h5 o% u
upp_buffer_b =i; ?; P( `0 f# e
upp_buffer_a = 0xDEAD;4 w' S) b8 v0 E; y! ]
}0 n* D$ c, w% T+ ~
L* b- p0 b0 ~1 S% O5 b
//for(i=0;i<1024;i++)
% a: u' f1 h& |* m; @5 I // temp=0;
4 j2 ~& y" h h6 J
. Y) q" E# [/ n; Z/ {) b //UPPReset();
a* U0 \9 a) g. V* u! w q& x7 @* f /*启动UPP DMA传输*/
" @0 E; s# w% H# p UARTPuts("upp_prog_dma_i\n",-2);! G- O+ P% p* i e; i w! u
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;; U; {. m7 c' t
upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
" i6 Y& J E) ~' A, U upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
: y3 W" |- H ?( m/ \% S% P% o; z
, Y7 u9 _# t2 h5 A8 v UARTPuts("upp_prog_dma_i\n",-2);3 j7 Y1 d5 \/ W
upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
- ^1 u" M1 g. E! \% o/ K upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);' h6 o+ n. u( A2 W3 i. ~
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);( K, t% v9 g5 K- _0 x
# y2 R5 O3 p( T8 `3 |0 M/ I, { /*等待UPP传输完毕*/
4 L7 K" y. G& t //i=0;
: b) T) {! Z) l0 F7 S; \ G; w* H //j=0;3 ^( L; ?) n# R* R0 E
while (upp_interrupt_count < target_int_count && upp_error_count == 0)8 ?8 n8 Q: ~" m& F
{# ^$ @- R# T: o1 |2 Q
/* 测试UPP传输的同时操作普通DDR数据' Q6 N+ F: C* u8 z% A B, X) K9 P
temp=i;, \! Q$ W0 T9 v' Q: j
i++;
Z7 i. {$ V5 L5 Q4 t! P: `% a9 i if(i==1024)
, k. S) ?" n3 W9 _, ~' ?. } {
6 a0 C& s$ s- J i=0;
6 ?& a2 @3 h8 j/ K! d8 N j++;
4 D6 t$ |/ K% h: X; r) M9 } }
, L8 A1 B5 B' K- }; Y0 N9 x# N */* g4 s B2 d. v* z' R* F: r; z; d
4 q% g* f, V+ N; }: {
asm(" nop");. z6 y8 V* W0 v, @) m2 j* y/ X2 Q
! X' ]; q% ^" [0 Z5 Q' ?9 v2 r //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);8 P7 P7 d1 E; P# v3 C* M' F
}
2 z/ |3 D4 |5 L$ e8 N1 y: o, h [. K# }& H4 ^6 u8 I
/*检查UPP传输的数据是否正确 (loopback modes only)*/9 Y9 G' }/ ~% x. K2 E, g6 C- g
//UARTprintf( "i=%d\n",i);3 u( M6 x/ y, t+ M! w: l, C
//UARTprintf( "j=%d\n",j);) a* N. W' r% r. D& q
UARTPuts("Data mismatch in buffers.\n",-2);. k4 e w. {; v8 f% T
if (upp_interrupt_count == 2 && upp_error_count == 0)
x* h' F, F6 r% h2 Y2 j- G {; G3 [- P# w* |, T U6 W l
for (i = 0; i<upp_frame_size; i++)3 k6 ]+ c2 i4 \. H) n1 |' D
{. v9 z& E1 @6 @' t; a* T
if (upp_buffer_a != upp_buffer_b)
- N1 ~ Q+ O3 c {" P+ o6 y4 Z/ O3 s5 \8 b3 c' _
upp_error_count++;
( `9 b1 [% V6 R- |; {" ~ } h- v g. v {) z( L! z
}; {( g6 Z8 J$ C2 L H
}, q# [6 Z8 y) i
$ }( M! O1 z6 n4 V; g /* 报告通信结果*/$ V3 f1 E* Z, C3 U% c
if(upp_error_count != 0); h4 q% k+ \3 _6 h
UARTprintf( "upp_error_count=%d\n",upp_error_count);" L6 \3 b0 A) v4 g% Z( D7 ^
else6 t* s% I1 w# \' X9 J8 C. L; C
UARTPuts("uPP transfers complete!\n",-2);7 P. d7 U" ]8 h; r A' y
! E& k8 b$ P* v( V! f+ ] UARTPuts("Do you want to print all the data?(y/n) ",-2);5 K) t# C- r8 r) j) @
UARTGets(ch,2);
% \2 S% J$ U! t+ _ UARTPuts("\n", -2);
6 p3 E' h! b+ y* B4 f( e% s2 b9 o3 j8 W; R9 \( o1 D
if(ch[0] == 'y')/ |, P7 f9 { x
{
6 X/ {4 B3 b" x4 ~" G1 @. p /*打印全部读到的数据*// p; M$ Q* z" L
for(i=0; i<upp_frame_size; )6 K0 C1 ~6 `& R. ^3 W6 L. I
{' s% n+ g! h! j( N; J. Z, ^" @: s
for(j=0; j<5; j++)4 t* A( y: n$ _' L9 L. u) c
{
3 G% H% v- u5 c4 z% i UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);
; Y" J& D9 T, q6 L3 d i++;
" W* \( ^+ g9 H //if(i >= 4096)0 T6 ^3 ?9 ~7 M* r0 n
// break;
- `9 n! ^. s$ o7 F% X- z6 [
' h8 v: C0 O) ]- B }
1 w. Q& p3 ^0 V4 M UARTPuts("\n",-2);( u- S, d# T7 f
}/ v r1 [; [0 E6 b: V
}, ^- \! I( T4 ~5 d# v7 `
/ P' ?1 c5 d9 G) v5 h' c9 z}6 L: C. P6 O0 E: G- e& h: R
2 N+ h$ I! m2 G$ H" ^0 P
8 D! v; E! X8 D2 p
|
|