|
|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?! z8 k5 Q4 W/ H% ]. J) t7 @
Void UPP_TASK(Void)* m( q% {4 Z4 K# F
{
5 G3 U7 c, h( N% \- d `" C; e1 P6 i |1 B7 o1 X& b$ m
int i,j,k,target_int_count=2;
9 j6 M1 p" \* r, ?. P8 u w( _ char ch[2];1 T- U4 D8 o3 t) j0 O0 b5 ~0 ]4 ?
2 R; d, g' P; @ P/ ?2 O. X
( T h/ `4 ?8 j7 r. @( V% D- e; W+ z% G8 P
upp_interrupt_count = 0;
Z+ M! u" a) {6 U3 i' R. b& J) k upp_error_count = 0;
" V$ ~0 c: r( j; D6 M1 _0 n) Q/ R+ W+ K2 m! }- k/ ]! L( n+ G$ V) M
UARTPuts("\tResetting uPP buffers...\r\n",-2);
$ p' L" n3 I: w$ e. V9 g/ ~ // Initialize data buffers( k# u( ]4 E- A" N Z
for (i = 0; i < upp_frame_size; i++)
1 |9 R, l F: q: p7 J: S {& q3 m6 D/ W5 f Z
upp_buffer_b =i;& n' I( y! i) Y* ?
upp_buffer_a = 0xDEAD;% r6 w) d" R0 C" w3 I3 ~+ {( {+ [
}2 Y9 n9 x! c& \' I1 w. y
( q6 m5 w- p% X7 s- T
//for(i=0;i<1024;i++)
& G* i0 J' Q+ @7 F+ E+ C // temp=0;& N, r2 m: {) N2 w0 D7 j
" }1 n+ G- o: T c& q2 o1 @: y //UPPReset();: O' l/ z" e7 \5 |9 W* Y( {
/*启动UPP DMA传输*/. [" e) O, _6 I9 z# W
UARTPuts("upp_prog_dma_i\n",-2);, B0 T% ~$ m: V; X4 S
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
2 @2 E) B& m* ~ upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
0 G5 K9 a9 X6 m) _" C upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);$ J! }2 f" B2 h% d+ _2 O
8 Y3 N6 n; B: W" m% {" h X UARTPuts("upp_prog_dma_i\n",-2);
4 K5 t+ y: t& { upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
) `8 _3 E' h( b1 n upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
9 s8 m: [4 i4 b' [ upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
4 V3 O% D* s7 b5 \5 o' u Q7 u R* W3 {, k# g7 H
/*等待UPP传输完毕*/% t! C) A3 D* N- @. s; z% A5 S
//i=0;
; {5 j5 P- B# S( y, Z, T: H' K& W5 Z //j=0;' }. x% H$ i% ~7 X# V
while (upp_interrupt_count < target_int_count && upp_error_count == 0)
6 R. J( H7 x5 a* ]) k4 N9 q5 _ {
! Z+ F# F0 N9 o/ c /* 测试UPP传输的同时操作普通DDR数据3 G, P7 ?7 T7 K2 U" |6 |+ m
temp=i;2 v w+ s8 w1 x" O6 B8 N
i++;
* L5 G/ I; |- Z7 c if(i==1024)
- E @* I v, l1 } {; T# U3 x- l$ e
i=0;1 a4 U0 B% W6 R; D' }5 E, }
j++;
8 C6 Y; A. l; v4 d( G }+ K, `$ @) Q7 O1 N7 R
*/
4 h9 s6 t/ s, ], O" s5 n
J; P) A n6 l S6 r! W asm(" nop");
/ T4 ?" z6 i+ I
( I4 c; ]0 D/ S) X/ ^7 Y //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);2 u7 O+ V" l8 k& M: f7 J
}* L/ l' Q9 F& k% }2 g! y2 F7 a. h
5 Z8 p- n! R7 @. Q' D$ s3 M) q0 l
/*检查UPP传输的数据是否正确 (loopback modes only)*/* D3 _) _8 V: ?9 L3 I9 n% K$ I, [
//UARTprintf( "i=%d\n",i);
4 ]7 y. h V8 a1 u, k //UARTprintf( "j=%d\n",j);
. F$ |% [# ?0 ^- i+ C( ] UARTPuts("Data mismatch in buffers.\n",-2);
# @& f+ K+ O. ~/ H" b- J if (upp_interrupt_count == 2 && upp_error_count == 0)
2 g7 i% t" ~/ l) x$ b. z {
7 D. v$ h& J" U/ g- z for (i = 0; i<upp_frame_size; i++)& Q/ M5 r- c$ y/ d
{
( _. {* M1 q1 p0 Y if (upp_buffer_a != upp_buffer_b)
% i8 `+ ]( z6 t: {9 ~ {
8 Q% P1 f# n' g; T% ]) I9 t upp_error_count++;/ q" F' {3 X8 m- M
}- \# @- Y8 d& O* k& l
} B5 e7 R* U3 ^9 c0 ~
}( T3 B8 F- |3 ^7 W) P
4 g: Z9 e/ j& f7 z3 \/ v% S G /* 报告通信结果*/
* e$ e3 Z* q9 Y0 h if(upp_error_count != 0)
% Q6 I/ x b6 g/ x, _0 @+ w; f' V UARTprintf( "upp_error_count=%d\n",upp_error_count);
" [8 \7 _* e, L6 W" J; C else* U% C* L' o% E8 h2 D- s
UARTPuts("uPP transfers complete!\n",-2);
8 N; l( z3 | [; s' I6 ?! c) U/ b5 ?* q: m9 e) a
UARTPuts("Do you want to print all the data?(y/n) ",-2);' E/ v# D h1 D0 ^/ _4 O4 C
UARTGets(ch,2);
" K1 i) G# t8 m8 `+ \! `* ^ UARTPuts("\n", -2);. {& g+ J7 Z2 r8 x/ D
& l0 R# c, i3 @+ ~9 `' l
if(ch[0] == 'y')+ Y$ U" _1 u& C" H! v g, G
{* t; {1 r- Q* G/ Z1 R& ?! j
/*打印全部读到的数据*/+ B2 L; f9 K9 \ w. e: H
for(i=0; i<upp_frame_size; )" M9 K+ V3 j# C" J1 u: r5 e
{
3 u& Y; M# q& Y, V for(j=0; j<5; j++)7 u! b& O( H* @& ~, a6 l- o+ Z$ C
{. I# x2 o. R1 v' _: z" ~
UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);" I; ~( ^ x& h- y
i++;
. q5 y0 D. t, M4 `" L; p //if(i >= 4096)3 C: a; z0 n( D, o- C* [) q
// break;
5 h1 I& ~9 M( n5 N
+ t/ ?! [% K' o5 G }4 X% D6 @; z9 Y- `: c
UARTPuts("\n",-2);
+ Z# d* R$ ?8 G6 J/ q: n9 w) z( I }
8 A. n4 k# B/ R9 A }3 W# R6 Z0 B. c( t4 L8 R5 H
) y' ]9 V% }( Z}8 t- x$ ~; d7 S8 H) l
* {# V/ i- w0 |; M1 |: p' B
E& L+ u6 {+ y0 n |
|