paopao79916
驱动牛犊
驱动牛犊
  • 注册日期2002-12-05
  • 最后登录2005-08-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1617回复:14

68013主机程序的问题

楼主#
更多 发布于:2003-07-08 21:58
我自己做了一个主机程序,读写512字节以内没问题。但如果我要传送的文件大于端点FIFO的大小(EP2 512*2),时,是由我主机程序来控制呢,还是由驱动来控制呢?打个比方:我现在要传2K字节的数到单片机的内存,而端点大小只有512字节*2,传完512个字节后,我是应该在主机程序中再提一次申请呢,还是只要我通过主机程序一次发送2K字节,然后由驱动程序自动完成整个流控制呢?有做过的大虾请指教,谢了!

最新喜欢:

lmhhlmhhlmhhlm...
luckyjm
驱动中牛
驱动中牛
  • 注册日期2002-12-19
  • 最后登录2004-03-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-07-09 08:32
它自己并不会直接发送1024后多余的字节,必须再的调用一次程序才可以,而且多余的字节要求是512的整数倍。
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-07-09 10:55
你一次最大可以网主机发送65535字节的数据,具体的分包工作是由usbd以及usbdi来完成的,不用你参与,你只需要在固件方不断的读取端点里的数据就行了!
luckyjm
驱动中牛
驱动中牛
  • 注册日期2002-12-19
  • 最后登录2004-03-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-07-09 13:37
64k是CY的驱动定义的最大限制,还可以通过修改驱动来是其变大。
luckyjm
驱动中牛
驱动中牛
  • 注册日期2002-12-19
  • 最后登录2004-03-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-07-09 13:39
我理解你的调用一次程序是指读一次端点吗,如果不是的话,那么JIN大侠说得是对的。
paopao79916
驱动牛犊
驱动牛犊
  • 注册日期2002-12-05
  • 最后登录2005-08-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-07-09 15:55
各位大虾的意思就是主机只管发送一次数据(大小可以超过端点的缓冲值),然后在固件方连续读就是了,是这样吗?但我的实验结果好象有点出入,我是通过在主机端多次发送数据来解决这个问题的,已经成功,但我还想再试一试你们说的方案,你们有这方面的成功经验吗?
luckyjm
驱动中牛
驱动中牛
  • 注册日期2002-12-19
  • 最后登录2004-03-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-07-09 16:11
其实上面说的你现在根本不用管,那是以后的事,甚至说如果能实现的话,驱动根本就不用改的,64K的包是通过FIFO不断以512字节的一个小包传入主机的,不用人为干预的。
luckyjm
驱动中牛
驱动中牛
  • 注册日期2002-12-19
  • 最后登录2004-03-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-07-09 16:12
其实上面说的你现在根本不用管,那是以后的事,甚至说如果能实现的话,驱动根本就不用改的,64K的包是通过FIFO不断以512字节的一个小包传入主机的,不用人为干预的。应该送分了吧?呵呵。
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-07-09 17:02
楼主不就是想从主机发大于一个包的数据给设备,你别的不要管,只管用deviceiocontrol()或者writefile()函数发送你想发送的数据数量下去,当然这个值要小于64k,然后驱动会自动把这批数据分成一个一个的包发到设备的。

如果想传得更多就去修改驱动,不过我试过,开640k是可以的,再大的话有的时候会出问题。
luckyjm
驱动中牛
驱动中牛
  • 注册日期2002-12-19
  • 最后登录2004-03-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-07-10 08:35
我也是开到640K。
zhange1
驱动牛犊
驱动牛犊
  • 注册日期2001-12-10
  • 最后登录2004-12-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-07-11 09:23
加大AUTOINLEN,主机方面开大内存区,必须是AUTOINLEN的倍数,否则可能出错!
高歌纵情,长笑舒意
arthurcao
驱动小牛
驱动小牛
  • 注册日期2003-10-12
  • 最后登录2012-07-08
  • 粉丝0
  • 关注0
  • 积分92分
  • 威望20点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-07-12 19:18
回答的不错,不知楼主为何这么小气,一分也不放!!!! :(
arthurcao喜欢开源。
pearlish
驱动牛犊
驱动牛犊
  • 注册日期2004-03-27
  • 最后登录2004-07-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-07-18 13:43
加大AUTOINLEN,主机方面开大内存区,必须是AUTOINLEN的倍数,否则可能出错!

比如BULK模式,一包大小为512字节,我把AUTOINLEN设到1024,有问题吗?
Pixy_31
驱动牛犊
驱动牛犊
  • 注册日期2004-05-29
  • 最后登录2005-04-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-07-20 11:23
[quote]加大AUTOINLEN,主机方面开大内存区,必须是AUTOINLEN的倍数,否则可能出错!

比如BULK模式,一包大小为512字节,我把AUTOINLEN设到1024,有问题吗? [/quote]

怎样在驱动里修改呢?我找了半天没找到相关的值啊!谢啦!!
小妖在此
Pixy_31
驱动牛犊
驱动牛犊
  • 注册日期2004-05-29
  • 最后登录2005-04-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2004-07-20 15:37
还有,为什么要有着种限制呢?
小妖在此
游客

返回顶部