阅读:1618回复:14
68013主机程序的问题
我自己做了一个主机程序,读写512字节以内没问题。但如果我要传送的文件大于端点FIFO的大小(EP2 512*2),时,是由我主机程序来控制呢,还是由驱动来控制呢?打个比方:我现在要传2K字节的数到单片机的内存,而端点大小只有512字节*2,传完512个字节后,我是应该在主机程序中再提一次申请呢,还是只要我通过主机程序一次发送2K字节,然后由驱动程序自动完成整个流控制呢?有做过的大虾请指教,谢了!
|
|
最新喜欢:![]() |
沙发#
发布于:2003-07-09 08:32
它自己并不会直接发送1024后多余的字节,必须再的调用一次程序才可以,而且多余的字节要求是512的整数倍。
|
|
板凳#
发布于:2003-07-09 10:55
你一次最大可以网主机发送65535字节的数据,具体的分包工作是由usbd以及usbdi来完成的,不用你参与,你只需要在固件方不断的读取端点里的数据就行了!
|
|
地板#
发布于:2003-07-09 13:37
64k是CY的驱动定义的最大限制,还可以通过修改驱动来是其变大。
|
|
地下室#
发布于:2003-07-09 13:39
我理解你的调用一次程序是指读一次端点吗,如果不是的话,那么JIN大侠说得是对的。
|
|
5楼#
发布于:2003-07-09 15:55
各位大虾的意思就是主机只管发送一次数据(大小可以超过端点的缓冲值),然后在固件方连续读就是了,是这样吗?但我的实验结果好象有点出入,我是通过在主机端多次发送数据来解决这个问题的,已经成功,但我还想再试一试你们说的方案,你们有这方面的成功经验吗?
|
|
6楼#
发布于:2003-07-09 16:11
其实上面说的你现在根本不用管,那是以后的事,甚至说如果能实现的话,驱动根本就不用改的,64K的包是通过FIFO不断以512字节的一个小包传入主机的,不用人为干预的。
|
|
7楼#
发布于:2003-07-09 16:12
其实上面说的你现在根本不用管,那是以后的事,甚至说如果能实现的话,驱动根本就不用改的,64K的包是通过FIFO不断以512字节的一个小包传入主机的,不用人为干预的。应该送分了吧?呵呵。
|
|
8楼#
发布于:2003-07-09 17:02
楼主不就是想从主机发大于一个包的数据给设备,你别的不要管,只管用deviceiocontrol()或者writefile()函数发送你想发送的数据数量下去,当然这个值要小于64k,然后驱动会自动把这批数据分成一个一个的包发到设备的。
如果想传得更多就去修改驱动,不过我试过,开640k是可以的,再大的话有的时候会出问题。 |
|
9楼#
发布于:2003-07-10 08:35
我也是开到640K。
|
|
10楼#
发布于:2003-07-11 09:23
加大AUTOINLEN,主机方面开大内存区,必须是AUTOINLEN的倍数,否则可能出错!
|
|
|
11楼#
发布于:2004-07-12 19:18
回答的不错,不知楼主为何这么小气,一分也不放!!!! :(
|
|
|
12楼#
发布于:2004-07-18 13:43
加大AUTOINLEN,主机方面开大内存区,必须是AUTOINLEN的倍数,否则可能出错! 比如BULK模式,一包大小为512字节,我把AUTOINLEN设到1024,有问题吗? |
|
13楼#
发布于:2004-07-20 11:23
[quote]加大AUTOINLEN,主机方面开大内存区,必须是AUTOINLEN的倍数,否则可能出错! 比如BULK模式,一包大小为512字节,我把AUTOINLEN设到1024,有问题吗? [/quote] 怎样在驱动里修改呢?我找了半天没找到相关的值啊!谢啦!! |
|
|
14楼#
发布于:2004-07-20 15:37
还有,为什么要有着种限制呢?
|
|
|