国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

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

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

張傳演,卓秀然,孟召偉,錢(qián) 丹,李紅斌,蔡 偉

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

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

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

1 C*Core芯片SCI波特率容限問(wèn)題

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

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

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

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

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

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

通過(guò)上式可知,波特率發(fā)生器輸出的時(shí)鐘經(jīng)16分頻后得到發(fā)送時(shí)鐘,但可直接作為接受器時(shí)鐘。SCI發(fā)送與接受端通過(guò)編程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ù)格式不支持浮點(diǎn)數(shù),SCI波特率與分頻因子SBR[12:0]都只為整數(shù),公式計(jì)算過(guò)程中產(chǎn)生的小數(shù)被規(guī)整,進(jìn)而產(chǎn)生規(guī)整誤差,兩次規(guī)整累積誤差導(dǎo)致接受端與發(fā)送端波特率之間誤差。例如,設(shè)系統(tǒng)時(shí)鐘40 M,標(biāo)準(zhǔn)波特率115 200位/秒,則 SBR[12:0]=21,SCI波特率計(jì)算值為:119 047,與標(biāo)準(zhǔn)波特率115 200相差3.3%。SCI容限誤差可分為兩種情況。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

波特率為115 200時(shí),容限達(dá)到了8.5%超過(guò)最大允許波特率容限,實(shí)際傳輸時(shí)經(jīng)檢測(cè)出現(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時(shí),5種標(biāo)準(zhǔn)波特率對(duì)應(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

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

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

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

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

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

表4 分頻因子與實(shí)際值對(duì)比Tab.4 Frequency factor compared with the actual value

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

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

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

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

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

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

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

3 結(jié)束語(yǔ)

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

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

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

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

[4]蘇州國(guó)芯科技有限公司.CCM3118DQ Advance Information Rev[R].蘇州:國(guó)芯公司,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.

猜你喜歡
波特率接收器限值
UART 波特率檢測(cè)電路的FPGA 設(shè)計(jì)算法與實(shí)現(xiàn)
CAN 總線(xiàn)波特率自適應(yīng)程序設(shè)計(jì)
JXG-50S型相敏軌道電路接收器自動(dòng)測(cè)試臺(tái)
波特率自適應(yīng)的CAN驅(qū)動(dòng)在嵌入式Linux下的實(shí)現(xiàn)①
遼寧省遼河流域石油煉制排放限值的制定
詳解lAP15W4K58S4單片機(jī)的串行口通信
新型二取二結(jié)構(gòu)的25Hz微電子相敏接收器數(shù)據(jù)處理方法研究
中美煉鋼行業(yè)污染物排放限值研究
蓄電池SOC限值下的微電網(wǎng)協(xié)調(diào)控制策略研究
環(huán)境保護(hù)部解讀新發(fā)布的大氣污染物特別排放限值