UART串行傳輸_第1頁
UART串行傳輸_第2頁
UART串行傳輸_第3頁
UART串行傳輸_第4頁
UART串行傳輸_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、串行傳輸簡(jiǎn)介StartD0D1D2D3D4D5D6D7ParityStop01 通用異步收發(fā)傳輸器(UniversalAsynchronous Receiver/Transmitter,通常稱作UART,讀音juart/) 是一種異步收發(fā)傳輸器,將數(shù)據(jù)由串行傳輸(Serial communication)與并行傳輸(Parallelcommunication) 間作傳輸轉(zhuǎn)換。UART通常用在與其他通訊協(xié)議(如EIARS-232)的連結(jié)上。 RS-232C是標(biāo)準(zhǔn)的串行傳輸標(biāo)準(zhǔn)。 RS(Recommended standard)代表推薦標(biāo)準(zhǔn),232是標(biāo)識(shí)號(hào),C代表RS232的 第三次修改(1969

2、年)。IBM PC機(jī)上的COM1、COM2接口,就是RS-232C接口。簡(jiǎn)介 STC12C5410AD系列單片機(jī)具有1個(gè)采用UART(Universal Asychronous Receiver/Transmitter)工作方式的全雙工 串行通信接口。串行口由2個(gè)數(shù)據(jù)緩沖器、一個(gè)移位寄存器、一個(gè)串行控 制寄存器和一個(gè)波特率發(fā)生器等組成。串行口的數(shù)據(jù)緩沖器由2個(gè)互相獨(dú)立的接收、發(fā)送緩沖器 構(gòu)成,可以同時(shí)發(fā)送和接收數(shù)據(jù)。發(fā)送緩沖器只能寫入而不能讀出,接收緩沖器只能讀出而 不能寫入,因而兩個(gè)緩沖器可以共享一個(gè)地址碼。串行口的兩個(gè)緩沖器統(tǒng)稱為串行通信特殊功能寄存器SBUF, 其共享的地址碼是99H。簡(jiǎn)

3、介STC12C5410AD系列單片機(jī)的兩個(gè)串行口都有4種工作方式, 其中兩種方式的波特率是可變的,另兩種是固定的, 以供不同應(yīng)用場(chǎng)合選用。用戶可用軟件設(shè)置不同的波特率和選擇不同的工 作方式。主機(jī)可通過查詢或中斷方式對(duì)接收/發(fā)送進(jìn)行程序處理。STC-12C5410AD系列單片機(jī)串行口對(duì)應(yīng)的硬件部分是 TxD/P3.1和RxD/P3.0引腳。STC12C5410AD系列單片機(jī)的串行通信口,除用于數(shù)據(jù)通信 外,還可方便地構(gòu)成一個(gè)或多個(gè)并行I/O口,或作串并 轉(zhuǎn)換,或用于擴(kuò)展串行外設(shè)等。串行口的相關(guān)寄存器PCON : 電源控制寄存器(不可位尋址)AddressbitB7B6B5B4B3B2B1B087

4、HnameSMODSMOD0LVDFPOFGF1GF0PDIDLSMOD:波特率選擇位。復(fù)位時(shí)SMOD=0。 SMOD=1,則使串行通信方式1、2、3的波特率 加倍;SMOD=0,則各工作方式的波特率不變。SMOD0:幀錯(cuò)誤檢測(cè)有效控制位。復(fù)位時(shí)SMOD0=0 當(dāng)SMOD0=1,SCON寄存器中的SM0/FE位用于FE(幀錯(cuò) 誤檢測(cè))功能;當(dāng)SMOD0=0,SCON寄存器中的SM0/FE位用于SM0功能, 和SM1一起指定串行口的工作方式。串行控制寄存器SCONAddressbitB7B6B5B4B3B2B1B098HnameSM0/FESM1SM2RENTB8RB8TIRI用于選擇串行通信的

5、工作方式和某些控制功能。SM0、SM1確定串行口1的工作方式REN:允許/禁止串行接收控制位。 REN=1為允許串行接收狀態(tài)TI:發(fā)送中斷請(qǐng)求中斷標(biāo)志位。 由硬件自動(dòng)設(shè)定TI=1,用軟件設(shè)定TI=0RI:接收中斷請(qǐng)求標(biāo)志位。 由硬件自動(dòng)設(shè)定RI=1,用軟件設(shè)定RI=0串行控制寄存器SCONAddressbitB7B6B5B4B3B2B1B098HnameSM0/FESM1SM2RENTB8RB8TIRI用于選擇串行通信的工作方式和某些控制功能。SM0/FE:若SMOD0=1,當(dāng)檢測(cè)到一個(gè)無效停止位時(shí),設(shè)定 SM0/FE=1,必須用軟件清除。SM2:允許方式2或方式3多機(jī)通信控制位。TB8:用在

6、方式2或方式3,發(fā)送第9位,使用軟件設(shè)定。RB8:用在方式2或方式3,接收第9位。SM0、SM1確定串行口的工作方式SM0SM1工作方式功能說明波特率00方式0同步移位元元串行方式:移位寄存器當(dāng)UART_M0x6=0時(shí),波特率是SYSclk/12, 當(dāng)UART_M0x6=1,波特率是 SYSclk/201方式18位UART,串行傳輸速率可變(2SMOD/32)×(定時(shí)器1的溢出率)10方式29位UART(2SMOD/64)xSYSclk系統(tǒng)工作時(shí)鐘頻率11方式39位UART,串行傳輸速 率可變(2SMOD/32)x(定時(shí)器1的溢出率)當(dāng)T1x12 = 0時(shí),定時(shí)器1的溢出率 = SY

7、Sclk/12/( 256 - TH1);當(dāng)T1x12 = 1時(shí),定時(shí)器1的溢出率 = SYSclk / ( 256 - TH1)數(shù)據(jù)緩沖寄存器SBUF緩沖寄存器(SBUF)的地址是99H,對(duì)應(yīng)兩個(gè)不同的寄存器,1個(gè)是只寫寄存器,1個(gè)是只讀寄存器。 接收寄存器:在方式0時(shí)它的字長(zhǎng)為8位元,其他方式時(shí) 為9位元。第9位裝入SCON寄存器中的RB8位。 接收后,將數(shù)據(jù)由移位寄存器裝入SBUF,可立即開始接收 下一個(gè)信息,主機(jī)應(yīng)在該幀接收結(jié)束前從SBUF緩沖器中將 數(shù)據(jù)取走,否則前一幀資料將丟失。輔助寄存器AUXRAddressB7B6B5B4B3B2B1B08EHT0x12T1x12UART_M0

8、x6EADCIESPIELVDI-T1x12: 定時(shí)器1速度設(shè)置位元 如果UART串口用定時(shí)器1做波特率發(fā)生器,T1x12 位就可以控制UART串口是12T還是1T了。UART_M0x6:串行口模式0的通信速度設(shè)置位元 0,UART串口的模式0的速度是12分頻;1,UART串口的模式0的速度是2分頻;IE : 中斷允許寄存器 (可位尋址)AddressB7B6B5B4B3B2B1B0A8HEAEPCA_LVDEADC_SPIESET1EX1ET0EX0EA:CPU的總中斷允許控制位, EA=1,CPU開放中斷, EA=0,CPU屏蔽所有的中斷申請(qǐng)。ES :串行口中斷允許位, ES=1,允許串行

9、口中斷, ES=0,禁止串行口中斷。IPH : 中斷優(yōu)先級(jí)控制寄存器PSH, PS: 串行口中斷優(yōu)先級(jí)控制位。當(dāng)PSH=0且PS=0時(shí),為最低優(yōu)先級(jí)中斷(優(yōu)先級(jí)0)當(dāng)PSH=0且PS=1時(shí),為較低優(yōu)先級(jí)中斷(優(yōu)先級(jí)1)當(dāng)PSH=1且PS=0時(shí),為較高優(yōu)先級(jí)中斷(優(yōu)先級(jí)2)當(dāng)PSH=1且PS=1時(shí),為最高優(yōu)先級(jí)中斷(優(yōu)先級(jí)3)串行口工作模式0:同步移位寄存器串行口數(shù)據(jù)由RxD/P3.0端輸入/輸出,同步移位脈沖(SHIFTCLOCK)由TxD/P3.1輸出。RITI接收SBUFRXD腳串行數(shù)據(jù) 頻率信號(hào)TXD腳發(fā)送、接收的是8位數(shù)據(jù),低位在先。D7D6D5D4D3D2D1D0移位寄存器D7D6D

10、5D4D3D2D1D0發(fā)射SBUFD7D6D5D4D3D2D1D0模式0的發(fā)送過程:當(dāng)主機(jī)執(zhí)行將數(shù)據(jù)寫入發(fā)送緩沖器 SBUF指令時(shí)啟動(dòng)發(fā)送,串行口即將8位數(shù)據(jù)從RxD管腳輸 出,發(fā)送完中斷標(biāo)志TI置“1”。TxD管腳輸出同步移位脈 沖(SHIFTCLOCK)。模式0接收過程:?jiǎn)?dòng)接收過程后,RxD為串行輸入端,TxD為同步脈沖輸出端。波特率固定為SYSclk/12或SYSclk/2,無需定時(shí)器 提供UART_M0x6/AUXR.5=0,SYSclk/12(12分頻) UART_M0x6/AUXR.5=1,SYSclk/2(2分頻)由TX和RX控制單元分別產(chǎn)生中斷請(qǐng)求信號(hào),并置TI=1或RI=1

11、,經(jīng)“或門 “送主機(jī)請(qǐng)求中斷,所以主機(jī)響應(yīng)中斷后 必須軟件判別是TI還是RI請(qǐng)求中斷,必須軟件清0插斷要 求標(biāo)志位TI或RI。串行口工作模式1:8位UART,波特率可變SM0、SM1=01一幀信息為10位:1位起始位,8位數(shù)據(jù)位(低 位在先)和1位停止位。TxD/P3.1為發(fā)送信息,RxD/P3.0為接收端接收信息串行模式1的波特率=2SMOD×(TIMER1溢出率)/32T1x12 =0,TIMER1的溢出率 =SYSclk/12/(256 -TH1);T1x12 = 1, TIMER1的溢出率 = SYSclk / ( 256 - TH1)UART串行埠傳輸格式串行端口模式1串行

12、傳輸RI接收 SBUFD7D6D5D4D3D2D1D0startD0D1D2D3D4D5D6D7移位 緩存器stopRXD腳串行 數(shù)據(jù)串行 數(shù)據(jù)stopD7D6D5D4D3D2D1D0 startTXD腳TI發(fā)射 SBUFD7D6D5D4D3D2D1D0串行口工作模式2:9位UART,波特率固定SM0、SM1=10一幀信息由11字節(jié)成:1位起始位,8位數(shù)據(jù) 位(低位在先),1位可程序設(shè)計(jì)位(第9位資 料)和1位停止位。TxD/P3.1為發(fā)送埠,RxD/P3.0為接收埠模式2的波特率為:=2SMOD×(SYSclk系統(tǒng)工作時(shí)鐘頻率) /64串行口工作模式2:9位UART,波特率固定第9

13、數(shù)據(jù)位,TB8(SCON.3)可指定為0或1;或?qū)⑼粰z查旗標(biāo)(P,PSW.0) 存放到TB8。在接收周期時(shí),第9數(shù)據(jù)位會(huì)被存放到RB8。RITI接收SBUFD7D6D5D4D3D2D1D0RXD腳startD0D1D2D3D4D5D6D7RB8stop串行數(shù)據(jù)移位寄存器stopTB9串行數(shù)據(jù)D7D6D5D4D3D2D1D0 startTXD腳發(fā)射SBUFD7D6D5D4D3D2D1D0串行口工作模式3:9位UART,波特率可變一幀的信息由11字節(jié)成:1位起始位,8位數(shù)據(jù)位元(低位在先),1位可程序設(shè)計(jì)位和1位停止位。發(fā)送時(shí)可程序設(shè)計(jì)第9位數(shù)據(jù),由SCON中的TB8提供,可 軟件設(shè)置為1或0,

14、或者可將PSW中的奇/偶校驗(yàn)位P值裝入 TB8。模式3的波特率為:=2SMOD×(TIMER1的溢出率)/32T1x12 =0,TIMER1的溢出率 =SYSclk/12/(256 -TH1);T1x12 =1,TIMER1的溢出率 =SYSclk/(256 -TH1)傳輸速率的設(shè)置串行通信模式0UART_M0x6/AUXR.5 =0時(shí),其波特率 =SYSclk/12。UART_M0x6/AUXR.5 =1時(shí),其波特率 =SYSclk/2。串行通信工作模式2SMOD=1,傳輸速率=(SYSclk)/32;SMOD=0,傳輸速率=(SYSclk)/64。串行通信模式1、3傳輸速率=2S

15、MOD×(TIMER1的溢出率)/32T1x12=0,TIMER1的溢出率 =SYSclk/12/(256 -TH1);T1x12 = 1, TIMER1的溢出率 = SYSclk /(256 - TH1)傳輸速率的設(shè)置UART在Mode1模式下,使用Timer1工作于Mode2(自動(dòng)重新加載模式)計(jì)算傳輸率公式如下:9600 =2 SMOD振蕩器頻率 ?3212 ? 256 - (TH1)配合9600傳輸率,使用11.0592MHz石英晶體振蕩器,且SMOD=0,得出TH1為:TH1 =256 -2 ? 11.0592 ? 10 6384 ? 9600= 253 =FDH傳輸速率的

16、設(shè)置T1x12=0,TIMER1的溢出率=SYSclk×(28-N)/12T1x12=1,TIMER1的溢出率=SYSclk×(28-N)常用波特率系統(tǒng)時(shí)鐘頻率(MHz)SMOD定時(shí)器1C/T方式重新裝入值方式0MAX:1M12××××方式2MAX:375K121×××方式1和362.5K12102FFH19.2K11 .059102FDH9.6K11 .059002FDH4.8K11 .059002FAH2.4K11 .059002F4H1.2K11 .059002F8H137.511 .9860021

17、DH110600272H11012001FFFBH雙機(jī)通信 如果兩個(gè)8051應(yīng)用系統(tǒng)距離很近,可將它們的串行埠直接 相連(TXDRXD,RXDTXD,GNDGND地),即可實(shí)現(xiàn) 雙機(jī)通信。RS232的串行信號(hào)UART串行埠傳輸格式StartD0D1D2D3D4D5D6D7ParityStop018051與RS232的串行信號(hào)電壓轉(zhuǎn)換80515V信號(hào)0V+10VRS232信號(hào)-10VGND15串行端口UART電路IC122 u2C 1 +1162738495V+ +22 uJ 62C 1 - 3 J 62710 P3 1P3 0C 2 +R S23 222 u6V- C 2 -5C ON 622

18、 uVCC16V CC1214 T1 OU TT1 IN11 TX D123413 R 1 INR 1 O UT12 R XD34568T2 OU TT2 IN9R 2 INR 2 O UT4RS-232C接腳594837261 ,UART電路 8051的RXD與TXD與EIA 界面ICL232連接,做訊 號(hào)準(zhǔn)位轉(zhuǎn)換-準(zhǔn)位0V轉(zhuǎn)換為-8V-15V-準(zhǔn)位5V轉(zhuǎn)換為8V-15V使用9PIN的RS-232 接頭PIN2(RXD)接腳接收 PIN 3(TXD)接腳傳送 PIN5(GND)接地。雙機(jī)異步通信軟件協(xié)議甲機(jī)發(fā)送數(shù)據(jù),乙機(jī)接收數(shù)據(jù)。在雙機(jī)開始通信時(shí),先由甲機(jī)發(fā)送一個(gè)呼叫信號(hào)(例如 “06H”)

19、,以詢問乙機(jī)是否可以接收數(shù)據(jù);乙機(jī)接收到呼叫信號(hào)后,若同意接收資料,則發(fā)回“00H” 作為應(yīng)答信號(hào),否則發(fā)“05H”表示暫不能接收資料,;甲機(jī)只有在接收到乙機(jī)的應(yīng)答信號(hào)“00H”后才可將存儲(chǔ) 在外部數(shù)據(jù)存儲(chǔ)器中的內(nèi)容逐一發(fā)送給乙機(jī),否則繼續(xù)向 乙機(jī)發(fā)呼叫信號(hào),直到乙機(jī)同意接收。字節(jié)數(shù)n資料1資料2資料3資料n累加校驗(yàn)和發(fā)送數(shù)據(jù)格式如上:字節(jié)數(shù)n:甲機(jī)向乙機(jī)發(fā)送的資料個(gè)數(shù);數(shù)據(jù)1數(shù)據(jù)n:甲機(jī)將向乙機(jī)發(fā)送的n幀資料;累加校驗(yàn)和:為字節(jié)數(shù)n、數(shù)據(jù)1、數(shù)據(jù)n,這(n+1)個(gè)字節(jié)內(nèi)容的算術(shù)累相加的和. 乙機(jī)根據(jù)接收到的“校驗(yàn)和”判斷已接收到的n個(gè)數(shù)據(jù)是 否正確。若接收正確,向甲機(jī)回發(fā)“0FH”信號(hào),否則

20、回發(fā) “F0H”信號(hào)。甲機(jī)只有在接收到乙機(jī)發(fā)回的“0FH”信號(hào)才算完成發(fā)送 任務(wù),返回被調(diào)用的程序,否則繼續(xù)呼叫,重發(fā)數(shù)據(jù)。雙機(jī)通信軟件(查詢方式)甲機(jī)發(fā)送子程序雙機(jī)通信軟件(查詢方式)乙機(jī)接收子程序段雙機(jī)通信軟件(中斷方式)由于STC-12C5410AD系列單片機(jī)的串行通信是雙工的,且 中斷系統(tǒng)只提供一個(gè)中斷向量入口地址,所以實(shí)際上是中 斷和查詢必須相結(jié)合,即接收/發(fā)送均可各自請(qǐng)求中斷, 響應(yīng)中斷時(shí)主機(jī)并不知道是誰請(qǐng)求中斷,統(tǒng)一轉(zhuǎn)入同一個(gè) 中斷向量入口,必須由中斷服務(wù)程序查詢確定并轉(zhuǎn)入對(duì)應(yīng) 的服務(wù)程序進(jìn)行處理。甲方(發(fā)送方)任以查詢方式通信(從略),乙方(接收方)則改用中斷查詢方式進(jìn)行通信。

21、常用的串行端口函數(shù)stdio.h內(nèi)定函數(shù)格式串行埠輸出入說明getkey (void)接收一個(gè)按鍵數(shù)據(jù)getchar (void)接收一個(gè)字符數(shù)據(jù)putchar (char)發(fā)射一個(gè)字符數(shù)據(jù)printf(const char , .)發(fā)射字符、字符串及數(shù)值數(shù)據(jù)gets (char , int n)接收一個(gè)字符串字符數(shù)據(jù)scanf (const char , .)接收字符串?dāng)?shù)據(jù)puts (const char)發(fā)射一個(gè)字符串字符常數(shù)數(shù)據(jù)常用顯示格式字符表字符動(dòng)作%d顯示有符號(hào)10進(jìn)制數(shù)據(jù)%u顯示無符號(hào)10進(jìn)制數(shù)據(jù)%f顯示浮點(diǎn)數(shù)10進(jìn)制資料%e顯示指數(shù)10進(jìn)制數(shù)據(jù)%g先以浮點(diǎn)數(shù)顯示,若不行則以指數(shù)

22、顯示數(shù)據(jù)%o顯示8進(jìn)制數(shù)據(jù)%x顯示16進(jìn)制數(shù)據(jù)%6d10進(jìn)制數(shù)據(jù)占用6格,數(shù)據(jù)右移%06d10進(jìn)制數(shù)據(jù)占用6格,數(shù)據(jù)右移,前面加0%-6d10進(jìn)制數(shù)據(jù)占用6格,數(shù)據(jù)左移%c顯示字符數(shù)據(jù)%6c顯示字符數(shù)據(jù),占用6格,資料右移%-6c顯示字符數(shù)據(jù),占用6格,資料左移%s顯示字符串?dāng)?shù)據(jù)常用“”控制字符表控制字符動(dòng)作ASCII碼(16進(jìn)制)0空字符(NULL)0x00n換行(LF)0x0Ar歸位(CR)0x0Dt跳9格(HT)0x09b倒退(BS)0x08f換頁(FF)0x0C單引號(hào)0x27”雙引號(hào)0x22反斜杠0x5CUART使用時(shí)設(shè)定 1.ES 2.EA 3.IP,IPH當(dāng)串行口接收中斷請(qǐng)求標(biāo)志位RI和串行口發(fā)送中斷請(qǐng)求 標(biāo)志位TI中的任何一個(gè)被置為1后,串行口中斷都會(huì)產(chǎn) 生。范例8_1/串行傳輸模擬的觀察與練習(xí)/從8051傳送字符串Hellokitty到P

溫馨提示

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

評(píng)論

0/150

提交評(píng)論