打印

怎么判断USB的端点缓存区数据发送完成,

[复制链接]
4467|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zuowang|  楼主 | 2012-5-21 13:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
怎么判断USB的端点缓存区数据发送完成,可否用中断啊,USB的手册讲的不清楚啊
沙发
vigia| | 2012-5-21 14:13 | 只看该作者
我这个帖子能解决你的问题吗?
https://bbs.21ic.com/viewthread.p ... ;highlight=%2Bvigia

使用特权

评论回复
板凳
zuowang|  楼主 | 2012-5-21 15:02 | 只看该作者
还没有找到答案啊,if (GetEPTxStatus(ENDP1)==EP_TX_NAK)这种判断是不是错的啊,
我想数据循环发送到USB的端点1的缓存区,中间没有延时,所以想用判断端点1的缓存区的数据发送成功后,发下一组数据,波特率设的是115200,但是发送一组数据时,结果正确,但是循环发送时,发送第二遍时,就出现错误了,

使用特权

评论回复
地板
vigia| | 2012-5-21 15:14 | 只看该作者
我之前是不是跟你讨论过这个问题呀。

请看我之前帖子的9楼,数据上传之后,库函数会调用EPx_IN_Callback中断回调函数,对于用户只需要在该回调函数设置标志位,即可通知主程序上次传输已经完毕。

使用特权

评论回复
5
zuowang|  楼主 | 2012-5-21 15:22 | 只看该作者
还没有找到答案啊,if (GetEPTxStatus(ENDP1)==EP_TX_NAK)这种判断是不是错的啊,
我想数据循环发送到USB的端点1的缓存区,中间没有延时,所以想用判断端点1的缓存区的数据发送成功后,发下一组数据,波特率设的是115200,但是发送一组数据时,结果正确,但是循环发送时,发送第二遍时,就出现错误了,

使用特权

评论回复
6
zuowang|  楼主 | 2012-5-21 15:38 | 只看该作者
检测串口的的工具

使用特权

评论回复
7
zuowang|  楼主 | 2012-5-21 15:38 | 只看该作者
检测串口的的工具?

使用特权

评论回复
8
liyichen| | 2012-5-21 15:40 | 只看该作者
不错哦

使用特权

评论回复
9
zuowang|  楼主 | 2012-5-21 15:48 | 只看该作者
非常感谢!!!

使用特权

评论回复
10
vigia| | 2012-5-21 15:49 | 只看该作者
还没有找到答案啊,if (GetEPTxStatus(ENDP1)==EP_TX_NAK)这种判断是不是错的啊,
我想数据循环发送到USB的端点1的缓存区,中间没有延时,所以想用判断端点1的缓存区的数据发送成功后,发下一组数据,波特率设的是11 ...
zuowang 发表于 2012-5-21 15:22

错不错不是这么好说的

首先端点状态会在使能时变成VALID,在成功传输完一个数据包之后,硬件会自动设置成NAK。

所以检测NAK状态也不能说不对。

但是文档资料都没有说,硬件在何时会自动去置位这个状态为NAK

可能在收到一个IN TOKEN之后,数据完全传输之前就置位了,也可能在数据发送很久以后再置位。文档没说的事情,也不好去揣测啊。

使用特权

评论回复
11
vigia| | 2012-5-21 16:01 | 只看该作者
所以,在EPx_IN_Callback回调函数中,置位一个用户标志位,比如InEnd = 1

在你的循环函数中,检查if(InEnd == 1) {启动下一次,InEnd=0}

使用特权

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

本版积分规则

11

主题

63

帖子

0

粉丝