|
|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
- S. \7 R) l* F+ k" A; {Void UPP_TASK(Void)7 O0 k7 \; O8 W6 U
{( Z# c$ `2 X, k+ S( D
* w/ J$ O2 G1 j% b7 {" R$ \
int i,j,k,target_int_count=2;" Z/ S0 Q0 ^/ u, n" q, `* Q; V, a. G% b
char ch[2];
1 L: A6 A* G# m5 l7 k. f
) F! U" k) W" R A: e& i0 g
2 \. ~7 D+ r2 ^1 Z/ T5 w
, _3 U5 E( [( e upp_interrupt_count = 0;# S+ L) O$ n4 S! c+ H: ~
upp_error_count = 0;9 m0 ~7 `1 T( P v
1 F/ W% d9 `3 ~* x UARTPuts("\tResetting uPP buffers...\r\n",-2);( G! B/ t# @8 x
// Initialize data buffers7 N4 Y. H/ g+ t4 {$ e( @# _$ L
for (i = 0; i < upp_frame_size; i++)
/ }9 d. s/ y+ L0 Z0 P( q4 n {0 `, j, p+ `" W2 z" T
upp_buffer_b =i;0 O0 P/ T, ?1 d ?+ J
upp_buffer_a = 0xDEAD;
% \% x5 _& Z- B! J0 y. j2 S }: r% N0 ]* I' W( U
/ l ?" D6 k& ?( _4 a) W
//for(i=0;i<1024;i++)) S# W7 N j. y8 Z/ u
// temp=0; V; Y5 }% x2 i
" O9 l5 _3 X! B1 V" H //UPPReset();3 v, J4 U$ H8 o4 j U8 _
/*启动UPP DMA传输*/
) ?" E5 u% W5 \4 T# d- m UARTPuts("upp_prog_dma_i\n",-2);3 ~0 I& |+ U7 u* _! u
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
" F8 b# g Y) D! c1 O0 J* A upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
1 }* b4 B {* V' Q. S; v; ^. s upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
+ W8 ?, q: r& I( Q' d+ V4 T- n3 q1 E( z# M
UARTPuts("upp_prog_dma_i\n",-2);
6 Y# x) Z: ]( d5 A4 L upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
3 p/ V8 M- k& _# W6 \ upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
0 c1 y9 U. E+ r: k# I: n4 a upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);: T% P+ c7 U& H3 G3 H" o
" ?$ i* O7 {* I8 [ A
/*等待UPP传输完毕*/
8 _+ `$ w' Q% Z. M. G6 M q //i=0;
# H9 `+ c: N. m# b; d2 z //j=0;
$ w/ d! F" t( x, c/ V4 J while (upp_interrupt_count < target_int_count && upp_error_count == 0)
' S3 a$ v) q) Z; a0 E, N2 F {
1 o S) o6 @; \ /* 测试UPP传输的同时操作普通DDR数据1 @; b3 r2 s( @
temp=i;
" e. q4 r: g; \, \! L i++;
8 R5 A+ o( s8 h+ A& z7 X if(i==1024)" W7 |0 ]4 ~ `+ Y3 G4 o" H
{! F& @$ @8 \0 u8 B' B0 K4 d
i=0;
, `* J+ |% ]7 P; K" a* Q# i j++;
: d% N; A2 {9 J. j }
% |5 c1 ], ^4 G; C" Y3 G* |9 F */' s) z: t. F4 W# |; P9 d
' [5 V- L. L5 @6 e0 P3 m
asm(" nop");0 E, P& ]/ {2 a [4 b
) R+ j4 x5 _! S2 M: q2 z
//UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
) i* I/ N( r4 Y- G; B: y } } C2 q* L$ G' g/ f& Z& k( ^
8 N! |# \/ ^) z6 w$ i6 N
/*检查UPP传输的数据是否正确 (loopback modes only)*/ {9 @5 N2 a: h
//UARTprintf( "i=%d\n",i);8 j2 ~* G5 }3 W" v. f! r
//UARTprintf( "j=%d\n",j);# B2 p, U/ ~$ k, s- z+ v9 n; D
UARTPuts("Data mismatch in buffers.\n",-2);/ c2 ?% q# S# g- y* y
if (upp_interrupt_count == 2 && upp_error_count == 0)
9 I1 g/ m* X9 r' S5 w% m' l {
2 {9 l# r" N B; J* B6 _+ X9 B for (i = 0; i<upp_frame_size; i++)
8 X0 R( w3 l8 q4 C5 k( v- y8 | {
9 ?* E4 y8 \4 A& P. S7 a if (upp_buffer_a != upp_buffer_b)% T; _) p$ ]# \+ e% q8 u0 O/ I
{" ~' t0 q( @5 [; |4 A
upp_error_count++;
; S) i* j" H5 @4 F h+ v }
4 T A& p! y* E8 P }
! [& W+ X$ \1 P4 v" H8 M+ a }
! J% U9 `, }6 i& m# `1 I, j8 |3 @& L1 I5 y0 O: c4 q
/* 报告通信结果*/. n0 v* E l# ^" w L
if(upp_error_count != 0)" P' Q) a% u3 j) D# L6 u
UARTprintf( "upp_error_count=%d\n",upp_error_count);
3 s, Y1 d# C* m/ U* ~# J else: r q3 Y$ T: Y# k: f' B" [, @
UARTPuts("uPP transfers complete!\n",-2);! g' a: S( ]4 e2 ^
! r1 j x6 h4 a7 m& ]
UARTPuts("Do you want to print all the data?(y/n) ",-2);
6 z! `' n+ m) O3 e/ z! X; z! h UARTGets(ch,2);) r8 e9 Z2 ~' J$ s- q( l
UARTPuts("\n", -2);5 Y5 G. x" ]$ x1 M& v
4 ` ^+ v4 T9 }8 p
if(ch[0] == 'y')3 @, h g: @9 P7 m4 r) s
{
$ S( B6 E% m8 P3 ? /*打印全部读到的数据*/
: X' m' `! y, e, n8 Y8 q2 X! @ for(i=0; i<upp_frame_size; )7 p* f8 {. B; J+ @8 L8 h
{# d" {+ [) C6 s9 k
for(j=0; j<5; j++)( p" m8 }' {3 J x4 H5 q8 V
{
- `0 h/ S3 ~6 c9 a2 w: q UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);) u4 u1 Q" [0 e2 g$ g- A
i++;! v* H% e6 t4 K7 m1 {* O7 G
//if(i >= 4096)
! I/ Q. m+ H$ a8 E% [% |9 @ // break;( X" N2 O' W4 e$ u) C( z0 b( W3 v
6 D) K: q/ R; z' E1 `8 S: V( O }9 M5 x7 X0 P* ]4 ]+ _/ ^
UARTPuts("\n",-2);
8 g S- i8 F) n( `6 p! ?/ _ }/ o; t) b" {9 G+ Q3 [" I
}
0 Z5 O4 Y# i! p' {8 {! Z( L! d
/ A5 D8 a% |" N6 e}& g6 ?. s2 Z, m- N' k6 X! O4 o( D
1 ?0 Y; h Y- [% N, Y1 \
5 h1 t8 [/ i; t& l2 M: B |
|