關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > 計算機多設備接口波特率不匹配的研究

        計算機多設備接口波特率不匹配的研究

        作者: 時間:2010-07-06 來源:網絡 收藏

        引言

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

          不同在傳輸數據時所要求的頻率往往不同,而在一些僅使用一個晶振的系統上,如果一個的頻率完全匹配,那么其他所使用的頻率往往就不完全符合要求。例如,為了實現USB總線的48 MHz的傳輸頻率,一般可以用12 MHz的晶振來倍頻得到,而12 MHz的晶振在進行串口通信時由于與標準不成倍數關系,因而期望和實際往往不同。
        在波特率較低時,這種誤差影響不大。例如,期望波特率為57 600 bps時,實際波特率為57 692 bps,傳輸正常;而當期望波特率高達115 200 bps時,則實際波特率為125 000 bps,誤差較大。實驗結果表明,此時如不對其進行修正,則無法進行正確傳輸。

          筆者通過實驗研究證明,通過使用小數波特率發生器,完全可以像低波特率時一樣正確地傳輸,實現了多位小數的分數逼近法的算法,避免了人工計算過程,徹底實現了波特率計算和修正的自動化。

        1 小數波特率發生器工作原理

          當外部晶振或者VPB時鐘值不是標準波特率的整數倍時,波特率的設定往往會出現偏差。通過小數波特率發生器則可減小或者消除這種偏差。

          下面以LPC214x處理器的串口UART1為例闡述小數波特率發生器的工作原理。要使用小數波特率發生器,需要設置小數分頻寄存器(U1FDR),該寄存器控制產生波特率的時鐘分頻器。

          預分頻器接收VPB時鐘,并經過指定的小數要求產生一個輸出時鐘,小數由該寄存器的值決定。

          在不使用小數波特率發生器時,UART1波特率由下式計算:

        UART1baudrate = PCLK/(16×(256×U1DLM+U1DLL))

          當使用小數波特率發生器時,則由下式計算:

        UART1baudrate = [PCLK/(16 ×(256 × U1DLM + U1DLL))] ×(MulVal / (MulVal + DivAddVal)

          其中PCLK為VPB總線時鐘,U1DLM和U1DLL為標準的UART1波特率除數寄存器。可以看出,MulVal / (MulVal + DivAddVal)就是用來修正波特率的小數值,被稱作校準系數。它由兩個參數構成:DivAddVal(波特率生成欲分頻除數值)和MulVal(波特率預分頻乘數值)。DivAddVal和MulVal都必須為整數,且滿足:

        1 ≤ MulVal≤ 15,0 ≤ DivAddVal ≤ 15。

          根據以上公式很容易計算串口波特率,但是實際應用中,更多的是在使用非標準晶振時確定波特率校準系數,即設定U1FDR寄存器DivAddVal和MulVal的值。確定波特率校準系數可以分如下3步進行:

        ① 確定除數鎖存器的值: 根據需要的波特率bps,按照沒有校準系數的波特率計算公式確定除數鎖存器的值(DLM,DLL)。由于采用非標準晶振,得到的結果通常為小數。無論小數值大小,均舍棄小數部分的值,對結果進行取整操作(不是四舍五入),得到除數鎖存器的值。
        ② 確定校準前的波特率: 將①得到的除數值(DLM,DLL)代入不帶校準系數的串口波特率計算公式,得到未經過校準的波特率BPS。
        ③ 確定校準系數p: p=bps/BPS=MulVal/(MulVal+DivAddVal)
        根據限制條件1≤MulVal≤15和0≤DivAddVal≤15,尋找合適的值,使得到誤差盡可能小的校準系數。

        2 多位小數的分數逼近算法

        (1) 傳統獲取MulVal和DivAddVal整數值的方法

          假設系統晶振為12 MHz,擬設定波特率bps為115 200 bps,根據前面所述校準系數的確定過程,12 000 000/(16×115 200)=6.51,取6為除數值,那么BPS=12 000 000/[16×(256×0+6)]=125 000 bps,所以p=bps/BPS=0.921 6。

          傳統獲取MulVal和DivAddVal整數值的方法大多依靠經驗技巧或者反復試驗。如參考文獻2《深入淺出ARM7LPC214x下》中,第77頁描述的那樣:


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 岳普湖县| 普洱| 塔河县| 中西区| 三原县| 什邡市| 山西省| 安西县| 胶南市| 平江县| 门头沟区| 新密市| 淮阳县| 台江县| 常德市| 黎平县| 丰顺县| 肥东县| 辽源市| 普兰县| 安化县| 凌源市| 吉木萨尔县| 斗六市| 潜江市| 新闻| 咸丰县| 车致| 通山县| 阜城县| 理塘县| 景宁| 鄂伦春自治旗| 灯塔市| 广昌县| 天峨县| 涪陵区| 广元市| 杂多县| 临沧市| 北流市|