|
zhuma 发表于 2015-9-11 09:54
' v6 K( S! c8 r4 U$ i, C6 W8 D3 tl楼主你好,我最近也在做FPGA与DSP之间的图像数据的传输,我想请教一下,请问这个CLOCK START ENABLE 配置 ...
4 p3 G/ C* P& K( d2 ]寄存器初始化那里就给出来了啊,如果DSP要发数据给FPGA, 那么CLOCK是由DSP去控制的,如果DSP要接收FPGA的数据,则CLOCK是由FPGA控制的,START跟ENABLE信号是用来控制发送使能的。这是我的初始化配置(我是用8位宽度通信的,对于DSP来说,B是发送,A是接收):
" Y1 \$ w- {7 Q4 Nstatic void UPPInit(void), I$ N4 ^6 E! Q5 G
{
, k2 F" W' H1 Z unsigned int temp_reg = 0;
7 z: h' l1 D0 H* w3 E4 h/ s- b0 G+ ]1 U' d' I7 {
// Channel B params9 c( {0 o5 D# y, k% [+ R8 g6 b O0 t+ a
CSL_FINST(temp_reg, UPP_UPCTL_DPFB, LJZF); //Left-justified, zero filled( E5 ^* w ^0 U2 O% n
CSL_FINST(temp_reg, UPP_UPCTL_IWB, 8BIT); //8-bit interface8 h' N [7 s3 B. X
CSL_FINST(temp_reg, UPP_UPCTL_DPWB, FULL); //Channel B bit width = 8
+ S: B% i1 v% O7 U# B9 y- l CSL_FINST(temp_reg, UPP_UPCTL_DRB, SINGLE); //Single data rate5 h) r# d" T' b4 b% R
4 t/ Q! T. C. I% a0 d9 C // Channel A params- q1 s$ b- X: S' L+ ]0 [8 Z
CSL_FINST(temp_reg, UPP_UPCTL_DPFA, LJZF); //Left-justified, zero filled
- u: U T+ Q/ r" G$ ` CSL_FINST(temp_reg, UPP_UPCTL_IWA, 8BIT); //8-bit interface& y9 F+ F3 d( |$ S
CSL_FINST(temp_reg, UPP_UPCTL_DPWA, FULL); //Channel A bit width = 8" ?: K# R; E& @$ k3 M1 Z
CSL_FINST(temp_reg, UPP_UPCTL_DRA, SINGLE); //Single data rate
; S/ |( U5 O2 n: X5 _6 R& z
" K6 W7 x4 I' Z! e: P CSL_FINST(temp_reg, UPP_UPCTL_CHN, TWO); //Channel A and Channel B are both active.: L4 z( {* G* p, g2 A
CSL_FINST(temp_reg, UPP_UPCTL_MODE, DUPLEX0); //Channel B transmit Channel A receive
3 B! e, V% p3 r' K; w4 j# A! l/ r9 F: H* h
upp_reg_hdl->UPCTL = temp_reg;
4 i1 _/ ^1 s# k4 ^5 S7 V* h5 ^. v. q7 }' N2 V! W8 d+ f6 V
temp_reg = 0; ( ^9 O5 c, K9 H$ G
c* ^, z# s5 J+ u F% [5 a // Channel A params4 E$ K3 S- Q4 S% j! t) ~! O
//CSL_FINST(temp_reg, UPP_UPICR_TRISA, ENABLE); //Channel A data pins are in a high-impedance state while idle
* Z" h$ {: _. m/ ?) | //CSL_FINS(temp_reg, UPP_UPICR_CLKDIVA, UPP_CLOCK_DIV); //Clock divisor k7 p2 {& K2 a. a
CSL_FINST(temp_reg, UPP_UPICR_STARTA, ENABLE); //Channel A START Signal Enable.* l G, l! d. k. n/ A x3 N
CSL_FINST(temp_reg, UPP_UPICR_ENAA, ENABLE); //Channel A ENABLE Signal Enable3 J" @( N/ y' V. _" q
+ ~4 c4 I0 s$ P2 Y6 H
// Channel B params1 d& t; H1 h0 _4 Z0 N1 Z
CSL_FINS(temp_reg, UPP_UPICR_CLKDIVB, UPP_CLOCK_DIV);
, i( u1 L5 F/ g CSL_FINST(temp_reg, UPP_UPICR_STARTB, ENABLE); //Channel B START Signal Enable.
) w/ I) r7 a/ h% z- N# W CSL_FINST(temp_reg, UPP_UPICR_ENAB, ENABLE); //Channel B ENABLE Signal Enable) C! ?+ z" c2 j u+ m+ \
- l% b4 w' ]0 R
upp_reg_hdl->UPICR = temp_reg;' s4 o* [9 j7 W3 R9 O0 ^
$ d8 u% f& a# V. \7 A
//temp_reg = 0;
2 R* Y5 G( P$ ^; X w
0 {* o. @: {# Q$ V W/ } //CSL_FINS(temp_reg, UPP_UPIVR_VALB, 0x7b7b); //Channel B idle value2 ^7 n) |6 ^4 |2 A
//CSL_FINS(temp_reg, UPP_UPIVR_VALA, 0x7f7f); //Channel A idle value
' ^* [* C) b7 m+ m$ {! c1 ?0 H
6 m0 {3 M* _: G# L6 @ p //upp_reg_hdl->UPIVR = temp_reg;
; T, P' m0 E+ ~! _3 ^7 x0 g# Z
//temp_reg = 0;
5 J4 J7 T& [7 @$ Q+ P0 T6 e K# _( \' \4 r( D! W1 T
//CSL_FINST(temp_reg, UPP_UPTCR_RDSIZEI, 256B); //set 256B DMA I 8 b, B6 D" ]* C, s
//upp_reg_hdl->UPTCR = temp_reg;! r( ]2 G7 K* w3 n
( b0 Q1 c2 {" X3 h* d6 l6 b# M
//temp_reg = 0;0 c2 v# A' [- A( z: N9 T4 t
//CSL_FINST(temp_reg, UPP_UPDLB_BA, ENABLE); //B to A loopback mode enable
; [; K* S( y, W //upp_reg_hdl->UPDLB = temp_reg;
. Z2 K6 i: D3 ] m' y$ u N6 W ) D% Y+ y7 h- s7 I
} |
|