|
zhuma 发表于 2015-9-11 09:54# ?1 L6 M0 R, E8 }( N- y3 |) Z- T
l楼主你好,我最近也在做FPGA与DSP之间的图像数据的传输,我想请教一下,请问这个CLOCK START ENABLE 配置 ... C* W# [3 T' d. `
寄存器初始化那里就给出来了啊,如果DSP要发数据给FPGA, 那么CLOCK是由DSP去控制的,如果DSP要接收FPGA的数据,则CLOCK是由FPGA控制的,START跟ENABLE信号是用来控制发送使能的。这是我的初始化配置(我是用8位宽度通信的,对于DSP来说,B是发送,A是接收):* G" I5 z' @7 N
static void UPPInit(void)
3 E. K' t, W# Y3 t{1 q4 [& R, H: M
unsigned int temp_reg = 0;
% s. C0 ^+ X5 i1 ]* J7 c; u. ]3 f( O& ^/ ]" m+ u
// Channel B params
& x8 S& ~, f* M( q CSL_FINST(temp_reg, UPP_UPCTL_DPFB, LJZF); //Left-justified, zero filled0 {1 X/ O2 J" k% ^$ w0 ~/ H& P- s
CSL_FINST(temp_reg, UPP_UPCTL_IWB, 8BIT); //8-bit interface1 j+ N" {5 F9 ]/ ~2 ~
CSL_FINST(temp_reg, UPP_UPCTL_DPWB, FULL); //Channel B bit width = 8) L! E# f7 D; w& X1 ~6 n7 ^
CSL_FINST(temp_reg, UPP_UPCTL_DRB, SINGLE); //Single data rate5 |; h* h& M1 z
5 D3 H* x' K% h8 L) d, S4 t9 e, L
// Channel A params
' Y& \; f4 `7 H1 H CSL_FINST(temp_reg, UPP_UPCTL_DPFA, LJZF); //Left-justified, zero filled
5 f" U1 {# d8 P* z CSL_FINST(temp_reg, UPP_UPCTL_IWA, 8BIT); //8-bit interface3 m, q. u) b6 A9 z; b8 a! f8 b! z
CSL_FINST(temp_reg, UPP_UPCTL_DPWA, FULL); //Channel A bit width = 8
n: y- j; u+ ~* u* p G$ @ CSL_FINST(temp_reg, UPP_UPCTL_DRA, SINGLE); //Single data rate2 G S0 M& I+ C5 V ?3 P; v% {
% w. J7 J: \. S- [! z/ q CSL_FINST(temp_reg, UPP_UPCTL_CHN, TWO); //Channel A and Channel B are both active.- m. P# @, a% k6 `" j
CSL_FINST(temp_reg, UPP_UPCTL_MODE, DUPLEX0); //Channel B transmit Channel A receive) U7 p7 o5 F% W$ L0 L& ]( ^3 g
\) J+ J' r. j" K; s+ ]- I! `2 A% `
upp_reg_hdl->UPCTL = temp_reg;
# s. k' U" v9 G1 m$ z
- R% J ]" O0 ?9 E$ ]% I temp_reg = 0;
0 F: u7 g4 _4 X4 R' G
9 \( h+ E- }& Y. X7 Z // Channel A params" A# Y: o( i( I! Z# G" v& G
//CSL_FINST(temp_reg, UPP_UPICR_TRISA, ENABLE); //Channel A data pins are in a high-impedance state while idle
+ m+ D& [" _4 Z$ v1 r //CSL_FINS(temp_reg, UPP_UPICR_CLKDIVA, UPP_CLOCK_DIV); //Clock divisor% Y1 F+ _1 K. G- \2 Z
CSL_FINST(temp_reg, UPP_UPICR_STARTA, ENABLE); //Channel A START Signal Enable.
: J7 O* o* I0 e! i+ z t3 E) T CSL_FINST(temp_reg, UPP_UPICR_ENAA, ENABLE); //Channel A ENABLE Signal Enable D% @: y6 E1 N7 @
' r/ J: W4 H& u" ~' W4 ~1 U
// Channel B params
; V8 o0 @ h ^# Q! d, X- _8 |, ~ CSL_FINS(temp_reg, UPP_UPICR_CLKDIVB, UPP_CLOCK_DIV);2 G* |6 r: F8 k( z- A! k! A2 L8 G. Q
CSL_FINST(temp_reg, UPP_UPICR_STARTB, ENABLE); //Channel B START Signal Enable.9 F$ H5 L( O& S, m0 F: z
CSL_FINST(temp_reg, UPP_UPICR_ENAB, ENABLE); //Channel B ENABLE Signal Enable( i7 y B- m1 o
# c$ z" {) }) K% E/ l
upp_reg_hdl->UPICR = temp_reg;$ F0 i% \6 z; T( v: s' \
- l) k: t# h m, q //temp_reg = 0;
' `% |& @8 X& ?+ H5 \' I; n1 Z) r: N& ^: [ }+ Z
//CSL_FINS(temp_reg, UPP_UPIVR_VALB, 0x7b7b); //Channel B idle value* k/ h& M, M0 a9 R( K' L
//CSL_FINS(temp_reg, UPP_UPIVR_VALA, 0x7f7f); //Channel A idle value5 T- H F) H- o; N- p% |& O3 e
& H! @; k8 s7 c: ] //upp_reg_hdl->UPIVR = temp_reg;
, ~9 t, z# v s! j7 }
1 }' D! r- U9 r3 H3 l //temp_reg = 0;
- I$ z. J g- n3 k4 G. F# s' n9 b9 \ M! c w b7 K, K7 n- \1 `- o; l8 i
//CSL_FINST(temp_reg, UPP_UPTCR_RDSIZEI, 256B); //set 256B DMA I / C& { D2 N- a! g
//upp_reg_hdl->UPTCR = temp_reg;
9 `$ p. e8 E8 e2 U! {2 X
% P: A1 \. p; q& M$ d //temp_reg = 0;7 l! { C8 W3 R, A, a
//CSL_FINST(temp_reg, UPP_UPDLB_BA, ENABLE); //B to A loopback mode enable
6 h0 \ [9 b/ n7 l% Y3 S# j //upp_reg_hdl->UPDLB = temp_reg;
5 j: K6 H% L( g4 u: ~9 D * a3 q9 m* l' B1 K4 C
} |
|