|
zhuma 发表于 2015-9-11 09:546 d; k9 Q/ c7 o; q1 W: r( H. ~- D
l楼主你好,我最近也在做FPGA与DSP之间的图像数据的传输,我想请教一下,请问这个CLOCK START ENABLE 配置 ... . B' q- r6 I; W k u
寄存器初始化那里就给出来了啊,如果DSP要发数据给FPGA, 那么CLOCK是由DSP去控制的,如果DSP要接收FPGA的数据,则CLOCK是由FPGA控制的,START跟ENABLE信号是用来控制发送使能的。这是我的初始化配置(我是用8位宽度通信的,对于DSP来说,B是发送,A是接收):# i/ Y- z' B4 ]4 h
static void UPPInit(void)5 ?" H2 [+ L+ C* A2 e" s4 @
{
+ S! d7 ?0 ^) c, L& {; h: B8 { unsigned int temp_reg = 0;
9 g* g3 H) N+ q) A( @4 x
, b8 s2 w7 A% P1 S4 ~ // Channel B params- j; ~- s: k$ R+ g
CSL_FINST(temp_reg, UPP_UPCTL_DPFB, LJZF); //Left-justified, zero filled
B. ?) r$ W6 G9 |2 G CSL_FINST(temp_reg, UPP_UPCTL_IWB, 8BIT); //8-bit interface9 D4 C( ~- B/ G( v5 n( f# n
CSL_FINST(temp_reg, UPP_UPCTL_DPWB, FULL); //Channel B bit width = 8
/ D7 L, t/ m6 ]' h3 T CSL_FINST(temp_reg, UPP_UPCTL_DRB, SINGLE); //Single data rate
4 R1 T$ X9 Y+ K- S
* u2 d) i5 U6 K& C; T // Channel A params
" R8 t, B. k+ ~7 W( o CSL_FINST(temp_reg, UPP_UPCTL_DPFA, LJZF); //Left-justified, zero filled- B& W: M' B1 r/ l( p; F
CSL_FINST(temp_reg, UPP_UPCTL_IWA, 8BIT); //8-bit interface" T( p+ O. b8 C- H! {# y$ {
CSL_FINST(temp_reg, UPP_UPCTL_DPWA, FULL); //Channel A bit width = 8
# Q( ]1 H1 o1 b CSL_FINST(temp_reg, UPP_UPCTL_DRA, SINGLE); //Single data rate0 k; x9 @% X; G, k
* B/ @ f4 Z' P5 Z( u& h CSL_FINST(temp_reg, UPP_UPCTL_CHN, TWO); //Channel A and Channel B are both active.. N9 Q. t; @3 [& E, i$ D" F3 I; a
CSL_FINST(temp_reg, UPP_UPCTL_MODE, DUPLEX0); //Channel B transmit Channel A receive$ F2 f8 V' v, \
, Q' M7 w1 g$ n0 H" K4 b upp_reg_hdl->UPCTL = temp_reg;
! J+ w$ Q( r$ W5 P+ g( {0 ?! T6 P$ \ i, H* Q2 c `2 X! T( Z
temp_reg = 0; 3 }( z: y4 D$ F) D* B
0 m9 Q7 T( m# a/ H5 u* O/ g
// Channel A params% r8 Q4 X$ i7 E& N( [" t& l
//CSL_FINST(temp_reg, UPP_UPICR_TRISA, ENABLE); //Channel A data pins are in a high-impedance state while idle
# Y5 n/ ~+ W6 ~+ r$ W5 \ //CSL_FINS(temp_reg, UPP_UPICR_CLKDIVA, UPP_CLOCK_DIV); //Clock divisor
( {6 A, h1 _( @1 G# `" k8 d# J CSL_FINST(temp_reg, UPP_UPICR_STARTA, ENABLE); //Channel A START Signal Enable.
4 F7 o5 v& W. C, E4 r9 j+ F CSL_FINST(temp_reg, UPP_UPICR_ENAA, ENABLE); //Channel A ENABLE Signal Enable$ ~. f4 q, C' U8 s; n# u
9 Z) p* i/ U4 Y; Z; m/ b! A // Channel B params
, p' |( w m/ ^+ ?, {0 s7 G: Y CSL_FINS(temp_reg, UPP_UPICR_CLKDIVB, UPP_CLOCK_DIV);
9 _8 {! d5 @1 c. S* _4 q0 H& C" o CSL_FINST(temp_reg, UPP_UPICR_STARTB, ENABLE); //Channel B START Signal Enable.; q! P; E+ r- n5 L, @2 I) A* [3 C/ t
CSL_FINST(temp_reg, UPP_UPICR_ENAB, ENABLE); //Channel B ENABLE Signal Enable0 q9 u- P2 n) D" @& i- D/ m4 D
9 X& A5 k% p& u3 _8 g2 F4 f upp_reg_hdl->UPICR = temp_reg;
' o1 D/ U/ P/ K+ [- b, Q6 s
! b# e9 m7 \7 T# j G4 e //temp_reg = 0;
6 G3 g& _; C" v/ ~& S- I0 Y( A% F% ^( l- c+ c$ c E
//CSL_FINS(temp_reg, UPP_UPIVR_VALB, 0x7b7b); //Channel B idle value
& X* s M, h: t: b( g% p- @ //CSL_FINS(temp_reg, UPP_UPIVR_VALA, 0x7f7f); //Channel A idle value I; i+ ~: T5 N: ]# m
# u4 V" Q/ K3 b- A1 l) L
//upp_reg_hdl->UPIVR = temp_reg;
" @8 v4 y: P u" h3 s" V/ M/ v2 p1 P0 f9 [# o: J. J+ ~; d
//temp_reg = 0;6 L# N; I3 N' Z; `
2 C% h1 s! o+ B$ j5 ~
//CSL_FINST(temp_reg, UPP_UPTCR_RDSIZEI, 256B); //set 256B DMA I , }! w! b- ~/ g5 C4 M% _ a- H
//upp_reg_hdl->UPTCR = temp_reg;! n1 c( x- G1 r* f$ Y O
+ C& o# z; f! X# N //temp_reg = 0;
4 p- Q) D8 o1 R* L //CSL_FINST(temp_reg, UPP_UPDLB_BA, ENABLE); //B to A loopback mode enable
; t- G3 Q0 |2 W l a4 E1 _ //upp_reg_hdl->UPDLB = temp_reg;
6 Y& T6 M5 O! F- v
- [$ h# G; P2 ?2 p2 B7 x" U( g4 B. J% ^} |
|