hoosyman
驱动小牛
驱动小牛
  • 注册日期2002-10-31
  • 最后登录2006-07-14
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:1094回复:8

固件发送数据给PC?给分

楼主#
更多 发布于:2003-11-28 21:55
小弟一直都很疑惑,单片机的固件程序应该怎样发送数据给PC呢?接收还好办,就是在中断服务程序中判断到host发送请求,然后调用相应的端点接收函数,并接收数据。可是在中断服务程序中判断到host接收请求时,调用了相应端点的发送函数,可是在发送函数中,仅仅是清除了中断标志位,具体的数据却不知道在哪里发送给host?麻烦给解释一下固件程序,驱动,应用程序三者是怎么实现数据的收发的!最好有源代码说明!谢谢!

最新喜欢:

bearsammibearsa...
wdy9927
驱动老牛
驱动老牛
  • 注册日期2003-08-04
  • 最后登录2017-02-04
  • 粉丝0
  • 关注0
  • 积分89分
  • 威望143点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2003-11-29 11:39
接收都知道了,发送其实差不多呀!

接收是从端点out把数据接收的。那发送是把数据放到端点in,然后等主机来自己取。


jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-11-29 13:24
楼上说的不错,应该会举一反三吗,既然你知道了out端点的处理方法,那么在in端点的处理程序段里一定有些数据的部分呀。
对于in传输你只需把数据写到相应的in端点里即可,主机会把它读走的。
hoosyman
驱动小牛
驱动小牛
  • 注册日期2002-10-31
  • 最后登录2006-07-14
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-11-29 20:33
这也算回答吗?
我得理解是这样的,不知对不对。MCU负责把数据发送到IN端点的缓冲区中,而不管主机是否发出IN请求。而主机就只负责发送IN请求给D12,除非读走了指定数量的数据,否则就一直从D12相应IN端点缓冲区读数;当读够数据以后,D12会发送一个中断给MCU,由MCU来清楚中断寄存器的标志。
不知我得理解对不对。
hoosyman
驱动小牛
驱动小牛
  • 注册日期2002-10-31
  • 最后登录2006-07-14
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-11-29 20:35
麻烦大侠稍微详细的解释一下!谢谢
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-11-29 21:05
怎么不算回答?
你读数据的时候不是从一个fifo端口读出来的吗?
写数据的时候只不过是写到in端点的fifo端口而已,说白了不就四个地址吗?
in端点的唯一区别是你需要先写数据到端点里,这样当主机开始收取完第一个数据包後就会有中断产生,之后就一直有了。
你也可以在启动传输之前使用vendor request通知mcu往端点里写数,然后再启动in传输。

你的理解基本上是正确的。
hoosyman
驱动小牛
驱动小牛
  • 注册日期2002-10-31
  • 最后登录2006-07-14
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-11-30 20:45
非常感谢大侠的帮助!
hoosyman
驱动小牛
驱动小牛
  • 注册日期2002-10-31
  • 最后登录2006-07-14
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-11-30 20:49
怪了,今天怎么就给不了分了?下回在给吧!
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-12-01 10:16
分只能给一次。
游客

返回顶部