新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > AVR單片機串口的波特率設置

        AVR單片機串口的波特率設置

        作者: 時間:2016-11-30 來源:網絡 收藏
        公司有一款產品要實現通過串口更新開機畫面的功能。產品用的是AVR的ATmega8單片機,配有兩個通用同步和異步串行接收器和轉發器(USART) 。在芯片的數據文檔里給出了波特率寄存器UBRR的值的計算公式。

        可是實際測試才發現,就算出的值根本不能用。也就是說,用算出的值發出的波特率根本不是想要的波特率。百思不得其解,只好上網搜搜看有沒有收獲。果然,網上有個仁兄的癥狀和我一樣,也是波特率不對。看了后面的回答,覺得有一個挺靠譜的,大概是說,在用了AVR的內部RC振蕩器的情況下,實際波特率會和計算值有偏差。因為芯片的內部RC振蕩器頻率不像外部晶振的頻率那么穩定。
        在不增加外部晶振的情況下,如何解決問題呢?在網沒有找到什么方法,只好自己用笨方法了。上示波器,看單片機發出的波形的寬度,和標準的波特率的寬度對比,再一點點的在UBRR的計算值的基礎上修正,直到單片機發出的波形正確為止。
        以下是我測試出的一組UBRR的實際值,希望對有需要的朋友有用。

        注:
        芯片型號:ATmega8L 使用模式:異步倍速模式(U2X = 1) 時鐘源:內部RC振蕩器 時鐘頻率:8Mhz
        波特率寄存器(UBRR)計算公式:UBRR = f / (8*BAUD) - 1 (其中BAUD為期望波特率的值,f為時鐘頻率的值)

        本文引用地址:http://www.104case.com/article/201611/323816.htm

        波特率

        UBRR實際值

        UBRR計算值

        9600

        96

        103.16

        14400

        64

        68.44

        19200

        48

        51.08

        28800

        31

        33.72

        38400

        22

        25.04

        56000

        15

        16.85

        57600

        15

        16.36

        115200

        未測試

        7.68

        128000

        未測試

        6.81




        評論


        技術專區

        關閉
        主站蜘蛛池模板: 吐鲁番市| 山东| 安阳县| 山西省| 五指山市| 巴彦淖尔市| 新绛县| 吴川市| 清镇市| 日土县| 宝坻区| 军事| 内丘县| 新晃| 贞丰县| 忻城县| 博罗县| 云霄县| 苏尼特左旗| 开化县| 桃园市| 金川县| 肇东市| 隆德县| 垦利县| 彰武县| 宁明县| 时尚| 濮阳县| 隆德县| 柳河县| 平远县| 固安县| 分宜县| 乐昌市| 玉树县| 玉门市| 霍城县| 吉木萨尔县| 古交市| 呼图壁县|