基于CH372芯片实现计算机和单片机通讯是,发现如果单片机过很长时间后给计算机上传数据,计算机则无法成功读取数据。那我该如何解决?
会不会是CH372被复位了,无法读取时,设备还在吗?
什么时候读取的数据?
设备当然还在,只是执行读语句,条件不成立,无法读取上传数据.
说得不清楚,也许是你串口就没搞通的问题,或者地址分配不对,缓冲区没清空,或者读扇区数据就不对,你应该把程序执行到哪了告诉我们。
我的程序是计算机通过CH372发送一个命令给单片机,单片机能正确接受到这个命令,并执行命令,然后再将运行结果上传给计算机。此时计算机读取上传数据会有时成功、有时不成功读取上传数据。
你拿WCH网上的TEST程序先在你的板子上运行一段时间,会不会受干扰导致传输失败,在保证硬件没问题后,你还可以用DEBUG372来调你的下位机程序,这样分开来试就能查出具体问题在哪,要不然你说传数据不稳定,可能的问题很多。
首先用例子调一下,看看硬件没有问题,再试试自己的程序
我用WCH网上的TEST程序在我的板子上运行一段时间,一切多正确。我现在有点怀疑是不是与下位机收到命令经过一段时延,再向计算机上传数据;计算机采用查询方式查看上传数据。如果时延时间越短,那么计算机能正确收到上传数据;否则,计算机不能收到的上传数据是错误的。
这么和我的很相似啊,就是搞不定。 要传256字节,总是要分好几次才能全读完 CH375ReadData隔多少时间查询一次阿,我总怀疑单片机程序中延时太长,导致CH375ReadData某次读时 单片机还没有上传完一个数据包,即以0数据上传,触发CH375ReadData退出读取。
你要上传256字节,你可以试试有计算机多次调用 mUploadData(iBuffer, mLength)程序,我的程序就是这样处理,从而实现接收下位机26000个字节的。
这是什么函数啊?在CH375dll.h中没看到啊