09 串行通信.ppt_第1頁(yè)
09 串行通信.ppt_第2頁(yè)
09 串行通信.ppt_第3頁(yè)
09 串行通信.ppt_第4頁(yè)
09 串行通信.ppt_第5頁(yè)
已閱讀5頁(yè),還剩55頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1,PIC單片機(jī)技術(shù),電子信息與電氣工程系 通信教研室,2,第9章 串行通信及通用接收發(fā)送器模塊,1.串行通信的基本概念 2.SPI串行通信 3. I2C串行通信,3,第9章 串行通信及通用接收發(fā)送器模塊,1.串行通信的基本概念 2.SPI串行通信 3. I2C串行通信,4,第9章 串行通信及通用接收發(fā)送器模塊,串行通信的基本概念,并行通信的優(yōu)點(diǎn)是速度快,效率高,缺點(diǎn)是不適合遠(yuǎn)距離通信。串行通信剛好相反。,5,同步方式和異步方式 (1) 同步方式: 發(fā)送與接收時(shí)鐘始終保持嚴(yán)格同步。,6,(2)異步方式:按幀傳送數(shù)據(jù), 它利用每一幀的起、止信號(hào)來建立發(fā)送與接收之間的同步。,7,PIC16F877

2、單片機(jī)主要配置有2種形式的串行通信模塊: 主控同步串行通信MSSP (Master Synchronous Serial Port) 通用同步/異步收發(fā)器USART (Universal Synchronous/Asynchronous Receiver Transmitter ) MSSP模塊主要應(yīng)用于系統(tǒng)內(nèi)部近距離的串行通信擴(kuò)展,如SPI、I2C模式。 USART模塊主要應(yīng)用于系統(tǒng)之間的遠(yuǎn)距離串行通信,在外圍接口電路及計(jì)算機(jī)通信中應(yīng)用相當(dāng)廣泛。,8,第9章 串行通信及通用接收發(fā)送器模塊,1.串行通信的基本概念 2.SPI串行通信 3. I2C串行通信,9,9.1 SPI串行通信,SPI(S

3、erial Peripheral Interface):摩托羅拉公司推出。是一種單片機(jī)外設(shè)芯片同步串行擴(kuò)展接口。引腳性價(jià)比高,因而在市場(chǎng)上得到了廣泛的應(yīng)用。,10,9.1 SPI串行通信,數(shù)據(jù)以字節(jié)為單位傳送,每次傳1個(gè)或多個(gè)字節(jié)。從高位MSB開始到低位LSB結(jié)束。 注:SDI、SDO、SCK的引腳。p11,11,9.1 SPI串行通信模塊,12,9.1.1 SPI模式下相關(guān)寄存器,在SPI模式下,有關(guān)的寄存器共有10個(gè),其中無(wú)編址的只有一個(gè)SSPSR。這10個(gè)寄存器中有6個(gè)寄存器是與其它模塊共用的。另外有4個(gè)寄存器與MSSP模塊相關(guān),它們是與I2C模式共用的。,13,1SSPBUF(收/發(fā)數(shù)

4、據(jù)緩沖器)13H,14,1SSPBUF(收/發(fā)數(shù)據(jù)緩沖器)13H,2SSPSTAT(同步串行狀態(tài)寄存器),15,Bit0/BF:緩沖器滿標(biāo)志位,被動(dòng)參數(shù)。 SPI接收狀態(tài)下: 0:緩沖器空; 1:緩沖器滿。 Bit6/CKE:SPI時(shí)鐘沿選擇。 在CKP = 0,空閑時(shí)鐘電平為低時(shí): 0:SCK的下降沿發(fā)送數(shù)據(jù); 1:SCK的上升沿發(fā)送數(shù)據(jù)。 在CKP = 1, 空閑時(shí)鐘電平為高時(shí): 0:SCK的上升沿發(fā)送數(shù)據(jù); 1:SCK的下降沿發(fā)送數(shù)據(jù)。 Bit7/SMP:SPI采樣控制位。 在SPI主控方式下: 0:在輸出數(shù)據(jù)的中間采樣輸入數(shù)據(jù); 1:在輸出數(shù)據(jù)的末尾采樣輸入數(shù)據(jù)。,16,3SSPCON

5、(同步串行控制寄存器),Bit3-Bit0/SSPM3-SSPM0:同步串行口MSSP方式選擇位。,17,3SSPCON(同步串行控制寄存器),Bit4/CKP:空閑時(shí)鐘電平選擇位。 0:表示空閑時(shí)時(shí)鐘停留在低電平; 1:表示空閑時(shí)時(shí)鐘停留在高電平。 Bit5/SSPEN:同步串口MSSP使能位。 在SPI模式下時(shí),必須確保SCK、SDO設(shè)定為輸出狀態(tài),而SDI、SS設(shè)定為輸入狀態(tài)。 0:關(guān)閉串行端口功能,且設(shè)定SCK、SOD、SDI和SS為普通數(shù)字I/O腳; 1:允許串行端口工作,且設(shè)定SCK、SOD、SDI和SS為SPI接口專用。,18,3SSPCON(同步串行控制寄存器),Bit6/SS

6、POV:接收溢出標(biāo)志位,被動(dòng)參數(shù)。 0:未發(fā)生接收溢出; 1:發(fā)生接收溢出。 注意:所指的接收溢出是緩沖器SSPBUF中數(shù)據(jù)還未取出時(shí),移位寄存器SSPSR中又收到新的數(shù)據(jù),原SSPSR中的數(shù)據(jù)丟失。 Bit7/WCOL:寫操作沖突檢測(cè)位,被動(dòng)參數(shù)。必須用軟件予以清零。 在SPI從動(dòng)方式下: 0:未發(fā)生沖突; 1:發(fā)生沖突。 注意:發(fā)生寫操作沖突,是指移位寄存器SSPSR正在發(fā)送前一個(gè)數(shù)據(jù)字節(jié)時(shí),又有新數(shù)據(jù)寫入SSPBUF。,思考:怎樣防止收發(fā)沖突?,19,4SSPSR移位寄存器,直接從端口引腳接收或發(fā)送數(shù)據(jù),將已經(jīng)成功接收到的數(shù)據(jù)送到緩沖器SSPBUF中,或者從緩沖器SSPBUF讀取將發(fā)送的

7、數(shù)據(jù)。,20,9.1.2 SPI模式工作原理,SPI模式電路的基本結(jié)構(gòu),21,9.1.2 SPI模式工作原理,發(fā)送:要發(fā)送的數(shù)據(jù)通過數(shù)據(jù)總線送入發(fā)送緩沖器,然后 自動(dòng)傳送到移位寄存器中; 接收:移位寄存器接收到數(shù)據(jù)自動(dòng)傳送到接收緩沖器,然 后由程序讀取收到的數(shù)據(jù); 移位寄存器有移入和移出兩個(gè)端口,分別與收和發(fā)兩條通信線路連接,負(fù)責(zé)收發(fā)數(shù)據(jù)。 思考:能否同時(shí)收發(fā)?,22,SPI工作原理示意圖,23,【簡(jiǎn)單例題】利用F877的SPI同步串行功能把單片機(jī)數(shù)據(jù)存儲(chǔ)器20H21H里面的數(shù)據(jù)8、9發(fā)送出去。同步時(shí)鐘采用fosc/4,24,ORG 0000H banksel TRISC movlw B110

8、10111;定義RC3/SCK、RC5/SDO輸出、RC4/SDI輸入 movwf TRISC clrf SSPSTAT ;清除SMP、CKE位 banksel SSPCON movlw B00110000 movwf SSPCON - movf 20H,W movwf SSPBUF ;送至SSPBUF后開始逐位發(fā)送 LOOP1 banksel SSPSTAT btfss SSPSTAT,BF ;是否發(fā)送完畢。注發(fā)送數(shù)據(jù)同時(shí)接收無(wú)效數(shù)據(jù) goto LOOP1; 否,繼續(xù)查詢 banksel SSPBUF movf SSPBUF,W ;移空SSPBUF,25,movf 21H,W movwf S

9、SPBUF ;送至SSPBUF后開始逐位發(fā)送 LOOP2 banksel SSPSTAT btfss SSPSTAT,BF ;是否發(fā)送完畢。注發(fā)送數(shù)據(jù)同時(shí)接收無(wú)效數(shù)據(jù) goto LOOP2; 否,繼續(xù)查詢 banksel SSPBUF movf SSPBUF,W ;移空SSPBUF end,26,【例題9-1】如圖9-5為8位數(shù)碼顯示電路,利用F877的SPI同步串行功能實(shí)現(xiàn)數(shù)碼管數(shù)據(jù)串行傳送,并通過8個(gè)74LS164組成的移位電路,達(dá)到數(shù)碼數(shù)據(jù)的靜態(tài)顯示。 要求: 單片機(jī)數(shù)據(jù)存儲(chǔ)器60H67H定義8個(gè)數(shù)碼管的數(shù)據(jù)顯示緩沖器。 同步時(shí)鐘采用fosc/64,27,28,ORG 0000H ban

10、ksel TRISC movlw B11010111;定義RC3/SCK、RC5/SDO輸出、RC4/SDI輸入 movwf TRISC clrf SSPSTAT ;清除SMP、CKE位 banksel SSPCON movlw B00110010 movwf SSPCON - XSH movlw 67H;設(shè)置顯示緩沖區(qū)的數(shù)據(jù)地址 00110111 movwf FSR; LOOP movf INDF,W;取出數(shù)據(jù) call BMA;查碼表 call OUTXSH;利用SPI方式輸出編碼數(shù)據(jù) decf FSR btfss FSR,4 ;直到8位數(shù)碼全部輸出 60H:00110000 goto L

11、OOP goto end,29,BMA addwf PCL,F retlw 3FH; “0”的段碼 retlw 06H; “1”的段碼 。 retlw 6FH; “9”的段碼 OUTXSH movwf SSPBUF ;送至SSPBUF后開始逐位發(fā)送 LOOP1 banksel SSPSTAT btfss SSPSTAT,BF ;是否發(fā)送完畢。注發(fā)送數(shù)據(jù)同時(shí)接收無(wú)效數(shù)據(jù) goto LOOP1; 否,繼續(xù)查詢 banksel SSPBUF movf SSPBUF,W ;移空SSPBUF return - end,30,SPI串行通信要點(diǎn),1)把數(shù)據(jù)發(fā)送給緩沖區(qū) SSPBUF 2)通過檢測(cè)BF標(biāo)志來

12、判斷是否發(fā)送完畢。,31,Question?,1.希望傳輸線更少 2.主控方希望與多個(gè)被控方通信,32,第9章 串行通信及通用接收發(fā)送器模塊,1.串行通信的基本概念 2.SPI串行通信 3. I2C串行通信,33,9.2 I2C串行通信,1980年P(guān)HILIPS公司首創(chuàng)I2C(Inter Integrated Circuit Bus)總線規(guī)范,已成為一種串行總線事實(shí)上的工業(yè)標(biāo)準(zhǔn)。I2C總線是一種高性能芯片間串行同步傳輸總線,被大量的用作系統(tǒng)內(nèi)部的電路板級(jí)總線。 它定義了兩根信號(hào)線: 串行數(shù)據(jù)線SDA 串形時(shí)鐘線SCL 能夠極其方便的構(gòu)成多機(jī)系統(tǒng)和外圍器件擴(kuò)展系統(tǒng)。,34,思考:為什么只要一條數(shù)

13、據(jù)線?如何實(shí)現(xiàn)收發(fā)(讀寫)?,35,9.2.1 I2C串行通信方式,1I2C數(shù)據(jù)格式,I2C數(shù)據(jù)格式有五部分組成: 1)啟動(dòng)信號(hào)(SCL=1,SDA從高到低); 2)被控器地址(可7位或10位); 3)R/ W信號(hào); 4)若干個(gè)數(shù)據(jù)字節(jié); 5)停止信號(hào)(SCL=1,SDA從低到高)。,36,主控器向被控器寫數(shù)據(jù),37,主控器從被控器讀數(shù)據(jù),38,2I2C地址設(shè)定,在I2C總線系統(tǒng)中的器件,一般都有一個(gè)專用的7位從器件地址碼。地址碼分為兩部分,A6、A5、A4、A3為器件類型碼。如存貯器為:1010,LCD點(diǎn)陣顯示器啟動(dòng)器為:0111等等,不可更改統(tǒng)一規(guī)定。A2、A1、A0表示同一類型的器件的數(shù)

14、目,所以同一類器件在I2C總線系統(tǒng)中最多能接8個(gè)。,39,10位地址格式,其中A9、A8是10位地址的高2位。,40,3.數(shù)據(jù)傳送,主控器發(fā)送數(shù)據(jù),被控器接收數(shù)據(jù)的通信過程如下: (1)主控器在檢測(cè)到總線空閑的狀況下,首先發(fā)送一個(gè)啟動(dòng)S信號(hào),將數(shù)據(jù)線拉低; (2)接著發(fā)送一個(gè)地址字節(jié)(包含著7位地址碼和一位讀/寫位。1為讀,0為寫(設(shè)為寫); (3)掛在同一I2C專線上的所有從動(dòng)器件將主動(dòng)與自身的識(shí)別碼進(jìn)行比較,只有與之匹配的從動(dòng)器件才會(huì)回送一個(gè)應(yīng)答信號(hào)(ACK=0)。這時(shí)主、從動(dòng)器件之間建立一條專向數(shù)據(jù)通道; (4)在主控器收到該應(yīng)答位后開始發(fā)送第一個(gè)數(shù)據(jù)字節(jié); (5)在被控器收到第一個(gè)數(shù)據(jù)

15、字節(jié)后又回送一個(gè)應(yīng)答位ACK = 0; (6)在主控器收到應(yīng)答位后開始發(fā)送第二個(gè)數(shù)據(jù)字節(jié); (7)被控器收到第二個(gè)數(shù)據(jù)字節(jié)后再返送一個(gè)(非)應(yīng)答位(NACK=1)ACK=0; (8)在主控器將所需發(fā)送的全部數(shù)據(jù)(在此假設(shè)是兩個(gè)字節(jié))發(fā)送完畢后,就發(fā)送一個(gè)停止P信號(hào)時(shí)序,結(jié)束整個(gè)通信過程,并且釋放總線,使總線返回空閑狀態(tài)。,41,42,9.2.2 I2C總線應(yīng)用方式,嚴(yán)格按照I2C的定義進(jìn)行主、從器件的通信和數(shù)據(jù)傳送; 采用模擬引腳的方式進(jìn)行自定義主、從器件的通信和數(shù)據(jù)傳送。(這種方式應(yīng)用更廣泛),43,【簡(jiǎn)單例題】 利用RC6和RC7引腳組成一個(gè)I2C同步串行功能,實(shí)現(xiàn)對(duì)24LC515EEPR

16、OM的串行數(shù)據(jù)傳送。 RC6SCL、RC7SDA 編程要求:將數(shù)據(jù)05H存入24LC515的0001H單元中。 注:24LC515芯片本身支持I2C同步串行通信。存儲(chǔ)單元的地址為兩個(gè)字節(jié)。,44,45,List P=16F877 Include “P16F877.INC” DEVICE EQU 2CH; 用于存放設(shè)備地址 10100 TXBUF EQU 28H; 發(fā)送寄存器 ADDRH EQU 2AH; 24LC515地址的高字節(jié)(存放數(shù)據(jù)的單元地址) ADDRL EQU 2BH; 24LC515地址的低字節(jié)(存放數(shù)據(jù)的單元地址) CNT EQU 27H; 存放一個(gè)字節(jié)的位數(shù)8 ORG 000

17、0H START movlw 0A8H; 10101000 定義設(shè)備地址,最后一位為R/W movwf DEVICE movlw 00H ;定義24LC515地址的高字節(jié) movwf ADDRH movlw 01H ;定義24LC515地址的低字節(jié) movwf ADDRL - CALL WRBYTE ; 發(fā)送子程序 . . .,46,- ;向24LC515寫入數(shù)據(jù)子程序 WRBYTE movf DEVICE,W movwf TXBUF ;設(shè)備地址送TXBUF call BSTART ;發(fā)送起始位 call TX ;發(fā)送一個(gè)字節(jié)(發(fā)送設(shè)備地址) - movf ADDRH,W ; movwf TX

18、BUF call TX ;發(fā)送一個(gè)字節(jié)(發(fā)送芯片地址高8位) movf ADDRL,W ; movwf TXBUF call TX ;發(fā)送一個(gè)字節(jié)(發(fā)送芯片地址低8位) -,47,movlw 05H ;(發(fā)送數(shù)據(jù)) movwf TXBUF call TX ; 發(fā)送一個(gè)字節(jié) call BSTOP ;調(diào)用發(fā)送停止位 return; -,48,- ;發(fā)送起始位子程序 BSTART bsf PORTC,SCL ; SCL置高電平 bsf PORTC,SDA ; SDA置高電平 banksel TRISC movlw B00111111; 設(shè)置SCL、SDA為輸出 banksel PORTC NOP 延

19、時(shí)5us bcf PORTC,SDA ;SDA從高到低(啟動(dòng)信號(hào)) NOP 延時(shí)5us bcf PORTC,SCL ;SCL置低電平 return -,49,- ;字節(jié)發(fā)送子程序 把TXBUF里的8個(gè)位發(fā)送出去 TX movlw 08H movwf CNT ;一個(gè)字節(jié)8個(gè)位,循環(huán)8次 TXLP banksel TRISC movlw B00111111 ;設(shè)置SCL、SDA全為輸出 movwf TRISC - banksel PORTC btfss TXBUF,7 ;判斷發(fā)送TXBUF第7位(最高位先發(fā)送) goto BIT0 bsf PORTC,SDA ;發(fā)送1,SDA置高電平 goto C

20、LKOUT BIT0 bcf PORTC,SDA ;發(fā)送0,SDA置低電平 - CLKOUT bsf PORTC,SCL ;SCL置高電平 nop 延時(shí)5us bcf PORTC,SCL ;SCL置低電平 rlf TXBUF,f ;發(fā)送緩沖器左移一位 decfz CNT,f ;是否完成一個(gè)字節(jié)8個(gè)位的發(fā)送? goto TXLP ;否,繼續(xù),50,;-接下來準(zhǔn)備接收ACK banksel TRISC movlw B10111111 ; SCL為輸出,SDA為輸入 movwf TRISC banksel PORTC ACK nop nop bcf PORTC,SCL ; SCL置低電平 nop n

21、op nop bsf PORTC,SCL ; SCL置高電平 nop nop btfsc PORTC,SDA ;判斷SDA為0或1 (ACK) goto ACK ;沒有收到24LC515的反饋信號(hào) bcf PORTC,SCL ; SCL置低電平 return -,51,- ;發(fā)送停止位子程序 BSTOP bcf PORTC,SDA ; SDA置低電平 banksel TRISC movlw B00111111 ; SCL、SDA為輸出 movwf TRISC - banksel PORTC bcf PORTC,SCL ;SCL置低電平 nop nop nop ;延時(shí)3us,等待電平拉低 bsf

22、 PORTC,SCL ;SCL置高電平 nop nop nop ;延時(shí)3us,等待電平拉高 bsf PORTC ,SDA ;SDA置高電平 nop return,52,【例題9-5】圖9-5 利用RC6和RC7引腳組成一個(gè)I2C同步串行功能,實(shí)現(xiàn)對(duì)24LC515EEPROM的串行數(shù)據(jù)傳送。 RC6SCL、RC7SDA 編程要求:將64個(gè)數(shù)據(jù)00H-3FH存入24LC515的0000H-003FH單元中。 注:24LC515芯片本身支持I2C同步串行通信。地址為兩個(gè)字節(jié)。,53,54,List P=16F877 Include “P16F877.INC” DEVICE EQU 2CH; 用于存放

23、設(shè)備地址 TXBUF EQU 28H; 發(fā)送寄存器 ADDRH EQU 2AH; 24LC515地址的高字節(jié) ADDRL EQU 2BH; 24LC515地址的低字節(jié) CNT EQU 27H; 存放一個(gè)字節(jié)的位數(shù)8 COUNTER EQU 26H; 用于存放循環(huán)變量 ORG 0000H START movlw 0A8H; 10101000 定義設(shè)備地址,最后一位為R/W movwf DEVICE movlw 00H ;定義24LC515地址的高字節(jié) movwf ADDRH movlw 00H ;定義24LC515地址的低字節(jié) movwf ADDRL - CALL WRBYTE ; 發(fā)送子程序

24、. . .,55,- ;向24LC515寫入數(shù)據(jù)子程序 WRBYTE movf DEVICE,W movwf TXBUF ;設(shè)備地址送TXBUF call BSTART ;發(fā)送起始位 call TX ;發(fā)送一個(gè)字節(jié)(發(fā)送設(shè)備地址) - movf ADDRH,W ; movwf TXBUF call TX ;發(fā)送一個(gè)字節(jié)(發(fā)送芯片地址高8位) movf ADDRL,W ; movwf TXBUF call TX ;發(fā)送一個(gè)字節(jié)(發(fā)送芯片地址低8位) - movlw 00H movwf COUNTER,56,WRLOOP movf COUNTER,W movwf TXBUF call TX ; 發(fā)

25、送一個(gè)字節(jié) incf COUNTER ; btfss COUNTER,6; 是否已發(fā)送64個(gè)數(shù) goto WRLOOP call BSTOP ;調(diào)用發(fā)送停止位 retlw 00H; -,57,- ;發(fā)送起始位子程序 BSTART bsf PORTC,SCL ; SCL置高電平 bsf PORTC,SDA ; SDA置高電平 banksel TRISC movlw B00111111; 設(shè)置SCL、SDA為輸出 banksel PORTC NOP 延時(shí)5us bcf PORTC,SDA ;SDA從高到低(啟動(dòng)信號(hào)) NOP 延時(shí)5us bcf PORTC,SCL ;SCL置低電平 retlw 00H -,58,- ;字節(jié)發(fā)送子程序 TX movlw 08H movwf CNT ;一個(gè)字節(jié)8個(gè)位,循環(huán)8次 TXLP

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論