|
|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
; Z( f3 X4 f! ~0 c; a2 c5 oVoid UPP_TASK(Void). E) T7 g) a( a$ c/ |5 {. X& u) l
{
o. `; y+ |0 _7 b& | z' n1 }6 F {' @2 w! |) b e' x: x
int i,j,k,target_int_count=2; F1 P: D' m/ q
char ch[2];
. N# Y% ^* o1 }+ o \2 x7 Y, J
" W9 Q5 r! O3 w- g- y( D) b- j" T) T+ Y
@- }1 I- l& h+ O& v; v: V
upp_interrupt_count = 0;9 p9 @- W4 N2 Z) u, V$ n
upp_error_count = 0;4 L* P( g# l+ v3 v7 f& Q' a+ k: @
1 Z0 u4 |& o, a ?& {
UARTPuts("\tResetting uPP buffers...\r\n",-2);
& }) T" `/ E% h // Initialize data buffers
0 B- s" B7 Z a! X7 l for (i = 0; i < upp_frame_size; i++)" a. U1 Y9 E) p! L& d8 l
{5 l% H2 g2 F+ J! }7 o, U' G6 R
upp_buffer_b =i;
4 n, T X3 z: ]- K( ]2 f" o- B! W upp_buffer_a = 0xDEAD;
" }1 m! e$ ?: [& T }9 l/ s0 l9 Z/ S+ _) a" o/ H+ v
( d0 d, r- a6 z) Y6 [. Y' H+ J //for(i=0;i<1024;i++)
3 b0 g0 G, O5 x/ j8 D) I // temp=0;
! j* m l9 t- x, u& @1 K' F' g/ L# C
//UPPReset();
* ?, @, C9 a/ |8 @# ^+ T( m /*启动UPP DMA传输*/
: B$ I. k' r; U" K6 e( A* _) v UARTPuts("upp_prog_dma_i\n",-2);% ]" W( G0 h) a
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;+ A8 F1 A+ z- G0 o0 d; f
upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
; N; _0 K u; c6 A3 q! Z upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);% C S' X6 I- \8 E
$ V: G O: B8 M! y UARTPuts("upp_prog_dma_i\n",-2);! V% c: Q) v% `) d" I2 [: b" o
upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;* u/ M; m8 ]4 r' C* V; }
upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
" M( \7 n( U! G. }9 q' g7 N; X6 P, v upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);" E' M9 k5 ~# o4 B* F
2 {4 j! d. a/ Z/ R4 E! t3 L
/*等待UPP传输完毕*/
2 U' i8 r, t) P2 t6 S //i=0;
7 S; `6 N7 {3 D2 i( Y: T% I //j=0;
3 ?+ ?3 f; W& a- P while (upp_interrupt_count < target_int_count && upp_error_count == 0)4 g3 f6 K) m% P$ x8 w: H
{
" q8 i0 y8 a8 y, |: q! L, ` /* 测试UPP传输的同时操作普通DDR数据; _' ~0 I( ^+ W- ]
temp=i;4 o5 V$ {# N/ O
i++;
9 O7 w1 G$ X8 i2 h+ l. s if(i==1024), X! Q* w- T1 z ?7 C
{
' m! K( i4 | A- U& x& k% _ i=0;$ Z6 H7 r+ ?+ u9 r0 v [5 b3 {( {
j++;, z. x) e$ O' ^" E! s( L1 g
}
5 R: W! u- g- v */
4 U- n: K/ `7 K' o' y/ l# ]) m2 w4 ?
asm(" nop");
; W1 j3 Y$ i$ c: {& m6 B0 x0 A; h; }- g# V
//UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);1 v4 n1 ]$ [* H7 q X( n
}
/ r+ J% H0 _. H8 s8 n6 N4 f
0 f; y1 p9 x) E' } /*检查UPP传输的数据是否正确 (loopback modes only)*/8 q# Z1 W' E: l6 e8 k7 v
//UARTprintf( "i=%d\n",i); ^3 e4 e, P7 u- m
//UARTprintf( "j=%d\n",j);
p0 J/ j6 T; i; E% P% O UARTPuts("Data mismatch in buffers.\n",-2);' h" l$ M% s" V5 t
if (upp_interrupt_count == 2 && upp_error_count == 0)) q- B% Q z$ ~8 I) u
{
4 B+ _' m; S3 A, R* h$ C for (i = 0; i<upp_frame_size; i++)
; Z* P4 S7 Z* ` {! m# R5 {0 |% ` x6 L1 A$ F# W* {
if (upp_buffer_a != upp_buffer_b)
+ E# S5 h+ n( I. X0 m5 G {
# c/ f/ V0 V+ m+ [/ Z& g upp_error_count++;
, R7 R* K9 N9 d9 _+ p }
& D0 H) [" P* ?& E; k }
3 Q0 l% a- Q% @. J+ M, U" I }
. z7 P3 S" w- g# l
0 ^# l6 e9 {* C; @ /* 报告通信结果*/
l+ R6 J L) l3 d0 C { if(upp_error_count != 0)' L/ Q1 a) `2 ]/ i, r; |
UARTprintf( "upp_error_count=%d\n",upp_error_count);* }$ |' q5 k$ A; w3 P" m! {% A9 \
else
4 l/ J% O3 ^. s+ H UARTPuts("uPP transfers complete!\n",-2);$ _3 X% O( W6 U6 o! f" x
# G. G5 Q3 k& }- T1 p
UARTPuts("Do you want to print all the data?(y/n) ",-2);
# j4 s& M H4 ?/ B9 ^ UARTGets(ch,2);9 `. H" |+ O. B* H
UARTPuts("\n", -2);
6 F+ I _3 m5 L1 n+ Z2 }+ X
, K) U# R5 F! c# f if(ch[0] == 'y')
# }* s8 H1 S) U7 o1 ~ {
+ n' \4 R Z+ V. k! c' l+ { /*打印全部读到的数据*/9 V/ n5 C) J; H9 ?# y
for(i=0; i<upp_frame_size; )2 u/ w; \7 \7 P- @
{! B# [; d7 s$ H Z5 G9 A2 o
for(j=0; j<5; j++)7 I" N% N! h0 r# A* R
{
9 R0 G5 u* B6 r8 } UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);
% S" o z5 u! | i++;# x$ z" n/ ?0 J! U0 R
//if(i >= 4096)- E& V; A$ w5 R/ F9 J
// break;
* j% ? ~, S8 M+ H2 j% ^- y
2 N$ v1 Q9 x# Z: o: `5 S$ G! p$ U. g' S } V! R3 l/ N w# U
UARTPuts("\n",-2);
5 w6 ^- y& k1 r M }
9 u3 m1 M9 U! t9 n; ` }
9 { }7 q5 f5 |% u0 T
6 M# N0 g9 J3 ], P}" q1 G. \2 q' J( O/ R* k) a
1 W- N, k# E; f4 U( m
/ y$ y o7 R3 @9 ~9 b# j3 v0 C |
|