使用372debug软件进行端点2上传批量数据时候的问题

我现在在用372debug那个软件调试上传数据,使用的是批量上传端点2,我现在启动下位机(FPGA),初始化好375芯片,然后向其传输64个字节,等待上位机收走。当我点击端点2的上传按钮后,的确收到了正确的64个字节数据,并且成功的给下位机中断,而且下位机也成功响应了中断,读出0A码,代表上位机取走了数据,但是当我这些做完,在375没有任何复位的情况继续向其端点2传输了64个字节数据后,再点击debug软件上端点2的上传按钮后,就提示我接收文件失败,上面对话框还显示出来375设备已拔出,或者有的时候成功收完第一帧数据后就提示我375器件已拔出,不知道这是下位机操作不当还是上位机软件的问题,请指教。

总之就是不能连续上传64批量的数据,我看源程序使用的writeread函数,最多上传64个字节,我也是一下一下按的按钮操作,并没有非法操作啊,很郁闷,望解答一下好吗?谢谢

应该是你下位机的问题 下位机在上传成功之后 有没有释放缓冲区?


没有释放缓冲区,因为我还要继续传数据,上传完64字节,上位机手走后我还要传64个字节,按手册上讲的不用释放缓冲区啊,否则我该如何一次一次的连续上传64字节数据呢?


每成功传64B数据,都必须解锁,否则无法继续上传,对比下我们的例程吧,下载CH372EVT.ZIP,参考\CH372EVT\PUB\TEST


哦,是这个样子,但是手册上并没有说呢。那再请问一下啊,我是用api函数接收4096个数据的时候,就是那个函数叫buffload好像,记不太清除了,那样的话也是上传64个字节就要解锁一下吗?以往内我看debug软件中使用的是readwrite函数,那我不用这个函数的话每次上传也需要解锁吗?谢谢指教


解锁是对下位机而言的,\CH372EVT\PUB\TEST下有上下位机的例程,参考一下啊


恩,我看过了,因为令我不解的是,手册当中的这段话:“ ①、 单片机执行WR_USB_DATA 命令向CH372 写入要发送的数据; ②、 CH372 被动地等待USB 主机在需要时取走数据; ③、 当USB 主机取走数据后,CH372 首先锁定当前USB 缓冲区,防止重复发送数据,然后将INT# 引脚设置为低电平,向单片机请求中断; ④、 单片机进入中断服务程序,首先执行GET_STATUS 命令获取中断状态; ⑤、 CH372 在GET_STATUS 命令完成后将INT#引脚恢复为高电平,取消中断请求; ⑥、 由于通过上述GET_STATUS 命令获取的中断状态是“上传成功”,所以单片机执行 WR_USB_DATA 命令向CH372 写入另一组要发送的数据,如果没有后续数据需要发送,那么单片机不必执行WR_USB_DATA 命令; ⑦、 单片机执行UNLOCK_USB 命令; ⑧、 CH372 在UNLOCK_USB 命令完成后释放当前缓冲区,从而可以继续USB 通讯; ⑨、 单片机退出中断服务程序; ⑩、 如果单片机已经写入了另一组要发送的数据,那么转到②,否则结束。

其中的第6步操作,并没有执行unlock命令而是直接上传另一组数据了,为什么呢?

再一个请您 解答一下我的另一个问题,我若要上位机使用CH375SetBufUpload函数的话该如何操作呢?下位机是否也是上传完毕64个字节数据就要解锁一下?谢谢


1、⑥是写入新的数据,⑦是解锁,你再看看⑩的解释,⑥仅是把数据写入CH375,CH375并不把数据发送给PC,只有执行⑦以后,数据才被发送出 2、下位机流程就是照6楼这么做,与上位机无关


因为我要上传5K个数据,比较多,而每一次是否只能上传64个,无论上位机用什么函数接收,我下位机都是6L这种上传方式呢?都要等中断,解锁,只不过上位机不用过多的干预接收过程而已。。。还望指教


就是这个意思,6L就是下位机发送数据的流程,与上位机采用什么方式收数据是无关的


哦,谢谢了 ,了解了


只有登录才能回复,可以选择微信账号登录