打印

请教,关于USB摄像头的等时传输

[复制链接]
4617|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kwell2009|  楼主 | 2011-6-14 20:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位好!
      现在单片机作为主机用CH374对摄像头进行枚举,对着 Bus Hound 一步一步来,已经成功,但是到等时传输这一步就被卡住了。
      我在设置完 VS_PROBE_CONTROL 和 VS_STILL_PROBE_CONTROL 后,对摄像头发送 IN 令牌包,然后等待数据,问题来了:
1.这时我设置 接受等待 DATA0,回复数据不定。有时匹配可以读出数据,有时则是设备应答错误或超时无应答。换成 DATA1亦然。
2.当有数据可读时,当前 CH374 的状态为 “忙且总线有传输”。但我一次仅能读取 CH374 缓冲区的64字节,摄像头此输出端点的大小有0x03BC,接下来的数据应该怎么读取呢?
谢谢!继续啃2.0协议。

相关帖子

沙发
dqyubsh| | 2011-6-14 21:58 | 只看该作者
CH374是USB1.1接口的,摄像头应该是USB2.0的。这么慢的端口接摄像头,单片机的RAM那么小,即便读到数据了,还要发给显示吧,一定卡的要死。

ARM平台可以接摄像头,都有成熟方案。单片机还是歇了吧。

你在微机上搞定摄像头了?把微机的程序移植到单片机系统试试。

使用特权

评论回复
板凳
kwell2009|  楼主 | 2011-6-15 09:58 | 只看该作者
谢谢回复。
是的,把摄像头拉到全速来运行,这里只是要传输摄像头画面而已,帧数要求不高。
所以,只要接收端可以收到单片机发来的摄像头数据就足够了。
PC上的摄像头枚举是WINDOWS完成的,所以我只能看 BUS HOUND。
现在是我还不懂等时传输的完整过程,自己试着又出问题,啃协议吧。

使用特权

评论回复
地板
icecut| | 2011-6-15 16:58 | 只看该作者
听起来很难....你或许读到的是不同图像的第一部分.

iso传输,每个帧应该能传完一幅图片?
iso是要求带宽的.你带宽达不到,那结果就不确定了.看你device设计了

使用特权

评论回复
5
icecut| | 2011-6-15 17:04 | 只看该作者
本帖最后由 icecut 于 2011-6-15 17:08 编辑

Isochronous Transfers provide
Guaranteed access to USB bandwidth.
Bounded latency.
Stream Pipe - Unidirectional
Error detection via CRC, but no retry or guarantee of delivery.
Full & high speed modes only.
No data toggling.

然后再看5.6.3的第一段...如果是usb1.1的full且一次只能读取最大64byte放弃吧
你的fifo绝对会overflow

使用特权

评论回复
6
icecut| | 2011-6-15 17:16 | 只看该作者
挂上备用缓冲区,128bit做乒乓缓冲.这样可以速度快点,狂读完成概率还可以....

使用特权

评论回复
7
kwell2009|  楼主 | 2011-6-16 20:07 | 只看该作者
沁恒工程师的回复:
CH374的主机端点大小可以扩展到128字节,对于端点大于128字节大小的设备,超过128字节数据部分就无法读取。
做过等时传输。以上的回答就是实验的结果。
。。。。该换芯片么?请问各位有推荐么?还是直接上ARM算了..。

使用特权

评论回复
8
icecut| | 2011-6-18 14:46 | 只看该作者
7# kwell2009
**,他们128byte竟然不能作乒乓buffer。。。。我高估他们了

host的arm也不多阿。直接上arm9以上了。你的很多设计都over了

使用特权

评论回复
9
kwell2009|  楼主 | 2011-6-20 17:59 | 只看该作者
现在才回来,真不好意思。
现在是这样子的,有另外一个办法:
就是在 set interface 时,把摄像头的alternate setting修改成中断节点为128 bytes 的设置,然后讲CH374 的缓冲区扩展为 128 字节,再进行等时传输读动作。
应该是可行的,但是还是有问题。我发送IN令牌,要求的为DATA0数据包,第一次正常,可以接受到数据,但第二次就不匹配了。改为DATA0和DATA1交替也是出现同样错误。
求解。谢谢!

使用特权

评论回复
10
kwell2009|  楼主 | 2011-6-21 17:15 | 只看该作者
刚刚又试了一下,必须设置为接收DATA0,由于等时传输的主机每隔1ms发送一个SOF同步信号,随后接收设备发送的信号,在两次传输之间加适量延时,再开启等时传输,就可以接收到两个包的不同数据了。
但是现在不知道怎么安排这些包,请问这些包有序号的么?怎样才知道这是同一帧图片的数据呢?
好像有个叫UVC的东西,继续看...

使用特权

评论回复
11
freeman9507| | 2014-6-27 22:21 | 只看该作者
牛就一个字!!!

使用特权

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

本版积分规则

个人签名:堆码,调试,抓狂...

1

主题

51

帖子

2

粉丝