我用Ch372试验,用本网站的CH372debug 调试软件。 步骤:先从电脑下传到端点2数据,接收正常,单片机紧接着把数据写入端点2。再从372上传(还是端点2)数据到电脑,正常。单片机也产生了IN完成中断,这时候再写入一组数据,并释放缓冲区。再次上传数据到电脑,就失败了。(调试软件上的第二项上传数据,点击确定后无反应,并且按钮无法再点击,ch372也没有产生中断。)
我反复检查了各种命令,没有发现问题。不知道是不是调试软件有问题。特求助。谢谢
我用Ch372试验,用本网站的CH372debug 调试软件。 步骤:先从电脑下传到端点2数据,接收正常,单片机紧接着把数据写入端点2。再从372上传(还是端点2)数据到电脑,正常。单片机也产生了IN完成中断,这时候再写入一组数据,并释放缓冲区。再次上传数据到电脑,就失败了。(调试软件上的第二项上传数据,点击确定后无反应,并且按钮无法再点击,ch372也没有产生中断。)
我反复检查了各种命令,没有发现问题。不知道是不是调试软件有问题。特求助。谢谢
你的流程有点问题,应该是这样,首先下传数据,当收到数据之后,将收到的数据写到IN端点,当收到IN上传成功之后,应该是先解锁,也就是释放缓冲区,完了之后在将数据写到372,这个时候计算机就可以收到数据了
呵呵 不好意思 我没有说清楚 我就是这样做的 372手册上写得很清楚。 我刚才简化了流程 1.初始化。 2.向IN端点写数据。 3.通过电脑上的调试软件读数据,结果没有反应。
请帮助分析一下 谢谢
谢谢你 我明白了 呵呵 弄清楚了 372的手册上写得第7步应该写在第6步的“上传成功”之后, 555 让我忙活了半天
谢谢你啊
明白了 是不是一定要执行一次对IN的写操作,才可以再上传阿。
那是当然,但是在第一次上传之前需要计算机下传一次才能进行上传,计算机可以从372收到数据的前提是372给计算机返回ACK以及372将数据准备好,所谓的数据准备好就是单片机将数据写到你相应的上传端点缓冲区里面去,这样的话,计算机才能取到数据,还有一个问题就是在进行下一次往372写数据之前,需要发一个解锁的命令,将372的缓冲区解锁掉,这样的话,下一次的数据才能写到372里面去,否则数据是写不进去的,也就不会上传到计算机了。
呵呵 谢谢大虾 果然是这样的,必须先让计算机下传一次,才可以上传。我没有仔细读过USB协议(英文晦涩难懂啊)呵呵。不知大虾可否再仔细讲解一下“计算机可以从372收到数据的前提是372给计算机返回ACK”这句话。 另外,“还有一个问题就是在进行下一次往372写数据之前,需要发一个解锁的命令,将372的缓冲区解锁掉,这样的话,下一次的数据才能写到372里面去,否则数据是写不进去的”。我试验了,我是在发送结束中断中,先把新的数据写入372缓冲区,再解锁,一样可以的。