阅读:1090回复:5
求助:关于USB中IN传输
在一篇帖子里讨论了IN中断如何产生的,讲的很好,但是,我有些不明白,我们知道当上一帧正确接受后,产生IN中断,但是在开始传输前,51把数据放在缓冲区,什么时候才能等到主机IN中断的到来啊?
谢谢!! |
|
|
沙发#
发布于:2003-12-11 20:22
什么时候主机开始取数据什么时候就会有in中断来:)
数据传输是有主机启动的,当主机发出读数据命令并获得数据后,就会给设备ack应答,这个应答信号会导致usb芯片对mcu产生中断。 我说明白了吗? |
|
板凳#
发布于:2003-12-11 20:37
IN中断的产生我明白啦!呵呵
我的疑惑在于:举各例子吧,当外设需要向主机传输数据,首先外设把数据传输到缓冲区,设备的任务完成,因为PC主机是传输的主宰,就像皇帝选妃子一样,51怎么知道主机开始取数据,也可能缓冲区被写满,主机还没有取数据,设备传向缓冲区的数据怎么办?, |
|
|
地板#
发布于:2003-12-11 20:46
设备写到端点里的数据是要计数的,当端点满了后再写的话其后的数据就会丢失,因此如果你用的双缓冲的话,开始只能写两个包到端点里,然后等待中断,每收到一次中断就可以再写一个包。
如果主机一直不取数据,没办法,设备只好等。 |
|
地下室#
发布于:2003-12-12 15:31
受启发,真有厉害的,我努力。
|
|
|
5楼#
发布于:2003-12-12 18:36
呵呵,让你郁闷两年,我保证你比我厉害! :D
|
|