|
|
zhuma 发表于 2015-9-11 09:547 p; x5 f& B, ~) W7 P' M4 E7 M% v
l楼主你好,我最近也在做FPGA与DSP之间的图像数据的传输,我想请教一下,请问这个CLOCK START ENABLE 配置 ... - D, n9 z. `8 S: P! z2 [
寄存器初始化那里就给出来了啊,如果DSP要发数据给FPGA, 那么CLOCK是由DSP去控制的,如果DSP要接收FPGA的数据,则CLOCK是由FPGA控制的,START跟ENABLE信号是用来控制发送使能的。这是我的初始化配置(我是用8位宽度通信的,对于DSP来说,B是发送,A是接收):/ x' ~; ~) `+ U' s: k5 T4 K
static void UPPInit(void)
2 r# z( M3 B( {: ]9 i, a0 o' C |{7 c' Q$ ]) q( ?
unsigned int temp_reg = 0;$ k" i$ e1 O5 c! {9 g- j
# Y, y V( f# Q$ w9 J; M6 i$ \
// Channel B params7 Z+ C9 k# J' Q5 Q" C8 {
CSL_FINST(temp_reg, UPP_UPCTL_DPFB, LJZF); //Left-justified, zero filled
# h; @1 E/ j# O CSL_FINST(temp_reg, UPP_UPCTL_IWB, 8BIT); //8-bit interface
/ Y( C$ D# ], J2 h8 D3 d CSL_FINST(temp_reg, UPP_UPCTL_DPWB, FULL); //Channel B bit width = 8! \* n, [/ J, [! J# H
CSL_FINST(temp_reg, UPP_UPCTL_DRB, SINGLE); //Single data rate9 F& ?& y4 K3 q, o, d
: C) `$ B/ B: W$ _0 F+ H% y // Channel A params
8 g- w# v! }: }# W2 M* x CSL_FINST(temp_reg, UPP_UPCTL_DPFA, LJZF); //Left-justified, zero filled
3 D" H% @7 `8 L D CSL_FINST(temp_reg, UPP_UPCTL_IWA, 8BIT); //8-bit interface5 y/ q$ l- e; w$ U- |" e/ V# E3 d
CSL_FINST(temp_reg, UPP_UPCTL_DPWA, FULL); //Channel A bit width = 8
- D/ t2 F+ c* I$ T: S' G2 ]. Y( f CSL_FINST(temp_reg, UPP_UPCTL_DRA, SINGLE); //Single data rate
. H- \2 I4 {6 @$ P) N" a9 ~# m) J+ F- i' g
CSL_FINST(temp_reg, UPP_UPCTL_CHN, TWO); //Channel A and Channel B are both active.& M+ f S7 b( a& f4 V3 t7 ~$ `; l/ L
CSL_FINST(temp_reg, UPP_UPCTL_MODE, DUPLEX0); //Channel B transmit Channel A receive
& }6 z6 v2 e+ i: i
4 y, @- ]- h, _/ O, v upp_reg_hdl->UPCTL = temp_reg;9 t5 C: E& k9 r# Z' K+ q
% v8 ?) t" Z/ v
temp_reg = 0;
; y# n4 S/ U2 X1 S* M- M; o/ d; f: ]$ x4 D- p
// Channel A params; u3 m* Z2 v0 S
//CSL_FINST(temp_reg, UPP_UPICR_TRISA, ENABLE); //Channel A data pins are in a high-impedance state while idle
& W! I0 c0 p% z' D' { //CSL_FINS(temp_reg, UPP_UPICR_CLKDIVA, UPP_CLOCK_DIV); //Clock divisor) I: I# Q0 |; }/ t
CSL_FINST(temp_reg, UPP_UPICR_STARTA, ENABLE); //Channel A START Signal Enable.1 I3 ?& M: g! I% A; p+ h O
CSL_FINST(temp_reg, UPP_UPICR_ENAA, ENABLE); //Channel A ENABLE Signal Enable
5 l& _9 B6 E/ I7 ^4 T3 L
5 G$ T s6 a! ~) \* r3 H2 f; Z // Channel B params
: y$ {6 ~/ \- V a1 x# t CSL_FINS(temp_reg, UPP_UPICR_CLKDIVB, UPP_CLOCK_DIV);& Q4 a3 F! \, q% I' i# g4 \
CSL_FINST(temp_reg, UPP_UPICR_STARTB, ENABLE); //Channel B START Signal Enable.
& w4 `2 |2 m# z: |. O CSL_FINST(temp_reg, UPP_UPICR_ENAB, ENABLE); //Channel B ENABLE Signal Enable# R" ?& [% b3 p, j" n
) O$ P* G" C" Z$ {1 H5 u" E upp_reg_hdl->UPICR = temp_reg;8 m! q. p4 D1 Y( g
5 r6 r$ j! D4 C //temp_reg = 0;
, [0 V/ p- b# p% E W& q% ^. r$ C- }! s/ Y# c6 B( \
//CSL_FINS(temp_reg, UPP_UPIVR_VALB, 0x7b7b); //Channel B idle value! l: {& v- y1 _( c$ @# ]5 _* I p& l- O8 V
//CSL_FINS(temp_reg, UPP_UPIVR_VALA, 0x7f7f); //Channel A idle value
* _" I- a$ m9 p7 t' F: H# p! Z' l$ t$ V8 Q h1 E3 _+ L* R
//upp_reg_hdl->UPIVR = temp_reg;5 @' c! o4 _) R! \
/ y, ^9 @$ J! A7 z* g$ n
//temp_reg = 0;0 [+ l8 J3 m: W f& t2 a& L3 ?/ R+ L
) P- z% L3 f, }4 R1 `
//CSL_FINST(temp_reg, UPP_UPTCR_RDSIZEI, 256B); //set 256B DMA I 3 g! W4 j# f& g" J
//upp_reg_hdl->UPTCR = temp_reg;8 i% p5 ~: ^% X) H+ O; J7 Z6 C
0 F. h/ X# z6 Q0 j. |4 h8 u1 B //temp_reg = 0;
# ~3 N2 o* G4 ]! b //CSL_FINST(temp_reg, UPP_UPDLB_BA, ENABLE); //B to A loopback mode enable
1 p- V/ d% p" J //upp_reg_hdl->UPDLB = temp_reg;/ a- h1 `- }% L; c0 L+ u5 N) v
+ E/ p0 W. D0 ]' v p} |
|