|
|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?9 b) h# ~. f+ Z7 a5 X
Void UPP_TASK(Void)
1 r, I1 |; `- Z: P- V; n{3 R2 N; a" K6 t+ o# K: ~
7 I. s: ^! K# Z4 ?9 z+ t7 F
int i,j,k,target_int_count=2;+ o6 O* }& S# V% ?
char ch[2];3 C" D% Q2 \3 A$ Q0 b
N5 n# V: ~: P5 H, R3 A8 ^( X) N4 ?3 b' F
+ f* b; ~9 Y: s1 `) ~" `( Y upp_interrupt_count = 0;
( S2 f2 g+ Y o2 l7 R upp_error_count = 0;
# n3 B2 C5 y$ H( }
% m M7 r; d* K& h' O) | UARTPuts("\tResetting uPP buffers...\r\n",-2);
7 f/ D! D$ z& l8 w- ?9 @" H // Initialize data buffers+ J3 V$ T1 t. T
for (i = 0; i < upp_frame_size; i++)
! P3 Q: n; A6 S7 x* `; [ {: L$ x; p4 ]3 C
upp_buffer_b =i;* Y" \7 O, s) [
upp_buffer_a = 0xDEAD;
2 L D9 R- A" f' _) |! p }
: t8 a" U1 n$ n# T
; R& |5 ]' U! @- V& `3 _" | //for(i=0;i<1024;i++)! q( n( e% ~, ]
// temp=0;; Y) u' e2 e. u. P$ C9 c
2 l i, K* A, M' W G2 F! @8 ~ //UPPReset();+ r# l8 j, q1 D, R; ?5 r, H
/*启动UPP DMA传输*/
) F% _; i& D# z) ~' T UARTPuts("upp_prog_dma_i\n",-2);
& W! W+ q9 L, g7 G9 U X upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;! W5 d. u( }: E. `
upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
+ Y0 e- t A; K upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
" Z8 @9 X# U5 P. ?) w+ G3 A ~7 |5 Y$ m) ]% H/ k0 a6 @5 X# } [
UARTPuts("upp_prog_dma_i\n",-2);
$ |+ M3 W O- N! y upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
2 s& f9 |: U1 P- ~. s; {: c. E upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);8 D5 B0 |% K6 b; N7 R5 M) _7 `/ a
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
$ S# n8 F7 V9 ?2 |% ?- J
# n+ @( B' R% j/ [ /*等待UPP传输完毕*/2 B7 Z+ I [ B+ D; n
//i=0;
& `0 _9 a! V/ H //j=0;
6 w3 M- R/ l3 L, c while (upp_interrupt_count < target_int_count && upp_error_count == 0)7 u k: g5 d, h1 G) Y& T! O+ `& ~
{- h% D2 k0 E4 }5 Q/ J
/* 测试UPP传输的同时操作普通DDR数据
' J6 K( C' R7 }6 y- O% [# ]( w temp=i;7 a# ^& g; v+ C* o- m. r% S, t' S M
i++;
) { a* W1 _) i$ p if(i==1024)
. S' q- m/ Y6 m/ S" B {
- n1 ~3 _) }2 h9 H i=0;. C4 M$ N, G( Y/ E- W }/ o3 o; q
j++;" G. \) ^0 H/ Q8 w; |
}
' u) `6 a3 q3 g( h9 L" L */& u& J; K3 x7 ^3 F/ n! ~
+ }% e& i" Y9 j" m& m# J( i4 m asm(" nop");3 `+ l4 u) ?# K9 I5 Q4 @
1 a2 G* A& ]2 l- {9 X //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);. D" n) f7 z" T
}
$ P, ?; i0 s4 j" U9 o
( s: ]: j+ e) H" ` /*检查UPP传输的数据是否正确 (loopback modes only)*/
( `7 \6 x1 B( C$ j. w+ E$ |0 ]4 v //UARTprintf( "i=%d\n",i);1 S3 Z% G1 I% ~
//UARTprintf( "j=%d\n",j);$ O% T9 w" `: Q
UARTPuts("Data mismatch in buffers.\n",-2);
, ]- ]$ Q, m5 r- l" n: \ if (upp_interrupt_count == 2 && upp_error_count == 0)# V; r& k% u; H6 s7 ?
{+ I. s! L0 c8 T$ z6 V& n
for (i = 0; i<upp_frame_size; i++)" U% ]+ V8 e# @; Q0 {! U
{# j* F- \. {' ~. d- @( Z5 e& F( C9 ?
if (upp_buffer_a != upp_buffer_b)+ E- P2 v; U3 b8 Q, j+ p
{
1 {( I$ y' g$ {5 j+ m6 _ upp_error_count++;
& o0 n4 E: Z/ |3 \ }
5 M& K5 |8 v; n% N( F% m9 c }
; X! E9 J6 L, ?' F% C+ W# s8 X }
0 M$ ]8 `& p5 B1 h: v! @) _5 v, e8 {% Y; @8 U0 ?: P
/* 报告通信结果*/
5 ~+ H, v& P' |$ `6 b% l5 d4 [4 v$ x if(upp_error_count != 0)
7 _7 U" H+ @# [ UARTprintf( "upp_error_count=%d\n",upp_error_count);
5 h+ {1 ?; A' F else' O1 P, y8 M/ {" x- A( a; g
UARTPuts("uPP transfers complete!\n",-2);
- Y. a4 Q) h5 I& e) w$ Y5 U4 o8 B# w! e: U1 ]( g8 e0 j, \4 V
UARTPuts("Do you want to print all the data?(y/n) ",-2);# w* }: R% ~9 R- z. E+ U2 f- t# K
UARTGets(ch,2);# ~) ~5 V, _) W( A% Y
UARTPuts("\n", -2);/ {/ J0 R! a# H+ _
" G, R0 c! c% m if(ch[0] == 'y')* c, {: m @' Q
{. q8 B+ f" @" c
/*打印全部读到的数据*/
8 T$ m9 \& n( G. m for(i=0; i<upp_frame_size; ) c! ]: ~3 R4 h7 L8 u7 v: Z
{
m& o5 R9 W# D! r8 T: | for(j=0; j<5; j++)
, W+ V$ _5 t! t) l4 K {
) [5 n* v* y! g; `2 ]* E* Q# C UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);
9 W( j4 [9 M7 I8 Z; r4 p i++;+ Z, }9 }4 V+ r. R8 z" O. d% O! f
//if(i >= 4096)8 m* |( d* j2 y& M+ h
// break;
, y: Y5 k6 i1 h0 a4 W
( O& B1 E* J; X& L0 e8 K9 {* Y }1 ]7 I$ M, P# K6 A* M
UARTPuts("\n",-2);/ a6 i6 R! q# K# }! M
}
5 b$ F' p( J' e9 [; h }
7 b/ C& f/ I, M) K- J# G
+ T6 B. Z$ f2 J* k1 E1 }! j# J}
6 P& _: Q4 H% b! o, T# \: _% U1 |+ Q" I$ y# O* ]/ o$ w# E! M/ \
( c* P6 i6 `# b3 K1 c |
|