发新帖我要提问
12
返回列表
打印

在设备管理器里看没有任何不正常.但是却不能用

[复制链接]
楼主: lovec51
手机看帖
扫描二维码
随时随地手机跟帖
21
computer00| | 2007-10-18 21:02 | 只看该作者 回帖奖励 |倒序浏览

当然可以完全一样了,windows会自动管理,

难道还不能插两个同样的U盘了?USB可不会这么SB的...

使用特权

评论回复
22
lovec51|  楼主 | 2007-10-18 21:04 | 只看该作者

驱动程序详细信息对比

使用特权

评论回复
23
vongy| | 2007-10-18 21:12 | 只看该作者

还是把你的固件发上来大家会比较清楚

当然如果这个只是练习的话:-)

使用特权

评论回复
24
lovec51|  楼主 | 2007-10-18 21:13 | 只看该作者

端点2怎么使能?

void set_endpoint_enable(void)                  //端点使能
{
 write_usb_command(Set_Endpoint_Enable);
 write_a_usb_data(0x01);
}
这样了还不行?
还要专门使能端点2?
如果端点2没使能灯也不亮??

使用特权

评论回复
25
computer00| | 2007-10-18 21:19 | 只看该作者

我看你的端点描述符,0x81和0x01,明明是端点1啊,

你怎么弄到端点2去呢?将端点1使能试试。

使用特权

评论回复
26
lovec51|  楼主 | 2007-10-18 21:51 | 只看该作者

我有对端点2进行描述啊.端点1太慢了,PC程序没用它

白色框的是配制描述符和接口描述符,绿色框的是端点1描述符,红色框的是端点2描述符.都有啊!

使用特权

评论回复
27
computer00| | 2007-10-18 22:04 | 只看该作者

那就不清楚了,也许你的驱动程序不支持端点2?我没用过这

不清楚。

使用特权

评论回复
28
vongy| | 2007-10-18 22:10 | 只看该作者

端点2不是INTERRUPT

07 05 82 02 40 00 0A
端点类型是02,为BULK传输
端点类型03才是中断传输

使用特权

评论回复
29
lovec51|  楼主 | 2007-10-18 22:37 | 只看该作者

贴代码大家看看

代码传上,在computer00 的基础上改的.请computer00 把我的代码在你的板子上跑一下看!
相关链接:https://bbs.21ic.com/upfiles/img/200710/2007101822360678.rar

使用特权

评论回复
30
lovec51|  楼主 | 2007-10-18 22:38 | 只看该作者

这是philips的驱动

使用特权

评论回复
31
computer00| | 2007-10-19 01:42 | 只看该作者

好,看周末有没有空,有空就试试...

使用特权

评论回复
32
lovec51|  楼主 | 2007-10-19 12:33 | 只看该作者

昏,我把这个代码移植到我以前的好板子上,很好用.

看来硬件有问题,1电路有问题,但是这不太可能,两个扳子大同小异,只是一个是5V一个是3.3V.一个是ALE一个是A0.其他一样.
2 D12有问题.

使用特权

评论回复
33
lovec51|  楼主 | 2007-10-19 13:22 | 只看该作者

现象排除了,但是问题还没有解决办法

原来把CPU频率降下来就好了,60M是极限,75M就不行了.
那么有什么办法可以让我的CPU跑在100M
而D12照常用呢?

static void delayUSB(void)
{
    unsigned int delayxblag;
    for(delayxblag=100;delayxblag>0;delayxblag--)
    {}
}


#define SendD12Cmd(value)      XBYTE[0x8009] = (value);delayUSB();
#define SendD12Data(value)     XBYTE[0x8008] = (value);delayUSB();
#define GetD12Data          XBYTE[0x8008]

我的程序里有这一段,事实证明这样还不够.
但是我分析以上现象,PC能认识我的设备,说明我的D12能承受到100M的频率,并且能在100M的时候很好的把数据发上去,也能很好的响应PC的各种请求.但是可能相应快了一点,也许某一些请求之间要求有一定的时间间隔.

当然还有一个解决办法,就是对D12操作的时候把时钟改慢一些.

使用特权

评论回复
34
computer00| | 2007-10-19 13:33 | 只看该作者

这样是直接由总线产生时序,或许太快了。

使用特权

评论回复
35
lovec51|  楼主 | 2007-10-19 16:26 | 只看该作者

如果说时序不对,为什么D12还能对PC的请求正确响应?

如果不能正确相应,为什么设备管理器能认识我的设备?

使用特权

评论回复
36
computer00| | 2007-10-19 16:36 | 只看该作者

这个问题我也搞不清楚,哎。那就将时钟放慢点吧,快了太

使用特权

评论回复
37
lovec51|  楼主 | 2007-10-19 17:44 | 只看该作者

USB慢点无所谓,但是我干其他事情不能这么慢啊.

还有一个问题,就是D12老是不停中断,并且中断寄存器是0

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则