• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      C*Core芯片SCI串口波特率容限優(yōu)化

      2012-07-13 03:06:30張傳演卓秀然孟召偉李紅斌
      電子設(shè)計工程 2012年3期
      關(guān)鍵詞:波特率接收器限值

      張傳演,卓秀然,孟召偉,錢 丹,李紅斌,蔡 偉

      (1.中國人民解放軍73022部隊 浙江 杭州 310024;2.福建省氣象服務(wù)中心 福建 福州 350001)

      串口(SCI)是微控制器(MCU)與外圍設(shè)備等進(jìn)行異步串行通信的接口[1]。C*Core系列芯片中含2個相同且獨(dú)立SCI,采用異步方式傳送數(shù)據(jù),但數(shù)據(jù)接受/發(fā)送速率 (波特率)統(tǒng)一,SCI模塊中有一個波特率發(fā)生器,產(chǎn)生波特率時鐘。

      SCI接受器與發(fā)生器利用波特率發(fā)生器設(shè)定速率,但設(shè)定值與實際值之間具有誤差,稱為容限誤差。一定范圍的容限值,不影響SCI數(shù)據(jù)傳輸?shù)恼_性。但隨著波特率、芯片主頻大小變化,容限值會超出允許誤差范圍,造成SCI傳輸和接受的數(shù)據(jù)不匹配現(xiàn)象。確定設(shè)定波特率、主頻與波特率容限值之間關(guān)系,研究與解決傳輸與接受雙方數(shù)據(jù)不匹配問題成為C*Core芯片工程應(yīng)用中十分重要的工作。

      1 C*Core芯片SCI波特率容限問題

      1.1 SCI波特率的發(fā)生

      SCI使用標(biāo)準(zhǔn)的異步串行傳送數(shù)據(jù)格式發(fā)送和接受串行數(shù)據(jù)[2],串行數(shù)據(jù)格式如圖1所示,圖中含兩種幀,分別為10位和11位,幀的傳輸種類由SCI控制寄存器中的M位決定:M=1,幀長 11 位;M=0,幀長 10 位。

      SCI異步傳送幀數(shù)據(jù)時,要求SCI對方按統(tǒng)一波特率接受/發(fā)送數(shù)據(jù),確保數(shù)據(jù)傳輸速率相等。為了統(tǒng)一波特率,SCI發(fā)送器及接收器中都含有一個波特率發(fā)生器如圖2所示。

      圖1 SCI數(shù)據(jù)格式Fig.1 SCI data format

      圖2 SCI發(fā)送器框圖Fig.2 SCI transmitter block diagram

      波特率發(fā)生器是一個13位的分頻器,由波特率寄存器(SCIBD)設(shè)置分頻因子(SBR[12:0])對系統(tǒng)時鐘分頻[3]。 SCI波特率可由式(1)計算得出:

      通過上式可知,波特率發(fā)生器輸出的時鐘經(jīng)16分頻后得到發(fā)送時鐘,但可直接作為接受器時鐘。SCI發(fā)送與接受端通過編程SBR[12:0]統(tǒng)一波特率。

      1.2 SCI波特率容限

      分頻因子SBR[12:0]由下列公式確定:SCI標(biāo)準(zhǔn)波特率被系統(tǒng)固定,如:4 800、9 600、115 200等。設(shè)定好分頻因子后,再由式(1)得SCI波特率。在C*Core芯片中,數(shù)據(jù)格式不支持浮點數(shù),SCI波特率與分頻因子SBR[12:0]都只為整數(shù),公式計算過程中產(chǎn)生的小數(shù)被規(guī)整,進(jìn)而產(chǎn)生規(guī)整誤差,兩次規(guī)整累積誤差導(dǎo)致接受端與發(fā)送端波特率之間誤差。例如,設(shè)系統(tǒng)時鐘40 M,標(biāo)準(zhǔn)波特率115 200位/秒,則 SBR[12:0]=21,SCI波特率計算值為:119 047,與標(biāo)準(zhǔn)波特率115 200相差3.3%。SCI容限誤差可分為兩種情況。

      1.2.1 慢數(shù)據(jù)的容限

      對于被接受數(shù)據(jù)的位速率慢于接收器波特率的情況,圖3顯示了在不發(fā)生噪聲錯誤和幀錯前提下,被接收數(shù)據(jù)最慢情況[4]。RT為數(shù)據(jù)采樣點。

      圖3 慢數(shù)據(jù)和快接收波特率的情況Fig.3 Slow and fast data baud rate

      對于M=0,幀長度為10位,接收器完成停止位采樣花費(fèi)的時間為:

      9位×16RT周期/位+10RT周期=154RT周期

      而在此時間點上發(fā)送設(shè)備RT計數(shù)數(shù)值為:

      9位×16RT周期/位+3RT周期=147RT周期

      在不出現(xiàn)錯誤的情況下接收器和發(fā)送方之間波特率相差的最大百分比為:

      對于M=1,幀長度為11,接收器完成停止位采樣花費(fèi)的時間為:

      10位×16RT周期/位+10RT周期=170RT周期

      而在此時間點上發(fā)送設(shè)備對自己的RT計數(shù)數(shù)值為:

      10位×16RT周期/位+3RT周期=163RT周期

      令這兩個時間相等,可推出,在不出現(xiàn)錯誤的情況下接收器和發(fā)送方之間波特率相差的最大百分比為:

      1.2.2 快數(shù)據(jù)的容限

      對于被接受數(shù)據(jù)的位速率快于接收器波特率的情況,圖4顯示了在不發(fā)生噪聲錯誤和幀錯前提下,被接受數(shù)據(jù)最快情況。

      圖4 快數(shù)據(jù)和慢接受波特率的情況Fig.4 Fast and slow data baud rate

      對于M=0,幀長度為10位,接收器完成停止位采樣花費(fèi)的時間為:

      9位×16RT周期/位+10RT周期=154RT周期

      而在此時間點上發(fā)送設(shè)備對自己的RT計數(shù)數(shù)值為:

      10位×16RT周期/位=160RT周期

      在不出現(xiàn)錯誤的情況下接收器和發(fā)送方之間波特率相差的最大百分比為:

      對于M=1,幀長度為11同理可推出,波特率相差的最大百分比為:

      1.3 C*Core芯片SCI波特率容限分析

      由波特率計算公式可推出各主頻下不同標(biāo)準(zhǔn)波特率對應(yīng)的發(fā)送器與接受器波特率容限誤差最大百分比。表1為fsys=5 M時,選取的5種標(biāo)準(zhǔn)波特率對應(yīng)的波特率容限。其中分頻因子由式(2)計算得出,發(fā)送方波特率由式1得出。

      表1 fsys=5 M各波特率容限Tab.1 fsys=5 M baud rate tolerance

      由表知在標(biāo)準(zhǔn)波特率為56 000和115 200時,波特率容限分別達(dá)到了11.6%和35.6%超過波特率容限允許值,傳輸時會出現(xiàn)數(shù)據(jù)不匹配現(xiàn)象,發(fā)送8個八位數(shù)據(jù),只接收到7個八位數(shù)據(jù),實驗現(xiàn)象如圖5所示。圖中左邊為波特率設(shè)置等。

      圖5中發(fā)送端波特率統(tǒng)一設(shè)為115 200,接收端由于容限誤差過大造成丟幀現(xiàn)象,丟失率:12.5%,在波特率為56 000時,同樣出現(xiàn)了丟幀現(xiàn)象。表2為fsys=20 M時,選取的5種標(biāo)準(zhǔn)波特率對應(yīng)的波特率容限。

      波特率為115 200時,容限達(dá)到了8.5%超過最大允許波特率容限,實際傳輸時經(jīng)檢測出現(xiàn)誤幀現(xiàn)象,現(xiàn)象如圖6所示。

      圖 7 中,發(fā)送器發(fā)送固定數(shù)組 a[4]={0x00,0xfe,0xea,0x32},接收器所獲數(shù)據(jù)不符,出現(xiàn)了誤幀現(xiàn)象。

      表3顯示主頻為80 M時,5種標(biāo)準(zhǔn)波特率對應(yīng)的波特率容限。

      表2 fsys=20 M各波特率容限Tab.2 fsys=20 M baud rate tolerance

      圖6 串口接收數(shù)據(jù)顯示Fig.6 Serial port to receive data in table

      表3 fsys=80 M各波特率容限Tab.3 fsys=80 M baud rate tolerance

      對比以上4表,可發(fā)現(xiàn)容限值隨主頻與標(biāo)準(zhǔn)波特率變化而變化,主頻越小、標(biāo)準(zhǔn)波特率越大可促使容限值增大。當(dāng)主頻高于一定值時,即使標(biāo)準(zhǔn)波特率設(shè)置較大,容限值依然較小。例如fsys=80 M時,波特率為115 200,容限值較小。

      2 C*Core芯片SCI波特率容限優(yōu)化

      C*Core模塊容限誤差主要來自小數(shù)規(guī)整誤差。優(yōu)化的核心是減少此誤差。圖7顯示了SCI模塊串口初始化部分配置程序,作用是通過設(shè)置的標(biāo)準(zhǔn)波特率計算分頻因子[5]。

      圖7 串口初始化分頻因子計算Fig.7 Serial frequency factor calculated initialization

      分頻因子SBR[12:0]為13位,計算時需分別計算高5位REG_SCIBDH[4:0]和低八位 REG_SCIBDL[7:0][6]。表 4 為運(yùn)行初始化程序后,計算分頻因子值與實際值對比。

      表4 分頻因子與實際值對比Tab.4 Frequency factor compared with the actual value

      通過上表可知,分頻因子實際值小數(shù)被向下規(guī)整,導(dǎo)致小數(shù)部分向下規(guī)整誤差較大,其他頻率下不同標(biāo)準(zhǔn)波特率的各計算值類似。優(yōu)化算法的核心思想是在計算分頻因子的過程中,實現(xiàn)分頻因子小數(shù)正確規(guī)整,縮小分頻因子的計算值與實際值誤差,達(dá)到正常誤差范圍。在圖7基礎(chǔ)之上,下列顯示了串口初始化程序分頻因子計算優(yōu)化程序。

      優(yōu)化程序中定義了臨時變量BDL1,首先判斷SBR[12:0]實際值小數(shù)部分是否大于0.5,若大于BDL1賦值為1加到SBR[12:0]低八位上,完成進(jìn) 1 功能;反之,BDL1 賦值為 0,不操作,完成舍四功能。

      表5為運(yùn)行優(yōu)化后的串口初始程序后,計算分頻因子值與實際值對比。

      表5 優(yōu)化后分頻因子與實際值對比Tab.5 Optimized frequency factor compared with the actual value

      對比表5與表4,分頻因子的誤差被顯著減小,這促使C*Core芯片中SCI模塊容限誤差顯著減小。表6列舉若干優(yōu)化前后波特率誤差對比情況。

      表6 優(yōu)化前后波特率容限對比Tab.6 Baud rate tolerance compared before and after optimization

      優(yōu)化后的容限不影響發(fā)送方與接受器之間數(shù)據(jù)的傳輸準(zhǔn)確性。 在實驗過程中,發(fā)送數(shù)組 a[0:4]={0x00,0xfe,0xea,0x32},主頻 20M,標(biāo)準(zhǔn)波特率為 115 200位/秒 ,利用 SCI串口連續(xù)發(fā)送了4組共16字節(jié)的數(shù)據(jù)給接收端,沒有發(fā)現(xiàn)丟幀、誤幀現(xiàn)象。此外,SCI模塊進(jìn)行了3 200組每組1.1 M隨機(jī)數(shù)采集實驗,整個過程中沒有出現(xiàn)丟幀和誤幀現(xiàn)象。

      3 結(jié)束語

      文中研究C*Core芯片中SCI模塊發(fā)送器與接受器之間波特率誤差即波特率容限問題。通過分析與總結(jié)芯片頻率、標(biāo)準(zhǔn)波特率與波特率容限誤差規(guī)律,設(shè)計了優(yōu)化串口初始化程序優(yōu)化程序。通過大量數(shù)據(jù)實驗證明,優(yōu)化后的串口初始化程序運(yùn)行后,發(fā)送端與接受端數(shù)據(jù)傳輸沒有出現(xiàn)任何丟幀與誤幀現(xiàn)象。此外,此優(yōu)化程序也適應(yīng)于不支持浮點計算的嵌入式芯片。

      [1]王宜懷,劉曉升.嵌入式應(yīng)用基礎(chǔ)基礎(chǔ)教程[M].北京:清華大學(xué)出版社,2005.

      [2]馬鳴錦,蔣烈輝,杜威,等.基于M*CORE微控制器的嵌入式系統(tǒng)[M].北京:國防工業(yè)出版版社,2003.

      [3]王宜懷,朱巧明,鄭茳.C*Core與M*Core的嵌入式系統(tǒng)[M].北京:清華大學(xué)出版社,2006.

      [4]蘇州國芯科技有限公司.CCM3118DQ Advance Information Rev[R].蘇州:國芯公司,2003.

      [5]Metrowerks CodeWarriorIDE UserGuide [EB/OL].2000[2010-11-20].http://read.pudn.com/downloads14/ebook/55460/ADS_CodeWarrior_IDEGuide.pdf.

      [6]Motorola.MMC2107 Technical Data MMC2107/DRev.2[EB/OL].Seattle:Motorola inc,2000[2011-9-2].http://www.motorolasolutions.com/CN-ZH/Home.

      猜你喜歡
      波特率接收器限值
      CAN 總線波特率自適應(yīng)程序設(shè)計
      智能制造(2020年5期)2020-07-03 06:24:00
      JXG-50S型相敏軌道電路接收器自動測試臺
      關(guān)于廢水排放特別限值的思考
      基于FPGA的異步串行通信波特率容錯設(shè)計
      電子測試(2018年7期)2018-05-16 06:27:18
      埃及
      遼寧省遼河流域石油煉制排放限值的制定
      中美煉鋼行業(yè)污染物排放限值研究
      ZPW-2000A軌道電路接收器冗余電路存在問題分析及對策
      環(huán)境保護(hù)部解讀新發(fā)布的大氣污染物特別排放限值
      IDT推出超緊湊型無線電源接收器,可節(jié)省70%板面積
      应城市| 遵义市| 浪卡子县| 卢氏县| 西吉县| 大理市| 花垣县| 雷山县| 盖州市| 建昌县| 平陆县| 鄂尔多斯市| 津市市| 紫金县| 永胜县| 馆陶县| 台湾省| 峨山| 莎车县| 萨迦县| 吉木萨尔县| 栾城县| 策勒县| 晴隆县| 革吉县| 共和县| 嘉禾县| 张家界市| 西盟| 茌平县| 手游| 云浮市| 舒城县| 公安县| 新绛县| 建宁县| 黔南| 巢湖市| 子长县| 城口县| 伊春市|