|
|
zhuma 发表于 2015-9-11 09:546 b+ x: Z. C. e! L+ R/ a1 v, R4 g
l楼主你好,我最近也在做FPGA与DSP之间的图像数据的传输,我想请教一下,请问这个CLOCK START ENABLE 配置 ...
* }; j" n$ Y3 U0 \7 ]寄存器初始化那里就给出来了啊,如果DSP要发数据给FPGA, 那么CLOCK是由DSP去控制的,如果DSP要接收FPGA的数据,则CLOCK是由FPGA控制的,START跟ENABLE信号是用来控制发送使能的。这是我的初始化配置(我是用8位宽度通信的,对于DSP来说,B是发送,A是接收):/ E" k% [$ O7 I% N% t
static void UPPInit(void)4 O: `" h2 C- X1 ]# [% h
{
6 p& {& `" Y. q) J J1 B+ C7 M" P unsigned int temp_reg = 0;# H( Y V& T5 Q3 l3 L" x
3 l4 g5 T8 ^1 b8 X
// Channel B params* `2 |9 j3 {; v) T: p! U
CSL_FINST(temp_reg, UPP_UPCTL_DPFB, LJZF); //Left-justified, zero filled, f; M6 p" ]! y. A
CSL_FINST(temp_reg, UPP_UPCTL_IWB, 8BIT); //8-bit interface8 S3 U- u! r9 u) l
CSL_FINST(temp_reg, UPP_UPCTL_DPWB, FULL); //Channel B bit width = 8 h0 h+ n. C. A0 [
CSL_FINST(temp_reg, UPP_UPCTL_DRB, SINGLE); //Single data rate
) `$ q* }. a( k4 U/ | l3 z+ f5 w) E! q3 I
// Channel A params- l0 [. @9 G1 Z( _* U( R
CSL_FINST(temp_reg, UPP_UPCTL_DPFA, LJZF); //Left-justified, zero filled% y) ]; T- |3 a7 N% P( W
CSL_FINST(temp_reg, UPP_UPCTL_IWA, 8BIT); //8-bit interface8 X& t7 r- ?! L
CSL_FINST(temp_reg, UPP_UPCTL_DPWA, FULL); //Channel A bit width = 8
9 R1 i0 a! P2 {2 G" B5 u7 F CSL_FINST(temp_reg, UPP_UPCTL_DRA, SINGLE); //Single data rate
0 G" [ C5 S, t- U; P( W5 ^) |, \" H& M) }, q* e9 R
CSL_FINST(temp_reg, UPP_UPCTL_CHN, TWO); //Channel A and Channel B are both active.2 ?, ^ j% K S4 {3 w: r% i$ ^8 g8 }
CSL_FINST(temp_reg, UPP_UPCTL_MODE, DUPLEX0); //Channel B transmit Channel A receive
3 a0 T9 J3 g1 |
# I1 @$ x4 {. q/ Y; ] upp_reg_hdl->UPCTL = temp_reg;
4 |) N5 W0 S% f; {
! K5 v& d/ i- }$ M" b9 l: ^ temp_reg = 0;
+ d% n" V( ~8 P; \0 _2 M- a, P6 q I6 @
// Channel A params/ o" N3 }, C* ^- ]$ [# p9 J/ H( a# @
//CSL_FINST(temp_reg, UPP_UPICR_TRISA, ENABLE); //Channel A data pins are in a high-impedance state while idle" n; `8 R) C0 w3 q6 Z! v( b
//CSL_FINS(temp_reg, UPP_UPICR_CLKDIVA, UPP_CLOCK_DIV); //Clock divisor4 x$ V4 w, A4 K+ y0 z
CSL_FINST(temp_reg, UPP_UPICR_STARTA, ENABLE); //Channel A START Signal Enable.& _8 }( T3 c4 x& G+ }
CSL_FINST(temp_reg, UPP_UPICR_ENAA, ENABLE); //Channel A ENABLE Signal Enable
" L' T; t/ U! V4 o# G& n$ P( o6 g
* A% @! O0 }, u // Channel B params/ ~ D# y) Y5 i4 P( X# L0 {$ p
CSL_FINS(temp_reg, UPP_UPICR_CLKDIVB, UPP_CLOCK_DIV);0 H9 Y( b. |! O* `
CSL_FINST(temp_reg, UPP_UPICR_STARTB, ENABLE); //Channel B START Signal Enable.
3 q9 G4 {: e( V% l, ~! T CSL_FINST(temp_reg, UPP_UPICR_ENAB, ENABLE); //Channel B ENABLE Signal Enable5 X1 _' x1 i0 [6 l" w& F) ~
& C, X/ G; b2 \. y6 W' \3 P2 _ upp_reg_hdl->UPICR = temp_reg;% z& o, q& U, @: j
" F" M' x! e* k3 o //temp_reg = 0;
$ i5 ]5 c) I; W1 Z
$ C& }& [1 i% L //CSL_FINS(temp_reg, UPP_UPIVR_VALB, 0x7b7b); //Channel B idle value
, |. p( g' g7 M; I# u" d //CSL_FINS(temp_reg, UPP_UPIVR_VALA, 0x7f7f); //Channel A idle value9 j6 w8 ^( k2 X0 F9 L: ~
" T9 m7 e0 V- J //upp_reg_hdl->UPIVR = temp_reg;
: i. j, H9 r' }# t! z
4 \8 X* j9 p, z //temp_reg = 0;
& t9 P2 D. k' j, t) p3 o7 [6 |6 S x/ F9 \
//CSL_FINST(temp_reg, UPP_UPTCR_RDSIZEI, 256B); //set 256B DMA I # d+ X. O3 Z2 ?8 d$ `; X
//upp_reg_hdl->UPTCR = temp_reg;" E, n/ q2 R8 \
3 A/ b! X* \1 x7 v4 D# x& c3 P- R8 r //temp_reg = 0;. U+ ^5 M E0 x! b
//CSL_FINST(temp_reg, UPP_UPDLB_BA, ENABLE); //B to A loopback mode enable0 ]& M$ d% K( _3 u, O# M
//upp_reg_hdl->UPDLB = temp_reg;+ C. y5 [6 z, t- g* H
6 g, d; Y5 ^; I' C; o' J
} |
|