|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?; ]; [* x7 t; ^2 j' [3 m
Void UPP_TASK(Void)
2 P% F+ `9 u d{
+ g) P6 S7 p- D R L4 | M8 E& l- _2 C! v: f
int i,j,k,target_int_count=2;$ X& C8 g a' N( K' w
char ch[2];
9 l5 C1 {' ?! `5 a( }# ]: F
! @. p7 O% U5 k5 i) z& J" \' E8 G: p C" U
/ g t9 h' O) y9 {; O upp_interrupt_count = 0;
$ ]% b) X4 h8 I' i upp_error_count = 0;
& W0 R& K2 d/ B# D6 L4 |, F0 L9 R0 W: o/ l
UARTPuts("\tResetting uPP buffers...\r\n",-2);
2 X, M, j8 P }8 c! w: b/ O, q // Initialize data buffers+ Z" l5 ~3 _& @
for (i = 0; i < upp_frame_size; i++)& j2 D9 |$ h* F9 u ~* I
{1 \7 }; K8 G" w8 i; J! P' R+ X6 F
upp_buffer_b =i;
+ `! B, \0 `! M9 {; P2 y. I upp_buffer_a = 0xDEAD;! y: X( `0 T6 U$ L2 _! s' |4 |
}& [3 m- }) x7 F& l+ N! `- ^
$ {4 T5 s! e. u; i) x2 E5 d9 T //for(i=0;i<1024;i++)9 j/ ~% U+ @7 O2 X6 T% i
// temp=0;
# H" Q$ g: S) u- a5 B1 E9 ]7 o J3 U9 e. t- _5 H4 n
//UPPReset();1 a+ v. u3 r [" j
/*启动UPP DMA传输*/
5 I- B r& z. v4 V3 z4 Q UARTPuts("upp_prog_dma_i\n",-2);2 H7 X* i0 W$ ?. B) ~8 \/ h5 ~
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
4 Y: Y* T+ G% s: e0 ]/ u upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
3 s; J" K( H( S$ p& ?8 y upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
: b" w' |0 T) x. q
% U" A0 T9 u- [: f# \3 @. | UARTPuts("upp_prog_dma_i\n",-2);
1 ?9 A/ s; J- ]% Q4 v( C* U upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
. ~: x2 t6 w* G8 Y% f# I) k upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);+ I/ d( @) f. z6 i. L
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
& o% J7 ~' n1 b! z9 a
1 ?' y9 T" D) a /*等待UPP传输完毕*/
5 U' _6 n9 I; u+ V, e7 W; V //i=0;, b' c- C+ G2 U: t6 n/ ^; _2 g
//j=0;
: `. i6 u9 D ~: `+ y$ G% ? while (upp_interrupt_count < target_int_count && upp_error_count == 0)
& \/ j3 D# r( f) R. B! S, V {
9 Y! w! U/ S2 `. ? /* 测试UPP传输的同时操作普通DDR数据+ U0 V; p) Q1 _6 I( g
temp=i;
& ~- ?2 \& @8 B* | i++;7 o0 k4 x: ~" M# L, |6 F# o6 Q
if(i==1024)) S/ t3 @3 S$ r: ?5 ~' U
{
5 y! m, b7 H6 }6 h( X2 q i=0;
! d& w5 g- P# y8 T) E( I, D. h$ U j++;' g0 U% e U9 ^) x- m
}! ^2 l5 x; t+ n& a
*/: W) `. S0 L: R% I6 {! A3 I
4 r; p8 ?& d6 j8 I) W" N. q
asm(" nop");
3 Z a, P0 \* t- z
" F- X V1 M1 j( D0 g8 [& a2 ^/ z //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
; s$ I* O7 T7 v2 V4 _9 n }' M* |! X' c: L' z' _
( z) c4 z; R0 ~9 ?; s
/*检查UPP传输的数据是否正确 (loopback modes only)*/; J+ _& a4 j( J$ b. s1 q3 E
//UARTprintf( "i=%d\n",i);
+ B: ?: S& _3 q7 f. H6 r; O v$ a //UARTprintf( "j=%d\n",j); Y- G: P" B) ?; N* Y
UARTPuts("Data mismatch in buffers.\n",-2);) i8 O+ ^7 l0 ?' S
if (upp_interrupt_count == 2 && upp_error_count == 0)
5 a8 ^9 h" ]0 g7 [/ d4 @3 C {
) C3 L9 z8 [$ i$ x% i% Z- w for (i = 0; i<upp_frame_size; i++)
+ h% P8 y& n4 D% B; E7 y h {
{. j/ ?# q* G- a' K3 k$ d if (upp_buffer_a != upp_buffer_b) u$ Q/ ?: H2 R6 Q) t
{
: m1 p* w: M1 D6 c' k upp_error_count++;& F+ P& [( G6 f i
}
6 ?5 n+ w2 w% i6 v4 J/ Y* b& H }. v& V K" Z1 }8 E- U+ S. |5 r
}
1 `( x6 p5 k5 P$ l# ^' `" u1 E q9 t4 k1 e2 N
/* 报告通信结果*/: l; Q% k: Z5 T9 L7 A
if(upp_error_count != 0)
! W6 _, Z& h' ]5 i5 ` UARTprintf( "upp_error_count=%d\n",upp_error_count);
! N1 g* T! Q% ~2 a+ [$ t* ` else
+ i0 j) T' I) v+ N0 X UARTPuts("uPP transfers complete!\n",-2);
7 \) @. I: O7 @8 _0 v" x9 \* m1 b) s q b- R$ z/ \0 l% g# i+ {- y
UARTPuts("Do you want to print all the data?(y/n) ",-2);0 {' M5 s) n/ N
UARTGets(ch,2);
6 b. t* {+ U3 i UARTPuts("\n", -2);
* Z! P9 |, H! J1 r% I
3 b" L! Y4 `+ D if(ch[0] == 'y')) s% Q( K% k, p% ?8 d
{
1 i |% ]8 ]( _' C /*打印全部读到的数据*/
5 c! N8 ~& Y% Y, Y for(i=0; i<upp_frame_size; )1 d" ?# x* C. \1 A
{1 j+ {) P, F$ Q
for(j=0; j<5; j++)
4 V6 T' ^7 n3 u+ n' A {
& [3 N/ G. ^8 O/ T UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);+ W3 q3 q* M- C5 T+ |4 K- N7 S
i++;
9 C1 d7 ^0 Z2 a3 x0 e) x //if(i >= 4096)" N( n& [: g4 G" \' E# t! o
// break;- E$ E" A! K6 B; E( E3 V
0 @+ D5 U3 i% L: X! N/ |) j
}
# a! U* M6 G. b UARTPuts("\n",-2);
2 o2 n/ H; ?! C5 r' J; @1 I }; x" ]( e! x, J/ ]
}
: |" w) S" W, M
. T2 _2 M( ~, H- O) r}
6 X3 L% m# \; ~4 a P/ ^) ?$ r8 v6 a% |5 y: L' L6 T
; F: s8 K' f( Y! F) J, n
|
|