原创 Cy7c68013 的win7 驱动和SlaveFifo例程

2014-2-16 22:12 6859 25 33 分类: FPGA/CPLD

之前用的是xp环境,用的红色飓风开发板,现在自己做的板子,改成了win7系统,可是原来的eZ-USB控制面板不能用了,搜了一下cypress的官方驱动,Cypress Suite USB 3.4.7,可以支持XP和win7系统。连上后,按照driver文件夹下面的CyUSB.pdf文件,修改Cypress Suite USB 3.4.7\Driver\bin\wlh\x64下面的cyusb.inf文件,用记事本打开,将里面VID_XXXX&PID_XXXX改成VID_04B4&PID_8613(在设备管理器中可以查看属性,看到这两个16进制数),注意别忘了把这几行前面的注释号“;”去掉,否则认为这一行被注释了哦。下面的文件是我的CY7C68013的inf文件。这样系统就可以识别到USB设备了。但是原来的例程SlaveFIFO不能用了,下载.hex文件之后,识别到SlaveFIFO设备,不能装驱动。

由于对这个USB芯片的固件不熟,研究固件编写短期内搞不定。于是在Cypress 官方网站上找到了例程AN63787,是关于8bit模式下的slavefifo例程,但是我的FPGA配置的是16位模式,明显看到例程中少了一半字节的数据。下面只能自己改例程了。

首先下载**版的keil uVision2,http://ishare.iask.sina.com.cn/f/12062296.html?from=like

更改C:\Cypress\Cypress Suite USB 3.4.7\Firmware\Bulkloop下面的keil工程,用原来红色飓风自带的固件源代码配置进行更改,将 bulkloop.c中TD_Init函数用红色飓风如下TD_Init函数替换,

void TD_Init( void )
{ // Called once at startup

    //时钟设置
 //CPUCS = 0x02;  //12MHZ CLKOUT ENALBE  
    //CPUCS = 0x0a;  //24MHZ CLKOUT ENALBE
    CPUCS = 0x12;  //48MHZ CLKOUT ENALBE
 
 IFCONFIG =0x43;//使用外部时钟,IFCLK输入不反向
 
 SYNCDELAY;
 EP2CFG=0xA0; //需要设定为四缓冲,每个缓冲区大小为512字节
 SYNCDELAY;
 EP4CFG=0x00;
 SYNCDELAY;
 EP6CFG=0xE0;
 SYNCDELAY;
 EP8CFG=0x00;
 
 SYNCDELAY;
 FIFORESET = 0x80;             // activate NAK-ALL to avoid race conditions
 SYNCDELAY;                    // see TRM section 15.14
 FIFORESET = 0x02;             // reset, FIFO 2
 SYNCDELAY;                    //
 FIFORESET = 0x06;             // reset, FIFO 6
 SYNCDELAY;                    //
 FIFORESET = 0x00;             // deactivate NAK-ALL
 
 SYNCDELAY;
 PINFLAGSAB = 0xE6;          // FLAGA - fixed EP6PF, FLAGB - fixed EP6FF
 SYNCDELAY;
 PINFLAGSCD = 0xf8;          // FLAGC - fixed EP2EF, FLAGD - reserved
 SYNCDELAY;
 PORTACFG |=  0x00;  //0x40;             // SLCS, set alt. func. of PA7 pin
 SYNCDELAY;
 FIFOPINPOLAR = 0x00;          // all signals active low,
 SYNCDELAY;

  OEA|=0x0F;
    //小于64字节有效
    //EP6FIFOPFH=0x00; //DEIS PKSTAT  PK2 PK1 PK0 0 PFC9 PFC8
    //EP6FIFOPFL=0x40; //PFC7 PFC6 PFC5 PFC4 PFC3 PFC2 PFC1 PFC0
 
 // handle the case where we were already in AUTO mode...
 EP2FIFOCFG = 0x01;            // AUTOOUT=0, WORDWIDE=1
 SYNCDELAY;
 
 EP2FIFOCFG = 0x11;            // AUTOOUT=1, WORDWIDE=1
 SYNCDELAY;
 
 
 EP6FIFOCFG = 0x09;            // AUTOIN=1, ZEROLENIN=0, WORDWIDE=1
 SYNCDELAY;

 //IO设置
 PORTCCFG=0x00;
 PORTECFG=0x00;
 OEC=0x00;
 OEE=0xff;
 //串口初始化

// PA3=0;
 PA0=1;

 enum_high_speed=FALSE;

}

 

编译生成.hex文件,用EZ-USB控制面板下载到USB芯片中,然后提示找到设备Bulkloop Device,自动安装驱动,点击get piples,

Pipe:  0  Type: BLK Endpoint:  2 OUT  MaxPktSize: 0x200
Pipe:  1  Type: BLK Endpoint:  4 OUT  MaxPktSize: 0x200
Pipe:  2  Type: BLK Endpoint:  6 IN   MaxPktSize: 0x200
Pipe:  3  Type: BLK Endpoint:  8 IN   MaxPktSize: 0x200

选择: BLK Endpoint:  6 IN  ,点击传输, 这是我用24bitAD芯片采集数据的结果,每采集两次,放入3个数据进FIFO,数据正确

 
 
16发送.jpg
 
但是现在传输速度测试的VC6.0程序还不能用,估计还是因为win7的某些不兼容吧,以后再试。
 
关于eeprom固件,我采用24LC64,A0脚拉高。采用如下命令将.hex文件转化为.iic文件:
Hex2bix -i -f 0xc2 -v 0x04B4 -p 0x8613 -o bulkloop.iic bulkloop.hex
然后在控制面板中点击Lg EEPROM,将生成的.iic文件下载进去,重新上电,USB加载成功

文章评论8条评论)

登录后参与讨论

用户377235 2016-6-21 17:12

评论是对思考最好的总结…

用户1554607 2014-12-26 01:47

我想问问,明明上面初始化不使用端点 4 和 8 下面get piples 还出现4和8呢?

用户377235 2014-9-1 10:37

很好 谢谢楼主

用户1265970 2013-2-19 19:18

你复制一下整个工程,别在原来的地方改

用户432614 2013-1-24 14:00

不错哦,学习了。楼主,那个 bulkloop.c中的代码是只读形式,修改不了,怎么解决呢?

用户984574 2013-1-23 22:47

挺好的文章,很棒!

用户1265970 2012-12-8 15:41

呵呵,我也不熟悉,拿现成的改的,自己能用就行了,加油!

用户375266 2012-12-8 11:13

呵呵,感觉驱动还是挺深奥的,小弟现在才开始研究固件编程呢,对USB的协议还不是很熟悉滴
相关推荐阅读
用户1265970 2015-01-26 22:03
Xilinx FPGA的JTAG可以识别,但是不能下载bit文件,INIT_B引脚上拉电阻改为100欧姆后,正常了
        单位做了一批板子,主芯片是spartan6 LX45T,8块板子中有一块下载不了bit文件,但是可以用JTAG识别。检查了一下电源供电,配置方面的一些上拉下拉电阻均没有问题。通过示...
用户1265970 2013-10-02 08:43
安装完PADS,发现orcad不能用了,提示“无法启动此程序,因为计算机中丢失 MSVCR90.dll”
  安装完PADS 9.3,发现orcad不能用了,打开orcad,提示一下错误:   --------------------------- Capture.exe - 系统错误...
用户1265970 2013-06-09 22:52
基于SATA固态硬盘的高速大容量嵌入式存储模块(80M/s数据连续写入)
        前段时间做高速大容量存储,在网上看不少牛人使用V5的FPGA直接实现SATA协议,性能也可以做的很高(200MB/s左右)。但是V5的价格太贵,更正重要的书,使用verilog实现...
用户1265970 2012-12-07 23:25
24bitAD采集芯片AD7760的使用
        AD7760是一款高速24bitAD采集芯片,采样率为78.125k-2MHz,在78.125k采样率下的动态范围120dB。我用cyclone3 FPGA控制,由于AD7760采...
用户1265970 2012-12-05 16:35
microblaze 使用lwip协议栈的一点体会
有个项目要用以太网传大量数据,spartan6+ddr3+千兆以太网,内核采用microblaze软核,逻辑搭mac,phy芯片用的88E1111。 最开始采用xilinx官方的例子XAPP1...
我要评论
8
25
关闭 站长推荐上一条 /2 下一条