打印

咨询块传输的问题

[复制链接]
1574|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sdman001|  楼主 | 2012-2-14 14:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
块传输时,设备向主机发送数据,什么时候发?是需要等待主机给设备一个IN指示后才发还是USB总线空闲设备自动占用总线并发送?

相关帖子

沙发
dqyubsh| | 2012-2-14 23:25 | 只看该作者
块传输是bulk吧

两种都可以,但是主机读到的结果会有差别。就68013来说,因为有FIFO缓冲,如果设备先把FIFO写好了,主机可能不会立即得到设备的当前填充数据,而是要把FIFO读空之后,才会读到最新填充的数据。相当于读数过程有个延迟。

如果每次主机读的时候设备才填充数据,就会一直读到新数据。

使用特权

评论回复
板凳
sdman001|  楼主 | 2012-2-15 07:51 | 只看该作者
“如果设备先把FIFO写好了,主机可能不会立即得到设备的当前填充数据,而是要把FIFO读空之后”这句话里面第一个FIFO是设备的发送FIFO,第二个FIFO是主机端的接收FIFO(也就是IN的FIFO),可以这么理解吗?

使用特权

评论回复
地板
dqyubsh| | 2012-2-15 08:54 | 只看该作者
USB规定,主机是总线惟一的主控者,USB方向规定如下:OUT是主机到设备,IN是设备到主机。

IN端点和OUT端点在物理上不搭界,但对于同一个IN端点来说,比如EP2,设备发送数据和主机接收数据,都是一码事,缓冲区也只有惟一的一个。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
icecut + 1
5
icecut| | 2012-2-15 09:20 | 只看该作者
usb是一个定时查询式总线

使用特权

评论回复
6
sdman001|  楼主 | 2012-2-15 10:32 | 只看该作者
主机是总线惟一的主控者,那么IN+BULK端点,只能等待主机发送IN PID后设备才能发送数据,对吧?

使用特权

评论回复
7
dqyubsh| | 2012-2-15 11:06 | 只看该作者
这种用法比较常见。

Poll()
{
     if(OUT端点有新的数据帧,可读)
     {
         if(分析主机OUT端点的数据,如果包含取数命令)
         {
                采集新数据;或者之前新数据已经准备好。
                if(IN端点空,可写)
                     将新数据填充到IN端点;
         }
     }
}

使用特权

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

本版积分规则

3

主题

5

帖子

0

粉丝