阅读:1442回复:12
D12的缓冲区问题!!!
我使用D12做一个数据采集板,现有一个问题向各位大侠请教一下:D12说明书上说:“D12提供320的FIFO,当FIFO存满后,D12自动将数据打包即时读入数据,由SIE自动发送数据包” 请问:
1.如果向端点写入数据不能填满D12的FIFO,D12缓冲区的数据会不会被SIE打包发送? 2.当端点2被设置为块传输时,能不能一次向端点缓冲区写入128个字节的数据还是只能写入64字节的数据? :( :( |
|
最新喜欢:![]()
|
沙发#
发布于:2004-07-29 19:23
只能64字节
USB1.1的协议决定的 |
|
板凳#
发布于:2004-07-30 08:26
是不是可以一次写128个字节,由D12来自动切换缓冲区来实现由D12的双缓冲区来存储128个字节呢?第一个问题那位能给回答一下?先谢啦!!!
|
|
|
地板#
发布于:2004-07-31 12:26
不好意思,上次我回答的不准确。
USB包最多64字节 你说的没错,的确可以双缓冲的,但是这个是端点2才可以。 |
|
地下室#
发布于:2004-07-31 12:48
xixiyizi,你太谦虚啦,是我没有把问题说清楚。你的意思是说可以一次向D12的端点2的缓冲区写入128个字节的数据啦?期待各位大侠的指导!!!
|
|
|
5楼#
发布于:2004-07-31 16:00
这个问题我也没什么把握。
但是根据我的实践是不行的。我看周立功书P31页:双缓冲:缓冲区切换是自动处理的,导致了透明的缓冲区操作。 根据我今天的发现,这个根模式选择有关,现在我选的是模式0,只有64。晚上我去试试模式1看看,应该可以128吧~~ |
|
6楼#
发布于:2004-07-31 16:32
非常感谢 xixiyizi !!!!
期待你的答复 !! |
|
|
7楼#
发布于:2004-08-04 16:41
呵呵,好几天没上来了,不知道你搞定没。
|
|
8楼#
发布于:2004-08-07 09:33
xixiyizi:
我这两天忙别的啦,没空再忙这个,等我把程序全编好再调调试试吧,我现在是找不到理论上的说明啦!!!!你现在咋样啦? |
|
|
9楼#
发布于:2004-08-08 13:56
我模式是转换了,但是读不出128字节,可能是我固件没改好。
但是我看USB1.1的协议规范上说批传输最多64字节,所以我就迷惑了。现在我用的是中断,还是批,我自己都搞不清楚了。。。 |
|
10楼#
发布于:2004-08-08 15:05
xixiyizi,你好!
我查了USB通信协议的书,书上是这样写的:控制和批量端点的最大数据量必须为8,16,32或64四个离散值;而中断和同步端点能指定少于或等于其最大值的任何值(中断的最大值为64,同步端点的最大值为1023)。仅供你参考,看看能不能给你点启发。 |
|
|
11楼#
发布于:2004-08-10 09:59
你如果要一次写128Byte,要分2次写入,一次写64Byte,当然写完一次后要使缓冲区有效,pc可以一次读128Byte。
不过这种过程好像只能手动操作应用软件,才可以。我不知道你的mcu用的是什么,双缓冲对于pc读数据好像没有太大的意义! |
|
12楼#
发布于:2004-08-11 19:30
tomjin,你好!看了你的说明我还是不太明白,我现在做一个数据采集系统,MCU是AT89C52。请教一下该如何使用D12的双缓冲区?
你的意思是不是只能从D12的端口一次读取128个字节的数据,但是不能一次向D12的端口写入128个字节的数据?这是为什么呢?D12设置双缓冲区不就是为了增大数据吞吐量吗?为什么还要讲究方向呢?D12的说明书里没有这样写呀!期待大家的回复!!! |
|
|