完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
CH573USB模拟串口,从上位机发送64字节长度的数据给CH573,然后CH573重新发送64字节长度的数据给上位机,这一串64字节长度的数据最后好像并没有去发送上位机,会存储在缓冲区,等待下一次再发送给上位非64字节长度的数据后,一起发送给上位机。这种问题该如何解决?
|
|
相关推荐
9个回答
|
|
网上搜索了一下,应该无法发送给上位机64整数倍的数据,64整数倍的数据,没有满足通讯结束的条件,所以就不会从缓冲区发到上位机。那么该如何解决呢?我用的CH573的USB模拟串口
|
|
|
|
可以试一下在传输完第一次64字节之后,上传一个0长度的IN包给电脑
|
|
|
|
USB上传都是主机主动获取的,从机只负责准备数据等主机取走,你说的没有取走的问题,要看下是不是主机取的慢了或者主机满足什么条件后才向设备发送IN包
|
|
|
|
谢谢两位老师~我这边的问题就是当CH573从上位机接收到的数据长度为64时,将这64长度的数据拷贝到EP2的发送缓冲区(最大64字节)中。然后开始DevEP2_IN_Deal(),即MASK_UEP_T_RES ACK后,这时候USB会把EP2的发送缓冲寄存器中的数据发送fifo中,根据USB的协议,发送到fifo中的数据包长度需要在0~63字节内,才会认为数据发送结束,然后才会把fifo中的数据发送给上位机。
TECH5:可以试一下在传输完第一次64字节之后,上传一个0长度的IN包给电脑 RE:按照TECH5的建议,上位机可以接收到,但是有新的问题就是,当上位机发送给CH573的数据大于64字节,比如96字节时,CH573第一次USB传输中断out里面EP2的接收缓冲区的数据为64长度的字节,这个时候也要发送到fifo中,但这个时候不希望“在传输完第一次64字节之后,上传一个0长度的IN包给电脑”,因为第二次CH573USB传输中断out里面的接收缓冲区的数据长度为32,满足USB通信协议通讯结束的条件,如果提前上传一个0长度的IN包,不就提前结束了通信么? ☆怎么样可以从一开始就能获得到从上位机下传到CH573的总的数据长度? 或者如何将超过64字节的数据通过多次USB中断拆开,不发送给上位机,存储起来? |
|
|
|
除非定义软件协议,告知主机要发送长度,否则就是没有总长度信息的,一般USB传输尽量都按照满包满包,非满包,认为是结束。
你的这个问题,最好加软件协议,自定义数据格式信息。 |
|
|
|
有没有例程可以参考一下,处理大于64字节的USB传输处理的
|
|
|
|
从机处理没差别,就是有数据就往缓冲区里面放,设置ACK,等主机取走,继续填入下一包。
|
|
|
|
TECH13:从机处理没差别,就是有数据就往缓冲区里面放,设置ACK,等主机取走,继续填入下一包
那上位机下传到从机的数据为64整数倍字节长度的时候,怎么判断为最后一包数据包。如果非64整数倍包,可以根据包的数据长度小于64,判断可以最后一包。但是如果是64整数倍字节长度的时候,就没办法判断。本人就是在这里遇到的问题,不知道如何解决了。没有一个例程处理这种情况的么?应该都会遇到吧,正好64整数倍的时候,怎么判断当前的64整数倍的包为最后一包 |
|
|
|
您好,针对您遇到的问题可参考以下做法:
在单片机程序中设定一个USB数据上传等待时间,比如设定一个2ms的定时器。当上传给USB主机的数据包长度等于端点大小(本例为64byte),则启动该定时器。 1、若2ms定时时间到仍没有其他数据需要上传,则发送一包0长度USB包告知主机此次传输提前结束。 2、若2ms定时时间未到又有新数据要上传,则继续上传新的USB包而无需上传0长度包。 原因说明: 当USB主机请求的读长度为设备端点大小的整数倍时,此时主机读请求结束的判断条件为: 1、此次读取的USB包长度小于端点大小(即短包,包括0长度); 2、累计读取的USB包总长度达到主机请求的长度; |
|
|
|
只有小组成员才能发言,加入小组>>
518 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
2901 浏览 2 评论
2397 浏览 1 评论
865浏览 2评论
683浏览 1评论
riscv-none-embed-objcopy: \'PWM_Output.elf\': No such file这个咋解决,
415浏览 1评论
518浏览 1评论
请教一下,Mounriver 编译不成功:找不到库文件,怎么整
810浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 16:08 , Processed in 1.517033 second(s), Total 92, Slave 75 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号