码迷,mamicode.com
首页 > 其他好文 > 详细

USB小白学习之路(7) FPGA Communication with PC by CY7C68013,TD_init()解析

时间:2017-12-23 19:13:01      阅读:237      评论:0      收藏:0      [点我收藏+]

标签:模式   ide   class   ifconfig   pos   src   ini   0x03   信号   

void TD_Init(void)
{
  CPUCS = ((CPUCS & ~bmCLKSPD) | bmCLKSPD1);          //设置CPU时钟频率为48M,寄存器CPUCS的位如下所示。此语句就是将CPUCS的b4,b3位设为10,

                                                                                                       //同时不改变其他bit。

技术分享图片

图1 寄存器CPUCS的描述

  //USBCS = Ox80; //set high speed mode 添加此语句时工程编译不通过

  IFCONFIG = 0XCB;    //选择内部时钟频率为48M,FIFO/GPIF采用异步操作模式,SLAVE FIFO接口(外部主控制器)

                //IFCONFIG寄存器的描述如图2所示,0xCB = 1100_1011,可见:

              //内部时钟,48MHz,IFCLK时钟输出关闭,IFCLK信号不翻转,GPIF异步操作,关闭GPIF输出,slave FIFO接口

技术分享图片

图2 寄存器IFCONFIG的描述

  SYNCDELAY;               //里面是空语句,延时用

  //REVCTL = 0X03; //0x01 //版本号,控制版本号的,不重要,不用管
  //SYNCDELAY;

  FIFOPINPOLAR = 0X00;    //所有引脚为低电平有效,此寄存器控制Slave FIFO方式信号有效电平

  SYNCDELAY;        //FIFOPINPOLAR寄存器的描述如图3所示

技术分享图片

图3 寄存器FIFOPINPOLAR的描述  

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

 

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$


  FIFORESET = 0X80;  //对从主机发送的数据进行握手

  SYNCDELAY;     //FIFORESET寄存器的描述如图4所示。由图4中可以看出,这里写入0x80是为了保证复位正常

技术分享图片

图4 寄存器FIFORESET的描述

  FIFORESET = 0X02; //复位FIFO
  SYNCDELAY;

  FIFORESET = 0X04; //复位FIFO
  SYNCDELAY;

  FIFORESET = 0X06; //复位FIFO
  SYNCDELAY;

  FIFORESET = 0X08; //复位FIFO
  SYNCDELAY;

            //由图4可以看出,这四条语句分别复位端点:EP2,EP4,EP6,EP8

  FIFORESET = 0X00; //保存操作,这里也是由图4可以得到,写入0x00是为了使能相应请求。

  SYNCDELAY;

  EP6CFG =0xE0; //使能端点6,端点方向为输入,块传输方式,端点大小512字节,端点为4重缓冲
  SYNCDELAY;  //EP6CFG寄存器的描述如图5所示,0xE0 = 1110_0000;

技术分享图片

图5 寄存器EP6CFG的描述

  EP6FIFOCFG = 0X0C;            // AUTOIN=1 ZEROLEN=1 WORDIDE=0 设置端点6为手动输入,选择总线数据宽度为8位
  SYNCDELAY;        //EP6FIFOCFG 寄存器的描述如图6所示。

技术分享图片

图6 

  PINFLAGSAB = 0X00; //确定引脚FLAGA为EPX的PF标志,FLAGB为EPX的FF标志,FLAGC为EPX的EF标志///
  SYNCDELAY;
  PINFLAGSCD = 0X00; //确定引脚FLAGA为EPX的PF标志,FLAGB为EPX的FF标志,FLAGC为EPX的EF标志///
  SYNCDELAY;

PORTACFG = 0X40; //PORTACFG.6=1 设置IOPA7为CS引脚
SYNCDELAY;

EP6AUTOINLENH = 0X02; //端点6 AUTOIN包长度高字节
SYNCDELAY;
EP6AUTOINLENL = 0X00; //端点6 AUTOIN包长度高字节
SYNCDELAY;

EP6BCH = 0x02; //512byte///*
SYNCDELAY;
EP6BCL = 0x00; //512byte///*
SYNCDELAY;

EP6FIFOPFH = 0X80; //端点6/SLAVE FIFO 可编程成级标志的高位(高速方式和全速方式)//不懂///
SYNCDELAY;
EP6FIFOPFL = 0X00; //端点6/SLAVE FIFO 可编程成级标志的高位(高速方式和全速方式) //不懂///
SYNCDELAY;

OUTPKTEND =0X82; //启动OUT缓冲区
SYNCDELAY;
OUTPKTEND =0X82; //启动OUT缓冲区
SYNCDELAY;

//AUTOPTRSETUP |= 0x01; //使能自动指针

Rwuen = TRUE;

}

USB小白学习之路(7) FPGA Communication with PC by CY7C68013,TD_init()解析

标签:模式   ide   class   ifconfig   pos   src   ini   0x03   信号   

原文地址:http://www.cnblogs.com/kybyano/p/8093931.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!