阅读:2409回复:16
usb2.0的固件程序要怎么改才能适应usb1.1接口?
我使用的芯片是cypress68013,和Keil uVision2开发工具。开发包中提供了一些固件程序例子:bulkloop(在FX2目录下)等,它们是按usb2.0设计的。可是我的电脑接口只支持usb1.1,各位仁兄可知道如何将bulkloop固件程序中改那些设置,才能在usb1.1中跑起来?本人是新手,请大家指教。
|
|
沙发#
发布于:2003-08-18 15:53
原来又是低级错误。 :D 还不赶紧放分感谢各位?
|
|
板凳#
发布于:2003-08-18 15:52
谢谢啊!可以读入数据了!因为外部没有输入信号,所以读入的是随机数。
|
|
地板#
发布于:2003-08-13 12:41
里面没数据你读什么????????
你先用ep2传一批数据到设备里,然后再把数据转移到ep8里,再试试能不能读到,读不到的话那就见鬼了啦!!! |
|
地下室#
发布于:2003-08-12 20:43
使用EZ-USB Control Panel面板上的Bulk Trans来验证Endpoint 8 IN的数据读取啊。好像数据读取不了?! 你的数据线上有信号么? |
|
5楼#
发布于:2003-08-12 20:33
使用EZ-USB Control Panel面板上的Bulk Trans来验证Endpoint 8 IN的数据读取啊。好像数据读取不了?!
|
|
6楼#
发布于:2003-08-12 18:42
你首先的保证ep8里有数据,否则读什么?
|
|
7楼#
发布于:2003-08-12 17:03
我使用EP8作为IN slave FIFO,从AD片子读取数据到主机,12位的AD数据口连在68013的FD11~FD0口上,FD12~FD15接低电平。
以下是固件初始化程序: void TD_Init(void) // Called once at startup { // set the CPU clock to 48MHz CPUCS = ((CPUCS & ~bmCLKSPD) | bmCLKSPD1) ; IfCongfigureState=0; IFCONFIG=0XDB; //48MHz,IFCLK tri-state,invert clock,no clock suply in IFCLK,slave FIFO. EP8FIFOCFG=0x01; //autoin=0,WORDWIDE EP8CFG=0XD2;//EP8,Valid,in,bulk,512,double EP2BCL = 0x80;// arm EP2OUT by writing byte count w/skip. SYNCDELAY; EP2BCL = 0x80; SYNCDELAY; REVCTL = 0X03;//DYN_OUT=1,ENH_PKT=1 SYNCDELAY; SYNCDELAY; FIFORESET=0X80; SYNCDELAY; FIFORESET = 0X08; SYNCDELAY; FIFORESET = 0X02; SYNCDELAY; FIFORESET = 0X00; SYNCDELAY; PORTACFG=00; SYNCDELAY; FIFOPINPOLAR=00; SYNCDELAY; EP8AUTOINLENH = 0X00;//0X02; SYNCDELAY; EP8AUTOINLENL= 0X40;//0X00; SYNCDELAY; // EP8FIFOPFH=0X00; // SYNCDELAY; // EP8FIFOPFL=0X05; ////////////////////////////////////////////////////////////// OED=0XFF;//ENABLE IOD=0x00;//PORTD IN // OEB=0XFF;//ENABLE // IOB=0x00;//PORTB IN OEA=0X8B; IOA=0X8B;//10001101,PA[7,3,1,0]=OUT // enable dual autopointer feature WAKEUPCS&=~bmWU2EN; AUTOPTRSETUP |= 0x01; Rwuen = TRUE; // Enable remote-wakeup /////////////////////////////////////////////////////////////////// FIFORESET=0X80; SYNCDELAY; FIFORESET = 0X08; SYNCDELAY; FIFORESET = 0X00; SYNCDELAY; } 可是下载固件后,无法从EP8中读取数据。各位大侠可否知道问题在哪里呢? |
|
8楼#
发布于:2003-08-11 21:03
再问一个可能是愚蠢的问题: 这个是不行的吧,换了之后内部usb收发器的时钟就达不到480mbit/s了,这样就出问题的!68013内部的收发器的时钟是通过外部24m晶体在内部通过倍频得来的,你要是换了就不符合协议的规定了,那么电缆上传输数据的编解码肯定会出问题的! |
|
9楼#
发布于:2003-08-11 16:49
为什么要换啊?说说理由和目的。
|
|
10楼#
发布于:2003-08-10 23:38
再问一个可能是愚蠢的问题:
那68013的外围晶振24M要不要换成12M的? |
|
11楼#
发布于:2003-08-10 11:17
不用该的,描述符的设置是在main函数的开始一段,它可以自动区分1.1和2.0,不信的话你可以把你的开发板拿到1.1的机子上试试,下载相同的固件。
|
|
12楼#
发布于:2003-08-10 09:01
你直接作实验就行了,CY可以自动按照USB1.1的协议来传输的。
|
|
13楼#
发布于:2003-08-09 23:31
那在void TD_Init(void)初始化中不改些设置吗?
比如说EPX的数据长度设置(EP8AUTOINLENH,EP8AUTOINLENL),还有CPU的时钟设置(IFCONFIG)等等,这些不用改吗?还有其它设置怎么改啊?我的疑惑好多。 |
|
14楼#
发布于:2003-08-09 22:50
不用改,直接就可以用,只是包的大小不是512而是64而已。
|
|
15楼#
发布于:2003-08-09 15:36
楼上的maxipeiz,你好!能发给我看看吗?真是碰到救星了!我现在正着急呢。
我的email是:lotuslzj@yahoo.com.cn |
|
16楼#
发布于:2003-08-09 12:41
我这儿有现成的 usb1.1固件程序源代码,为什么要非走弯路。
需要的话联系 maxipeiz@163.com |
|
|