|
|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
2 m& g k* @) E4 X1 e- Q" L; fVoid UPP_TASK(Void)
z6 Z' C* L( N; E% I8 ?{. C) h% q G: S* p1 t# }7 o
2 i: @* C Q6 q- M# b int i,j,k,target_int_count=2;
- a4 Y" s) s- T% ^6 k$ G. H9 K char ch[2];
+ X# y7 W+ M" R) \( t
0 M( W/ [9 I, F9 B. [4 w, O/ j5 Z1 M5 w$ u# o) C* c$ H% N
7 {1 L* }* p i upp_interrupt_count = 0;% H: Y7 T; H2 Q4 @8 |
upp_error_count = 0;7 f& {& N9 c3 j) E: }9 A
8 M s9 E& H, P UARTPuts("\tResetting uPP buffers...\r\n",-2);; C$ H2 L) l" Y4 Y2 i
// Initialize data buffers1 v7 p ?+ H: e8 q5 W0 Q' @
for (i = 0; i < upp_frame_size; i++)* i8 I- N; A! x( j
{
. C& s; |' S* T' t" ]) C% m upp_buffer_b =i;
$ M ^7 p( X; M: b/ C) Q upp_buffer_a = 0xDEAD;
7 E$ C% a2 P0 X/ M& B1 P }6 U3 q0 n# S, \6 L, k$ [* x
6 |1 w+ x& A& O //for(i=0;i<1024;i++)
0 h- t/ ^! a2 D: {* _3 s' X // temp=0;
, T% ?& T1 n- X8 @8 G
) J8 o7 Y) N9 T) U* y2 L" | //UPPReset();
5 r1 ~) n; Q1 ]1 i! }4 f1 a- }) ` /*启动UPP DMA传输*/) l. _ R+ p: D1 f
UARTPuts("upp_prog_dma_i\n",-2);
- ?3 z8 U) b. v upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
% Q, w% S f* v; V, k upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
! L+ [4 r. {3 u( i Q upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
% D% c/ S# e3 R$ E" F/ [
9 u) r$ r. X- E# C6 _: y UARTPuts("upp_prog_dma_i\n",-2);
. F' y, L: a% y l5 S upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
' W0 F4 s' B3 _( g. F! q0 ? upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);4 R2 ]7 \; ]1 T& b
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
9 K: v0 u' Y" Z w1 {5 Q. ?- H5 m/ P
/*等待UPP传输完毕*// j4 r' }* t: F$ ~+ G2 _
//i=0;
, w& q$ i* x Z; }9 t) n9 X //j=0;
& N; Q' a& Q2 _2 {4 L* P while (upp_interrupt_count < target_int_count && upp_error_count == 0)4 V! }1 r' F, N: W1 t7 J- [! l. r" j
{
# j! U: a* ^$ G3 ^3 w6 H /* 测试UPP传输的同时操作普通DDR数据
! W- Q- Y( M, a, m U& k4 u2 D temp=i;: g, r) I/ }9 w9 `3 M' s) V4 {" ?
i++;
7 K' n+ {! r- L+ F, p: I2 h if(i==1024)
; s A+ z+ J v/ P" Z {% C# u! X( ^9 a$ q& k9 j- R# c' \
i=0;
9 J8 X/ n) G/ } A- j6 L. z: ~ j++;
0 l% f. H3 P9 x. P/ w }
) {; O8 f8 _* x1 ]& ]& W$ d& d3 v+ w& u */0 n) t& k4 |1 @, y
- k! w/ E; H( u- L6 j5 c9 i
asm(" nop");
* t0 a- K! j+ M. _2 E% X# O
: K6 G7 L. X' K' ~ //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);& n1 N$ {6 x* n9 P, C8 o" w
}
; p# B% }- }3 F+ ~9 x0 h
# U* B- T7 k$ r1 j8 R' G- Z /*检查UPP传输的数据是否正确 (loopback modes only)*/
/ o: `6 L/ p9 C //UARTprintf( "i=%d\n",i);1 r- l; R* ^% w& T9 y% O
//UARTprintf( "j=%d\n",j);
3 @9 }3 a; {0 l' \ UARTPuts("Data mismatch in buffers.\n",-2);
! m% z1 y5 {% E. @ if (upp_interrupt_count == 2 && upp_error_count == 0)
n- M" l+ f6 f9 S5 @3 d {
1 ~9 w- R# k, H) r for (i = 0; i<upp_frame_size; i++)
# v y4 {9 E* x6 U; v& q. e0 D {7 \& [9 o' p) c5 s }
if (upp_buffer_a != upp_buffer_b)
. i% \$ R. I! m3 A! n4 }. t {5 w0 V( f* ~5 T) L' k
upp_error_count++;1 \0 W" w9 A5 ~. `
}
9 {; }- t& K' U6 o1 V }1 k0 ~- ^( m( a; P2 }% g; j
}
% w! H; C( \8 v' B( d! D
6 G0 W* L% P" a& W+ v /* 报告通信结果*/" L7 T. r- a4 b$ }) T# j8 o
if(upp_error_count != 0)
d$ d' m+ K8 p' ~2 B" I UARTprintf( "upp_error_count=%d\n",upp_error_count);% p' Y- r9 L0 \1 s+ S8 W5 V; y
else
; q4 @$ E& b# B: e$ P( ]3 \ UARTPuts("uPP transfers complete!\n",-2);$ K- }& ~3 g9 b, S) ?
3 f8 F1 M: Q- L! @ UARTPuts("Do you want to print all the data?(y/n) ",-2);
! S, P1 J4 b2 W e" `; b- N4 o UARTGets(ch,2);+ e7 \7 n& [6 E! w5 s8 V4 P. |
UARTPuts("\n", -2);
- l ~7 b% V9 E7 V
W9 p9 o* |, ?2 r0 x. P if(ch[0] == 'y')
# ~ V- p5 i2 n, L8 C1 `6 o {
" {/ t7 {$ B' K% L L8 l /*打印全部读到的数据*// I# A# C' K, _% U1 q
for(i=0; i<upp_frame_size; )# F# k0 ~% n/ O4 Z5 a! S$ l+ R' \
{
! t! S# N% N- ~& C2 O: q( K$ k for(j=0; j<5; j++)
) K" k( E5 `: C7 ~- d. K4 ? {' ~' p+ Y' V. N$ r/ L9 t! J
UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);# |8 n) C+ ?3 H+ A% T, A9 [1 u
i++;
. k& E: E7 ?( @* M+ e //if(i >= 4096)
( I& `9 d; N& B9 i; e5 m6 _ // break;+ B7 b$ S6 ]$ n
0 j' F8 @) P! J: E* s7 |1 @# S6 y }6 q: |" m: o! d2 V+ m3 T' x. Z
UARTPuts("\n",-2);
8 X& h; `- z& {1 K" z }
4 w; @ T2 w* b/ N9 x }& S$ d6 Q& t& n- R! `, {6 J
# A; t4 @# I: q: _
}, r2 D/ z2 n6 F% }# C; F1 `
( u: {7 u* S" Z8 W8 ^' [' n* p( e2 S( x( f* z% K0 p9 q$ z6 c
|
|