|
|
zhuma 发表于 2015-9-11 09:54' D6 W7 p D+ M* g/ S+ a- [: a8 O) _
l楼主你好,我最近也在做FPGA与DSP之间的图像数据的传输,我想请教一下,请问这个CLOCK START ENABLE 配置 ...
% y: w8 I$ p5 Y寄存器初始化那里就给出来了啊,如果DSP要发数据给FPGA, 那么CLOCK是由DSP去控制的,如果DSP要接收FPGA的数据,则CLOCK是由FPGA控制的,START跟ENABLE信号是用来控制发送使能的。这是我的初始化配置(我是用8位宽度通信的,对于DSP来说,B是发送,A是接收):
3 |+ ^ A1 f* R5 p" W0 ^static void UPPInit(void)
% v% C. ^4 m6 k{1 |. x( }3 T; d
unsigned int temp_reg = 0;
/ ?% @) C8 h. s8 P2 |* B! {% o
& B* V! z0 \* }! k // Channel B params2 K" }4 @. v5 \$ e
CSL_FINST(temp_reg, UPP_UPCTL_DPFB, LJZF); //Left-justified, zero filled, D% B0 D/ K [, X) W+ V- y4 H
CSL_FINST(temp_reg, UPP_UPCTL_IWB, 8BIT); //8-bit interface
! C! _' l/ f2 B( U9 \4 M CSL_FINST(temp_reg, UPP_UPCTL_DPWB, FULL); //Channel B bit width = 85 J6 x L g+ ?, x; D, \3 V/ e& |
CSL_FINST(temp_reg, UPP_UPCTL_DRB, SINGLE); //Single data rate
: j+ P3 y" V( }* y( G( o7 ]1 w' X% b2 |& l( t4 j8 O E
// Channel A params
, a4 G4 _; q9 h% g CSL_FINST(temp_reg, UPP_UPCTL_DPFA, LJZF); //Left-justified, zero filled1 X, ^+ r( O/ B7 ]3 f. @; r
CSL_FINST(temp_reg, UPP_UPCTL_IWA, 8BIT); //8-bit interface
& K; T: k; A) K6 I CSL_FINST(temp_reg, UPP_UPCTL_DPWA, FULL); //Channel A bit width = 8
% j1 S/ a# r. I CSL_FINST(temp_reg, UPP_UPCTL_DRA, SINGLE); //Single data rate0 o% R' H: X1 E3 u& U! v- p6 Q
. }( X1 h& P% U% x) S$ x4 c7 h+ V
CSL_FINST(temp_reg, UPP_UPCTL_CHN, TWO); //Channel A and Channel B are both active.
2 g% E' X' a# q9 {3 W/ s; V CSL_FINST(temp_reg, UPP_UPCTL_MODE, DUPLEX0); //Channel B transmit Channel A receive4 e$ s# O, J9 z ^1 c
# V, q! b U& t [) Y" Q
upp_reg_hdl->UPCTL = temp_reg;; ?( E7 R& [" R3 ~1 o% S/ u
& j k+ g4 Q& d) { L' R6 q3 T
temp_reg = 0;
5 V+ _6 v4 w; L* h+ @( N# u; m3 d
7 V( ?& m2 T( ^2 b // Channel A params' _1 B3 v2 k W, r5 ]
//CSL_FINST(temp_reg, UPP_UPICR_TRISA, ENABLE); //Channel A data pins are in a high-impedance state while idle# H: d7 c, O* o! t& O* q7 T; l* g
//CSL_FINS(temp_reg, UPP_UPICR_CLKDIVA, UPP_CLOCK_DIV); //Clock divisor) o# L/ d6 n7 q' N2 Z
CSL_FINST(temp_reg, UPP_UPICR_STARTA, ENABLE); //Channel A START Signal Enable.
/ z0 e* y, u5 n4 _3 t5 H1 E CSL_FINST(temp_reg, UPP_UPICR_ENAA, ENABLE); //Channel A ENABLE Signal Enable
" w0 r% _: j, k7 x% U
. k; b8 e& f* _ // Channel B params
6 E/ D& g7 Z, {* l CSL_FINS(temp_reg, UPP_UPICR_CLKDIVB, UPP_CLOCK_DIV);1 V- q3 {( A, }/ I, x
CSL_FINST(temp_reg, UPP_UPICR_STARTB, ENABLE); //Channel B START Signal Enable.
) I: V0 Z6 W. |* ~7 j CSL_FINST(temp_reg, UPP_UPICR_ENAB, ENABLE); //Channel B ENABLE Signal Enable9 ^: v" D. j& J
+ W. k M3 E/ k8 \# M
upp_reg_hdl->UPICR = temp_reg;
* n" B1 n% b* z9 n e" w- J0 Z4 ]
% |# m% Q! s3 g: g2 y //temp_reg = 0;% D" l( b% c8 s: j ]0 I
: r2 n1 \0 F( s //CSL_FINS(temp_reg, UPP_UPIVR_VALB, 0x7b7b); //Channel B idle value1 L- h, B/ L( N/ Q% T0 [* x
//CSL_FINS(temp_reg, UPP_UPIVR_VALA, 0x7f7f); //Channel A idle value
/ B+ t: y" {, K( o4 M6 {* g' M1 e$ V
//upp_reg_hdl->UPIVR = temp_reg;4 M1 T( V! Y) f) @+ e8 y2 B0 i% M6 ^; U
0 u Z2 h. E, ~* @
//temp_reg = 0;7 y* ]. r$ g7 r$ R9 s& z2 g
7 S- i7 R" p8 b+ T
//CSL_FINST(temp_reg, UPP_UPTCR_RDSIZEI, 256B); //set 256B DMA I # n9 n& p. {& }9 B) N2 \
//upp_reg_hdl->UPTCR = temp_reg;( L5 _" R% J# Y, f
/ c9 w4 n4 e3 p- e; j" L/ K
//temp_reg = 0;
& M N9 ^6 @3 S4 h! Y) W4 o //CSL_FINST(temp_reg, UPP_UPDLB_BA, ENABLE); //B to A loopback mode enable. T3 f" c$ y) [% V1 M. M
//upp_reg_hdl->UPDLB = temp_reg;
3 H. I' t1 x. S7 i5 k* w: | , `) s3 X/ C4 Z" c, I8 c8 J2 d6 V
} |
|