我单片机UART通过CP2102转换成USB,和电脑相连。 和计算机的数据交换协议如下: MCU向计算机发送一帧数据,共10个字节; 计算机校验结束,如果数据正确则向MCU回复一个字符R;如果校验错误则回复字符W,要求MCU重新发送。
数据量和波特率来计算,单纯的数据交换应该能在10秒种结束,再加上电脑的数据处理等延时,我觉得30秒怎么说都应该够了吧 但实际的测试发现,要90秒左右才能结束。 这些时间那里去了呢?计算机程序用VC做的,数据处理也就是带几个公式算算,怎么会耗费这么多时间呢? 请各位分析分析这个过程,时间会消耗在那里呢?
还有一个问题,就是计算机在回复字符的时候,有时候单片机接收不到,所以数据传输就停止了,但重复发送字符,就可以了。 我怀疑是计算机的程序有问题,可同事确认程序没有问题,这个怎么会这样呢?而且这个东西和波特率没有关系,从38400到115200好像没有影响到这个出错的概率。 如果是硬件UART和USB转换的问题,那不至于重新发送就能收到这个字符吧,我的理解。 是USB和UART通讯中的时序问题?还是什么呢?
|