|
zhuma 发表于 2015-9-11 09:54
; n% c7 e# V3 O6 i7 P) \: x& c9 fl楼主你好,我最近也在做FPGA与DSP之间的图像数据的传输,我想请教一下,请问这个CLOCK START ENABLE 配置 ...
5 D# X+ h# F, i' R- D寄存器初始化那里就给出来了啊,如果DSP要发数据给FPGA, 那么CLOCK是由DSP去控制的,如果DSP要接收FPGA的数据,则CLOCK是由FPGA控制的,START跟ENABLE信号是用来控制发送使能的。这是我的初始化配置(我是用8位宽度通信的,对于DSP来说,B是发送,A是接收):
% C* u% d0 C1 ]/ ~) W4 Sstatic void UPPInit(void)- c% w- C P. f7 S( f* @
{5 c& r$ x- E4 N$ E: p3 |
unsigned int temp_reg = 0;
/ N( v( ~; J, q8 Y5 O1 Z5 K7 F$ L! t+ @9 I1 a. G0 x' C/ R4 }
// Channel B params) W1 H% U. j% e; o. W
CSL_FINST(temp_reg, UPP_UPCTL_DPFB, LJZF); //Left-justified, zero filled8 ^. ]0 T. M7 _$ `3 j
CSL_FINST(temp_reg, UPP_UPCTL_IWB, 8BIT); //8-bit interface
4 s4 z! R. C: X+ O f CSL_FINST(temp_reg, UPP_UPCTL_DPWB, FULL); //Channel B bit width = 8
- l2 u# @1 d8 x! Q CSL_FINST(temp_reg, UPP_UPCTL_DRB, SINGLE); //Single data rate6 {+ k+ a; e# T) b( Q9 L
2 g2 y1 T- P" b2 V, A // Channel A params" J0 _ O" b9 {" g
CSL_FINST(temp_reg, UPP_UPCTL_DPFA, LJZF); //Left-justified, zero filled% t, Z0 Q+ r' h1 p3 Y- k4 V
CSL_FINST(temp_reg, UPP_UPCTL_IWA, 8BIT); //8-bit interface
0 Q* T M' u( {! ]& s CSL_FINST(temp_reg, UPP_UPCTL_DPWA, FULL); //Channel A bit width = 8% f: c7 d' F0 y0 c+ ?6 Q
CSL_FINST(temp_reg, UPP_UPCTL_DRA, SINGLE); //Single data rate
, E, E3 j& l% D1 z* f
% H# {' [7 J, l, s, n4 X& A CSL_FINST(temp_reg, UPP_UPCTL_CHN, TWO); //Channel A and Channel B are both active.5 J. z+ r3 \9 H3 H/ O0 B2 z
CSL_FINST(temp_reg, UPP_UPCTL_MODE, DUPLEX0); //Channel B transmit Channel A receive* g2 X3 e9 R# U! _7 P
) P5 m3 a& v; `/ t T8 @5 y6 R6 y5 `; A. i
upp_reg_hdl->UPCTL = temp_reg;% k4 S" k: V- C6 y' b
8 V" m5 C7 u! Y5 Y7 W. a7 D temp_reg = 0;
3 F! D' r1 H* N8 w* `. R W! A, W. w
// Channel A params0 L' V3 x5 K9 f8 }
//CSL_FINST(temp_reg, UPP_UPICR_TRISA, ENABLE); //Channel A data pins are in a high-impedance state while idle( q, J& l! d- G- i: g3 k
//CSL_FINS(temp_reg, UPP_UPICR_CLKDIVA, UPP_CLOCK_DIV); //Clock divisor
; T7 z7 M C8 T CSL_FINST(temp_reg, UPP_UPICR_STARTA, ENABLE); //Channel A START Signal Enable.$ Q8 _4 G4 n+ K u, ?/ |
CSL_FINST(temp_reg, UPP_UPICR_ENAA, ENABLE); //Channel A ENABLE Signal Enable
! m* O( \8 \- v; k3 ]% _
# Q a4 n: @) P. t" H: g // Channel B params, q+ e6 h& j6 {; [: H, {
CSL_FINS(temp_reg, UPP_UPICR_CLKDIVB, UPP_CLOCK_DIV);
4 k' u8 Z- G2 d$ o$ I( A7 [ CSL_FINST(temp_reg, UPP_UPICR_STARTB, ENABLE); //Channel B START Signal Enable.
' ] D! g; a" H2 _& W CSL_FINST(temp_reg, UPP_UPICR_ENAB, ENABLE); //Channel B ENABLE Signal Enable3 y( N3 V |) L' v
& e/ p7 e& {" |" `/ x upp_reg_hdl->UPICR = temp_reg;8 |' t" w% ~" W
; K" P& g" s! H" P3 ^4 _
//temp_reg = 0;, P0 Q! x8 m- \
+ p" d3 z7 ^: c2 j/ T5 S3 m, A( ]& N
//CSL_FINS(temp_reg, UPP_UPIVR_VALB, 0x7b7b); //Channel B idle value5 Y( c- Q0 q' k8 K6 O/ t9 _
//CSL_FINS(temp_reg, UPP_UPIVR_VALA, 0x7f7f); //Channel A idle value
5 B5 S4 m0 o2 E6 f a; S
" _" V& C! N. H. }& J //upp_reg_hdl->UPIVR = temp_reg;
* F6 _. z5 G9 ?3 q0 O# O/ A! J% E1 c5 B
//temp_reg = 0;2 u6 v3 j2 ^- ?" y
" F9 \- L3 T$ L2 g
//CSL_FINST(temp_reg, UPP_UPTCR_RDSIZEI, 256B); //set 256B DMA I
X$ q" z* G/ ^0 z+ t2 Q/ i //upp_reg_hdl->UPTCR = temp_reg;
, |9 H- i v( }4 ?# s. M' ?# B$ e, \9 e9 {/ N/ I
//temp_reg = 0;3 A" e# p! F/ s+ d6 B% o( m
//CSL_FINST(temp_reg, UPP_UPDLB_BA, ENABLE); //B to A loopback mode enable1 A8 o( v- D" ?7 C
//upp_reg_hdl->UPDLB = temp_reg;
( S$ }6 g* s3 P
, x0 V: n9 V/ W" }1 o! R} |
|