ARM串口通讯丢包问题,急!!!

ws840914   2010-1-11 15:35 楼主
      各位,我最近调试一个东东,LPC2114用串口Uart0与电脑通讯。上位机程序是VC++6.0编的。工作顺序如下:首先电脑定时发送8字节读数指令,2114收到后返回8字节数据。问题是无论2114内的串口程序是中断的还是轮询的,电脑收到的数据总有丢包现象。电脑定时发送10ms一次时,丢包很严重,50ms一次就好一些。100ms没有丢包。2114倍频后44MHz,波特率115200。
     我的程序中就这一个中断,按理说一个周期16个字节,10ms应该绰绰有余,串口不至于堵塞啊。苦恼中~
      怎么回事啊,大家帮忙想想办法?

回复评论 (15)

问题应该你的自己弄的那个用VC做的上位机软件,PC上的应用存在延时,楼主有没有认真关注过。
你的上位机软件在处理接收数据等存在问题,楼主好好审查下对应的代码。

建议楼主用找个串口调试助手试试,测试看看,估计不会这样;

另外关注下波特率,如果有示波器,则最好找个示波器,好好测试下。
点赞  2010-1-11 18:18
先拿串口助手试试,应该不会这样。
点赞  2010-1-11 18:40
用串口调试工具试试吧,只能一点点测试
点赞  2010-1-11 19:03
先让2114收到后返回8字节PC读数指令看看,是不是PC8字节读数指令有丢的?
点赞  2010-1-11 19:28
    kyzf正解!强!
    原先我用是这么查的:串口调试助手定时对2114发数,然后2114返回数据,发现有收不到数的现象。我以为是arm的问题。后来我用sscom3.2试了下,没有丢数,也不延时,才意识到是PC的问题。最后我精简了VC6.0的程序,基本只留串口收发,有点效果,但10ms还是有丢包。再一次陷入困境。纳闷人家sscom咋编的呢?还是VC6.0的串口控件不行?(sscom是c++builder编的)
    此外,串口调试助手会丢数的,大家可试试。
点赞  2010-1-11 23:07
我去年被这个问题搞的非常郁闷
因为WIN不是实时操作系统 所以在WIN下面的操作会有丢数据的
点赞  2010-1-11 23:15
跟人家操作系统没关系

是lz的控件使用方式可能不对

其实偶不喜欢ms的串口控件,更倾向于自己写的串口类,创建一个线程专门接收
点赞  2010-1-12 08:34
上位机接收部分处理的时间尽量缩短,避免阻塞。
必要的话,可以采用队列+多线程的处理方式
点赞  2010-1-12 09:38
引用: 引用楼主 lesterlotte 的回复:
? ? ? 各位,我最近调试一个东东,LPC2114用串口Uart0与电脑通讯。上位机程序是VC++6.0编的。工作顺序如下:首先电脑定时发送8字节读数指令,2114收到后返回8字节数据。问题是无论2114内的串口程序是中断的还是轮询的,电脑收到的数据总有丢包现象。电脑定时发送10ms一次时,丢包很严重,50ms一次就好一些。100ms没有丢包。2114倍频后44MHz,波特率115200。
? ? 我的程序中就这一个中断,按理说一个周期16个字节,10ms应该绰绰有余,串口不至于堵塞啊。苦恼中~
? ? ? 怎么回事啊,大家帮忙想想办法?

1. 如果可能, 降低波特率。
2. PC软件是否使用的异步IO,如果可能的话贴出PC端串口通信处理的代码,大家可以进一步帮你分析问题的所在。
3. 如果丢包问题依然存在,增加容错机制。
点赞  2010-1-12 10:03
各位,我决定了,搞多线程,多谢了!!!
点赞  2010-1-14 22:16
引用: 引用 10 楼 lesterlotte 的回复:
各位,我决定了,搞多线程,多谢了!!!


支持,我顶你,呵呵
点赞  2010-1-14 22:38
楼主这种问题
是编写串口调试助手软件
最常需解决的问题

目前大家常用的
几种串口调试助手
以前见过他们的作者
讨论过这些问题

另外楼主的那个空间没用过
以前我用过另外一个控件
楼主还是直接调用API吧
点赞  2010-1-15 09:04
额。。串口通信你不会原来就没有用多线程吧???
点赞  2010-1-15 16:24
没这么复杂吧,我用vb很好搞的啊
点赞  2010-1-16 23:13
这个问题啊,最好用分析仪调试一下你的串口上位机程序,马上能发现你的PC程序哪里有问题.
你现在缺乏调试手段,不知道问题出在哪里,就病急乱投医.

串口监视分析仪comspy V2.0大众普及版(2010/01/05更新)
http://www.armecos.com/freedown/down.asp?id=17&url=/down/good/comspy-v20.rar

本程序用于串口监视,不占用当前被测串口。
只要Windows系统能枚举出来的串口都可以监视,支持一次同时监视多个串口。

工程师必备工具---串口分析利器!!!

注册费仅¥39,一本书的价格!!!

就当买本书吧!!!
点赞  2010-1-17 16:47
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复