第七章UART串行接口_第1頁
第七章UART串行接口_第2頁
第七章UART串行接口_第3頁
第七章UART串行接口_第4頁
第七章UART串行接口_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

第七章UART串行接口第一頁,共四十七頁,2022年,8月28日教學目的:了解80C51系列單片機UART串行接口的結構、原理及應用;能夠采用查詢方式進行串行通信。教學重點:1.UART串行接口的工作原理;2.UART串行接口的4種工作方式的編程、應用。教學難點:1.多機通信方式2.波特率值的設置第二頁,共四十七頁,2022年,8月28日7.1串行通信概述在實際應用中,不但計算機與外部設備之間常常要進行信息交換,而且計算機之間也需要交換信息,所有這些信息的交換均稱為“通信”。通信有并行通信和串行通信兩種方式。在多微機系統(tǒng)以及現(xiàn)代測控系統(tǒng)中信息的交換多采用串行通信方式。第三頁,共四十七頁,2022年,8月28日并行通信并行通信:所傳送數(shù)據(jù)的各位用多條數(shù)據(jù)線同時發(fā)送或接收。并行通信控制簡單、傳輸速度快;由于傳輸線較多,長距離傳送時成本高且接收方的各位同時接收存在困難。第四頁,共四十七頁,2022年,8月28日串行通信串行通信:所傳送數(shù)據(jù)的各位按順序一位一位地發(fā)送或接收。串行通信的特點:傳輸線少,長距離傳送時成本低,且可以利用電話網(wǎng)等現(xiàn)成的設備,但數(shù)據(jù)的傳送控制比并行通信復雜。第五頁,共四十七頁,2022年,8月28日7.1.1同步通信和異步通信方式1、異步通信ASYNC(AsynchronousDataCommunication)異步通信是以字符(構成的幀)為單位進行傳輸(也稱為幀格式),字符與字符之間的間隙(時間間隔)是任意的,但每個字符中的各位是以固定的時間傳送的,即字符之間是異步的(字符之間不一定有“位間隔”的整數(shù)倍的關系),但同一字符內(nèi)的各位是同步的(各位之間的距離均為“位間隔”的整數(shù)倍)。第六頁,共四十七頁,2022年,8月28日一個字符由起始位、數(shù)據(jù)位、奇偶校驗位和停止位4個部分組成。起始位為0信號占1位;其后接著的就是數(shù)據(jù)位,它可以是5位、6位、7位或8位,傳送時低位在先、高位在后;再后面的1位為奇偶校驗位,可要也可以不要;最后是停止位,它用信號1來表示字符的結束,可以是1位、1位半或2位。第七頁,共四十七頁,2022年,8月28日起始位:通信線上沒有數(shù)據(jù)傳送時,為高電平(邏輯1);當要發(fā)送數(shù)據(jù)時,首先發(fā)1個低電平信號(邏輯0),此信號稱為“起始位”,表示開始傳輸1幀數(shù)據(jù)。數(shù)據(jù)位:起始位之后的位即數(shù)據(jù)位。一般從最低位開始傳送,最高位在最后。奇偶校驗位:通過對數(shù)據(jù)奇偶性的檢查,可用于判別字符傳送的正確性,有3種可能的選擇,即奇、偶、無校驗。通信雙方須事先約定是采用奇校驗還是偶校驗。停止位:表示一幀結束,用高電平(邏輯1)表示。停止位可以是1、1.5或2位。第八頁,共四十七頁,2022年,8月28日例如,采用串行異步通信方式傳送ASCII碼字符‘5’,規(guī)定為7位數(shù)據(jù)位,1位偶校驗位,1位停止位,無空閑位。由于‘5’的ASCII碼為35H,其對應7位數(shù)據(jù)位為0110101,如按低位在前、高位在后順序排列應為1010110。前面加1位起始位,后面配上偶校驗位1位0,最后面加1位停止位1,因此傳送的字符格式為0101011001,其對應的波形如圖所示。傳送ASCII碼字符‘5’的波形圖第九頁,共四十七頁,2022年,8月28日在串行異步傳送中,CPU與外設之間事先必須約定:①字符格式。雙方要事先約定字符的編碼形式、奇偶校驗形式及起始位和停止位的規(guī)定。例如用ASCII碼通信,有效數(shù)據(jù)為7位,加1個奇偶校驗位、1個起始位和1個停止位共10位。當然停止位也可大于1位。②波特率(Baudrate)。波特率就是數(shù)據(jù)的傳送速率,即每秒鐘傳送的二進制位數(shù),單位為位/秒。異步通信的特點:不要求收發(fā)雙方時鐘的嚴格一致,實現(xiàn)容易,設備開銷較小,但每個字符要附加2~3位用于起止位,各幀之間還有間隔,因此傳輸效率不高。第十頁,共四十七頁,2022年,8月28日2、同步通信SYNC(SynchronousDataCommunication)在異步傳送中,每1個字符都要用起始位和停止位作為字符開始和結束的標志,占用了一定的時間。為了提高傳送速度,有時就去掉這些標志,而采用同步傳送,即1次傳送1組數(shù)據(jù)。在這1組數(shù)據(jù)的開始處要用同步字符SYN(1~2個)來加以指示,實現(xiàn)發(fā)送端和接收端同步。一旦檢測到約定同步字符,下面就連續(xù)、順序地發(fā)送和接受數(shù)據(jù)。第十一頁,共四十七頁,2022年,8月28日同步通信時要建立發(fā)送方時鐘對接收方時鐘的直接控制,使雙方達到完全同步。此時,傳輸數(shù)據(jù)的位之間的距離均為“位間隔”的整數(shù)倍,同時傳送的字符間不留間隙,即保持位同步關系,也保持字符同步關系。同步通信所傳輸?shù)囊粠瑪?shù)據(jù)可以是任意位。所以傳輸?shù)男瘦^高,但實現(xiàn)的硬件設備比異步通信復雜。第十二頁,共四十七頁,2022年,8月28日7.1.2串行通信的數(shù)據(jù)傳送速率傳送速率是指數(shù)據(jù)傳送的速度。在串行通信中數(shù)據(jù)傳送速率的單位用波特率(Baudrate)表示,其意義是每秒鐘傳送多少位二進制數(shù)。單位為b/s或bps波特率與字符的傳送速率(字符/秒)之間存在如下關系:波特率=位/字符×字符/秒=位/秒例如,假設字符傳送的速率為120字符/秒,而每1個字符為10位,那么傳送的波特率為:10位/字符×120字符/秒=1200位/秒=1200波特每1位二進制位的傳送時間Td就是波特率的倒數(shù),例如上例中:Td=1/1200=0.833ms第十三頁,共四十七頁,2022年,8月28日7.1.3串行通信的方式串行通信的數(shù)據(jù)傳送方向有3種形式。單工(Simplex):只允許單方向傳送,只需一條數(shù)據(jù)線。半雙工(HalfDuplex):接收和發(fā)送分時雙向進行,只需一條數(shù)據(jù)線。全雙工(FullDuplex):甲、乙兩機之間數(shù)據(jù)的發(fā)送和接收可以同時進行,通信必須使用二根數(shù)據(jù)線。圖7-2通信方式示意圖第十四頁,共四十七頁,2022年,8月28日7.1.4通信協(xié)議計算機之間進行數(shù)據(jù)傳輸時的一些約定,包括通信方式、幀格式、波特率、命令碼的約定等。第十五頁,共四十七頁,2022年,8月28日7.280C51串行口簡介80C51的串行口是一個可編程的全雙工串行通信接口,通過軟件編程它可以做通用異步接收和發(fā)送器UART(UniversalAsynchronousReceiver/Transmitter),也可做同步移位寄存器用。其幀格式可設置8位、10位或11位,并能設置不同的波特率。第十六頁,共四十七頁,2022年,8月28日7.2.1串行口結構與工作原理圖7-3串行口結構框圖第十七頁,共四十七頁,2022年,8月28日主要由接收與發(fā)送緩沖寄存器SBUF、輸入移位寄存器以及串行控制寄存器SCON等組成。波特率發(fā)生器可以利用定時器T1或T2控制發(fā)送和接收的速率。SCON用于存放串行口的控制和狀態(tài)信息。發(fā)送數(shù)據(jù)緩沖寄存器SBUF用于存放準備發(fā)送出去的數(shù)據(jù);接收數(shù)據(jù)緩沖寄存器SBUF用于接收由外部輸入到輸入移位寄存器中的數(shù)據(jù)。80C51串行口正是通過對上述專用寄存器的設置、檢測與讀取來管理串行通信。第十八頁,共四十七頁,2022年,8月28日串行口的接收發(fā)送操作:首先對串行口初始化。發(fā)送時CPU寫SBUF

,一方面修改發(fā)送寄存器,同時啟動數(shù)據(jù)串行發(fā)送到TXD端,發(fā)送完畢后置標志位TI;接收時置允許接收位REN才開始接受操作,接受完畢置位RI,這時CPU可以讀SBUF,即讀接收到的數(shù)據(jù)。第十九頁,共四十七頁,2022年,8月28日發(fā)送操作:數(shù)據(jù)寫入發(fā)送緩沖寄存器SBUF(99H),串行口即把8位數(shù)據(jù)以fosc/12波特率從RXD端送出(低位在前),TXD端送出同步移位脈沖,發(fā)送完后置中斷標志TI=1。MOVTMOD,#00HMOVSBUF,#dataJNBTI,$CLRTIRET第二十頁,共四十七頁,2022年,8月28日接收操作:REN是串行口接收器允許接收控制位。當RI=0,軟件置REN為1時,即開始從RXD端以fosc/12波特率輸入數(shù)據(jù)(低位在前),TXD端送出同步移位脈沖,當接收到8位數(shù)據(jù)時,置中斷標志RI=1。RECV:MOVTMOD,#00HCLRRISETBRENJNBRI,$MOVA,SBUFCLRRIRET第二十一頁,共四十七頁,2022年,8月28日7.2.2串行口寄存器與串行口工作有關的寄存器有6個:串行口控制寄存器SCON、接收與發(fā)送緩沖寄存器SBUF、電源控制寄存器PCON、中斷允許控制寄存器IE、中斷優(yōu)先級寄存器IP。第二十二頁,共四十七頁,2022年,8月28日1、串行口控制寄存器SCON用于串行通信的方式選擇、接收和發(fā)送控制,并可反映串行口的工作狀態(tài)SM0、SM1:串行方式選擇位第二十三頁,共四十七頁,2022年,8月28日SM2:多機通信控制位主要用于方式2和方式3。當接收機的SM2=1時可以利用收到的RB8來控制是否激活RI(RB8=0時不激活RI,收到的信息丟棄;RB8=1時收到的數(shù)據(jù)進入SBUF,并激活RI,進而在中斷服務中將數(shù)據(jù)從SBUF讀走)。當SM2=0時,不論收到的RB8為0和1,均可以使收到的數(shù)據(jù)進入SBUF,并激活RI(即此時RB8不具有控制RI激活的功能)。通過控制SM2,可以實現(xiàn)多機通信。在方式0時,SM2必須是0。在方式1時,若SM2=1,則只有接收到有效停止位時,RI才置1。REN:允許串行接收位由軟件置REN=1,則啟動串行口接收數(shù)據(jù);若軟件置REN=0,則禁止接收。第二十四頁,共四十七頁,2022年,8月28日TB8:發(fā)送數(shù)據(jù)的第9位在方式2或方式3中,是發(fā)送數(shù)據(jù)的第九位,可以用軟件規(guī)定其作用。可以用作數(shù)據(jù)的奇偶校驗位,或在多機通信中,作為地址幀/數(shù)據(jù)幀的標志位。在方式0和方式1中,該位未用。RB8:接收數(shù)據(jù)的第9位在方式2或方式3中,是接收到數(shù)據(jù)的第九位,雙機通信是奇偶位,多機通信是地址/數(shù)據(jù)標識位。

第二十五頁,共四十七頁,2022年,8月28日TI:發(fā)送中斷標志位在方式0時,當串行發(fā)送第8位數(shù)據(jù)結束時,或在其它方式,串行發(fā)送停止位的開始時,由內(nèi)部硬件使TI置1,向CPU發(fā)中斷申請。在中斷服務程序中,必須用軟件將其清0,取消此中斷申請。RI:接收中斷標志位在方式0時,當串行接收第8位數(shù)據(jù)結束時,或在其它方式,串行接收停止位的中間時,由內(nèi)部硬件使RI置1,向CPU發(fā)中斷申請。也必須在中斷服務程序中,用軟件將其清0,取消此中斷申請。復位時,SCON的所有位均清0第二十六頁,共四十七頁,2022年,8月28日2、數(shù)據(jù)緩沖寄存器SBUF數(shù)據(jù)緩沖寄存器SBUF實際上是2個獨立的寄存器:接收數(shù)據(jù)緩沖寄存器和發(fā)送數(shù)據(jù)緩沖寄存器,采用同一個地址代碼99H,寄存器名都是SBUF。CPU通過不同的操作指令區(qū)別這2個寄存器,CPU發(fā)出寫SBUF命令時,即向發(fā)送緩沖寄存器中裝載新的信息,同時啟動數(shù)據(jù)串行發(fā)送,51系列單片機沒有專門的啟動發(fā)送狀態(tài)的指令;當CPU發(fā)出讀SBUF命令時,即讀接收緩沖寄存器的內(nèi)容。接收寄存器是雙緩沖的,以避免在接收下一幀數(shù)據(jù)之前,CPU未能及時響應接收器的中斷,沒有把上一幀數(shù)據(jù)讀走,而產(chǎn)生兩幀數(shù)據(jù)重疊的問題。第二十七頁,共四十七頁,2022年,8月28日3、電源控制寄存器PCONPCON中只有一位(最高位)SMOD與串行口的工作有關,該位是串行口的波特率倍增位;SMOD=1時,波特率加倍,否則不加倍;復位時,SMOD=0。第二十八頁,共四十七頁,2022年,8月28日4、中斷允許控制寄存器IEIE用于控制與管理單片機的中斷系統(tǒng)。IE的ES位用于控制串行口的中斷:ES=0時,禁止串行口中斷;ES=1時,允許串行口中斷。第二十九頁,共四十七頁,2022年,8月28日5、中斷優(yōu)先級寄存器IPIP用于管理單片機中各中斷源中斷優(yōu)先級。IP的PS位用于設置串行口中斷的優(yōu)先級:PS=0時,串行口中斷為低優(yōu)先級;PS=1時,串行口中斷為高優(yōu)先級。第三十頁,共四十七頁,2022年,8月28日7.2.380C51的幀格式80C51串行口通過編程可設置4種工作方式,三種幀格式。方式0以8位數(shù)據(jù)為一幀,不設起始位和停止位,先發(fā)送或接收最低位。方式1以10位為一幀傳輸,設有一個起始位“0”,8個數(shù)據(jù)位和一個停止位“1”。方式2和3以11位為一幀傳輸,設有1個起始位“0”,8個數(shù)據(jù)位,1個可編程位(第九數(shù)據(jù)位)D8和1個停止位“1”。第三十一頁,共四十七頁,2022年,8月28日7.2.4波特率的設置在串行通信中,收發(fā)雙方對發(fā)送或接收數(shù)據(jù)的速率要有約定。通過軟件可對單片機串行口編程為四種工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可變的,由定時器T1的溢出率來決定。串行口的四種工作方式對應三種波特率。由于輸入的移位時鐘的來源不同,所以,各種方式的波特率計算公式也不相同。方式0的波特率=fosc/12方式2的波特率=(2SMOD/64)·fosc方式1的波特率=(2SMOD/32)·(T1溢出率)方式3的波特率=(2SMOD/32)·(T1溢出率)第三十二頁,共四十七頁,2022年,8月28日當T1作為波特率發(fā)生器時,最典型的用法是使T1工作在自動再裝入的8位定時器方式(即方式2,且TCON的TR1=1,以啟動定時器)。為了避免因溢出而產(chǎn)生不必要的中斷,此時應禁止T1中斷。這時溢出率取決于TH1中的計數(shù)值。

T1溢出率=fosc/{12×[256-(TH1)]}在單片機的應用中,常用的晶振頻率為:12MHz和11.0592MHz。所以,選用的波特率也相對固定。常用的串行口波特率以及各參數(shù)的關系如表所示。第三十三頁,共四十七頁,2022年,8月28日7.3串行口通信工作方式7.3.1方式0方式0時,串行口為同步移位寄存器的輸入輸出方式。以8位數(shù)據(jù)為一幀,發(fā)送和接收均為8位數(shù)據(jù),低位在先,高位在后。數(shù)據(jù)由RXD(P3.0)引腳輸入或輸出,同步移位脈沖由TXD(P3.1)引腳輸出。波特率固定為fosc/12。主要用于擴展并行輸入或輸出口。方式0發(fā)送數(shù)據(jù)從RXD引腳串行輸出,TXD引腳輸出同步脈沖。當1個數(shù)據(jù)寫入串行口發(fā)送緩沖器SBUF時,串行口將8位數(shù)據(jù)以fosc/12的固定波特率從RXD引腳輸出,從低位到高位。發(fā)送完后置中斷標志TI為1,呈中斷請求狀態(tài),在再次發(fā)送數(shù)據(jù)之前,必須用軟件將TI清0。第三十四頁,共四十七頁,2022年,8月28日方式0接收在滿足REN=1和RI=0的條件下,串行口處于方式0輸入。此時,RXD為數(shù)據(jù)輸入端,TXD為同步信號輸出端,接收器也以fosc/12的波特率采樣RXD引腳輸入的數(shù)據(jù)信息。當接收器接收完8位數(shù)據(jù)后,置中斷標志RI=1為請求中斷,在再次接收之前,必須用軟件將RI清0。在方式0工作時,必須使SCON寄存器中的SM2位為“0”;TB8和RB8在方式0中也未用。方式0發(fā)送或接收完8位數(shù)據(jù)后由硬件置位TI或RI中斷請求標志,CPU在響應中斷后要用軟件清除TI或RI標志。第三十五頁,共四十七頁,2022年,8月28日方式0接收和發(fā)送電路第三十六頁,共四十七頁,2022年,8月28日7.3.2方式1方式1是10位通用異步通信接口。TXD(P3.1)為數(shù)據(jù)發(fā)送引腳,RXD(P3.0)為數(shù)據(jù)接收引腳,傳送一幀數(shù)據(jù)的格式如圖所示。其中1位起始位,8位數(shù)據(jù)位,1位停止位。波特率是可變的,它取決于定時器T1的溢出速率及SMOD的狀態(tài)。方式1的波特率=(2SMOD/32)×定時器T1的溢出率第三十七頁,共四十七頁,2022年,8月28日方式1發(fā)送用軟件清除TI后,CPU執(zhí)行任何一條以SBUF為目標寄存器的指令,就啟動發(fā)送過程。數(shù)據(jù)由TXD引腳輸出。一幀信號發(fā)送完時,將置位發(fā)送中斷標志TI=1,向CPU申請中斷,完成一次發(fā)送過程第三十八頁,共四十七頁,2022年,8月28日用軟件置REN為1時,且RI=0,接收器以所選擇波特率的16倍速率采樣RXD引腳電平,檢測到RXD引腳輸入電平發(fā)生負跳變時,則說明起始位有效,將其移入輸入移位寄存器,并開始接收這一幀信息的其余位。接收過程中,數(shù)據(jù)從輸入移位寄存器右邊移入,起始位移至輸入移位寄存器最左邊時,控制電路進行最后一次移位。當RI=0,且SM2=0(或接收到的停止位為1)時,將接收到的9位數(shù)據(jù)的前8位數(shù)據(jù)裝入接收SBUF,第9位(停止位)進入RB8,并置RI=1,向CPU請求中斷。方式1接收第三十九頁,共四十七頁,2022年,8月28日7.3.3方式2和方式3方式2或方式3時為11位的異步通信方式。TXD為數(shù)據(jù)發(fā)送引腳,RXD為數(shù)據(jù)接收引腳。方式2和方式3時起始位1位,數(shù)據(jù)9位(含1位附加的第9位,發(fā)送時為SCON中的TB8,接收時為RB8),停止位1位,一幀數(shù)據(jù)為11位。方式2的波特率固定為晶振頻率的1/64或1/32,方式3的波特率由定時器T1的溢出率決定。第四十頁,共四十七頁,2022年,8月28日發(fā)送發(fā)送前,先根據(jù)通信協(xié)議由軟件設置TB8(如作奇偶校驗位或地址/數(shù)據(jù)標識位),然后執(zhí)行任何一條以SBUF作為目的寄存器的寫指令即啟動發(fā)送器,同時TB8自動裝到發(fā)送移位寄存器的第9位位置上,從TXD端輸出一幀數(shù)據(jù),發(fā)送完畢,TI標志=1。多機通信中,TB8=1為地址幀;TB8=0為數(shù)據(jù)幀。第四十一頁,共四十七頁,2022年,8月28日接收先置位REN為1,使串行口處于允許接收狀態(tài),同時還要將RI清0。在滿足這個條件的前提下,再根據(jù)SM2的狀態(tài)和所接收到的RB8的狀態(tài)決定是否會使RI置1,并申請中斷,接收數(shù)據(jù)。當SM2=0時,不管RB8為0還是為1,RI都置1,此串行口將接收發(fā)來的信息。當SM2=1,且RB8為l時,表示在多機通信情況下,接收的信息為地址幀,此時RI置1。串行口將接收發(fā)來的地址。當SM2=1,且RB8為0時,表示接收的信息為數(shù)據(jù)幀,但不是發(fā)給本從機的,此時RI不置1,因而SBUF中所接收的數(shù)據(jù)幀將丟失。第四十二頁,共四十七頁,2022年,8月28日8位數(shù)據(jù)裝入接收緩沖器SBUF,第9位數(shù)據(jù)裝入SCON中的RB8以及置位RI的信號只有在產(chǎn)生最后一個

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論