jiangwei
驱动牛犊
驱动牛犊
  • 注册日期2004-03-25
  • 最后登录2004-04-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1682回复:11

89C52+D12枚举的过程请教请教

楼主#
更多 发布于:2004-03-31 12:19
89C52+D12枚举的过程是不是这样的:
对于MCU:在MUC运行指令与HOST实现SOFTCONNECT后,MCU接收到中断,通过读中断状态寄存器得知是控制输出端点中断,MCU响应中断,选择控制输出端口,从D12中接收数据(8字节,为80,06,00,01,00,00,40,00),然后分别向D12发送应答(F1),清缓冲区(F2)命令,接下来再选择控制输入端点,向D12中送18个字节的设备描述符(请问这18个描述符是什么?),在向D12中发F1,FA命令,结束中断程序。
然后接下来会怎么样???请教请教

最新喜欢:

crazyqpcrazyq...
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-03-31 12:31
你可以搜一下以前的帖子
关于d12的东西实在是很多。
jiangwei
驱动牛犊
驱动牛犊
  • 注册日期2004-03-25
  • 最后登录2004-04-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-03-31 14:22
伤心呀,上边的大哥能不能正面帮我解答
whmjack
驱动小牛
驱动小牛
  • 注册日期2003-09-17
  • 最后登录2007-04-26
  • 粉丝0
  • 关注0
  • 积分290分
  • 威望29点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-03-31 17:29
大致像你说的一样,中断程序执行完后,转入主程序执行啦!其实你漏掉了一个过程。
首先pc向d12的端点索引0out端点发送数据,d12接受数据后产生一个中断,mcu响应中断,把d12的数据读入数据缓存区里,然后清d12的中断标志位,使其能继续接受数据。中断返回。
进入主程序后,主程序从数据缓冲区里读出数据,然后根据数据进行相应的处理。例如有的数据是80 06 。。。。这是一个读取设备描述符的usb标准要求!然后mcu将设备描述符放入0的in端点里,下一个阶段pc将读取in里的数据....
yyouking
驱动老牛
驱动老牛
  • 注册日期2003-12-18
  • 最后登录2020-04-28
  • 粉丝0
  • 关注0
  • 积分967分
  • 威望114点
  • 贡献值1点
  • 好评度78点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2004-03-31 17:54
其实用D12我们就是不知道他的枚举过程也无所谓的,因为都已经有源代码了,只要懂协议就行了
提供: AT89S52+D12开发套件 W78E54+Sl811HST单片机读写U盘套件 PL2303HX-串口转USB 网站http://www.devking.cn 联系 sl811hs@yahoo.com.cn QQ:14441292
jiangwei
驱动牛犊
驱动牛犊
  • 注册日期2004-03-25
  • 最后登录2004-04-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-04-01 13:49
请教:我是在用汇编语言作程序,你如果有源程序能否给我一份,不胜感激。我的邮箱是:jiangwei19811206@163.com
问一下:枚举过程中,pc机会向mcu发5组数:
(1)80 06 00 01 00 00 40 00 GET DESCR
(2)00 05 02 00 00 00 00 00 SET ADDRESS
(3)80 06 00 01 00 00 12 00 GET DESCR
(4)80 06 00 02 00 00 09 00 GET DESCR(CONFIG)
(5)80 06 00 02 00 00 FF 00 GET DESCR(CONFIG)
当一组数据发送到mcu中,我是不是要先判断这组数据是以上的那一组数据,然后进行相应的设置,再给pc不同的回应,我可以怎样区分这5组数据,常规的方法是什么?请教!
我现在遇到一个问题,就是我从pc机中接收到80 06 00 01 00 00 40 00,然后我将返回18个字符,但是我怎样知道,这18个字符被pc成功接受,用Bus Hound能看到了吗?
还有,是mcu先收到端点0 in 中断后,mcu在向d12中送数据(18个字符),还是先往d12 fiio中送数,然后mcu再收到端点0 in 中断,数据在什么时候从d12传向pc的??
zhangzhuoliang
驱动牛犊
驱动牛犊
  • 注册日期2003-06-23
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望42点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-04-01 14:35
(1)你这些是设备请求区分他们是controlData这个数据结果的devicerequest.bmrequesttype成员区分的!!!
(2)bushound能看到!!
(3)先传数,然后收到中断.
jiangwei
驱动牛犊
驱动牛犊
  • 注册日期2004-03-25
  • 最后登录2004-04-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-04-01 15:15
多谢指教,不过我没明白"你这些是设备请求区分他们是controlData这个数据结果的devicerequest.bmrequesttype成员区分的!"这句话的意思。请再次指教,谢!
jiangwei
驱动牛犊
驱动牛犊
  • 注册日期2004-03-25
  • 最后登录2004-04-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-04-01 15:32
在枚举过程中mcu有没有可能收到与5组描述符均相同的其他一组数据,我收到的好像就不是。
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-04-01 17:21
如下区分:
那5个请求分成两组:
1,获得描述符get_descr, 对应的bRequest号是0x06,然后进入后根据wValue的不同区分是设备描述符(0x0001)还是配置描述符(0x0002)然后再根据wLength的长度来返回数据给主机,分别是0x40-返回8字节或者18字节,0x12-返回18字节,0x09-返回9字节,0xff-返回全部的配置描述符。
2,设置地址set_address,对应的bRequest号是0x05,那个0x02时主机分配给你的设备的地址。
3,最后你还会收到一个set_config,00 09 01 00 00 00 00 00
09是bRequest号,01是配置号。

详细的说明参考usb2.0协议第9章第6节。

[编辑 -  4/1/04 by  jinghuiren]
jiangwei
驱动牛犊
驱动牛犊
  • 注册日期2004-03-25
  • 最后登录2004-04-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-04-01 17:38
请教:在枚举过程中mcu有没有可能收到与5组描述符均相同的其他一组数据,我收到的好像就不是。
jiangwei
驱动牛犊
驱动牛犊
  • 注册日期2004-03-25
  • 最后登录2004-04-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-04-02 14:38
请教请教!!!!!!!!!!!!
游客

返回顶部