|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?# }. \" P9 L6 v6 F; P
Void UPP_TASK(Void)
! A+ w2 H1 t N/ C& p9 h{' |9 q- k! w! l6 o# B
0 x: Z* ]- u$ { int i,j,k,target_int_count=2;+ g/ ]3 V% I4 w
char ch[2];* ?4 J. [5 f0 o" |8 F, V8 R7 \6 d
9 R7 H6 E6 x, K! z
1 v4 _7 K' h( Y- ]5 m- l% t D( n G- j/ O
upp_interrupt_count = 0;, r# n' t) ?& G$ z- z
upp_error_count = 0;
/ }, b' P% M* f0 v; U8 p1 J8 b" d
UARTPuts("\tResetting uPP buffers...\r\n",-2);
7 F- G" E9 [; s // Initialize data buffers" O4 N: p; v8 m, |
for (i = 0; i < upp_frame_size; i++)! m& [/ C; i9 A+ X
{
0 `6 A) L0 k& C! ?- w upp_buffer_b =i;+ U O. _) d) h9 H3 o
upp_buffer_a = 0xDEAD;
( |" |, \5 {" v; ]6 k" L }
: y2 t6 @ v( ?. D3 h/ J
8 H2 |9 P5 s2 O, ~; S+ e //for(i=0;i<1024;i++)
) R; G: H0 T, [+ n4 F& ^) G. d# E* B // temp=0;
/ q ?# R: @: \0 I
: a) v7 E3 e/ F9 Q5 Q //UPPReset();% e+ p) M4 \+ K# ^
/*启动UPP DMA传输*/( c! C3 C1 f; ^- J4 D5 O
UARTPuts("upp_prog_dma_i\n",-2);$ N" ]9 f+ N) N9 D9 Y( A8 ]
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
; r d+ M. _* L upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
* `1 V* M( t+ [) G( \, U upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
" T5 ?* [. ?0 d' i$ [
" x! e. k4 C5 S UARTPuts("upp_prog_dma_i\n",-2);
, H3 q, B# D2 z9 H* R; ] upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;; F! D3 [' m- w3 a- l2 P
upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
5 F6 {" w# b& O J upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
0 L6 e; w5 p# o3 x$ Y8 V r. }4 w3 `& }9 d$ [3 O
/*等待UPP传输完毕*/
7 O5 Z2 v" G" \% C //i=0;0 ?" \1 m, D0 A8 e6 b+ w/ x
//j=0;
! }6 l9 p$ y8 U, N5 v/ B8 _ while (upp_interrupt_count < target_int_count && upp_error_count == 0)' L% V' a2 {& v4 r+ [
{
; g+ d) K8 T W3 Y! `* u5 \ /* 测试UPP传输的同时操作普通DDR数据( x) q9 ]% z% u
temp=i;
+ w' A0 Z/ x4 J3 y( F+ \/ T$ r i++;* I. z( M# J5 W# h1 \1 v$ j2 t
if(i==1024) Q* h- G$ ~& c) |! V0 A* e
{; l3 e. j; s5 p$ N0 J, g
i=0;" T e& u, R( h# Y: m
j++;( A. p" U- E( n5 P$ \+ c
}0 A2 ]% K; v0 e; L( F% ~+ ~
*/$ k0 H7 x. e0 r% c# `
$ C, j ]% n3 V
asm(" nop");3 e1 h; [. j# z# Y# i
: a/ P: u% o3 s //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
% k9 p1 r; L8 d+ z. G- {) @ }
" z* M. Y; A9 f( H; d
/ P" G, `, y7 e4 |% C /*检查UPP传输的数据是否正确 (loopback modes only)*/. b; s# K) x1 i6 D: @; A% E" E
//UARTprintf( "i=%d\n",i);
1 L( G& K' N. | //UARTprintf( "j=%d\n",j);
/ Y. @$ a( [# z; Y8 ^! m UARTPuts("Data mismatch in buffers.\n",-2);8 D0 C* C4 \4 [, a: [
if (upp_interrupt_count == 2 && upp_error_count == 0)
* F. T0 E+ n, K. ~ {
5 F& J! q2 G( t: V for (i = 0; i<upp_frame_size; i++)8 f1 I s* Q8 ~+ I- Z
{
1 U2 \! a8 H" h. N" G& y5 p" G if (upp_buffer_a != upp_buffer_b)4 v5 q5 H, F. ~' R; \" M8 N9 R5 A
{; p6 p* M7 X) n5 S/ n, x( O) h
upp_error_count++;0 ~7 {1 [! I) [: V! g6 n' ]
}
) Y0 @# K( x4 _* e) _7 i }& z# O, ?/ |7 P0 S. l) k& I! h' P7 B' r |
}
, l8 x( L7 y( n' t
6 y0 D7 U+ n" l {0 S /* 报告通信结果*/
7 A/ R9 g1 z! F; E: m if(upp_error_count != 0)
# j" B# L0 Y. i2 q UARTprintf( "upp_error_count=%d\n",upp_error_count);
( P; r# Z7 C3 M6 o1 G' A else
* L, t- x {( d2 c) P UARTPuts("uPP transfers complete!\n",-2);6 b9 O1 ^, k9 c9 P( S7 e: @
' [' x4 P/ p) O2 g7 g* i7 ]' \ UARTPuts("Do you want to print all the data?(y/n) ",-2);/ Z; Q7 l( D. K" G* k$ c6 E
UARTGets(ch,2);
, Q' t" a, p+ y$ @# @. J/ q UARTPuts("\n", -2);
T) S$ F0 @% q, j: c7 j
$ o( G6 m1 Y9 T if(ch[0] == 'y')4 U8 u R, J9 g
{1 a1 h# w8 s- L; N B4 v& p
/*打印全部读到的数据*/7 e6 ~3 f3 B' I' S. P+ B, i
for(i=0; i<upp_frame_size; )
0 T# |. B% l; P {# Y3 p$ P$ b4 D/ |1 Q: v" R
for(j=0; j<5; j++)
, U5 v: }: F: l2 i {
0 ]9 b2 p; f( g$ D UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);
- }" w. @4 {! V) [0 y, H [2 E i++;4 c: U3 l3 L6 r5 L+ [
//if(i >= 4096), O) k* [: q" g$ S
// break;
5 V0 i( E) k' F' [) j
8 ?3 v" l/ k2 y8 `; x }& V! M/ {. x: T" Y4 v$ R
UARTPuts("\n",-2);7 ]( N* g5 w% Z) ^. F: V. k, p
}
; C7 j7 e6 O5 k: x) Q }
1 M J* v6 s) G8 Y9 y. E/ i5 L9 z: J5 \
6 D1 W: F' d$ h. x9 y}/ [9 `7 A) W+ r G1 d5 Y
1 o+ ^6 y+ q v9 |+ }$ o& |8 x
2 b5 Y% G, a7 j9 d' d6 C4 Z |
|