takaya
驱动小牛
驱动小牛
  • 注册日期2002-02-10
  • 最后登录2006-05-16
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:1833回复:11

请教一个关于D12取读顺序的问题.

楼主#
更多 发布于:2002-04-27 10:50
我看了一些源码是当设备接收到主机的IN请求后再向Buffer填数据,但又有帖子说要先把数据写入缓冲区,然后等待主机in请求。 倒底哪个对?
我是只可爱的小猫咪,高枕无忧................................. QQ:2745071
laiqing
驱动小牛
驱动小牛
  • 注册日期2002-02-27
  • 最后登录2013-08-28
  • 粉丝5
  • 关注0
  • 积分46分
  • 威望104点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-04-27 19:09
是先往端点里送数据,并使之成为有效包,当下一次IN信令到来时,
这个数据才被取走,端点里没有有效数据时,即使有IN信令到来也不会产生中断.
takaya
驱动小牛
驱动小牛
  • 注册日期2002-02-10
  • 最后登录2006-05-16
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-04-28 09:17
楼上这位兄台的意思就是说:
先向Buffer送一些数据,然后等到主机的IN,IN命令出现后,D12产生一个中断,通过CPU再向buffer填新的数据,是这样的吧.
那么,D12是等先前Buffer中的数据向主机送完之后产生中断呢,还是IN到来的时候立即产生中断?
我是只可爱的小猫咪,高枕无忧................................. QQ:2745071
wonderful
驱动牛犊
驱动牛犊
  • 注册日期2002-04-26
  • 最后登录2006-04-18
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-04-28 10:11
IN信号到来时会立即产生中断
这时你可以向BUFFER写数据,写完数据后,写发送数据命令

PHILIPS网站上提供的C51例子程序写的很详细,也很好懂
你可以参考一下
takaya
驱动小牛
驱动小牛
  • 注册日期2002-02-10
  • 最后登录2006-05-16
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-04-28 10:45
楼上两们说的意思是反着的也!!!!!!!
我是只可爱的小猫咪,高枕无忧................................. QQ:2745071
takaya
驱动小牛
驱动小牛
  • 注册日期2002-02-10
  • 最后登录2006-05-16
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-04-28 10:47
我都糊涂了.
上上上面的说buffer中没有数据不会产生IN中断,
上上面的又说产生IN中断后才向buffer写数据.
..........................................
我是只可爱的小猫咪,高枕无忧................................. QQ:2745071
laiqing
驱动小牛
驱动小牛
  • 注册日期2002-02-27
  • 最后登录2013-08-28
  • 粉丝5
  • 关注0
  • 积分46分
  • 威望104点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-04-28 12:51
你可以侃侃SET DMA命令中有关第7位Endpoint Index 5 Interrupt
Enable的说明,是D12的DATA SHEET,他说只要端点缓冲区被Validate,
就会产生中断.
dani
驱动牛犊
驱动牛犊
  • 注册日期2002-03-28
  • 最后登录2002-11-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-04-28 14:23
When the microprocessor has written data into an IN buffer, it should set the buffer full flag by the Validate Buffer command. This indicates that the data in the buffer are valid and can be sent to the host when the next IN token is receiver.
 
 这是Ph2 关于Valid buffer的描述。其中对IN请求作了说明。所以我觉得应该是先送数据在缓冲区,然后等待主机IN令牌。
plasma
驱动小牛
驱动小牛
  • 注册日期2002-02-19
  • 最后登录2008-02-27
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-04-28 16:20
D12受到IN信号包后产生中断。
向BUFFER写数据,写完数据后,发送数据有效命令。
D12发送数据到主机。

heshen
驱动老牛
驱动老牛
  • 注册日期2002-04-19
  • 最后登录2014-01-26
  • 粉丝0
  • 关注0
  • 积分45分
  • 威望5点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-04-29 09:13
我使用的不是d12,但是在根据我这里的说明,实在in 到来之前,先把数据包预装入buffer ,在等待in的到来。in来了以后要判断有装载了才开始发送。
不要啊!
mature-boy
驱动牛犊
驱动牛犊
  • 注册日期2002-04-27
  • 最后登录2002-06-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-04-29 10:55
我认为,usb系统基本上是工作在中断方式,我认为的过程是这样的:首先pc机得到中断,再发in命令,因为中断在前,所以buffer一定是满的,也就是说先写buffer再等in命令。 :) :) :) :)
takaya
驱动小牛
驱动小牛
  • 注册日期2002-02-10
  • 最后登录2006-05-16
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-05-13 10:43
顶一顶
我是只可爱的小猫咪,高枕无忧................................. QQ:2745071
游客

返回顶部