CY7C68013A Slave FIFO 相关的寄存器说明

Slave FIFO 固件需要设置的相关寄存器

IFCONFIG

EPxFIFOPFH/L

PINFLAGSAB

PORTACFG

PINFLAGSCD

INPKTEND

FIFORESET

FIFOPINPOLAR

EPxCFG

EPxFIFOBCH:L

EPxFIFOCFG

EPxAUTOINLENH:L

EPxBCH:L


REVCTL (bits 0 and 1 must be initialized to 1 for operation as described in this chapter)


一. CPUCS(E600)CPU控制和状态寄存器

bit

b7

b6

b5

b4

b3

b2

b1

b0

name

0

0

PORTCSTB 

CLKSPD1

CLKSPD0

CLKINV

CLKOE

8051RES

r/w

r

r

rw

rw

rw

rw

rw

r

default

0

0

0

0

0

0

1

0

PORTCSTB:128脚或100脚的RD,WR输出使能;

CLKSPD[1:0]:8051CPU频率选择,

CLKSPD[1:0]

00

01

10

11

CPU频率

12MHz

24MHz

48MHz

Reserved

CLKINV:CLKOUT反相;

CLKOE: CLKOUT输出使能;

8051RES:  位为1来复位EZ-USB的8051 CPU。

二. REVCTL(E60B) 芯片修订版本控制

bit

b7

b6

b5

b4

b3

b2

   b1   

b0

name

0

0

0

0

0

DYN_OUT

ENH_PKT

r/w

r

r

r

r

r

r

rw

rw

default

0

0

0

0

0

0

0

0

Cypress推荐设置DYN_OUT=1和ENH_PKT=1,

DYN_OUT=1和ENH_PKT=1时,the FIFO cannot accept the OUT data;

DYN_OUT=0和ENH_PKT=0时,the FIFO cannot be reset well sometimes。

1. DYN_OUT:Disable Auto-Arming EPx at the 0-1 transition of AUTOOUT

DYN_OUT=0,the core automatically arms the endpoints when AUTOOUT is switched from 0 to 1

DYN_OUT=1,the core disables auto-arming of the endpoints when AUTOOUT transitions from 0 to 1. This feature allows CPU intervention when switching between AUTO and Manual mode without having to reset the endpoint.

2. ENH_PKT: CPU处理数据包的能力

ENH_PKT=0时,CPU可对OUT数据包和IN数据包的操作

ENH_PKT=0

Skip

Commit

Edit/Source

Out packets

1

1

0

In packets

0

1

1


ENH_PKT=1时,CPU可对OUT数据包和IN数据包的操作

ENH_PKT=1

Skip

Commit

Edit/Source

Out packets

1

1

1

In packets

1

1

1

ENH_PKT=1时, EPxBCH和 EPxBCL=0x80不能用于清空OUT端点缓冲区,只能用OUTPKTEND寄存器清空 OUT端点缓冲区。

三. IFCONFIG(E601):接口配置寄存器

bit

b7

b6

b5

b4

b3

b2

b1

b0

name

IFCLKSCR

30/40MHz

IFCLKOE 

IFCLKPOL

ASYNC

GSTATE

IFCFG1

IFCFG0

r/w

rw

rw

rw

rw

rw

rw

rw

rw

default

1

1

0

0

0

0

0

0

IFCLKSRC:FIFO时钟内部/外部时钟源选择,0--外部时钟源,1--内部时钟源。

30/48MHZ:当IFCLKSRC=1时,选择30MHz/48MHz内部时钟频率,0--IFCLK 30MHz,1--IFCLK 48MHz。

IFCLKOE:当IFCLKSRC=1时,IFCLK时钟输出使能,0--关闭,1--打开。

IFCLKPOL:IFCLK输出反转使能,0--正常,1--反转。

ASYNC:Slave FIFO同步/异步工作方式选择,0同步,1异步。

GSTATE:选择是否将GSTATE[2:0]在PORTE[2:0]输出,0关闭,1使能。

IFCFG1:0:FX2 I/O端口模式选择,也既是上面所说的FX2与外部逻辑传输方式的选择。

IFCFG1

IFCFG0

Configuration

0

0

I/O Port

0

1

Reserved

1

0

GPIF

1

1

Slave FIFO

四. EPxCFG(E612:E615):端点EP2,EP4,EP6,EP8配置

1.EP2CFG(E612),端点EP2配置

bit

b7

b6

b5

b4

b3

b2

b1

b0

name

VALID

DIR

TYPE1

TYPE0

SIZE

0

BUF1

BUF0

r/w

rw

rw

rw

rw

rw

r

rw

rw

default

1

0

1

0

0

0

1

0

2.EP4CFG(E613),端点EP4配置

bit

b7

b6

b5

b4

b3

b2

b1

b0

name

VALID

DIR

TYPE1

TYPE0

0

0

0

0

r/w

rw

rw

rw

rw

r

r

r

r

default

1

0

1

0

0

0

0

0

3.EP6CFG(E614),端点EP6配置

bit

b7

b6

b5

b4

b3

b2

b1

b0

name

VALID

DIR

TYPE1

TYPE0

SIZE

0

BUF1

BUF0

r/w

rw

rw

rw

rw

rw

r

rw

rw

default

1

1

1

0

0

0

1

0

4.EP8CFG(E615),端点EP8配置

bit

b7

b6

b5

b4

b3

b2

b1

b0

name

VALID

DIR

TYPE1

TYPE0

0

0

0

0

r/w

rw

rw

rw

rw

r

r

r

r

default

1

1

1

0

0

0

0

0

VALID:0端点无效,1端点有效;

DIR:端点方向,0=OUT方向,1=IN方向,默认端点2,4为IN,端点6,8为OUT

TYPE1,TYPE0:端点类型


TYPE1

TYPE0

Endpoint type

0

0

Invalid

0

1

ISOCHRONOUS

1

0

BULK(default)

1

1

INTERRUPT

SIZE:缓冲区大小(仅端点2和端点),0=512字节,1=1024字节

BUF1,BUF0:端点缓冲区个数(仅端点2和端点6)

BUF1

BUF0

Buffering

0

0

Quad

0

1

Invalid

1

0

Double

1

1

       Triple


五.OUTPKTEND(E649):强制OUT数据包结束(当ENH_PKT(REVCTL.0)=1时该寄存器有效)

bit

b7

b6

b5

b4

b3

b2

b1

b0

name

skip

0

0

EP3

EP2

EP1

EP0

r/w

w

w

w

w

w

w

w

w

default

x

x

x

x

x

x

x

x

skip: skip=1表示将跳过一个OUT数据包(当ENH_PKT(REVCTL.0)=1时);

  skip=0  automatically ‘dispatches’ an OUT buffer。 

EP[3:0]表示端点序号,EP[3:0]=8、6、4、2对应端点EP8,EP6,EP4,EP2。

取代EPxBCL.7(skip)=1(PKTEND)引脚功能,软件强行结束OUT端点(EP8,EP6,EP4,EP2)数据传输,。

六. INPKTEND(E648):强制IN数据包结束,然后 “arming” the IN transfer。

bit

b7

b6

b5

b4

b3

b2

b1

b0

name

skip

0

0

EP3

EP2

EP1

EP0

r/w

w

w

w

w

w

w

w

w

default

x

x

x

x

x

x

x

x

skip: skip=1 表示将跳过一个IN数据包(当ENH_PKT(REVCTL.0)=1时);

skip=0  automatically ‘dispatches’ an IN buffer。 

替代EPxBCL.7=1(PKTEND)引脚功能(当ENH_PKT(REVCTL.0)=1时,EPxBCL寄存器无效),软件强行结束IN端点(EP8,EP6,EP4,EP2)数据传输,

EP[3:0]表示端点序号,EP[3:0]=8、6、4、2对应端点EP8,EP6,EP4,EP2。

By writing the desired endpoint number (2, 4, 6 or 8), FX2 logic automatically ‘dispatches’ an

IN buffer, for example, it commits the packet to the USB logic, and writes the accumulated

byte count to the endpoint’s byte count register, thus “arming” the IN transfer

七. EPxFIFOCFG(E618:E61B):端点FIFO配置寄存器

bit

b7

b6

b5

b4

b3

b2

b1

b0

name

0

INFM1

OEP1

AUTOOUT

AUTOIN

ZEROLENIN

0

WORDWIDE

r/w

r

rw

rw

rw

rw

rw

r

rw

default

0

0

0

0

0

1

0

1

INFM1:FIFO状态标志是否提前一个字节有效选择,IN端点缓冲区满-1,1使能,0非使能。

OEP1:FIFO状态标志是否提前一个字节有效选择,OUT端点缓冲区空+1,1使能,0非使能。

AUTOOUT: Slave FIFO方式下的数据传输过程, FX2固件的一般不参与,也可以参与。

AUTOOUT=1, FX2固件只需要完成初始化工作,真正的数据传输是不需要FX2固件的参与,具体的说,当FX2从主机收到一包数据时,外部逻辑即可看到FIFO端点缓冲区状态的改变,然后从中取数;

AUTOOUT=0,则数据传输过程就需要FX2参与了,此时当FX2从主机收到一包数据时,FIFO端点缓冲区状态的改变并不会立刻在端口显现,而是固件先看到FIFO端点状态的改变,此时,FX2固件可以传输、丢弃或修改包数据。

a.向OUTPKTEND中的SKIP位写0,使FIFO端点状态的改变在端口显现,从而使外部逻辑可以从FIFO端点中读取数据;

b.向OUTPKTEND中的SKIP位写1,丢掉这包数据,这样就相当于主机从来就没有发送这一包数据,外部逻辑当然也不能从FIFO端点中读到这一包数据了;

c.从新编辑这一包数据,设置完全重写整个包的数据,再写EPxBC寄存器的SKIP=0,把数据传给外部逻辑。

在FX2复位之后,如果其OUT端点缓冲区内有一包数据未处理,这包数据并不会自动传给外部逻辑。所以,为保证OUT端点缓冲区内没有未处理数据,在reset FX2后,要清空一下OUT端点缓冲区,具体做法就是向SKIP位写1(OUT端点缓冲区有几个缓冲区就写几次)。

AUTOIN:AUTO IN和AUTOOUT有一点不同,在AUTOOUT里,包的大小只能是512或1024,而在Auto IN里,包的大小可以任意设定,甚至可以是0字节,这可以通过EPxAUTOINLENTH/L设置。

类似于AUTOOUT,当设置AUTOIN= 0时,FX2固件可以传输、丢弃或修改外部逻辑传过来的数据,这通过向INPTKEND寄存器的SKIP写不同的值实现。

ZEROLENIN:是否允许传输0字节,1使能,0非使能。

WORDWIDE:8位、16位数据传输。WORDWIDE=0--8位数据传输,Port B将是FD[7:0];WORDWIDE=1--16位数据传输,Port B将是FD[7:0],Port D将是FD[15:8]。

八. FIFOPINPOLAR(E609):控制引脚极性设置寄存器

bit

b7

b6

b5

b4

b3

b2

b1

b0

name

0

0

PTKEND

SLOE

SLRD

SLWR

EF

FF

r/w

r

r

rw

rw

rw

rw

rw

rw

default

0

0

0

0

0

0

0

0

Slave FIFO引脚极性设置:0低有效,1高有效。

提示:PF极性没有提供寄存器设置,为高有效。

九. FIFORESET(E604): 端点复位寄存器(复位后要re-arming OUT EP、IN EP)

bit

b7

b6

b5

b4

b3

b2

b1

b0

name

NAKALL

0

0

0

EP3

EP2

EP1

EP0

r/w

w

w

w

w

w

w

w

w

default

x

x

x

x

x

x

x

x

将FIFO复位到默认状态(即FIFO flags、byte counts)。具体过程是,写0x80到此寄存器,NAK所有主机请求;写0x02,0x04,0x06,0x08分别复位各个端点;写0x00,结束复位过程。

一般,在每一次开始进行slave FIFO或GPIF传输之前,先复位端点,再清空端点,然后即可进行数据传输。。

NAKALL-0关闭NAK功能,1用NAK响应主控器请求,例如在复位端点FIFO时,为了保证复位正常,防止主控器请求的干扰,先写入0x80,然后复位端点,最后写入0x00,使能请求响应。

EP[3:0]表示端点序号,EP[3:0]=8、6、4、2对应端点EP8,EP6,EP4,EP2。

You also need to ensure after performing a FIFORESET that you are re-arming the OUT endpoints.  For OUT endpoints, you need to arm the buffers to let the SIE take control of them, and accept data from the host.

十. PINFLAGSAB/CD(E602:E603):FLAGx(FLAGA、FLAGB、FLAGC、FLAGD)引脚配置寄存器

 PINFLAGSAB寄存器,Slave FIFO FLAGA和FLAGB引脚配置

bit

b7

b6

b5

b4

b3

b2

b1

b0

name

FLAGB3

FLAGB2

FLAGB1

FLAGB0

FLAGA3

FLAGA2

FLAGA1

FLAGA0

r/w

rw

rw

rw

rw

rw

rw

rw

rw

default

0

0

0

0

0

0

0

0

PINFLAGSCD寄存器,Slave FIFO FLAGC和FLAGD引脚配置

bit

b7

b6

b5

b4

b3

b2

b1

b0

name

FLAGD3

FLAGD2

FLAGD1

FLAGD0

FLAGC3

FLAGC2

FLAGC1

FLAGC0

r/w

rw

rw

rw

rw

rw

rw

rw

rw

default

0

1

0

0

0

0

0

0


FLAGA,FLAGB,FLAGC,FLAGD反映FIFO状态选择。每个脚有索引/固定两种模式:如设为编址模式,则它们都反映FIFOADR[1:0]脚当前所指端点的状态,其中,FLAGA反映“可编程极限”,FLAGB反映“满”标志,FLAGC反映“空”标志,FLAGD不存在;如设为固定模式,它们均可任意设置成反映任意端点的任意标志,而不受限于FIFOADR[1:0]脚当前所指端点的状态。

Slave fifo模式中,用引脚FLAGA~FLAGD来定义用端点FIFO的状态,并可灵活编程来实现FLAGx设置。

FLAGx3

FLAGx2

FLAGx1

FLAGx0

Pin Function

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值