本應(yīng)用筆記討論了UART中常用串行異步通信協(xié)議的時(shí)序要求。本文介紹如何確定異步鏈路兩端UART時(shí)鐘源的容差。
背景
RS-232規(guī)范可以追溯到1962年,當(dāng)時(shí)它由電子工業(yè)聯(lián)盟(EIA)首次發(fā)布。該規(guī)范隨著時(shí)間的推移而變化,納入了更高的數(shù)據(jù)速率,并縮小了電信行業(yè)協(xié)會(huì) (TIA)、國(guó)際電信聯(lián)盟 (ITU) 和國(guó)際標(biāo)準(zhǔn)組織 (ISO) 要求之間的兼容性差距。RS-232規(guī)范的當(dāng)前版本是EIA/TIA-232-F,于1997年<>月發(fā)布。
RS-232受益于1970年代后期MSI IC的可用性,MSI IC具有以合理成本處理規(guī)范的復(fù)雜性。這些IC是通用異步接收發(fā)送器(UART)。許多大規(guī)模集成(LSI)IC(包括微控制器)現(xiàn)在都包含該功能。
通常情況下,UART的可用性促使業(yè)界以非RS-232的方式使用RS-232串行協(xié)議。常見示例包括RS-485傳輸、光隔離傳輸和使用單端物理層(即0至3.3V而不是±5V或±10V)的傳輸。本文介紹串行接口的一般時(shí)序方面,而不是握手或物理層的應(yīng)用細(xì)微差別。因此,應(yīng)用筆記適用于所有通用UART應(yīng)用。
UART定時(shí)
典型的UART幀如圖1所示。它包括一個(gè)起始位、8個(gè)數(shù)據(jù)位和一個(gè)停止位。在RS-232應(yīng)用中也可以使用其他變體。例如,數(shù)據(jù)包可以是 5、6 或 7 位長(zhǎng),可以有 2 個(gè) STOP 位,或者可以在數(shù)據(jù)包和 STOP 位之間插入一個(gè)奇偶校驗(yàn)位以進(jìn)行基本錯(cuò)誤檢測(cè)。圖1顯示了UART的發(fā)射數(shù)據(jù)(TXD)或接收數(shù)據(jù)(RXD)引腳上的信令。RS-232總線驅(qū)動(dòng)器反相和電平轉(zhuǎn)換,因此邏輯1是總線上的負(fù)電壓,邏輯0是正電壓。
圖1.典型的 UART 數(shù)據(jù)框。
當(dāng)兩個(gè)UART通信時(shí),發(fā)射器和接收器都知道信令速度。接收方不知道何時(shí)發(fā)送數(shù)據(jù)包(沒有接收方時(shí)鐘);因此,該協(xié)議被稱為“異步”。接收器電路相應(yīng)地比發(fā)射器電路復(fù)雜。發(fā)射器只需以定義的比特率輸出一幀數(shù)據(jù)。相反,接收器必須識(shí)別幀的開始以同步自身,從而確定比特流的最佳數(shù)據(jù)采樣點(diǎn)。
圖2顯示了UART接收器將自身同步到接收幀的常用方法。接收UART使用的時(shí)鐘是數(shù)據(jù)速率的16倍。新幀由/START位開頭的下降沿識(shí)別。當(dāng)信號(hào)從高電平有效STOP位或總線空閑狀態(tài)發(fā)生變化時(shí),就會(huì)發(fā)生這種情況。接收UART在此下降沿上重置其計(jì)數(shù)器,預(yù)期中間START位在8個(gè)時(shí)鐘周期后出現(xiàn),并預(yù)計(jì)此后每個(gè)后續(xù)位的中點(diǎn)每16個(gè)時(shí)鐘周期出現(xiàn)一次。START位通常在位時(shí)間中間采樣,以檢查電平是否仍然很低,并確保檢測(cè)到的下降沿是起始位,而不是噪聲尖峰。另一個(gè)改進(jìn)是對(duì) START 位進(jìn)行三次采樣(時(shí)鐘計(jì)數(shù)為 7、8 和 9,共 16 次),而不是僅在中間位位置采樣(8 次中的時(shí)鐘計(jì)數(shù)為 16)。
圖2.UART接收幀同步和數(shù)據(jù)采樣點(diǎn)。
定時(shí)精度
接收UART時(shí)鐘必須有多準(zhǔn)確才能正確接收數(shù)據(jù)?由于絕對(duì)時(shí)鐘速率對(duì)于準(zhǔn)確接收并不重要,因此更好的問題是詢問發(fā)射和接收UART時(shí)鐘的差異有多大。首先要理解的是,由于UART接收器將自身同步到每一幀的開頭,因此我們只關(guān)心一幀期間的準(zhǔn)確數(shù)據(jù)采樣。除了幀的 STOP 位之外,不會(huì)累積任何誤差,這簡(jiǎn)化了分析,因?yàn)槲覀冎恍枰谧顗那闆r下考慮一幀。
我們什么時(shí)候會(huì)因?yàn)榘l(fā)射-接收時(shí)鐘不匹配而出現(xiàn)時(shí)序錯(cuò)誤?我們的目標(biāo)是在中點(diǎn)對(duì)每個(gè)位進(jìn)行采樣(圖 2)。如果我們過(guò)早或過(guò)晚采樣半個(gè)位周期,我們將在位轉(zhuǎn)換處采樣并出現(xiàn)問題(圖 3)。
圖3.UART接收采樣范圍。
實(shí)際上,我們無(wú)法可靠地在接近位轉(zhuǎn)移點(diǎn)的地方采樣。造成這種情況的主要原因是傳輸上升和下降時(shí)間有限(通常很慢)。如果使用電容過(guò)大的電纜,這些時(shí)間會(huì)變得更慢。長(zhǎng)總線會(huì)產(chǎn)生高衰減,從而降低噪聲容限,并使在位電平建立時(shí)采樣變得更加重要。
很難定量評(píng)估比特周期內(nèi)最壞情況下可接受的采樣范圍。EIA/TIA-232-F確實(shí)規(guī)定了傳輸?shù)?%比特周期最大壓擺時(shí)間,但這對(duì)于192kbps的長(zhǎng)運(yùn)行很難實(shí)現(xiàn)。但出于本應(yīng)用筆記的目的,我們定義兩個(gè)數(shù)據(jù)路徑場(chǎng)景??紤]一個(gè)“令人討厭”的情況,它只能在中間50%的位時(shí)間內(nèi)可靠地采樣(圖4)。這可能相當(dāng)于長(zhǎng)時(shí)間的電容式RS-232運(yùn)行?!罢!眻?chǎng)景可以在中間75%的位時(shí)間內(nèi)采樣(圖5)。這相當(dāng)于設(shè)備機(jī)箱內(nèi)相對(duì)良性的總線(例如具有緩沖CMOS邏輯電平的米長(zhǎng)總線或RS-485差分對(duì))。
圖4.UART“討厭的鏈接”在50%的位時(shí)間內(nèi)可靠地采樣。
圖5.UART“正常鏈路”在75%的位時(shí)間內(nèi)可靠地采樣。
對(duì)于圖 4 和圖 5,我們可以確定,對(duì)于惡劣場(chǎng)景和正常場(chǎng)景,誤差預(yù)算分別是最佳位中心采樣點(diǎn)的 ±25% 和 ±37.5%。此錯(cuò)誤相當(dāng)于 4x UART 接收時(shí)鐘的 ±6 或 ±16 個(gè)周期。此預(yù)算中要包括的另一個(gè)錯(cuò)誤是檢測(cè)到START位下降沿時(shí)的同步錯(cuò)誤。UART很可能在檢測(cè)到START位后,從其16倍時(shí)鐘的下一個(gè)上升沿開始。由于 16x 時(shí)鐘和接收到的數(shù)據(jù)流是異步的,因此 START 位的下降沿可能發(fā)生在 16x 時(shí)鐘上升沿之后。或者,下降沿可能發(fā)生在時(shí)鐘上升沿之前,但沒有足夠的設(shè)置時(shí)間來(lái)使用它。這意味著UART在同步點(diǎn)內(nèi)置了±1位錯(cuò)誤。因此,我們的誤差預(yù)算從 ±4 或 ±6 個(gè)時(shí)鐘周期減少到 ±3 或 ±5 個(gè)周期。
我們假設(shè)短期時(shí)鐘誤差(本質(zhì)上是抖動(dòng))非常小,因此我們只考慮中期和長(zhǎng)期誤差。這些錯(cuò)誤指向發(fā)送 UART 中的不匹配,并接收在幀期間一致的 UART 時(shí)序。由于時(shí)序在START位的下降沿同步,因此最壞情況下的時(shí)序誤差將出現(xiàn)在最后一個(gè)數(shù)據(jù)采樣點(diǎn),即STOP位1。STOP 位的最佳采樣點(diǎn)是其位中心,計(jì)算公式為:
(每位 16 個(gè)內(nèi)部時(shí)鐘周期)×(1 個(gè)起始位 + 8 個(gè)數(shù)據(jù)位 + 16/9 個(gè)停止位)= (5) × (152.<>) = <> UART 接收時(shí)鐘,位于 START 位的原始下降沿之后。
現(xiàn)在我們可以以百分比形式計(jì)算允許的誤差。對(duì)于正常情況,時(shí)鐘失配誤差可能為 ±5/152 = ±3.3%。對(duì)于“討厭”的情況,它可以是 ±3/152 = ±2%。如前所述,盡管問題會(huì)在鏈路的接收端出現(xiàn),但時(shí)鐘不匹配實(shí)際上是發(fā)送和接收UART之間共享的容差問題。因此,假設(shè)兩個(gè)UART都嘗試以完全相同的比特率(波特)進(jìn)行通信,則允許的誤差可以在兩個(gè)UART之間以任何比例共享。
在同時(shí)設(shè)計(jì)鏈路兩端的系統(tǒng)中,利用允許的誤差預(yù)算很有幫助。這部分是因?yàn)閮啥说墓钍且阎?,部分是因?yàn)榭梢赃M(jìn)行權(quán)衡和節(jié)省成本。通常,鏈路兩端的時(shí)鐘源可以使用精度為±0.5%且在整個(gè)溫度和壽命范圍內(nèi)漂移為±0.5%的標(biāo)準(zhǔn)低成本陶瓷諧振器。這符合前面討論的2%的“討厭”情況。如果系統(tǒng)使用主控制器(通常是微控制器或PC)和標(biāo)準(zhǔn)100ppm晶體振蕩器作為UART時(shí)鐘源,則鏈路誤差可以減少大約一半。小心為內(nèi)部UART合成波特頻率的微控制器。根據(jù)微控制器時(shí)鐘的選擇,波特率可能不精確。如果可以確定錯(cuò)誤,則可以輕松地將其包含在鏈路錯(cuò)誤預(yù)算中。
對(duì) STOP 位進(jìn)行采樣可能看起來(lái)很奇怪,但事實(shí)確實(shí)如此。如果檢測(cè)到 STOP 位為低電平而不是預(yù)期的高電平,則 UART 通常會(huì)報(bào)告幀錯(cuò)誤。
審核編輯:郭婷
-
RS-232
+關(guān)注
關(guān)注
0文章
392瀏覽量
49981 -
uart
+關(guān)注
關(guān)注
22文章
1243瀏覽量
101625 -
發(fā)送器
+關(guān)注
關(guān)注
1文章
259瀏覽量
26873
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論