|
|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
4 z- \' a! \+ X! JVoid UPP_TASK(Void)
$ o ^* M. K2 o* l{. o7 u; l3 l' P" o5 R# I, U6 s4 q
4 I3 n5 ]0 Z# @ @% a int i,j,k,target_int_count=2;# A e1 I9 q5 i' r
char ch[2];% z6 |- `0 |* d- u8 B) V7 {
' \8 Q5 m; ]- d% Q* E2 w# o' |% {$ q
) @# x! k3 o5 Y
upp_interrupt_count = 0;
2 N. l8 U/ X2 h) d6 k! l upp_error_count = 0;
* b5 w5 k" g6 w1 ~# k5 y! q' X0 ]9 z, F
UARTPuts("\tResetting uPP buffers...\r\n",-2);0 a: x" r9 h4 [$ `' z2 X$ p
// Initialize data buffers+ e& B. H" z/ s o" K- A: r) o# w
for (i = 0; i < upp_frame_size; i++)
_) z2 b- A' g2 O/ A {6 j, H6 }8 |3 |& E* J# ^
upp_buffer_b =i;) q X; `- [8 u0 U% x) _
upp_buffer_a = 0xDEAD;
. x& P6 O1 b6 n }
/ M4 C7 S: i& Y5 z- V' ]
' d; A; J5 m8 v! W, F( f //for(i=0;i<1024;i++)
' t- Z$ ~# ?* s# A4 X& M // temp=0;. _1 e7 Q5 R; f T6 Q+ R
) q+ S, d2 g: I //UPPReset();
5 e+ h, L( k/ O% y /*启动UPP DMA传输*/
% A ^3 E0 L o1 ^) g1 ? UARTPuts("upp_prog_dma_i\n",-2);( E) b) [ e! Y0 K
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
- ?) F I: ]# E( ^6 E( ^ upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
g$ [/ Y# q* ^ upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
: Y9 ~( Q/ j" }) b" [
5 `8 i7 x& v4 U3 Q UARTPuts("upp_prog_dma_i\n",-2);2 k8 c; z8 b+ q8 F, Q: [
upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;1 F- x2 O6 y$ t9 Y7 H, n
upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
% I7 u! H; k8 @. j' n6 N, ` upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);4 y8 P1 d2 W( t$ ]& y# q$ A) c
1 L4 y$ ?: l! }. _& J+ w /*等待UPP传输完毕*/
; o2 u+ H R0 l# H) ~; z3 p1 m //i=0;3 E. E& U5 a8 z% p4 k. a; _- c, b
//j=0;
5 m0 t% Y t+ M7 T: P3 s while (upp_interrupt_count < target_int_count && upp_error_count == 0)# `' O' b" A- j5 a
{
6 T& C! B8 b$ m, n8 q7 q4 c; p /* 测试UPP传输的同时操作普通DDR数据1 b5 i& x( D! h7 O U+ |, B
temp=i;
/ z' g9 {/ q3 G i++;- g7 f$ W5 X5 K, Q+ x
if(i==1024); ]& ~) s& {( F4 E+ b1 _" a) e
{
3 `% n5 \$ C: [4 v i=0;
' X+ S$ ~8 g# C* u U! U3 g8 U( X j++;
3 l8 y' b6 G9 Q' k7 k* f' |( l* r. H }
% ]' m; G) U$ _- k3 v1 |6 Q, d2 s */% H+ C- I, \. I
, `5 M) k4 e! A5 z, G' a9 o* l$ Q3 u3 S
asm(" nop");
" _) P8 b3 A9 p5 e0 f4 j0 m) k% }
1 b$ E/ q6 o- H9 [7 v0 j! Z4 { //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
3 S3 Z3 J. K# d& x+ ` }
8 u3 |+ W. d8 s+ s9 d8 L7 N4 `
5 S4 G9 |0 H* A! u /*检查UPP传输的数据是否正确 (loopback modes only)*/% F" w/ u/ M% I! T/ c
//UARTprintf( "i=%d\n",i);
0 S$ X" r/ S6 A( g6 p6 c //UARTprintf( "j=%d\n",j); ?0 X1 H' G/ A c0 g6 o/ j+ q
UARTPuts("Data mismatch in buffers.\n",-2);
6 w1 f9 N7 j8 j* T if (upp_interrupt_count == 2 && upp_error_count == 0)9 i' p& m2 ~, v! [
{
# j; a. M$ d; r: q; A3 d for (i = 0; i<upp_frame_size; i++)% ?) b" E& v* W
{
: S# w( J: m# U8 ^6 ^# o1 l if (upp_buffer_a != upp_buffer_b)
F [+ P% o" b0 d4 T! J {! s2 y/ n1 r, n+ B
upp_error_count++;7 D3 I% T( |0 V5 `" }' Z% W+ _6 ]
}5 r# F5 A( K, V! ~" K$ E* ^2 t/ O
}
6 }) O6 w% P/ I! q7 R; T }
3 M: m/ N! {/ e" ?4 N* ?8 e) y- [/ u4 P
/* 报告通信结果*/
* O) ]. O2 \2 v: q8 e if(upp_error_count != 0)
# a3 E) t9 {# M# e, l2 j5 m UARTprintf( "upp_error_count=%d\n",upp_error_count);
0 [4 q3 A5 O- V8 X" ]2 D$ q [ else9 o" }+ w/ k+ @* E7 _4 [
UARTPuts("uPP transfers complete!\n",-2);" v3 P- X5 M c: S4 o
$ ~. a2 F8 Y) L% { G- }2 [8 N
UARTPuts("Do you want to print all the data?(y/n) ",-2);
3 B8 p: [: e7 P! g2 A. I UARTGets(ch,2);( e8 d* v( p4 Q, X
UARTPuts("\n", -2);
% Q2 T+ A1 i$ \0 }7 ^- j8 |3 E9 Y( @4 l
if(ch[0] == 'y'); [) x5 f4 @- N, S( r
{
' j; _0 e7 }# [% m. G! O /*打印全部读到的数据*/
0 |) _5 y' W# r- Q: X$ k for(i=0; i<upp_frame_size; ); D1 @% ~4 l) v' \
{
$ [2 O) `$ S# d for(j=0; j<5; j++)
0 B# S4 n6 L) D9 E! X {; f, B" }% b7 l r" k# h& b: O3 d
UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);/ V8 p$ X5 g8 O2 e, W
i++;
% ^: h. [8 k6 P/ e6 \+ T8 h' Z //if(i >= 4096)
) @+ Y: v- z; v; Q3 d4 r: V // break;. o/ b1 C) U0 R* I
- x1 G) d1 G0 O+ Y! {2 \
}
, u4 W/ c# r- U8 u0 C UARTPuts("\n",-2);
9 V1 S8 b! l. g1 F7 W5 O }5 e4 t& ^7 t6 d
}
- S% a/ T$ h6 S, Z! w5 y1 x6 U( b" J' h* n3 }# R
}% J% _; t6 j" l2 {5 I
3 v% U# w; G+ S2 b/ p, b/ e# z2 Y9 d6 O. P, V
|
|