<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關(guān) 閉

          新聞中心

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

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

          作者: 時間:2010-07-06 來源:網(wǎng)絡(luò) 收藏

          引言

          本文引用地址:http://www.ex-cimer.com/article/202529.htm

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

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

          1 小數(shù)波特率發(fā)生器工作原理

            當(dāng)外部晶振或者VPB時鐘值不是標(biāo)準(zhǔn)波特率的整數(shù)倍時,波特率的設(shè)定往往會出現(xiàn)偏差。通過小數(shù)波特率發(fā)生器則可減小或者消除這種偏差。

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

            預(yù)分頻器接收VPB時鐘,并經(jīng)過指定的小數(shù)要求產(chǎn)生一個輸出時鐘,小數(shù)由該寄存器的值決定。

            在不使用小數(shù)波特率發(fā)生器時,UART1波特率由下式計算:

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

            當(dāng)使用小數(shù)波特率發(fā)生器時,則由下式計算:

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

            其中PCLK為VPB總線時鐘,U1DLM和U1DLL為標(biāo)準(zhǔn)的UART1波特率除數(shù)寄存器??梢钥闯?,MulVal / (MulVal + DivAddVal)就是用來修正波特率的小數(shù)值,被稱作校準(zhǔn)系數(shù)。它由兩個參數(shù)構(gòu)成:DivAddVal(波特率生成欲分頻除數(shù)值)和MulVal(波特率預(yù)分頻乘數(shù)值)。DivAddVal和MulVal都必須為整數(shù),且滿足:

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

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

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

          2 多位小數(shù)的分數(shù)逼近算法

          (1) 傳統(tǒng)獲取MulVal和DivAddVal整數(shù)值的方法

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

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


          上一頁 1 2 下一頁

          關(guān)鍵詞: 計算機 波特率 設(shè)備 接口

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();