阅读:1095回复:8
固件发送数据给PC?给分
小弟一直都很疑惑,单片机的固件程序应该怎样发送数据给PC呢?接收还好办,就是在中断服务程序中判断到host发送请求,然后调用相应的端点接收函数,并接收数据。可是在中断服务程序中判断到host接收请求时,调用了相应端点的发送函数,可是在发送函数中,仅仅是清除了中断标志位,具体的数据却不知道在哪里发送给host?麻烦给解释一下固件程序,驱动,应用程序三者是怎么实现数据的收发的!最好有源代码说明!谢谢!
|
|
最新喜欢:![]() |
沙发#
发布于:2003-11-29 11:39
接收都知道了,发送其实差不多呀!
接收是从端点out把数据接收的。那发送是把数据放到端点in,然后等主机来自己取。 |
|
板凳#
发布于:2003-11-29 13:24
楼上说的不错,应该会举一反三吗,既然你知道了out端点的处理方法,那么在in端点的处理程序段里一定有些数据的部分呀。
对于in传输你只需把数据写到相应的in端点里即可,主机会把它读走的。 |
|
地板#
发布于:2003-11-29 20:33
这也算回答吗?
我得理解是这样的,不知对不对。MCU负责把数据发送到IN端点的缓冲区中,而不管主机是否发出IN请求。而主机就只负责发送IN请求给D12,除非读走了指定数量的数据,否则就一直从D12相应IN端点缓冲区读数;当读够数据以后,D12会发送一个中断给MCU,由MCU来清楚中断寄存器的标志。 不知我得理解对不对。 |
|
地下室#
发布于:2003-11-29 20:35
麻烦大侠稍微详细的解释一下!谢谢
|
|
5楼#
发布于:2003-11-29 21:05
怎么不算回答?
你读数据的时候不是从一个fifo端口读出来的吗? 写数据的时候只不过是写到in端点的fifo端口而已,说白了不就四个地址吗? in端点的唯一区别是你需要先写数据到端点里,这样当主机开始收取完第一个数据包後就会有中断产生,之后就一直有了。 你也可以在启动传输之前使用vendor request通知mcu往端点里写数,然后再启动in传输。 你的理解基本上是正确的。 |
|
6楼#
发布于:2003-11-30 20:45
非常感谢大侠的帮助!
|
|
7楼#
发布于:2003-11-30 20:49
怪了,今天怎么就给不了分了?下回在给吧!
|
|
8楼#
发布于:2003-12-01 10:16
分只能给一次。
|
|