問題:
如果波特率誤差為0.16%,連續傳送多少個資料後,會出現錯誤資料
在網上看了下,都說在2.5%的誤差範圍下,可以保證可靠傳輸,可最近有個程式在誤差0.16%的情況下,連續傳送5000個資料左右後,出現一次傳送錯誤
回答1:誤差必須少於5%。當串列埠抖動的時候,ch晶元和某些低端的串列埠卡,相容性稍差。可能和取樣的演算法有關係。
起始位+資料+停止位 ,共十位,至少4倍頻才能正確採集,那麼乙個資料報至少採集40次,如果按照採集4次,有連續三個電平穩定確定為0或者1,頻率誤差就不能超過兩個採集間隔。也就是大約正負5%。實際情況跟取樣方式有關係,也可能會更加嚴格。
回答2:
其根據接收器件取樣點的不同,最大可容,許4%~5%的波特率誤差當然設計不好的uart很可能會差很多
回答3:
可實際使用時發現確實會在連續傳送幾千個資料後發生乙個或幾個錯誤,以前一直沒注意,改天試試以前用pic寫的程式看看。
哎,雖然可以利用效驗或奇偶位來剔除錯誤資料,可總覺的不踏實哦。
或者是pc端監控出的問題,看來接收與傳送都用微控制器來完成才能確定。
回答4:
非同步串列埠有起始和停止位,再加校驗位,8位位元組最多可有12位。
通常在位中間取樣,如此12位偏差50%就可能取樣錯誤造成通訊失敗,對應通訊雙方波特率偏差約50%/12=4%,
而與通訊雙方波特率高低無關,且波特率和通訊距離的乘積有上限。
串列埠波特率的理解
bit就是位,也叫位元位,是計算機中最小的單位 byte是位元組,也就是b 1位元組 byte 8位 bit 既 位只有兩種形式0和1,只能表示2種狀態,而位元組是有8個位組成的。可以表示256個狀態。1byte 8 bit,1kb 1024 byte,1mb 1024 kb,1g 1024 mb,...
關於串列埠通訊波特率的幾點思考
首先想說,12mhz真的是有問題。我使用的是 stc89c52rc的微控制器,他的最小系統板的的晶振是12mhz,但是這個開發板上買的晶振就沒寫頻率!我一直以為這是預設的11.0592mhz,因為之前用的最小系統板都是這個頻率。在沒有使用串列埠通訊的時候,不管是11.0592m還是12m,都對程式的...
linux 串列埠波特率的修改與sdma的設定
首先閱讀前人的參考文獻 1 這是有關i.mx51的sdma核心的簡短教程 喬納的部落格 eli的部落格 要是你基礎紮實,按照上面大牛的教程,基本就可以實現sdma傳輸了。2 這是恩智浦上的乙個帖子,裡面又許多大牛對dma的見解與資料首先閱讀前人的參考文獻 1 jkan2001的部落格 imx6增加u...