|
楼主 |
发表于 2015-11-10 18:53:34
|
显示全部楼层
zhuma 发表于 2015-9-11 09:54( @8 R: H( I! J8 S$ ^9 C# N( Y: O
l楼主你好,我最近也在做FPGA与DSP之间的图像数据的传输,我想请教一下,请问这个CLOCK START ENABLE 配置 ...
; a5 p7 |6 E5 ~! C, R0 _" x寄存器初始化那里就给出来了啊,如果DSP要发数据给FPGA, 那么CLOCK是由DSP去控制的,如果DSP要接收FPGA的数据,则CLOCK是由FPGA控制的,START跟ENABLE信号是用来控制发送使能的。这是我的初始化配置(我是用8位宽度通信的,对于DSP来说,B是发送,A是接收):
# Q6 p* ^+ h8 }static void UPPInit(void)% c. [9 X: L- y5 S$ ~
{8 S: L1 w- _: l9 @
unsigned int temp_reg = 0;
; e! R+ S) E9 ]: N! J. j. V9 ^$ X7 H
// Channel B params
( l( h$ M. s3 R0 M& [% V e8 \ CSL_FINST(temp_reg, UPP_UPCTL_DPFB, LJZF); //Left-justified, zero filled
; G5 X' ~3 h; `7 U% f CSL_FINST(temp_reg, UPP_UPCTL_IWB, 8BIT); //8-bit interface
! J' A) \8 v1 ~! l2 C1 k CSL_FINST(temp_reg, UPP_UPCTL_DPWB, FULL); //Channel B bit width = 87 p5 u9 d: t: Q- j% o3 X, r
CSL_FINST(temp_reg, UPP_UPCTL_DRB, SINGLE); //Single data rate7 |8 ?/ O3 c% N2 y& T. f
6 d x5 D: Q) p$ e; b // Channel A params, L( G, t/ {1 r1 [
CSL_FINST(temp_reg, UPP_UPCTL_DPFA, LJZF); //Left-justified, zero filled- ~8 z4 A0 d+ l/ q7 P
CSL_FINST(temp_reg, UPP_UPCTL_IWA, 8BIT); //8-bit interface
: m' z2 G" w: `6 c CSL_FINST(temp_reg, UPP_UPCTL_DPWA, FULL); //Channel A bit width = 8
( T# ~9 T: n( @; t: r* N; ?& _) | CSL_FINST(temp_reg, UPP_UPCTL_DRA, SINGLE); //Single data rate
2 O! f Z/ b5 O: D! b
9 i5 F0 G' z/ V. S3 N# g" S CSL_FINST(temp_reg, UPP_UPCTL_CHN, TWO); //Channel A and Channel B are both active.
& P, H" P' l7 p5 ~, G CSL_FINST(temp_reg, UPP_UPCTL_MODE, DUPLEX0); //Channel B transmit Channel A receive: N4 Y- @& v; `' e
7 P3 \" S* d' j- `* ~; r9 v upp_reg_hdl->UPCTL = temp_reg; M* M2 A: ]3 P7 m
) f1 G+ V- T: _$ l
temp_reg = 0;
& A6 Y* K$ l( q/ P; c4 U$ W# u; W: l8 q! W
// Channel A params
/ h+ k; l% h( G# K; `0 s( t //CSL_FINST(temp_reg, UPP_UPICR_TRISA, ENABLE); //Channel A data pins are in a high-impedance state while idle. } s6 L6 r3 F( [
//CSL_FINS(temp_reg, UPP_UPICR_CLKDIVA, UPP_CLOCK_DIV); //Clock divisor
7 i* |+ e+ S; W4 i1 q2 x CSL_FINST(temp_reg, UPP_UPICR_STARTA, ENABLE); //Channel A START Signal Enable.
; A) ~$ s: ~$ C( W/ X CSL_FINST(temp_reg, UPP_UPICR_ENAA, ENABLE); //Channel A ENABLE Signal Enable7 Y( r5 Y+ Y. g
8 d9 s3 ^4 y- F: o4 v
// Channel B params8 |: ~% u8 N* K: n
CSL_FINS(temp_reg, UPP_UPICR_CLKDIVB, UPP_CLOCK_DIV);
. J6 g5 X+ s& \; S L( T CSL_FINST(temp_reg, UPP_UPICR_STARTB, ENABLE); //Channel B START Signal Enable.
7 U$ a7 ]' S$ g" V; u CSL_FINST(temp_reg, UPP_UPICR_ENAB, ENABLE); //Channel B ENABLE Signal Enable2 Z1 r; x( P( i; f: r. O9 c
. w% h* c6 `; @
upp_reg_hdl->UPICR = temp_reg;
$ U# ]% |" e$ k- b1 a
, Y& y; a( W+ F# S1 E //temp_reg = 0;, e" W. ^0 j0 T# U0 M
5 p1 r: D1 p. W5 k7 T2 p //CSL_FINS(temp_reg, UPP_UPIVR_VALB, 0x7b7b); //Channel B idle value
4 r/ R- p) `: A* p; M6 X/ g1 [ //CSL_FINS(temp_reg, UPP_UPIVR_VALA, 0x7f7f); //Channel A idle value: I2 D5 u$ U# {& U% |
$ h! l4 w9 b W1 E, u# T$ o //upp_reg_hdl->UPIVR = temp_reg;/ n% T- ]0 P7 }( H. v
5 n/ |. Z% y9 `8 Q& Q
//temp_reg = 0;
5 K$ s" _0 c* d0 n) m1 z/ a, g8 m8 g6 z& H' R: S) n
//CSL_FINST(temp_reg, UPP_UPTCR_RDSIZEI, 256B); //set 256B DMA I * H& B) c b# R# X3 P7 Q
//upp_reg_hdl->UPTCR = temp_reg;
5 r5 E& A) w1 M
4 C( X, s0 b) [1 H7 R( _ //temp_reg = 0; v$ r/ G. N3 A C) C0 r q @
//CSL_FINST(temp_reg, UPP_UPDLB_BA, ENABLE); //B to A loopback mode enable
, n( ?, x2 e! w. X8 x //upp_reg_hdl->UPDLB = temp_reg;
7 G, Y0 ~6 d3 F: P + f" Z8 s& V7 q8 g
} |
|