⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 notes for regs.txt

📁 这是一整套USB2.0试验程序
💻 TXT
字号:
//寄存器说明
  -----------IFCONFIG 配置-------------
    IFCONFIG用于对端口、GPIF、SlaveFIFO接口模式进行配置

	IFCONFIG.7 内外时钟选择(0外1内)
	IFCONFIG.6 内时钟选择(0-30、1-48MHz)
	IFCONFIG.5 IFCLK引脚输出使能(0三态,1使能)
	IFCONFIG.4 反转IFCLK信号
	IFCONFIG.3 SlaveFIFO同步方式选择(0同1异)
	IFCONFIG.2 用于将GSTATE[2:0]驱动到端口PE[2:0]上
	IFCONFIG.1 IFCFG1
	IFCONFIG.0 IFCFG0
	最后两位IFCFG1:0用于接口模式选择
	IFCFG1:0 = 00 接口为普通IO口
	IFCFG1:0 = 10 接口为GPIF
	IFCFG1:0 = 11 接口为SlaveFIFO

  -----------EPxCFG 配置------------- 
    EPxCFG用于对端点2、4、6、8进行配置

	EPxCFG.7 激活(0禁止1激活,所有端点默认激活)
	EPxCFG.6 端点方向(0输出、1输入)
	EPxCFG.5 TYPE1
	EPxCFG.4 TYPE0
	//TYPE1:0
	01 同步传输
	10 块传输
	11 中断传输
	EPxCFG.3 SIZE
	//SIZE 设置buffer大小
	SIZE = 0 buffer = 512byte
	SIZE = 1 buffer = 1024byte
	端点4和8只能是512,2和6可选
	EPxCFG.2 置0
	EPxCFG.1 BUF1
	EPxCFG.0 BUF0
	最后两位BUF1:0设置buffer类型
	BUF1:0 = 00 4重缓冲
	BUF1:0 = 01 保留,不使用
	BUF1:0 = 10 2重缓冲
	BUF1:0 = 11 3重缓冲
	其中4和8两个端点只能为2重缓冲

  -----------EPxFIFOCFG 配置-------------
    EPxFIFOCFG用于对端点2、4、6、8的SlaveFIFO进行配置
	 
	EPxFIFOCFG.7 0
	EPxFIFOCFG.6 INFM1
	EPxFIFOCFG.5 OEP1
	EPxFIFOCFG.4 AUTOOUT
	
	EPxFIFOCFG.3 AUTOIN
	EPxFIFOCFG.2 ZEROLENIN 使能0长度的IN包
	EPxFIFOCFG.1 0
	EPxFIFOCFG.0 WORDWIDE

	最后1位WORDWIDE设置数据总线长度
	0-8位,1-16位

	----端点2、4、6、8的AUTOIN包长度配置------------- 
	EP2AUTOINLENH、EP6AUTOINLENH 表示端点2和6的AUTOIN包长度的高字节

	EP2AUTOINLENH.7 0
	EP2AUTOINLENH.6 0
	EP2AUTOINLENH.5 0
	EP2AUTOINLENH.4 0	
	EP2AUTOINLENH.3 0
	EP2AUTOINLENH.2 PL10
	EP2AUTOINLENH.1 PL9
	EP2AUTOINLENH.0 PL8

	EP6AUTOINLENH.7 0
	EP6AUTOINLENH.6 0
	EP6AUTOINLENH.5 0
	EP6AUTOINLENH.4 0	
	EP6AUTOINLENH.3 0
	EP6AUTOINLENH.2 PL10
	EP6AUTOINLENH.1 PL9
	EP6AUTOINLENH.0 PL8
	其中PL10:PL8表示数据包长度高三位

	EP4AUTOINLENH、EP8AUTOINLENH 表示端点4和8的AUTOIN包长度的高字节
	EP4AUTOINLENH.7 0
	EP4AUTOINLENH.6 0
	EP4AUTOINLENH.5 0
	EP4AUTOINLENH.4 0	
	EP4AUTOINLENH.3 0
	EP4AUTOINLENH.2 0
	EP4AUTOINLENH.1 PL9
	EP4AUTOINLENH.0 PL8

	EP8AUTOINLENH.7 0
	EP8AUTOINLENH.6 0
	EP8AUTOINLENH.5 0
	EP8AUTOINLENH.4 0	
	EP8AUTOINLENH.3 0
	EP8AUTOINLENH.2 0
	EP8AUTOINLENH.1 PL9
	EP8AUTOINLENH.0 PL8
	其中PL9:PL8表示数据包长度高2位

	EPxAUTOINLENL表示了端点2、4、6、8包长度的低字节
	EPxAUTOINLENL.7 PL7
	EPxAUTOINLENL.6 PL6
	EPxAUTOINLENL.5 PL5
	EPxAUTOINLENL.4 PL4	
	EPxAUTOINLENL.3 PL3
	EPxAUTOINLENL.2 PL2
	EPxAUTOINLENL.1 PL1
	EPxAUTOINLENL.0 PL0

	-----------端点的ISO IN包------------- 
	EPxISOINPKTS为端点2、4、6、8的ISO IN数据包定义

	EPxISOINPKTS.7 AADJ
	EPxISOINPKTS.6 0
	EPxISOINPKTS.5 0
	EPxISOINPKTS.4 0	
	EPxISOINPKTS.3 0
	EPxISOINPKTS.2 0
	EPxISOINPKTS.1 INPPF1
	EPxISOINPKTS.0 INPPF0
	其中INPPF1:0表示ISO IN端点每帧发送的包数,可为1、2、3。

	-----------IN数据包强制结束------------- 
	INPKTEND用于强制IN数据包结束,

	INPKTEND.7 SKIP
	INPKTEND.6 0
	INPKTEND.5 0
	INPKTEND.4 0	
	INPKTEND.3 EP3
	INPKTEND.2 EP2
	INPKTEND.1 EP1
	INPKTEND.0 EP0
	SKIP:当ENH_PKT(REVCTL.0)设置为1的时候,置SKIP=1将忽略IN数据包
	EP3:0:将对应的端点号置1,可以自动打包IN数据包,强制传输

	-----------OUT数据包强制结束------------- 
	OUTPKTEND用于强制OUT数据包结束,

	OUTPKTEND.7 SKIP
	OUTPKTEND.6 0
	OUTPKTEND.5 0
	OUTPKTEND.4 0	
	OUTPKTEND.3 EP3
	OUTPKTEND.2 EP2
	OUTPKTEND.1 EP1
	OUTPKTEND.0 EP0
	SKIP:当ENH_PKT(REVCTL.0)设置为1的时候,置SKIP=1将忽略OUT数据包
	EP3:0:将对应的端点号置1,可以自动打包OUT数据包,强制传输

	-----------PINFLAGSAB、PINFLAGSCD 配置-------------
	PINFLAGSAB、PINFLAGSCD用于配置Slave FIFO模式下FLAGA、FLAGB、FLAGC、FLAGD引脚
	 
	PINFLAGSAB.7 FLAGB3
	PINFLAGSAB.6 FLAGB2
	PINFLAGSAB.5 FLAGB1
	PINFLAGSAB.4 FLAGB0
	
	PINFLAGSAB.3 FLAGA3
	PINFLAGSAB.2 FLAGA2
	PINFLAGSAB.1 FLAGA1
	PINFLAGSAB.0 FLAGA0

	PINFLAGSCD.7 FLAGD3
	PINFLAGSCD.6 FLAGD2
	PINFLAGSCD.5 FLAGD1
	PINFLAGSCD.4 FLAGD0
	
	PINFLAGSCD.3 FLAGC3
	PINFLAGSCD.2 FLAGC2
	PINFLAGSCD.1 FLAGC1
	PINFLAGSCD.0 FLAGC0
	
	FLAGxn的值对应功能
	FLAGx3:FLAGx2:FLAGx1:FLAGx0 === 功能
	0000==========FLAGA=PF,FLAGB=FF,FLAGC=EF,FLAG=EP2PF
	0001~0011====保留
	0100==========EP2PF
	0101==========EP4PF
	0110==========EP6PF
	0111==========EP8PF
	1000==========EP2EF
	1001==========EP4EF
	1010==========EP6EF
	1011==========EP8EF
	1100==========EP2FF
	1101==========EP4FF
	1110==========EP6FF
	1111==========EP8FF
	注意,默认配置值为0000,此时FIFO的选择通过FIFOADR1和FIFOADR0引脚来进行
	FIFOADR1:FIFOADR0值===FIFO
	00============EP2
	01============EP4
	10============EP6
	11============EP8
	-----------FIFORESET配置------------- 
	FIFORESET = 0x80;//对从主机发送的数据传输进行握手
	//复位各个独立的FIFO
	SYNCDELAY;
	FIFORESET = 0x02;//
	SYNCDELAY;
	FIFORESET = 0x04;//
	SYNCDELAY;
	FIFORESET = 0x06;//
	SYNCDELAY;
	FIFORESET = 0x08;//
	SYNCDELAY;
	FIFORESET = 0x00;//保存操作
	-----------FIFOPINPOLAR配置------------- 
	用于设置SlaveFIFO接口引脚的极性

	FIFOPINPOLAR.7 0
	FIFOPINPOLAR.6 0
	FIFOPINPOLAR.5 PKTEND
	FIFOPINPOLAR.4 SLOE
	
	FIFOPINPOLAR.3 SLRD
	FIFOPINPOLAR.2 SLWR
	FIFOPINPOLAR.1 EF
	FIFOPINPOLAR.0 FF

	PKTEND:用于设置PKTEND的FIFO输入引脚极性。0==PKTEND引脚低电平有效,1==PKTEND引脚高电平有效
	SLOE:用于设置SLOE的FIFO输入引脚极性。0==SLOE引脚低电平有效,1==SLOE引脚高电平有效
	SLRD:用于设置SLRD的FIFO输入引脚极性。0==SLRD引脚低电平有效,1==SLRD引脚高电平有效
	SLWR:用于设置SLWR的FIFO输入引脚极性。0==SLWR引脚低电平有效,1==SLWR引脚高电平有效
	EF:用于设置SLRD的FIFO输出引脚极性。0==SLRD引脚低电平有效,1==SLRD引脚高电平有效
	FF:用于设置SLWR的FIFO输出引脚极性。0==SLWR引脚低电平有效,1==SLWR引脚高电平有效

	-----------REVCTL配置------------- 
	用于控制芯片的版本

	REVCTL.7 0
	REVCTL.6 0
	REVCTL.5 0
	REVCTL.4 0
	
	REVCTL.3 0
	REVCTL.2 0
	REVCTL.1 DYN_OUT
	REVCTL.0 ENH_PKT
	硬件复位后,DYN_OUT、ENH_PKT均为0。

	-----------AUTOPTRSETUP配置------------- 
	用于设置自动指针1和2。

	AUTOPTRSETUP.7 0
	AUTOPTRSETUP.6 0
	AUTOPTRSETUP.5 0
	AUTOPTRSETUP.4 0
	
	AUTOPTRSETUP.3 0
	AUTOPTRSETUP.2 APTR2INC	 //自动指针2激活
	AUTOPTRSETUP.1 APTR1INC	 //自动指针1激活
	AUTOPTRSETUP.0 APTREN	 //使能自动指针

	-----------端点操作寄存器-------------
	端点操作寄存器用于51对各个端点进行控制,在FIFO模式下应该没用。 
	EPxBCH、EPxBCL为各端点的字节计数器

	-----------端点缓冲寄存器------------- 
	端点缓冲寄存器是各个端点缓冲区的标志,在FIFO模式下应该没用。

	-----------CPU控制和状态寄存器------------- 
	CPUCS为EZ-USB的CPU的控制与状态寄存器。

	CPUCS.7 0
	CPUCS.6 0
	CPUCS.5 PORTCSTB //跟PC端口和外部存储器读写有关
	CPUCS.4 CLKSPD1
	
	CPUCS.3 CLKSPD0
	CPUCS.2 CLKINV   //CLKOUT输出的时钟信号是否反转(0否1反)	
	CPUCS.1 CLKOE	 //CLKOUT输出使能(0输出有效,1悬空)
	CPUCS.0 0
	CLKSPD1:0用于CPU时钟速率选择
	00=====12MHz(上电缺省状态)
	01=====24MHz
	10=====48MHz
	-----------PORTACFG配置------------- 
	用于端口A的替换配置(第二功能配置)

	PORTACFG.7 FLAGD
	PORTACFG.6 SLCS
	PORTACFG.5 0
	PORTACFG.4 0
	
	PORTACFG.3 0
	PORTACFG.2 0
	PORTACFG.1 INT1
	PORTACFG.0 INT0

	FLAGD:在IFCFG1:0=11时,如果FLAGD=1,则配置引脚PA7为FLAGD,这是一个可编程的FIFO标志。
	SLCS:在IFCFG1:0=11时,如果SLCS=1,则配置引脚PA7为SLCS(低电平有效),这是FIFO的片选信号。
	INT1:0:置1则PA端口相应引脚作为INT1或INT0输入引脚。
	------------------------------------

初始化例子一:
void TD_Init(void) // Called once at startup 
{ 
BREAKPT &= ~bmBPEN; // to see BKPT LED go out TGE 
Rwuen = TRUE; // Enable remote-wakeup 

// OED=0xFF;//端口D为输出状态,由于FD为16位,D15:8为D口,D7:0为B口 
OEC=0xFF;//输出状态 
SYNCDELAY; 
OEE=0x00;//输入状态 
// set the CPU clock to 48MHz 
//CPUCS = ((CPUCS & ~bmCLKSPD) | bmCLKSPD1) ; 
CPUCS =0x10; //48MZ,极性不反转,CLKOUT悬浮 
SYNCDELAY; 
// set the slave FIFO interface to 48MHz 
//IFCONFIG |= 0x40;//内部时钟 
IFCONFIG = 0xDB;//D7=1内部时钟,D6=1 48M,D5=0 三态,D4=1时钟极性反,D3=1,FIFO异步方式 
SYNCDELAY; //D2=0,PE为普通管脚,D1D1=11,FIFO方式 
REVCTL=0x03; //D1=1 不允许AUTOOUT从0到1翻转,D0=1允许CPU发数据包 
SYNCDELAY; 

EP2CFG = 0xEB;//0xA2;//1110 0010 D7=1激活端点,D6=0 OUT,D6=1 IN,D5:D4=10块传输,D3=0 512BIT, 
SYNCDELAY; //D3=1 1024BIT,D1:D0=10 2重缓冲 IN 
EP4CFG = 0x00;//0xA0;//1110 0000只512BIT,IN 
SYNCDELAY; 
EP6CFG = 0x00;//1110 0010 512BIT,2缓冲,IN 
SYNCDELAY; 
EP8CFG = 0x00;//1110 0000 只512BIT IN 
SYNCDELAY; 

PINFLAGSAB=0x00; //状态标志清零 ,空满标志 
SYNCDELAY; 
PINFLAGSCD=0x00; //状态标志清零 ,空满标志 
SYNCDELAY; 
PORTACFG=0x43; //D7=1,IFCFG1:0=11适保琍A7引脚为FLAGD,可编程FIFO标志,D6=0,PA7脚不为SLCS 
SYNCDELAY; // D1D0=11,PA1,PA0 为INT1,INT0 
FIFOPINPOLAR=0x00; 
SYNCDELAY; 

EP2AUTOINLENH=0x4;//FIFO达到512字节时自动发送 
SYNCDELAY; 
EP2AUTOINLENL=0x00; 
SYNCDELAY; 
// 置FIFO 
EP2FIFOCFG=0x05; 
SYNCDELAY; //0000 1101 配置自动打包,可以发送0长度,D0=1,16位FIFO,自动模式 
SYNCDELAY; 
INPKTEND=0x82;//清除FIFO中的未发字节,双缓冲 
SYNCDELAY; 
INPKTEND=0x82; SYNCDELAY; 
INPKTEND=0x82; SYNCDELAY; 

FIFORESET = 0x80; // activate NAK-ALL to avoid race conditions 
SYNCDELAY; // 
FIFORESET = 0x02; // reset, FIFO 2 
SYNCDELAY; // 
FIFORESET = 0x04; // reset, FIFO 4 
SYNCDELAY; // 
FIFORESET = 0x06; // reset, FIFO 6 
SYNCDELAY; // 
FIFORESET = 0x08; // reset, FIFO 8 
SYNCDELAY; // 
FIFORESET = 0x00; 
j=-1; 
//AUTOPTRSETUP |= 0x01;//使能自动激活 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -