標(biāo)題: 哪個(gè)壇友知道單片機(jī)波特率誤差是如何計(jì)算出來的? [打印本頁]

作者: QWE4562012    時(shí)間: 2020-10-10 18:12
標(biāo)題: 哪個(gè)壇友知道單片機(jī)波特率誤差是如何計(jì)算出來的?
如題

51hei圖片20201010164849.jpg (56.03 KB, 下載次數(shù): 78)

51hei圖片20201010164849.jpg

作者: QWE4562012    時(shí)間: 2020-10-12 18:41
哪個(gè)知道的 回復(fù)下   謝謝
作者: man1234567    時(shí)間: 2020-10-13 11:40
首先,第一個(gè)在5600時(shí)也有偏差的只是未列入而已并不是完美;
其次,原理上先有波特率后有時(shí)鐘頻率,后者要順應(yīng)前者;
然后就是計(jì)算了,定時(shí)器時(shí)間取整體,每秒波特率你算一下就知道了。

太長不看:11.0592MHZ是應(yīng)波特率而定制的晶振。
作者: QWE4562012    時(shí)間: 2020-10-13 15:06
man1234567 發(fā)表于 2020-10-13 11:40
首先,第一個(gè)在5600時(shí)也有偏差的只是未列入而已并不是完美;
其次,原理上先有波特率后有時(shí)鐘頻率,后者要 ...

我看了下  但是真的沒看懂 有人說直接 用時(shí)鐘頻率/分頻數(shù)/定時(shí)器初值  比如需要115200的波特率  而時(shí)鐘頻率是24M  假如是4分頻    就是{[24000000/4]/[24000000/4/115200]-115200}/115200  *100%   對不對??
作者: QWE4562012    時(shí)間: 2020-10-13 15:19
man1234567 發(fā)表于 2020-10-13 11:40
首先,第一個(gè)在5600時(shí)也有偏差的只是未列入而已并不是完美;
其次,原理上先有波特率后有時(shí)鐘頻率,后者要 ...

我看了下  但是真的沒看懂 有人說直接 用時(shí)鐘頻率/分頻數(shù)/定時(shí)器初值  比如需要115200的波特率  而時(shí)鐘頻率是24M  假如是4分頻    就是{[24000000/4]/[24000000/4/115200]-115200}/115200  *100%   對不對??

1.jpg (270.82 KB, 下載次數(shù): 73)

1.jpg

作者: Y_G_G    時(shí)間: 2020-10-13 19:49
11.0592MHZ是專門為波特率生產(chǎn)的晶振
你這個(gè)表是8051單片機(jī)專用的波特率計(jì)算,別的單片機(jī)不一樣算法,不通用的
你知道怎么計(jì)算也沒有用
在這之前,你要知道波特率是什么意思,不是網(wǎng)上那什么速率什么的,而是要完全明白波特率才行
比如:1200波特率是表示1秒傳送的數(shù)據(jù)位是1200位
然后你還要知道8051定時(shí)器作為波特率輸出的工作模式,每個(gè)寄存器位的意義是什么,你肯定沒看明白,看了就不會問這個(gè)了
別人說就是除這個(gè)除那個(gè),最后就是這個(gè),你只能一臉的茫然

你要是只想知道這誤差怎么來的,前面的話不用看,拿晶振頻率去除以波特率,11.0592是可以被左邊的波特率整除的,這就沒有誤差了
作者: QWE4562012    時(shí)間: 2020-10-14 17:44
Y_G_G 發(fā)表于 2020-10-13 19:49
11.0592MHZ是專門為波特率生產(chǎn)的晶振
你這個(gè)表是8051單片機(jī)專用的波特率計(jì)算,別的單片機(jī)不一樣算法,不通用 ...

你知道怎么計(jì)算嗎  比如用12M晶振  波特率115200  會有多少的誤差
作者: Y_G_G    時(shí)間: 2020-10-15 08:56
QWE4562012 發(fā)表于 2020-10-14 17:44
你知道怎么計(jì)算嗎  比如用12M晶振  波特率115200  會有多少的誤差

哥們,重點(diǎn)不在這好嗎!這不是波特率的問題!所謂1200波特率就是1秒傳輸1200個(gè)位而已
重點(diǎn)在8051定時(shí)器的工作方式,8051定時(shí)器的工作方式,8051定時(shí)器的工作方式!說了3遍了
1200波特率就是要定時(shí)器1的溢出頻率為1200HZ,那就是要定時(shí)器產(chǎn)生1200HZ的頻率,那就去設(shè)置定時(shí)器1
這個(gè)時(shí)候波特率的計(jì)算不就變成了對定時(shí)器1的操作了嗎?怎么樣讓定時(shí)器1輸出1200HZ的頻率呢?
這個(gè)說不明白的,從8051的時(shí)鐘周期到機(jī)器周期,再到定時(shí)器1的分頻模式,然后就是定時(shí)器的五六種工作模式,這是編程,不是種田,不能說先這樣然后那樣就可以了,每個(gè)寄存器每個(gè)位的操作都是有嚴(yán)格要求的,你要從8051系統(tǒng)工作方式開始看才能明白的,而且,這個(gè)只是針對8051的某個(gè)型號的單片機(jī)而已,并不通用,這要對單片機(jī)很了解才行,三言兩語說不明白,我寧愿打那么多字,都不想從8051的時(shí)鐘周期開始解釋到定時(shí)器1的工作模式

作者: 木羽之靈    時(shí)間: 2021-4-10 16:30
https://blog.csdn.net/cr2269736819/article/details/79780989
你可以參考上述網(wǎng)址的回答。
總的來說,誤差計(jì)算的方法是一樣的,Error= (當(dāng)前波特率 – 標(biāo)準(zhǔn)波特率)/標(biāo)準(zhǔn)波特率 * 100%。
當(dāng)前波特率,就是你采用你的晶振和設(shè)定的定時(shí)器初值,算出來的波特率;這個(gè)波特率本身不是你想要的,因?yàn)榇蠹也ㄌ芈室话愣既?biāo)準(zhǔn)值,比如1200,2400,4800,9600等等。舉個(gè)例子,波特率你想取4800,但是由于晶振不是11.0592Mhz,你定時(shí)器算下來一定不是整數(shù),但是你只能取整,假設(shè)這個(gè)整數(shù)是x。你把這個(gè)整數(shù)x帶入到計(jì)算波特率的公式,求出來的波特率就是這個(gè)當(dāng)前波特率。
標(biāo)準(zhǔn)波特率就是,你一開始想要取的理想值,比如上面例子里說的4800。
總的來說,誤差都是:實(shí)際值相對于理想值來計(jì)算的
作者: 木羽之靈    時(shí)間: 2021-4-10 16:35
https://blog.csdn.net/cr2269736819/article/details/79780989
你可以參考上面的鏈接。
總的來說,誤差都是:實(shí)際值相對于理想值計(jì)算的。公式為:誤差= (實(shí)際波特率 – 理想波特率)/理想波特率 * 100%。
波特率,大家都是取標(biāo)準(zhǔn)值,比如1200,2400,4800,9600。這些標(biāo)準(zhǔn)值就是理想值。
你的時(shí)鐘如果不是11.0592,定時(shí)器的初值算下來就不是整數(shù),但是寄存器你只能取整數(shù)。假設(shè)這個(gè)整數(shù)是x,你用這個(gè)整數(shù)x再帶入到計(jì)算波特率的公式,求得的值,就是實(shí)際波特率。
這么說理解了嗎
作者: 跨7海的風(fēng)    時(shí)間: 2021-4-16 09:00
晶振 是關(guān)鍵




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1