机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 8505|回复: 11

关于串口通讯丢数问题的解决

[复制链接]
发表于 2008-12-17 09:41:04 | 显示全部楼层 |阅读模式
问题:51单片机在与电脑软件通讯的过程中,通讯了100多次 多200多次的时候会出现丢数的情况
3 e* |. C, p3 L8 c, ?0 S原帖地址:http://bbs.eeworld.com.cn/thread-70030-1-5.html) D& v. K6 F8 @5 x& \% X/ f8 F
$ p7 j( K4 a7 o* ^* S7 v# P
解决办法:实际上数并没有丢 只是可能电路有时候不稳 造成了波特率的波动 导致了同步有点问题 9 l, Y( `5 _- _2 u  Q9 U; X- H
原来的单片机程序:1 r4 e' l9 ?1 b/ K. m
void main()1 P1 H( A/ n! {1 e' E7 z- ^
{$ w, [3 c3 J  U6 ]& b# K+ ?+ o

- f; W# U, N# K3 k( n1 l    P1=0xff;
/ Q7 M2 s4 H/ |9 m) i3 D    main_init();" x" _/ k9 ~6 E2 q! p
    init_8253();
) v3 ]! }4 y5 f  H- N    serial_init();
2 P5 W8 x2 h) o$ X2 l& O
7 l2 {: S2 G2 j1 A8 B  b    while(1); I+ ]4 E# M$ P. d* N
    {
# b* F2 g) @8 h        if(state >=3 )                     //state代表接收的字节数                 问题就出在这个判上,   ' u1 P+ d( }: {: G9 `- |$ c: d- x
                                                                                                       有时候就会发生            
4 X  s) B' n* X- W: L          {                                                                                           state<3的情况,就是我所说) |6 N" X" r8 R# i
                                                                                                       的丢数,其实数并有丢4 c3 F7 L2 f7 _& g% [- M" I
             ……                                                                                   我觉得从理论上讲能通讯
7 v8 ?5 P0 q- H                                                                                                      一次成功就通讯N次,
! c+ U4 r3 C; o+ }8 h) `- z                                                                                                      因为同一个循环……事
9 F. k& ^0 R2 u+ s                                                                                                      实 证明错了……      
) T6 [$ T' M" o) m' G: }            }; `+ a. W- z; c8 c/ K6 r
     }: c; G! n: ~/ E, k2 H
}
/ c0 E( b6 ]/ s! X9 p% b$ k4 y; ]  m6 V4 I& d

' z% D) V# W" y% g% b+ k后来一直想为啥,在网上找了N久,终于发现有个类似的,于是在if之前多加了( t9 Z, p: |" t/ y6 @
for(timeout=0;timeout<800;timeout++); 就好了7 ^) s. }8 u- q5 R

5 s$ R! I- B" x4 x+ ?把经历写出来,可能问题很简单,我很菜鸟,不过还是希望和大家分享……3 D4 |; B/ Q5 v( I

% w6 h7 l' \9 X5 ~1 m[ 本帖最后由 卓信 于 2008-12-17 09:44 编辑 ]
回复

使用道具 举报

发表于 2008-12-17 09:55:11 | 显示全部楼层
现有的各种标准接口都不会丢数据,有时是信号电平不稳定,有时是传输问题,有时是传输干扰的问题,有时是同步问题,也可能是交叉问题,但数据应该不会是在接口中丢的,假如是你新设计的你自己的变换接口,都不太可能有这个问题,因为数学是非常死板的东西,以前用格雷码变二进制或变其他的码都是硬件,现在的接口有软件问题,但数学公式是非常可靠的,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-12-17 12:15:31 | 显示全部楼层
你从理论上讲当然不会 但是以前 就有碰到过串口通讯会出现问题的电脑  这是我们时间过程中遇到的 后来都换了联想的另一型号的电脑; |" f6 ^$ P' [3 _1 E

% v& Z0 `# G1 h+ e1 B1 p& w还有 理论上认为不可能的事情发生了 你就不知道问题出在哪了
回复 支持 反对

使用道具 举报

发表于 2008-12-17 14:28:45 | 显示全部楼层
有些问题是不知道为什么,比如到高速DSP的时候,因为它的高速,牵涉到芯片里的一些问题,但对于串口的数据问题,肯定有非常明确的答案,绝不可能是一个谁都说不清的含混说法,再高的一些问题,比如到工业控制的DP网络,有时也有各种问题,但一定有一个明确的说法,我的工程,我从来不接受含混的说法,到底是接地问题?是干扰问题?是隔离问题?是软件问题?每次我都要明确说法。只有到芯片级的问题,才有不确定的说法。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-12-17 14:49:12 | 显示全部楼层
那你对我的问题总结一个明确的说法?
回复 支持 反对

使用道具 举报

发表于 2008-12-17 15:03:48 | 显示全部楼层
我要是调试你的设备,就一定有明确的说法,  `3 a: a% Q0 A+ i' G
以前,有人对我说怎么都不能稳定,当然,你用家用PC是稳定不了,+ a+ K- B( ^* H/ ?: ^# U: q0 I
电源不稳定也影响接口,
* L8 q, m2 C8 f$ R用触屏的显示乱跳,愣说没办法,什么没办法,单独给我做接地,看还乱跳,
6 P1 Q5 b7 W0 a$ I0 s* h& z! y有些就本身不是接口的问题,是电路电平的事,一接上就跳,得找到底什么地方电平不稳定,
5 o9 T% C" \0 z% A! C# |9 ^对于串口、并口、一般工业以太网、DP网络等,我从来就不接受什么数据会丢的事情,炼着一炉钢,你告诉我数据没了,我相信不会有人接受这个说法,/ \; d; Z5 F( Y% n, C

, R5 f0 c* A/ I8 t: [5 W看你没真正干什么事情,假如你做工程的过程控制,用串口还丢数据,问人家要说法,不知道你下面怎么样,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-12-18 09:55:01 | 显示全部楼层

回复 6# 过街蛤蟆 的帖子

哈哈  我是没干过什么事情 不过我不知道你搞不搞模电和信号处理
) r7 c( g5 t% P5 f8 Q
" F* c. M( n# D4 N: |7 i# \如果你搞过 那么我对你的什么都有确定的“说法”表示深深的佩服。
回复 支持 反对

使用道具 举报

发表于 2008-12-18 11:04:17 | 显示全部楼层
好像你有些要误导我了,和我们先前说的接口传输也有些跑题了,$ P( @7 G& ^' o9 a; r  x4 ?! O, u1 e

9 i, c! m% P6 Y% @我现在作的一个东西的压力测量就是用一个高精度的压力传感器,经过模/数转换,数字信号入机控制某些对象,模拟测量设备的误差是自身的,有温度的影响等,在一定范围内可以补偿,可以通过算法的某些系数进行修正,但数字变换以后的信号就是一个确定的信号,当电路电平符合传输要求和传输距离合适的时候,数字是不会有误差的,即不会丢数据,要丢也是在模拟部分。5 ?3 g% [3 g* T" O
5 R; Q+ ^  R- g4 Y' F7 G
说事情,应按一个路说说下去,串口的数据丢失,和模转及模拟信号的处理好像没关系,转数字电路以后,丢数据我绝对是要问明白,以前一些控制配套商也有你类似的说法,从热电偶那里开始‘搅和’,都以为自动控制在中国是‘说不清’的事情,我从来不信这东西,到底是哪里的问题?肯定会搞明白的,不能以为大家都是混事的,是热电偶问题?是补偿线问题?是变换问题?是传输问题?不可能让谁混过去的,我加热和压力控制水平精度是非常高的,
" b- d0 E' A. n- }6 E5 [5 B
. v* b8 F8 W; W% X有些东西,要学习日本人,尽管某些方面我不喜欢他们,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-12-18 15:24:04 | 显示全部楼层

回复 8# 过街蛤蟆 的帖子

嗯嗯  前辈误会啦
: [. [" Z0 o  Y: A% u" o: b' l- z( u8 g. |( [* A1 e
只是我年轻气盛……其实我说的说不清和你所说的要有一个明说的对象有点不同7 o6 H9 N( _$ m7 b' r; J

6 k7 x5 y/ U! x2 o" L; C% T特别是在模电里边 涉及到高频信号和弱小信号放大的时候……有些飘忽不定的干扰真的不是你能说明白的,我确信……6 K. U/ g; V2 A$ ^; d* ~+ S- c& t
也许你说的要有个说法我理解为做事的态度好点……是一种认真的态度,我认为比较好。
回复 支持 反对

使用道具 举报

发表于 2008-12-18 16:04:55 | 显示全部楼层
呵呵,你误会了,说不上什么误解,因为我们每年作不少的事情,各种东西都有,有时调试一个东西必须要做好,有时一个环节很大,常有自动化的人和我说怎么不行,有时我就是不信,该给我做接地的,该隔离的,用质量次的信号线的,什么都见过,我就是一个环节一个环节看,看到底问题在哪里,最后都能处理掉,即使是高频的射频信号,都要处理掉,有些是基板介电常数的问题,是玻璃布的含碱量和树脂的问题,最终都能找到问题,为什么你给我用介电常数不合格的基板,
9 O3 E3 `# l5 z4 A6 Z6 i7 m
2 R" b; j0 h6 D' b/ H我其实是要说,在我国现阶段的设备,还没到说不明白的程度,在工程里面,你看日本人什么样,每个数据要写出来,谁负责,数据没处理好,你必须说为什么,
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

小黑屋|手机版|Archiver|机械社区 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2025-1-10 16:26 , Processed in 0.050407 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表