阅读:1066回复:5
请做过D12的朋友帮忙验证我的几个猜想,谢谢了
在做D12的过程中,发现很多问题,网上又找不到相应的资料,只能跑这边来搬救兵了。
1。D12在收到host的IN数据包后,如果相应的端点数据buffer有效的话,是不是要把buffer里面的数据发送到host后,才产生IN中断? 我这样猜想的依据是:如果收到IN数据包后没发送相应端点的buffer数据就产生IN中断,那么如果在IN中断处理程序里面往相应端点的buffer写数据的话,就会把原先buffer的数据给覆盖。 2。另外,从周立功的程序来分析,D12上电总线复位后,D12会收到一个SETUP数据包,是标准请求的GetDeviceDescriptor,在周立功的程序里面好像是在主程序里面把要发送的数据放到端点0 IN 的buffer里面的,然后host再给D12发送一个IN数据包,D12把端点0 IN的 buffer数据发送到host的。 现在的问题是,D12复位后,host发送给D12的第一个SETUP数据包 和接下来的IN数据包之间是不是相隔一定的时间? 这个时间有多长,使得主程序能有足够的时间把端点0的 IN buffer填满。 因为周立功的程序里面使用的是51芯片,相对而言,51是比较慢的,因此,我想这个间隔时间应该实在ms级别的,但是查了相关的资料,没有说明这个间隔时间有多长? 以上是我的一些猜想,不知道正确与否,还请做过的朋友给我一个答案,谢谢了。 |
|
沙发#
发布于:2004-12-14 15:56
1,应该是收到host的in令牌吧,是的,主机收到数据后才会发送ack中断给d12。
2,这个时间间隔是足够的,协议规定,有数据阶段的控制传输,设备需要在50ms内把第一个数据包发送给设备,然后之后的是500ms一个,但是最后一个时间是50ms! 因此你收到setup包后有足够的时间来分析处理并填充数据,因为就算是51,时钟应该也不会低于4M的,在50ms内可以处理很多指令的。 我说明白了吗? |
|
板凳#
发布于:2004-12-14 21:29
谢谢了,我是硬件出身,USB协议方面的东西实在太复杂,现在也刚开始接触这些东西,所以就不是很吃得准。 谢谢你解开了我心中的疑惑。
|
|
地板#
发布于:2004-12-15 10:32
兄弟,回答正确就给点分啊
点你帖子下面一排按钮最右边的那个给分按钮给分。 :D |
|
地下室#
发布于:2004-12-15 10:53
偶得板子总是不能传数据给主机!但能收到主机发来的setup
|
|
5楼#
发布于:2004-12-15 11:14
bbybati ,有可能是你往buf里面写数后,没有使buf有效? D12中专门有个命令,可以使buf有效
|
|