打印
[技术问答]

请教NUC123的USB,如何在收到上位机的GET_REPORT请求后,在数据未准备好前先发送NAK?

[复制链接]
2877|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wjwfive|  楼主 | 2014-10-17 17:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我不想在中断里面去处理GET_REPORT请求所要发送的数据,而是想在程序主循环处理完后(在上位机的超时判定范围内)再发送。

在别的论坛STM板块看到以下的描述(原贴地址:hxxp:/ /w ww.amobbs.com/forum.php?mod=viewthread&tid=3851636):

      /*** GET_REPORT ***/
      else if((Type_Recipient == (CLASS_REQUEST | INTERFACE_RECIPIENT))
            && RequestNo == GET_REPORT)
      {
        if (数据未准备好)
          return USB_NOT_READY;
        CopyRoutine = CustomHID_GetReport;
      }
    这样,STM32将以NAK回应PC端的IN请求。


那新唐的官方库要怎么操作,可以发送NAK呢?好像没有“USB_NOT_READY”这样的状态??
沙发
mintspring| | 2014-10-18 08:17 | 只看该作者
这个函数我也没用过,mark一下,等会的人来讲讲

使用特权

评论回复
板凳
wjwfive|  楼主 | 2014-10-20 09:33 | 只看该作者
估计这个坛子里没什么人用新唐MCU做USB啊……唉

使用特权

评论回复
地板
niuyaliang| | 2014-10-23 21:31 | 只看该作者
wjwfive 发表于 2014-10-20 09:33
估计这个坛子里没什么人用新唐MCU做USB啊……唉

USB比较复杂,能玩转的人都是高手,他们都不怎么上论坛的

使用特权

评论回复
5
wjwfive|  楼主 | 2014-10-24 17:40 | 只看该作者
niuyaliang 发表于 2014-10-23 21:31
USB比较复杂,能玩转的人都是高手,他们都不怎么上论坛的

唉……
再多等一周,没人应就结贴了

使用特权

评论回复
6
le062| | 2014-10-24 21:19 | 只看该作者
nak是默认就发了,
GET_REPORT三个阶段,setup,data,status
当你收到setup时,硬件会答ack,然后置setup标志位。
紧接着主机会进入data阶段,开始发in包,如果此时程序还没有对setup包进行处理并准备数据的话,硬件需要自动应答nak,等程序介入准备好数据并写入data寄存器后,硬件再次收到in包时会把数据发过去,主机收到数据后答复ack。设备收到ack后,会产生tx完成标志,再次呼叫程序介入。(数据阶段的传输事务需要重复多次,直到出现短包为止(有些奇葩主机也有其他判定规则))
当设备和主机都认识到数据传输完成了,主机会发0长度out包,如果设备未准备好收status传输事务,会答nak,准备好了就答ack。
至此,GET_REPORT完成。

使用特权

评论回复
评分
参与人数 1威望 +5 收起 理由
niuyaliang + 5
7
ilove7027| | 2014-10-31 10:45 | 只看该作者
le062 发表于 2014-10-24 21:19
nak是默认就发了,
GET_REPORT三个阶段,setup,data,status
当你收到setup时,硬件会答ack,然后置setup标 ...

回答太好了,完整明了,又一次学习,谢谢!

使用特权

评论回复
8
wjwfive|  楼主 | 2014-10-31 14:15 | 只看该作者
le062 发表于 2014-10-24 21:19
nak是默认就发了,
GET_REPORT三个阶段,setup,data,status
当你收到setup时,硬件会答ack,然后置setup标 ...

问题是我不清楚如何在收到GET_REPORT的请求时,跳出中断,在主循环处理数据,再发数据给上位机。
用新唐库如何实现?
在UsbClassReq()里只有return TRUE和return FALSE,如果我return false,这个get report请求就会出错,但return true,又不知要发什么东西过去

使用特权

评论回复
9
643757107| | 2015-10-14 19:03 | 只看该作者
我看有人问USB中断的,问题,就找进来了,也没找到例程。

使用特权

评论回复
10
稳稳の幸福| | 2015-10-14 19:27 | 只看该作者
学习USB操作,用处太多了,所以进来看看能否学点什么。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

17

帖子

0

粉丝