打印

计算机和单片机通信问题 求救!!!

[复制链接]
2211|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
iampoor|  楼主 | 2007-6-10 22:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我单片机UART通过CP2102转换成USB,和电脑相连。
和计算机的数据交换协议如下:
 MCU向计算机发送一帧数据,共10个字节;
 计算机校验结束,如果数据正确则向MCU回复一个字符R;如果校验错误则回复字符W,要求MCU重新发送。
 
 数据量和波特率来计算,单纯的数据交换应该能在10秒种结束,再加上电脑的数据处理等延时,我觉得30秒怎么说都应该够了吧
 但实际的测试发现,要90秒左右才能结束。
 这些时间那里去了呢?计算机程序用VC做的,数据处理也就是带几个公式算算,怎么会耗费这么多时间呢?
 请各位分析分析这个过程,时间会消耗在那里呢?

 
 还有一个问题,就是计算机在回复字符的时候,有时候单片机接收不到,所以数据传输就停止了,但重复发送字符,就可以了。
 我怀疑是计算机的程序有问题,可同事确认程序没有问题,这个怎么会这样呢?而且这个东西和波特率没有关系,从38400到115200好像没有影响到这个出错的概率。
  如果是硬件UART和USB转换的问题,那不至于重新发送就能收到这个字符吧,我的理解。
 是USB和UART通讯中的时序问题?还是什么呢?

相关帖子

沙发
sluo| | 2007-6-10 23:06 | 只看该作者

会不会是

会不会是PC机发送太快,MCU接收缓冲区溢出了?

使用特权

评论回复
板凳
linjing| | 2007-6-10 23:29 | 只看该作者

没用过CP2102,建议你调试期间,简化一下你的系统

调试的时候,先用单纯的232试试,上位机的程序先做个简单点的,不带计算,收到数据就回复,等通讯问题都解决好了,再进行计算,而且是通讯与计算分开写

使用特权

评论回复
地板
chunyang| | 2007-6-11 00:29 | 只看该作者

很显然是程序问题

对PC而言,该USB在逻辑上是不存在的,而是一个串口,编程按串口的规范进行,这点数据量的传输及处理时间仅应为毫秒级。

使用特权

评论回复
5
iampoor|  楼主 | 2007-6-11 10:05 | 只看该作者

我都迷糊了

对于MCU程序来说,肯定没有问题,发送完了等着接收,接收完一个字节就发送。
对整个过程数据传输速度慢的问题,我搞不清楚,我只能解释是WINDOWS操作系统下面,对其他程序的操作影响这个程序的执行。不知道能不能说的通?我对这些不了解,做软件的只能告诉这个东西是类的问题,他也没有办法解决。上火!

 还有PC发送出来的字符MCU 有时候收不到,我很郁闷,现在说不清楚是什么问题。

使用特权

评论回复
6
chunyang| | 2007-6-11 11:00 | 只看该作者

前面已经提到是PC平台的问题

虚拟串口并不等于真正的串口,有“兼容性”问题,所以编程要注意,切记不能针对USB编程,而是针对那个虚拟的“串口”,但处理会有所不同,尤其是涉及缓冲时。建议你转移到普通串口上做对比测试,找出程序的错误。

使用特权

评论回复
7
iampoor|  楼主 | 2007-6-12 08:44 | 只看该作者

谢谢阳春面老大^_^

谢谢阳春面老大^_^

换成电脑上的串口,问题还是这样。

我估计是VC编程的问题,还有在WINDOWS操作系统下面,进程太多,估计占用时间太多。

使用特权

评论回复
8
chunyang| | 2007-6-12 13:24 | 只看该作者

肯定不是进程占用问题,而是对串口设备的编程部分有问题

别说用VC了,就是用VB只要编程正确就不会有问题,建议仔细看看VC的编程手册。

使用特权

评论回复
9
iampoor|  楼主 | 2007-6-12 16:46 | 只看该作者

可怜我不懂VC

做软件那小子黔驴技穷  我也不懂。
糟糕。

谢谢面条!

使用特权

评论回复
10
zhaizhifen| | 2007-6-14 19:41 | 只看该作者

瞢了

软件那小子黔驴技穷  我也不懂。
糟糕。

使用特权

评论回复
11
nordic| | 2007-6-18 15:26 | 只看该作者

不懂!

使用特权

评论回复
12
lixun00| | 2007-6-19 15:52 | 只看该作者

是不是软件问题,只要把串口部分剥离出来一调试就知道

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

30

主题

205

帖子

0

粉丝