第8章 串行通信接口_第1頁
第8章 串行通信接口_第2頁
第8章 串行通信接口_第3頁
第8章 串行通信接口_第4頁
第8章 串行通信接口_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第8章串行通信接口及擴(kuò)展技術(shù)本章主要內(nèi)容8.1 基本概念8.2 MCS-51串行通信口結(jié)構(gòu)8.3 MCS-51串行通信口的工作方式8.4 串行通信中波特率的設(shè)置8.5 MCS-51串口應(yīng)用舉例8.6 單總線接口及其應(yīng)用舉例8.7 I2C總線接口及其應(yīng)用舉例8.8 SPI總線接口及其應(yīng)用舉例8.1串行通信基本概念并行:數(shù)據(jù)各位同時進(jìn)行傳送串行:數(shù)據(jù)逐位順序進(jìn)行傳送

串行通信的基本特征是數(shù)據(jù)逐位順序進(jìn)行傳送,串行通信可用一根數(shù)據(jù)線傳送多位信息,速度較慢,可大大節(jié)省硬件投資,適用于遠(yuǎn)距離通信。串行通信的格式及約定(如:同步方式、通訊速率、數(shù)據(jù)塊格式、信號電平……等)不同,形成了多種串行通信的協(xié)議與接口標(biāo)準(zhǔn)。常見的有:通用異步收發(fā)器(UART)——MCS-51的串口通用串行總線(USB)I2C總線CAN總線SPI總線RS-485,RS-232C,RS-422A標(biāo)準(zhǔn)……等等8.1.1數(shù)據(jù)通信的傳輸方式常用于數(shù)據(jù)通信的傳輸方式有單工、半雙工、全雙工和多工方式。單工方式:數(shù)據(jù)僅按一個固定方向傳送。半雙工:數(shù)據(jù)收/發(fā)不可同時進(jìn)行全雙工:數(shù)據(jù)收/發(fā)可同時進(jìn)行8.1.2串行數(shù)據(jù)通信兩種形式異步串行通信:以字符為單位進(jìn)行傳送。異步通信用一幀來表示一個字符,其內(nèi)容如下:一個起始位,接著是若干個數(shù)據(jù)位,一個停止位。傳輸35H的數(shù)據(jù)格式如下圖所示。同步串行通信:以數(shù)據(jù)塊為單位進(jìn)行傳送。每組數(shù)據(jù)加同步字符。8.1.3波特率波特率(Bandrate),即數(shù)據(jù)傳輸速率,是指每秒鐘傳送的二進(jìn)制代碼的位數(shù),單位是bps(bitpersecond)【例】假設(shè)異步通信數(shù)據(jù)傳送速率是120字符/秒,而每個字符格式包含10個代碼位(1個起始位、1個停止位、8個數(shù)據(jù)位),則波特率為:120×10=1200bps。每位代碼的傳送時間是1/1200≈0.833ms。異步通信的波特率在50bps~19200bps之間,常用于計算機(jī)到終端機(jī)和打印機(jī)之間的通信。8.1.4串行通信的物理標(biāo)準(zhǔn)RS-232CRS-232C標(biāo)準(zhǔn)(協(xié)議)的全稱是EIA-RS-232C標(biāo)準(zhǔn),其中EIA(ElectronicIndustryAssociation)代表美國電子工業(yè)協(xié)會,RS(recommendedstandard)代表推薦標(biāo)準(zhǔn),232是標(biāo)識號,C代表RS232的最新一次修改(1969),在這之前,有RS-232B、RS-232A。目前在IBMPC機(jī)上的COM1、COM2串行接口,就是采用RS-232C標(biāo)準(zhǔn)。RS-232C對電器特性、邏輯電平和各種信號功能都作了規(guī)定。RS-232C采用負(fù)邏輯,將數(shù)據(jù)線上的-3V~-15V電平規(guī)定為信號“1”,+3V~+15V電平規(guī)定為信號“0”。這與TTL電路以高低電平表示邏輯狀態(tài)的規(guī)定不同。因此,為了使PC機(jī)能夠同TTL器件連接,必須在RS-232C與TTL電路之間進(jìn)行電平和邏輯關(guān)系的變換。8051與PC機(jī)串行通信接口電路8.2MCS-51串行通信口結(jié)構(gòu)51單片機(jī)的串行接口結(jié)構(gòu)圖下:8.2.1串行口數(shù)據(jù)寄存器SBUF串口有兩個同名的接收/發(fā)送緩沖寄存器SBUF,可以實現(xiàn)全雙工通信。

指令MOVSBUF,A啟動一次數(shù)據(jù)發(fā)送。指令MOVA,SBUF完成一次數(shù)據(jù)接收。SM0SM1SM2RENTB8RB8TIRISCON?SM0,SM1:串行口4種工作方式的選擇位。

00方式0:8位移位寄存器I/O,波特率固定為fosc/1201方式1:8位UART(1+8+1位),波特率可變,按公式計算

10方式2:9位UART(1+8+1+1位),波特率固定=foscx1/32或1/6411方式3:9位UART(1+8+1+1位),波特率可變,按公式計算?SM2:串行口多機(jī)通信控制位(作為方式2、方式3的附加控制位)8.2.2串行通信控制寄存器SCONRI,TI:串行口收/發(fā)數(shù)據(jù)申請中斷標(biāo)志位。=1申請中斷,=0不申請中斷。接收/發(fā)送數(shù)據(jù),無論是否采用中斷方式工作,每接收/發(fā)送一個數(shù)據(jù)都必須用指令對RI/TI清0,以備下一次收/發(fā)。TB8:方式2、3中,是要發(fā)送的第9位數(shù)據(jù)。多機(jī)通信中,TB8=0表示發(fā)送的是數(shù)據(jù);TB8=1表示發(fā)送的是地址。(也可奇偶校驗)RB8:在方式2、3中,是收到的第9位數(shù)據(jù)。在多機(jī)通信中,用作區(qū)別地址幀/數(shù)據(jù)幀的標(biāo)志。(也可作為奇偶校驗標(biāo)志)SM0SM1SM2RENTB8RB8TIRIREN:串行口接收允許控制位。=1表示允許接收;=0禁止接收。SCON的地址是98H,可以位尋址SCONSMOD———GF1GF0PDIDL8.2.3電源管理寄存器PCON(97H)

SMOD:在串行口工作方式1、2、3中,是波特率加倍位

=1時,波特率加倍

=0時,波特率不加倍。

(在PCON中只有這一個位與串口有關(guān))GF1,GF0:用戶可自行定義使用的通用標(biāo)志位PCONPD:掉電方式控制位

=0:常規(guī)工作方式。

=1:進(jìn)入掉電方式:

振蕩器停振

片內(nèi)RAM和SRF的值保持不變

P0—P3口維持原狀。程序停止只有復(fù)位能使之退出掉電方式。PCON的地址是97H,不能位尋址SMOD———GF1GF0PDIDLPCONIDL:待機(jī)方式(空閑方式)控制位

=0:常規(guī)工作方式。

=1:進(jìn)入待機(jī)方式:振蕩器繼續(xù)振蕩

中斷、定時器、串口功能繼續(xù)有效

片內(nèi)RAM和SRF保持不變

CPU狀態(tài)保持、P0—P3口維持原狀

程序停頓。中斷和復(fù)位能退出待機(jī),繼續(xù)后面的程序。SMOD———GF1GF0PDIDLPCONMCS-51串行接口的工作方式有四種,由SCON中的SM0、SM1定義。8.3.1串行口工作方式0

8位移位寄存器I/O方式發(fā)送:SBUF中的串行數(shù)據(jù)由RxD逐位移出;

TxD輸出移位時鐘,頻率=fosc1/12;

每送出8位數(shù)據(jù)TI就自動置1;

需要用軟件清零TI。接收:串行數(shù)據(jù)由RxD逐位移入SBUF中;

TxD輸出移位時鐘,頻率=fosc1/12;

每接收8位數(shù)據(jù)RI就自動置1;

需要用軟件清零RI。8.3MCS-51串行通信口的工作方式經(jīng)常配合“串入并出”“并入串出”移位寄存器一起使用擴(kuò)展接口。

方式0工作時,多用查詢方式編程:發(fā)送:MOVSBUF,A 接收: JNBRI,$JNBTI,$ CLRRICLRTI MOVA,SBUF工作方式0:8位移位寄存器I/O方式(續(xù))復(fù)位時,SCON已經(jīng)被清零,缺省值:方式0。接收前,務(wù)必先置位REN=1允許接收數(shù)據(jù)。串行口方式0的擴(kuò)展應(yīng)用串行口常用工作方式0擴(kuò)展出并行I/O口,工作方式1、2、3則常用于串行通信ABCLKhgfedcbaCLRABCLKCLRABCLKCLR+5V74LS16474LS16474LS16474LS164是串入并出芯片;74LS165是并入串出芯片hgfedcbahgfedcba+5V共陽LED數(shù)碼管VCCTxDRxD51單片機(jī)【例】利用串行口工作方式0擴(kuò)展出8位并行I/O口,驅(qū)動共陽LED數(shù)碼管顯示0~9。ABCLKhgfedcbaCLR+5VVCCTxDRxD51單片機(jī)74LS164共陽LED數(shù)碼管根據(jù)上圖編寫的通過串行口和74LS164驅(qū)動共陽LED數(shù)碼管(查表)顯示0-9數(shù)字的子程序:DSPLY:MOVDPTR,#TABLEMOVCA,@A+DPTRMOVSBUF,AJNBTI,$CLRTIRETTABLE:DB0C0H,0F9H,0A4HDB0B0H,99H,92HDB82H,0F8H,80H,90Hhgfedcba累加器A110000000C0H=“0”101100000B0H=“3”共陽極hgfedcbaabcdgefh常用于串行通訊。除發(fā)/收8位數(shù)據(jù)外,還在D0位前有一個起始位“0”;在D7位后有一個停止位“1”。方式1工作時:發(fā)送端自動添加一個起始位和一個停止位;接收端自動去掉一個起始位和一個停止位。8.3.2串行口工作方式18位UART(1+8+1位)波特率可變

波特率可變——用定時器T1作波特率發(fā)生器:公式:波特率=(2SMOD/32)T1的溢出率波特率=(2SMOD/32)T1的溢出率

溢出率:T1溢出的頻繁程度即:T1溢出一次所需時間的倒數(shù)。

初值X=2n-2SMODfosc32波特率

12

波特率=2SMODfosc3212(2n-X)其中:X是定時器1的計數(shù)初值串口波特率(方式1,3)foscSMOD位(PCON中)定時器T1C//T方式初值192006MHz1020FEH96006MHz1020FDH48006MHz0020FDH24006MHz0020FAH12006MHz0020F4H6006MHz0020E8H1106MHz00272H常用波特率和T1初值查表RxD引腳為接收端,TxD引腳為發(fā)送端,由波特率發(fā)生器T1控制發(fā)送速度。不同于方式0:收/發(fā)都需要由TxD送出移位時鐘。

定時器1作波特率發(fā)生器時初始化包括:

選定時器1工作在方式2(8位自動重裝);

將計算(或查表)出的初值X賦給TH1,TL1;

啟動T1(SETBTR1);

注意:對T1不要開中斷!工作方式1的接收/發(fā)送串行口的初始化包括:

對SCON編程,選工作方式對PCON編程,設(shè)波特率加倍位“SMOD”(缺省值=0)

如果是接收數(shù)據(jù),仍要先置“1”REN位SM0SM1SM2RENTB8RB8TIRISCONSM0,SM1:串行口工作方式選擇位。

01:方式1,8位UART(1+8+1位)REN:串行口接收允許位。REN=1允許接收串行口控制寄存器SCON的設(shè)置01010000TB8,RB8,TI,RI等位由運(yùn)行中間的情況決定,可先寫成“0”SM2:串行口多機(jī)通信控制位,作為方式2、3

的附加控制位,此處不用,可寫成“0”由于波特率固定,常用于單片機(jī)間通訊。數(shù)據(jù)由8+1位組成,通常附加的一位(TB8/RB8)用于“奇偶校驗”。8.3.3串行口工作方式29位UART(1+8+1+1位)兩種波特率方式2的波特率=fosc2SMOD/64

即:fosc1/32或fosc1/64兩種奇偶校驗是檢驗串行通信雙方傳輸?shù)臄?shù)據(jù)正確與否的一個措施,并不能保證通信數(shù)據(jù)的傳輸一定正確。換言之:如果奇偶校驗發(fā)生錯誤,表明數(shù)據(jù)傳輸一定出錯了;如果奇偶校驗沒有出錯,絕不等于數(shù)據(jù)傳輸完全正確。只能檢測一位出錯。奇校驗:8位有效數(shù)據(jù)連同1位附加位中,二進(jìn)制“1”的個數(shù)為奇數(shù)偶校驗:8位有效數(shù)據(jù)連同1位附加位中,二進(jìn)制“1”的個數(shù)為偶數(shù)約定接收采用奇校驗若接收到的9位數(shù)據(jù)中“1”的個數(shù)為奇數(shù),則表明接收正確,取出8位有效數(shù)據(jù)即可;若接收到的9位數(shù)據(jù)中“1”的個數(shù)為偶數(shù),則表明接收出錯,應(yīng)當(dāng)進(jìn)行出錯處理。約定發(fā)送采用奇校驗若發(fā)送的8位有效數(shù)據(jù)中“1”的個數(shù)為偶數(shù),則要人為添加一個附加位“1”一起發(fā)送;若發(fā)送的8位有效數(shù)據(jù)中“1”的個數(shù)為奇數(shù),則要人為添加一個附加位“0”一起發(fā)送。采用偶校驗時,處理方法與奇校驗相反工作方式2的奇偶校驗用法復(fù)習(xí):

程序狀態(tài)字寄存器PSW中有一個奇偶狀態(tài)位PCYACF0RS0OVPRS1PSW.7PSW.0P(PSW.0):奇偶狀態(tài)位。

P=1表示目前累加器中“1”的個數(shù)為奇數(shù)

P=0表示目前累加器中“1”的個數(shù)為偶數(shù)CPU隨時監(jiān)視著ACC的“1”的個數(shù)并自動反映在P8.3.4串行口工作方式39位UART(1+8+1+1位)波特率可變串口方式3和方式2唯一的區(qū)別是波特率機(jī)制不同。方式2的波特率固定為振蕩周期的32或64分頻,不可變。此工作方式與其他串行通訊設(shè)備連接困難,因此不常用。方式3的波特率可變,按前面的公式計算:波特率=(2SMOD/32)T1的溢出率

波特率=2SMODfosc3212(2n-X)其中:X是定時器初值8.4串行通信中波特率的設(shè)置MCS-51單片機(jī)串行通信的波特率隨串行口工作方式選擇不同而異,它除了與系統(tǒng)的振蕩頻率fosc,電源控制寄存器PCON的SMOD位有關(guān)外,還與定時器T1的設(shè)置有關(guān)。【例如】若系統(tǒng)時鐘頻率fosc為6MHz,當(dāng)SMOD=1,通信波特率為2400bps時,時間常數(shù)為:設(shè)置波特率的初始化程序如下:

INIT: MOV TMOD,#20H ;設(shè)置定時器1工作在方式2 MOV TH1,#0F3H;設(shè)置時間常數(shù) MOV TL1,#0F3H SETB TR1 ;啟動計數(shù)器1 MOV PCON,#80H ;設(shè)置SMOD=1, MOV SCON,#50H ;設(shè)置串口工作在方式18.5串口應(yīng)用舉例8.5.1串行口初始化編程的一般格式SIO: MOV SCON,#控制狀態(tài)字 MOV PCON,#80H ;波特率加倍

MOV TMOD,#20H ;定時器1作波特率發(fā)生器

MOV TH1,#X ;選定波特率

MOV TL1,#X SETB TR1;啟動定時器1 SETB EA ;開總中斷

SETB ES;開串口中斷8.5.2異步通信程序舉例一、發(fā)送程序?qū)⑵瑑?nèi)RAM50H起始單元的16個數(shù)由串行口發(fā)送。要求發(fā)送波特率為系統(tǒng)時鐘的32分頻,并進(jìn)行奇偶校驗。 ORG 0000H AJMP MAINT ORG 0023H ;串行口中斷入口 AJMP TRANI;主程序MAINT:MOV SCON,#80H ;串行口初始化,方式2 MOV PCON,#80H ;SMOD=1,波特率加倍

SETB EA SETB ES ;開串行口中斷

MOV R0,#50H ;設(shè)數(shù)據(jù)指針

MOV R7,#10H ;數(shù)據(jù)長度LOOP:MOV A,@R0 ;取一個字符

MOV C,P ;加奇偶校驗

MOV TB8,C MOV SBUF,A ;啟動一次發(fā)送HERE: SJMP HERE ;CPU執(zhí)行其它任務(wù);中斷服務(wù)程序TRANI:PUSH ACC ;保護(hù)現(xiàn)場

PUSH PSW CLR TI ;清發(fā)送結(jié)束標(biāo)志

DJNZ R7,NEXT ;是否發(fā)送完?

CLR ES ;發(fā)送完,關(guān)閉串行口中斷

SJMP TENDNEXT: INC R0 ;未發(fā)送完,修改指針

MOV A,@R0 ;取下一個字符

MOV C,P ;加奇偶校驗

MOV TB8,C MOV SBUF,A ;發(fā)送一個字符

POP PSW ;恢復(fù)現(xiàn)場

POP ACC TEND: RETI ;中斷返回二、接收程序串行輸入16個字符,存入片內(nèi)RAM的50H起始單元,波特率為2400。RECS:MOV SCON,#50H;串行口方式1允許接收

MOV TMOD,#20H ;T1方式2定時

MOV TL1,#0F4H ;寫入T1時間常數(shù)

MOV TH1,#0F4H SETB TR1 ;啟動T1 MOV R0,#50H ;設(shè)數(shù)據(jù)指針

MOV R7,#10H ;接收數(shù)據(jù)長度WAIT: JBC RI,NEXT ;等待串行口接收

SJMP WAIT NEXT: MOV A,SBUF ;讀取接收字符

MOV @R0,A ;保存一個字符

INC R0 ;修改指針

DJNZ R7,WAIT ;全部字符接收完? RET8.6單總線接口及其應(yīng)用舉例

8.6.1單總線數(shù)據(jù)通信協(xié)議概述單總線(1-Wire)是美國Dallas公司的一項專利技術(shù)。與目前廣泛應(yīng)用的其他串行數(shù)據(jù)通信方式不同,它采用單根信號線完成數(shù)據(jù)的雙向傳輸,并同時通過該信號線為單總線器件提供電源,具有節(jié)省I/O引腳資源、結(jié)構(gòu)簡單、成本低廉、便于總線擴(kuò)展和維護(hù)等諸多優(yōu)點(diǎn),在電池供電設(shè)備、便攜式儀器以及現(xiàn)場監(jiān)控系統(tǒng)中有良好的應(yīng)用前景。目前Dallas公司采用單總線技術(shù)生產(chǎn)的芯片包括數(shù)字溫度計、數(shù)字電位器、A/D轉(zhuǎn)換器、定時器、RAM與EEPROM存儲器、線路驅(qū)動器以及微型局域網(wǎng)耦合器等系列器件。單總線技術(shù)有3個顯著的特點(diǎn):①單總線芯片通過一根信號線進(jìn)行地址信息、控制信息和數(shù)據(jù)信息的傳送,并通過該信號線為單總線芯片提供電源;②每個單總線芯片都具有全球唯一的訪問序列號,當(dāng)多個單總線器件掛在同一單總線上時,對所有單總線芯片的訪問都通過該唯一序列號進(jìn)行區(qū)分;③單總線芯片在工作過程中,不需要提供外接電源,而通過它本身具有的“總線竊電”技術(shù)從總線上獲取電源。此外,單總線技術(shù)采用特殊的總線通信協(xié)議實現(xiàn)數(shù)據(jù)通信。在通信過程中,單總線數(shù)據(jù)波形類似于脈沖寬度調(diào)制信號,總線發(fā)出復(fù)位信號(保持低電平的周期最長)同步整個總線,然后由系統(tǒng)主機(jī)初始化每一位數(shù)據(jù)時隙,利用寬脈沖或窄脈沖來實現(xiàn)寫“0”或?qū)憽?”。在讀數(shù)據(jù)時,主機(jī)利用窄脈沖初始化時隙,從機(jī)將數(shù)據(jù)線保持在低電平,通過展寬低電平脈沖返回邏輯“0”,或保持脈沖寬度不變來返回邏輯“1”。多數(shù)單總線器件支持兩種數(shù)據(jù)速率,較低的數(shù)據(jù)速率約為14Kbit/s,較高的數(shù)據(jù)速率約為140Kbit/s。8.6.2單總線數(shù)字溫度傳感器DS18B20

DS18B20是美國Dallas公司生產(chǎn)的單總線數(shù)字式溫度傳感器,采用單總線協(xié)議,即與單片機(jī)接口僅需占用一個I/O端口,無須任何外部元件,直接將環(huán)境溫度轉(zhuǎn)化為數(shù)字信號,以數(shù)字碼形式串行輸出,從而極大地簡化了傳感器與微處理器的接口。在使用過程中,可由一根I/O數(shù)據(jù)線既供電又傳輸數(shù)據(jù)DS18B20引腳圖基于DS18B20的數(shù)字溫度計的電路原理圖8.7I2C總線接口及其應(yīng)用舉例

8.7.1I2C總線協(xié)議概述I2

溫馨提示

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

評論

0/150

提交評論