热度 33
2014-2-16 22:12
6859 次阅读|
8 个评论
之前用的是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_XXXXPID_XXXX改成VID_04B4PID_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,数据正确 但是现在传输速度测试的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加载成功