阅读:3312回复:30
D12速度上来了!
我用P87C52x2,11.0592M晶振单片机,工作在6时钟模式,现在的传输速度又252KByte/s了!
|
|
沙发#
发布于:2004-09-20 10:02
恭喜!
我现在也在为同样的速度问题苦恼,可惜我水平太菜一直都没有进展。上回听你说要改进固件,正在尝试。 可否再把你的心得赐教? |
|
板凳#
发布于:2004-09-20 11:02
你是用C51还是用汇编写的?
|
|
地板#
发布于:2004-09-20 11:18
大侠能否指点一二啊,我也在为速度发愁呢。
|
|
地下室#
发布于:2004-09-20 11:29
C51写的
我在想如果一帧数据要1ms,如果缓冲区大小是64字节,那么1ms只能传64字节,那么传输速率不是只能有64Kbytes/s? |
|
5楼#
发布于:2004-09-20 15:24
关注!!!顶!!!顶!!!!
|
|
|
6楼#
发布于:2004-09-20 18:39
先利用双缓冲区,查询端点状态,看缓冲区0、1地状态,如不是全满,写缓冲区。自己设置标识,进行控制。再一个就是,相缓冲区写数据的相应程序,用反汇编看一下相应的程序。根据反汇编程序里程序,进行优化C51,使反汇编程序相应的段落尽量的短,缩短程序在此的运行时间,各位可以各显神通啊!我用的单片机很屁,晶振也低。大家可以用高档单片机、dsp、arm来提升速度!如果做的好,速度可以接近1MByte/s。
|
|
7楼#
发布于:2004-09-20 18:41
关于D12的帖子有很多,大家搜一下。我也是搜了一晚上,看了一晚上,才将程序优化好的!
|
|
8楼#
发布于:2004-09-21 08:48
谢谢你!
|
|
9楼#
发布于:2004-09-21 08:50
要是可以通过QQ或者MSN跟你学习就好了。3167473,skylight_2004@hotmai.com
|
|
10楼#
发布于:2004-09-21 08:53
你在PC端应用程序的缓冲区大小设置的是多少啊?在这里设置一个大的数值是必须的吗?
|
|
11楼#
发布于:2004-09-21 10:33
如果PC端应用程序缓冲区大小是128字节,一次请求就是128字节,固件执行就是用
len = D12_WriteEndpoint(5, 64, EpBuf + ioCount); 这个函数填入两次吗?这时候缓冲区发送完了就空了,再填入数据也只有等下一次主机发送请求才能发出去。 是不是PC端缓冲区设置大一些,然后固件不停的填入数据发送,速度就上去了? |
|
12楼#
发布于:2004-09-21 11:07
我设的是64K。
|
|
13楼#
发布于:2004-09-21 13:26
就是在缓冲区大小里输入的是:64000吗?我不让输入这么大,输入这么大就死了,没反应了,是不是在驱动里设置呀?怎么修改?
谢谢你这么耐心的给我解答 :) |
|
14楼#
发布于:2004-09-21 16:19
是在应用程序中设的!应该没有问题!我是这样用的,是65536。
|
|
15楼#
发布于:2004-09-21 16:56
是吗?在应用程序里怎么设置呀?我们用的应用程序都差不多的吧
|
|
16楼#
发布于:2004-09-21 17:07
在应用程序读写函数中设置的!
|
|
17楼#
发布于:2004-09-22 09:08
就是这个函数吗?
bResult = ReadFile(hFile, threadParam->pcIoBuffer, threadParam->uiLength, &nBytes, NULL); 里面的threadParam->uiLength就是缓冲区大小吧,就是对话框里设置的缓冲区大小传输过来的吧?这个怎么设置啊? 请原谅我的愚钝。 |
|
18楼#
发布于:2004-09-22 10:56
对就是这个地方,不会有错的!不过事先要分配数据空间!
|
|
19楼#
发布于:2004-09-22 11:38
是啊,前面有分配数据的呀,就是这句
threadParam->pcIoBuffer = (unsigned char *)malloc (threadParam->uiLength + 16); 但是输入大的就会出问题啊。 |
|
上一页
下一页