CortexM0开发 —— UART时序分析
通用異步收發傳輸器(UniversalAsynchronousReceiver/Transmitter),通常稱作UART,是一種異步收發傳輸器。將數據由串行通信與并行通信間作傳輸轉換,作為并行輸入成為串行輸出的芯片UART是一種通用串行數據總線,用于異步通信。該總線雙向通信,可以實現全雙工傳輸和接收。?
1、UART通信協議
? ? ? UART作為異步串口通信協議的一種,工作原理是將傳輸數據的每個字符一位接一位地傳輸。?
? ? ? 其中每一位(Bit)的意義如下:?
起始位:先發出一個邏輯”0”的信號,表示傳輸字符的開始。
數據位:緊接著起始位之后。數據位的個數可以是4、5、6、7、8等,構成一個字符。通常采用ASCII碼。從最低位開始傳送,靠時鐘定位。?
奇偶校驗位:數據位加上這一位后,使得“1”的位數應為偶數(偶校驗)或奇數(奇校驗),以此來校驗數據傳送的正確性。?
停止位:它是一個字符數據的結束標志。可以是1位、1.5位、2位的高電平。由于數據是在傳輸線上定時的,并且每一個設備有其自己的時鐘,很可能在通信中兩臺設備間出現了小小的不同步。因此停止位不僅僅是表示傳輸的結束,并且提供計算機校正時鐘同步的機會。適用于停止位的位數越多,不同時鐘同步的容忍程度越大,但是數據傳輸率同時也越慢。
空閑位:處于邏輯“1”狀態,表示當前線路上沒有數據傳送。
UART協議傳輸時序如圖1所示:
2、UART工作原理?
發送數據過程:空閑狀態,線路處于高電位;當收到發送數據指令后,拉低線路一個數據位的時間T,接著數據按低位到高位依次發送,數據發送完畢后,接著發送奇偶校驗位和停止位(停止位為高電位),一幀數據發送結束。
接收數據過程:空閑狀態,線路處于高電位;當檢測到線路的下降沿(線路電位由高電位變為低電位)時說明線路有數據傳輸,按照約定的波特率從低位到高位接收數據,數據接收完畢后,接著接收并比較奇偶校驗位是否正確,如果正確則通知后續設備準備接收數據或存入緩存。?
? ? ? ?由于UART是異步傳輸,沒有傳輸同步時鐘。為了能保證數據傳輸的正確性,UART采用16倍數據波特率的時鐘進行采樣。每個數據有16個時鐘采樣,取中間的采樣值,以保證采樣不會滑碼或誤碼。一般UART一幀的數據位數為8,這樣即使每個數據有一個時鐘的誤差,接收端也能正確地采樣到數據。
? ? ??UART的接收數據時序為:當檢測到數據的下降沿時,表明線路上有數據進行傳輸,這時計數器CNT開始計數,當計數器為24=16+8時,采樣的值為第0位數據;當計數器的值為40時,采樣的值為第1位數據,依此類推,進行后面6個數據的采樣。如果需要進行奇偶校驗,則當計數器的值為152時,采樣的值即為奇偶位;當計數器的值為168時,采樣的值為"1"表示停止位,一幀數據接收完成。
3、UART波特率發生器?
? ? ? 波特率是衡量數據傳輸速率的指標,表示每秒傳送數據的字符數,單位為Baud。UART的接收和發送是按照相同的波特率進行收發的。波特率發生器產生的時鐘頻率不是波特率時鐘頻率,而是波特率時鐘頻率的16倍,目的是為在接收時進行精確地采樣,以提取出異步的串行數據。根據給定的晶振時鐘和要求的波特率,可以算出波特率分頻計數值。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的CortexM0开发 —— UART时序分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: flash builder 4.7 de
- 下一篇: 【Unity3D】人体模型及动画