|
|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?% [# s& G; X& O; F
Void UPP_TASK(Void)
, C, l3 D& c0 D- J Q" @" [{# q. F }+ n: Q' D
2 y" j3 O% L+ [6 t. r int i,j,k,target_int_count=2;6 V% O, p& t! E# G! R9 y) B! X
char ch[2];* Q# Y& b! E2 o2 I; L/ E2 y8 \
* I% }% W9 k$ l5 O4 w& g- c
/ S$ x8 J$ `3 [# \
! N; Q2 m5 H5 Z0 L7 _ upp_interrupt_count = 0;
, Q+ H1 S1 ?' B! J: ^' { upp_error_count = 0;$ M# n d8 T* U0 S A0 u
1 y B+ B' A* w7 o9 e- `* y
UARTPuts("\tResetting uPP buffers...\r\n",-2);" E; t; ]" ~. f W, Q q4 S
// Initialize data buffers
8 Y9 Z0 o) ]& M. `; y! n8 G) s: ^ for (i = 0; i < upp_frame_size; i++)) ~% [9 \) Y# f
{6 { a3 U1 Y. S5 {1 r# e
upp_buffer_b =i;$ @4 \9 T% g, C( `! q
upp_buffer_a = 0xDEAD;& d% ?1 b5 ]) t7 X# C# c z* B1 w
}
3 `% h7 g' J4 _ P7 A# ~ |/ E% h j1 X$ |0 |
//for(i=0;i<1024;i++)
# G' _( l& r9 j4 {- C // temp=0;" m1 `( _# _* T3 E* _+ y% D0 s" T
: q5 n( E' z0 f1 W) J //UPPReset();
4 T& z8 x0 t2 s3 H7 M3 {( _, v. H /*启动UPP DMA传输*/( c, f) c" X8 t0 X* E
UARTPuts("upp_prog_dma_i\n",-2);
0 Y" T8 u; u/ S( x# ^ upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
; ?% w7 o- d8 d upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
# }; j$ _0 R% P: H$ P8 o upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);2 c% f+ p# F" v8 W, L$ Y+ U8 F7 M
B/ d+ o) b- C3 w UARTPuts("upp_prog_dma_i\n",-2);4 B z1 X2 E/ m& m0 Q
upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
6 K9 S+ a D! I, K2 u upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);; ^$ k! d8 _5 e! p% R
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);/ |1 {, Y5 B2 O/ S, S
+ J2 B' i4 L5 T$ S1 n! l6 a! n
/*等待UPP传输完毕*/
- ~) I: O a% \) U3 J2 ] //i=0;
$ l3 S9 k$ v2 |: y v) p: U g //j=0;
s( x: M& J5 W, L2 t while (upp_interrupt_count < target_int_count && upp_error_count == 0)( j' ^3 U8 `& ?, s2 a7 F
{, C/ r# z9 {. q5 b5 R3 E
/* 测试UPP传输的同时操作普通DDR数据& `+ F; b% ]2 d0 D+ a. T
temp=i;
1 |0 d* `% w3 C5 }# p; c i++;1 ^8 i& k9 f F- U' m( W! C0 H
if(i==1024)
0 I( |* ~& b* M) w( b" w {/ W, H; z! [0 @ `& e
i=0;
& ~1 _/ H9 W, L/ D$ z* I& C j++;. U- @3 B' M$ e$ Q7 `$ h3 a6 D
}: G( G5 {! Q3 h5 W5 I9 n( q
*/ A; i$ ^9 G% a4 p( z0 o0 `
& g/ t; n: G% l6 j! M' c- I asm(" nop");
. z% Z- H# T2 k" u5 _4 g$ K/ n6 I- w7 s8 G3 m
//UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
7 E0 `+ w* n* _" B0 u }
( }$ W, g( d2 j1 t+ Y4 C0 y3 x2 u4 g0 S
/*检查UPP传输的数据是否正确 (loopback modes only)*/
! a7 |: h, x" A; d# M+ W6 @8 ?: r //UARTprintf( "i=%d\n",i);
+ Z9 M: D0 O" M& S: E //UARTprintf( "j=%d\n",j);
5 e/ u4 y; P8 J: N+ V& c UARTPuts("Data mismatch in buffers.\n",-2);5 ]7 F2 L& D3 G$ J$ _
if (upp_interrupt_count == 2 && upp_error_count == 0)
7 X8 g! I. E! Z {
: K6 w( H1 U- z7 m% C4 D for (i = 0; i<upp_frame_size; i++)6 `! X; i$ d, Q3 |8 G, ]! a
{: [! t; l2 n/ u
if (upp_buffer_a != upp_buffer_b)& L5 J/ a8 ]) l9 _: A# R
{
) t' m/ |- P5 d, \) Z X' V: {3 L upp_error_count++;4 y3 Y5 h, R8 x2 M6 t' ^7 K$ _
}
: a u; r. k& r/ g. T% B }
, T6 | L1 T# n: W; l }
* g4 `8 V% ~3 R5 x/ C; s7 K' u8 R* j* a# S7 P+ [; E4 J
/* 报告通信结果*/% l9 N1 |4 n- p; X6 d6 `5 r: v
if(upp_error_count != 0); S8 u& ]( @, [, {0 [/ @& ?
UARTprintf( "upp_error_count=%d\n",upp_error_count);
" Q, U+ x8 Q6 p, f! _3 O2 d9 s2 i else
) P* ^* k4 N2 a! b! `: k UARTPuts("uPP transfers complete!\n",-2);/ m7 |/ ^5 ?4 C/ Q8 q1 |) A
. j! @1 K/ E3 n0 Q; L UARTPuts("Do you want to print all the data?(y/n) ",-2);
! B# B) Z% a. [! W$ g UARTGets(ch,2);- a# S8 h8 U& S6 T: ]) U
UARTPuts("\n", -2);
' F& M# O" f- [5 J8 T1 v% D: ~2 w5 m8 w F3 I5 r
if(ch[0] == 'y')& k( P- d3 ?8 W! v3 s
{
# f& p7 z( R6 r! V- `" u& L( ? /*打印全部读到的数据*/& ?1 J2 L4 a- T7 ~# `
for(i=0; i<upp_frame_size; )
- [( ^! U9 A: i; j( h3 a% @ e {; P% O' c4 Q3 N& {# C1 i
for(j=0; j<5; j++)
9 v5 K: O' u5 i {
5 L3 M! z/ I' K0 b UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);
9 X7 I5 b; }) ]. H6 \) J# f i++;* p% s* R2 ^. N' D9 N7 F8 ?
//if(i >= 4096)
' B, r% |5 p% Y) ?5 E; y // break;: p9 N; Z) R3 m# B* H* {
8 j- M; ^- c0 K% O% _& ? }
3 [# e6 L/ R$ a UARTPuts("\n",-2);
5 i" [: x* v# u. F- H0 E9 k }
- x) T, C0 @, J4 x z }
% {/ k& q+ [0 | W3 _* o; g" U
* j' {0 o5 J3 e; r: o}4 W/ T$ C2 `8 Q, w
m! g w4 u4 t3 N) [% A3 G* H* g/ a1 {0 ?1 F. U
|
|