機械社區(qū)

 找回密碼
 注冊會員

QQ登錄

只需一步,快速開始

搜索
查看: 8291|回復: 11
打印 上一主題 下一主題

關于串口通訊丟數(shù)問題的解決

[復制鏈接]
跳轉到指定樓層
1#
發(fā)表于 2008-12-17 09:41:04 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
問題:51單片機在與電腦軟件通訊的過程中,通訊了100多次 多200多次的時候會出現(xiàn)丟數(shù)的情況
) W8 b* J9 u/ |$ N1 o原帖地址:http://bbs.eeworld.com.cn/thread-70030-1-5.html# J  @, @# T+ J; a

" r# i) |# C7 _3 j$ d+ G$ h9 v# T解決辦法:實際上數(shù)并沒有丟 只是可能電路有時候不穩(wěn) 造成了波特率的波動 導致了同步有點問題
: j! Z. `+ W' `& Q2 g原來的單片機程序:  B0 e/ X5 |" k, W
void main()  z' }" X2 Q( d5 ~4 `, J
{4 ^- s5 x7 p1 D( s: H& |
# t  A+ `  {: F; u
    P1=0xff;
4 b: w/ D& G% a# l4 H    main_init();
. ^1 S: U4 y1 m' s" ?2 T7 {" w    init_8253();' j) b" B5 x/ ~1 t3 q
    serial_init();
5 u. h9 i1 O% V& u  N1 o" o! b! {5 ~- j3 e1 ^9 R
    while(1)
, z. F9 \9 T* g! H    {
" m  b- c! e. S: ]( w/ m$ s        if(state >=3 )                     //state代表接收的字節(jié)數(shù)                 問題就出在這個判上,   
- c9 u: ]' Q$ f; N# m                                                                                                       有時候就會發(fā)生            
' E5 e$ E/ h1 u          {                                                                                           state<3的情況,就是我所說
! _  ^# c8 C3 q3 N! _7 `0 p% u                                                                                                       的丟數(shù),其實數(shù)并有丟
: |' X$ x! a2 j: L9 f" `             ……                                                                                   我覺得從理論上講能通訊9 @6 g: M% n8 L, K5 y0 B
                                                                                                      一次成功就通訊N次,
4 U6 M* p) C  J5 ~* l                                                                                                      因為同一個循環(huán)……事* |# q: h- R' j, h, D4 g; R; M  j
                                                                                                      實 證明錯了……         A/ Y5 q9 y' d4 U- p
            }
. z/ ~+ F, L, x' Q5 A  B     }: |. U) w5 w$ f/ X" O& L  ]4 s+ J
}
/ B" M# U2 S3 B: P- D) U. X( q0 n, [+ [2 }

$ A  J$ z: c8 P; h- K# p4 h: x( v/ n后來一直想為啥,在網(wǎng)上找了N久,終于發(fā)現(xiàn)有個類似的,于是在if之前多加了
- W4 ^' |1 i, ~0 d7 lfor(timeout=0;timeout<800;timeout++); 就好了
3 w: s: N0 p. R8 `5 j
7 b8 ^6 w  N5 O& d8 P! a3 W7 N把經(jīng)歷寫出來,可能問題很簡單,我很菜鳥,不過還是希望和大家分享……
+ U" B9 h7 I5 e9 U0 h( ], u6 x
8 J3 v, T' b  l, t' I[ 本帖最后由 卓信 于 2008-12-17 09:44 編輯 ]
回復

使用道具 舉報

2#
發(fā)表于 2008-12-17 09:55:11 | 只看該作者
現(xiàn)有的各種標準接口都不會丟數(shù)據(jù),有時是信號電平不穩(wěn)定,有時是傳輸問題,有時是傳輸干擾的問題,有時是同步問題,也可能是交叉問題,但數(shù)據(jù)應該不會是在接口中丟的,假如是你新設計的你自己的變換接口,都不太可能有這個問題,因為數(shù)學是非常死板的東西,以前用格雷碼變二進制或變其他的碼都是硬件,現(xiàn)在的接口有軟件問題,但數(shù)學公式是非常可靠的,
回復 支持 反對

使用道具 舉報

3#
 樓主| 發(fā)表于 2008-12-17 12:15:31 | 只看該作者
你從理論上講當然不會 但是以前 就有碰到過串口通訊會出現(xiàn)問題的電腦  這是我們時間過程中遇到的 后來都換了聯(lián)想的另一型號的電腦- b1 `" s" d$ X8 Q- b3 i  t& c0 J
) `5 U3 m/ [, h5 z
還有 理論上認為不可能的事情發(fā)生了 你就不知道問題出在哪了
回復 支持 反對

使用道具 舉報

4#
發(fā)表于 2008-12-17 14:28:45 | 只看該作者
有些問題是不知道為什么,比如到高速DSP的時候,因為它的高速,牽涉到芯片里的一些問題,但對于串口的數(shù)據(jù)問題,肯定有非常明確的答案,絕不可能是一個誰都說不清的含混說法,再高的一些問題,比如到工業(yè)控制的DP網(wǎng)絡,有時也有各種問題,但一定有一個明確的說法,我的工程,我從來不接受含混的說法,到底是接地問題?是干擾問題?是隔離問題?是軟件問題?每次我都要明確說法。只有到芯片級的問題,才有不確定的說法。
回復 支持 反對

使用道具 舉報

5#
 樓主| 發(fā)表于 2008-12-17 14:49:12 | 只看該作者
那你對我的問題總結一個明確的說法?
回復 支持 反對

使用道具 舉報

6#
發(fā)表于 2008-12-17 15:03:48 | 只看該作者
我要是調試你的設備,就一定有明確的說法,
2 @" s5 o% H* }4 X以前,有人對我說怎么都不能穩(wěn)定,當然,你用家用PC是穩(wěn)定不了,
2 I" c/ T7 \8 L6 y( J& p電源不穩(wěn)定也影響接口,
1 |2 h8 I1 r* _- y/ s用觸屏的顯示亂跳,愣說沒辦法,什么沒辦法,單獨給我做接地,看還亂跳,
8 t. F! `* f: c" G有些就本身不是接口的問題,是電路電平的事,一接上就跳,得找到底什么地方電平不穩(wěn)定,& `* h. V, g1 O
對于串口、并口、一般工業(yè)以太網(wǎng)、DP網(wǎng)絡等,我從來就不接受什么數(shù)據(jù)會丟的事情,煉著一爐鋼,你告訴我數(shù)據(jù)沒了,我相信不會有人接受這個說法,
0 j% g" |+ O, \& Y( m9 l! H4 N0 B" J! Z8 G1 B* J3 ]3 w7 }
看你沒真正干什么事情,假如你做工程的過程控制,用串口還丟數(shù)據(jù),問人家要說法,不知道你下面怎么樣,
回復 支持 反對

使用道具 舉報

7#
 樓主| 發(fā)表于 2008-12-18 09:55:01 | 只看該作者

回復 6# 過街蛤蟆 的帖子

哈哈  我是沒干過什么事情 不過我不知道你搞不搞模電和信號處理 0 z% d) n- _' `. x7 m8 C
) J: l- h/ c# ^3 L% I# a
如果你搞過 那么我對你的什么都有確定的“說法”表示深深的佩服。
回復 支持 反對

使用道具 舉報

8#
發(fā)表于 2008-12-18 11:04:17 | 只看該作者
好像你有些要誤導我了,和我們先前說的接口傳輸也有些跑題了,
" C$ ]  U7 ^" J" f5 V2 y" a, B$ e5 Z1 G6 t3 u
我現(xiàn)在作的一個東西的壓力測量就是用一個高精度的壓力傳感器,經(jīng)過模/數(shù)轉換,數(shù)字信號入機控制某些對象,模擬測量設備的誤差是自身的,有溫度的影響等,在一定范圍內可以補償,可以通過算法的某些系數(shù)進行修正,但數(shù)字變換以后的信號就是一個確定的信號,當電路電平符合傳輸要求和傳輸距離合適的時候,數(shù)字是不會有誤差的,即不會丟數(shù)據(jù),要丟也是在模擬部分。
! b% T& G# F' T: ]- d6 h' F! N' P$ N, s. j
說事情,應按一個路說說下去,串口的數(shù)據(jù)丟失,和模轉及模擬信號的處理好像沒關系,轉數(shù)字電路以后,丟數(shù)據(jù)我絕對是要問明白,以前一些控制配套商也有你類似的說法,從熱電偶那里開始‘攪和’,都以為自動控制在中國是‘說不清’的事情,我從來不信這東西,到底是哪里的問題?肯定會搞明白的,不能以為大家都是混事的,是熱電偶問題?是補償線問題?是變換問題?是傳輸問題?不可能讓誰混過去的,我加熱和壓力控制水平精度是非常高的,( H1 t' n) l1 K- J& T
% J# u! a$ u2 J; M9 Z
有些東西,要學習日本人,盡管某些方面我不喜歡他們,
回復 支持 反對

使用道具 舉報

9#
 樓主| 發(fā)表于 2008-12-18 15:24:04 | 只看該作者

回復 8# 過街蛤蟆 的帖子

嗯嗯  前輩誤會啦
2 @% O: p/ f4 t; C& g/ |4 j; p& n3 t& A4 N7 ~6 F
只是我年輕氣盛……其實我說的說不清和你所說的要有一個明說的對象有點不同1 m% m; l: y- o$ }
$ {! |( Y8 r4 }1 N5 x2 ]
特別是在模電里邊 涉及到高頻信號和弱小信號放大的時候……有些飄忽不定的干擾真的不是你能說明白的,我確信……
7 y, p# s  Y3 m# ]3 F6 w3 }' P也許你說的要有個說法我理解為做事的態(tài)度好點……是一種認真的態(tài)度,我認為比較好。
回復 支持 反對

使用道具 舉報

10#
發(fā)表于 2008-12-18 16:04:55 | 只看該作者
呵呵,你誤會了,說不上什么誤解,因為我們每年作不少的事情,各種東西都有,有時調試一個東西必須要做好,有時一個環(huán)節(jié)很大,常有自動化的人和我說怎么不行,有時我就是不信,該給我做接地的,該隔離的,用質量次的信號線的,什么都見過,我就是一個環(huán)節(jié)一個環(huán)節(jié)看,看到底問題在哪里,最后都能處理掉,即使是高頻的射頻信號,都要處理掉,有些是基板介電常數(shù)的問題,是玻璃布的含堿量和樹脂的問題,最終都能找到問題,為什么你給我用介電常數(shù)不合格的基板,
* Y0 q0 c1 I# k. P: p3 _
8 U4 R3 u3 A5 H5 |0 T7 I我其實是要說,在我國現(xiàn)階段的設備,還沒到說不明白的程度,在工程里面,你看日本人什么樣,每個數(shù)據(jù)要寫出來,誰負責,數(shù)據(jù)沒處理好,你必須說為什么,
回復 支持 反對

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 注冊會員

本版積分規(guī)則

小黑屋|手機版|Archiver|機械社區(qū) ( 京ICP備10217105號-1,京ICP證050210號,浙公網(wǎng)安備33038202004372號 )

GMT+8, 2024-9-28 19:25 , Processed in 0.055182 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回復 返回頂部 返回列表