小组 > 接口电路 > USB专区 > 关于对PDIUSBD12设备枚举过程的理解
?
?
小组信息
名称:USB专区

管理员:

人数:11372
小组积分:131519
简介:讨论和学习USB的空间。现在USB技术已经很流行了,就像以前的串口一样。以前的电子工程师不会搞串口通信就落伍了,而现在的电子工程师如果不会搞USB通信,那就落伍了。电子工程师门,还等什么,赶紧加入小组来学习USB吧……大家也要多跟同事们推荐推荐,将我们的小组壮大起来~~~

小组公告

小组暂无公告.

返回本小组首页

楼主??[其他]?

关于对PDIUSBD12设备枚举过程的理解


作者:ql_smbj
积分:1347分
总积分:2747分
:1120
发送信息
加为好友
发表于2009-02-19 21:09

在下刚接触USB,为尽快上手,就买了本周立功的《PDISUBD12 USB 固件编程与驱动开发》,仔细看了书以后,对PDIUSBD12的枚举过程,有了初步的了解,下面就把我对枚举过程的理解描述一下,请圈圈帮忙看看,我的理解是否正确,谢谢!


只以书中的第2步为例,进行描述,周立功书中对D12枚举的第2步是主机读取设备描述符,大概可以分为下面7个步骤。


2.1 主机向设备发送一组数据(建立数据包),书中描述的是: 80 06 00 01 00 00 40 00;
俺对这8个数据的理解:
第1个字节: 表示的是设备请求类型 80表示数据从D12到主机传输
第2个字节: USB设备请求,06是设备标准请求中的 获取描述符
第3、4两个字节: USB值(疑惑1:这个USB到底是什么意思呢?)
第5、6两个字节: USB字段编号索引(疑惑2:仔细看过所有的命令,怎么都是00呢?)
第7、8两个字节: 计数器,表示的是D12应该向主机返回的字节数(疑惑3,显然第一次D12只会发送16个字节的数据,所以这里应该是10 00才对,怎么会是40 00呢?)

D12控制核,对这些数据的处理过程为:调用读端点0缓冲区命令,通过D12的端点0,读入这些数据,然后把这些数据保存到端点0的输入缓冲区中。


2.2 D12自动应答;
D12自动应答,是否意味着,D12接收到上述数据后,自动应答,而我的D12控制核就不需要对D12进行控制?


2.3 主机发送命令,读取数据;


2.4 D12通过端点0向主机发送设备描述符(书中描述的是:12 01 00 01 DC 00 00 10 71 04 66 06 00 01 00 00);
D12控制核调用写端点0缓冲区命令,通过D12的端点0,把上述这16个字节全部送给主


2.5 主机应答;


疑惑4:这一步不理解,主机应答表示什么意思呢,是否D12不需要处理,又或者是跟着2.6,在接收到0字节数据后,再作处理


2.6 主机向D12发送0字节的数据作状态响应
D12依然调用读端点0缓冲区命令,通过端点0读取该数据,并保存到端点0输入缓冲区(惑5,如果我上述理解正确的话,那这新读入的数据是不是会覆盖原有端点0缓冲区中的数据?)


2.7 d12读完主机发送的数据状态响应后,应答


D12调用应答命令,回复主机。


?


上面蓝色的字是我对书中描述的个人理解,不知道对或不对 :(


红色字体部分,是看过书以后的一些疑问,请圈圈帮忙解答,再次感谢!


ql_smbj 编辑于2009-02-26 23:27
分享到:? 新浪微博?? qq空间??
投票数: ? 回复?? ? 引用??
1楼??[其他]?

Re:关于对PDIUSBD12设备枚举过程的理解


作者:computer00
积分:42673分
总积分:81697分
:38770
发送信息
加为好友
发表于2009-02-20 14:10

有些字段在这个命令中是没用到的,可以不管它。


主机请求40,设备返回的数据可以比主机请求的短的。


设备返回了数据,主机当然要用ACK来应答了。


主机返回的是0字节的状态包,所以你的程序读不到数据的(0长度)


2楼??[其他]?

Re:关于对PDIUSBD12设备枚举过程的理解


作者:ql_smbj
积分:1347分
总积分:2747分
:1120
发送信息
加为好友
发表于2009-02-20 14:56

谢谢圈圈 。。。


那我上面蓝颜色字中理解的对不对呢,枚举的过程,是这样的么,谢谢!


另外还有一个问题:


在“2.3 主机发送命令,读取数据”;和“2.4 D12通过端点0向主机发送设备描述符”,这两步之间,D12接收到主机的命令后,是不是产生一个中断信号,告诉D12控制核,然后控制核进入中断处理程序,然后再向主机发送描述符?


3楼??[其他]?

Re:关于对PDIUSBD12设备枚举过程的理解


作者:ql_smbj
积分:1347分
总积分:2747分
:1120
发送信息
加为好友
发表于2009-02-22 21:39

请圈圈指点下啊 谢谢 :)


俺自己顶起来 呵呵 。。。


4楼??[其他]?

Re:关于对PDIUSBD12设备枚举过程的理解


作者:computer00
积分:42673分
总积分:81697分
:38770
发送信息
加为好友
发表于2009-02-22 22:19

基本上是正确的。


5楼??[其他]?

Re:关于对PDIUSBD12设备枚举过程的理解


作者:ql_smbj
积分:1347分
总积分:2747分
:1120
发送信息
加为好友
发表于2009-02-22 22:56

:)?? 谢谢 圈圈 指点


只是这个基本上不是很理解? 哪儿有错么 ??。。。


6楼??[其他]?

Re:关于对PDIUSBD12设备枚举过程的理解


作者:computer00
积分:42673分
总积分:81697分
:38770
发送信息
加为好友
发表于2009-02-23 12:20
不是,是内容太多了,懒得细看啊。差不多就行了,自己慢慢理解。

7楼??[其他]?

Re:关于对PDIUSBD12设备枚举过程的理解


作者:1236831893266
积分:278分
总积分:556分
:278
发送信息
加为好友
发表于2009-02-25 23:55

往PDIUSBD12 的ENDPOINT_IN 0缓冲 写入数据后,如果USB总线发了读请求,PDIUSBD12会自动发送缓冲中的数据,如果成功,会产生一个SUCCESS中断


也就是得知总线需要输入数据的时候,就将数据写入缓冲,等待SUCCESS中断,然后传没有传完的部分


8楼??[其他]?

Re:关于对PDIUSBD12设备枚举过程的理解


作者:computer00
积分:42673分
总积分:81697分
:38770
发送信息
加为好友
发表于2009-02-26 23:27

恩。


点击登录,立即回复。