68013 - slave fifo寄存器

更新时间:2023-11-01 01:23:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

CY7C68013A Slave FIFO 相关的寄存器说明

Slave FIFO 固件需要设置的相关寄存器 IFCONFIG PINFLAGSAB PINFLAGSCD FIFORESET EPxCFG EPxFIFOCFG EPxBCH:L REVCTL (bits 0 and 1 must be initialized to 1 for operation as described in this chapter) 一. CPUCS(E600)CPUbit b7 b6 b5 EPxFIFOPFH/L PORTACFG INPKTEND FIFOPINPOLAR EPxFIFOBCH:L EPxAUTOINLENH:L 控制和状态寄存器 b4 b3 b2 b1 b0 name 0 0 PORTCSTB CLKSPD1 CLKSPD0 CLKINV CLKOE 8051RES r/w r r rw 0 rw 0 rw 0 rw 0 rw 1 r 0 default 0 0 PORTCSTB:128脚或100脚的RD,WR输出使能; CLKSPD[1:0]:8051CPU频率选择, CLKSPD[1:0] CPU频率 00 01 10 11 12MHz 24MHz 48MHz Reserved CLKINV:CLKOUT反相; CLKOE: CLKOUT输出使能; 8051RES: 位为1来复位EZ-USB的8051 CPU。 二. REVCTL(E60B) 芯片修订版本控制 bit name r/w default b7 0 r 0 b6 0 r 0 b5 0 r 0 b4 0 r 0 b3 0 r 0 b2 0 r 0 b1 b0 DYN_OUT ENH_PKT rw 0 rw 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 In packets ENH_PKT=1时,CPU可对OUT数据包和IN数据包的操作 ENH_PKT=1 Skip Commit Edit/Source Out packets In packets 1 1 1 1 1 1 1 0 1 1 0 1 ENH_PKT=1时, EPxBCH和 EPxBCL=0x80不能用于清空OUT端点缓冲区,只能用OUTPKTEND寄存器清空 OUT端点缓冲区。 三. IFCONFIG(E601):接口配置寄存器 bit name r/w default b7 IFCLKSCR rw 1 b6 z rw 1 b5 rw 0 b4 L rw 0 b3 ASYNC rw 0 b2 GSTATE rw 0 b1 IFCFG1 rw 0 b0 IFCFG0 rw 0 30/40MHIFCLKOEIFCLKPOIFCLKSRC: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 0 0 1 1 0 1 0 1 Configuration I/O Port Reserved GPIF Slave FIFO 四. EPxCFG(E612:E615):端点EP2,EP4,EP6,EP8配置 1.EP2CFG(E612),端点EP2配置 bit b7 b6 b5 b4 b3 SIZE rw 0 b2 0 r 0 b1 BUF1 rw 1 b0 BUF0 rw 0 name VALID DIR r/w default rw 1 rw 0 TYPE1 TYPE0 rw 1 rw 0 2.EP4CFG(E613),端点EP4配置 bit b7 b6 b5 b4 b3 0 r 0 b2 0 r 0 b1 0 r 0 b0 0 r 0 name VALID DIR r/w default rw 1 rw 0 TYPE1 TYPE0 rw 1 rw 0 3.EP6CFG(E614),端点EP6配置 bit b7 b6 b5 b4 b3 SIZE rw 0 b2 0 r 0 b1 BUF1 rw 1 b0 BUF0 rw 0 name VALID DIR r/w default rw 1 rw 1 TYPE1 TYPE0 rw 1 rw 0 4.EP8CFG(E615),端点EP8配置 bit b7 b6 b5 b4 b3 0 r 0 b2 0 r 0 b1 0 r 0 b0 0 r 0 name VALID DIR r/w default rw 1 rw 1 TYPE1 TYPE0 rw 1 rw 0 VALID:0端点无效,1端点有效; DIR:端点方向,0=OUT方向,1=IN方向,默认端点2,4为IN,端点6,8为OUT TYPE1,TYPE0:端点类型 TYPE1 TYPE0 Endpoint type 0 0 1 0 1 0 Invalid ISOCHRONOUS BULK(default) 1 1 INTERRUPT SIZE:缓冲区大小(仅端点2和端点),0=512字节,1=1024字节 BUF1,BUF0:端点缓冲区个数(仅端点2和端点6) BUF1 BUF0 0 0 1 1 0 1 0 1 Buffering Quad Invalid Double Triple 五.OUTPKTEND(E649):强制OUT数据包结束(当ENH_PKT(REVCTL.0)=1时该寄存器有效)

bit name r/w default b7 skip w x b6 0 w x b5 0 w x b4 0 w x b3 EP3 w x b2 EP2 w x b1 EP1 w x b0 EP0 w 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 name r/w default b7 skip w x b6 0 w x b5 0 w x b4 0 w x b3 EP3 w x b2 EP2 w x b1 EP1 w x b0 EP0 w 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 name r/w default b7 0 r 0 b6 b5 b4 b3 b2 b1 0 r 0 b0 WORDWIDE rw 1 INFM1 OEP1 AUTOOUT AUTOIN ZEROLENIN rw 0 rw 0 rw 0 rw 0 rw 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非使能。

本文来源:https://www.bwwdw.com/article/3df2.html

Top