打印
[应用相关]

请教电脑圈圈几个USB问题

[复制链接]
1858|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
myworkmail|  楼主 | 2009-4-15 16:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教电脑圈圈几个USB问题:
1。我用你的JoyStickMousevoid程序在万利的板子上跑,只要是全速运行就会跑到 HardFaultException(void)中,也就是handles Hard Fault  。但是只要是从一开始单步走几步,再全速就没事。
2。我试了大概40次,一开始单步走几步,再全速,大概只有5次,能成功,其它的我用bushound看,没有任何数据,是否是说,我根本没没有枚举。这大概是哪的问题呢?PC没主动的发?
3。我的USB线该什么时候插?是插好了再运行程序还是在运行USB_Init();的同时插还是在全速运行是插?

沙发
vigia| | 2009-4-15 17:11 | 只看该作者

我来试试回答

1, 这个说不好,可能性太多,需要调试

2, bushound我记得是要先选中设备,再能看到设备和主机的通信的,就是说枚举过程是看不到的,你没看到数据是不是这个原因呢?

看有没有枚举可以看程序有没有把bDeviceState置为CONFIGURED,一般一旦枚举开始都是可以枚举成功的。

3, 枚举过程是PC发起的,一旦PC监测到D+线的上拉,即发出reset信号,发起枚举。所以你的USB线什么时候插和你的代码有关。
比如你的板子靠USB供电,那肯定是先插USB线,此时PC查到一个插入的USB设备,发起枚举,但如果还没有运行USB_Init函数,那肯定就枚举不成了。所以靠USB供电的板子,最好做一个模拟插拔的工作,就是先插USB线供电,但D+不上拉,代码运行USB_Init函数,然后上拉D+,此时PC发起枚举,就可以正常通信下去了。

如果板子不靠USB供电,可以先运行USB_Init函数,然后在需要的时候插USB线,一旦插上就可以正常枚举了。

使用特权

评论回复
板凳
computer00| | 2009-4-15 17:16 | 只看该作者

我用着一直好的呀。把线插上再跑程序吧。不行就不要调试

直接跑FLASH里面的程序。

使用特权

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

本版积分规则

22

主题

100

帖子

0

粉丝