微機原理與應用Ch_第1頁
微機原理與應用Ch_第2頁
微機原理與應用Ch_第3頁
微機原理與應用Ch_第4頁
微機原理與應用Ch_第5頁
已閱讀5頁,還剩45頁未讀, 繼續免費閱讀

下載本文檔

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

文檔簡介

1、Ch9 串行通信接口及應用串行通信接口及應用 9.1串行通信基礎 9.2MCS-51單片機的串行口 9.3點對點串行通信 9.4串行通信總線9 串行通信接口及應用9.4 串行通信總線 總線及所連接的器件或設備構成了總線網絡。 在監測與控制領域,該總線網絡叫做分布式系統或集散系統; 若采用主從方式管理總線,則稱系統為一點對多點的多機通信系統; 若采用支持多主設備的管理方式,則稱為多點對多點的多機通信系統。 I2C總線 (Inter-Integrated Circuit)是Philips公司開發的一個雙向2線總線,用于IC之間的通信,也稱為Inter IC。 接口簡單,解決了數字控制電路設計中遇到

2、的很多接口問題,已成為一個事實上的國際標準。 9 串行通信接口及應用9.4 串行通信總線 I2C總線-工作原理 總線器件 器件:連接到總線上的IC 發送器:發送數據到總線的器件;接收器:從總線接收數據的器件 主機器件:控制總線的器件;從機器件:被主機器件尋址的器件 每個器件都有一個唯一的地址識別,無論是MCU還是ADC、DAC; 連接到總線的器件數量只受總線的最大電容限制; 是一個多主機總線,當多個主機使用總線發生沖突或爭用時通過仲裁方法解決。 大多數應用為主從式,即MCU為主機,其它均為從機。 9 串行通信接口及應用9.4 串行通信總線 I2C總線-工作原理 總線信號 SCL(serial

3、clock):串行時鐘,雙向,用于同步數據位的傳輸,空閑時高電平;通常由主機發出,最大頻率為:標準模式100KHz、快速模式400KHz、超快速模式1MHz、高速模式3.4MHz; SDA(serial data):串行數據,雙向,用于傳輸數據位,空閑時高電平 所有器件的輸出必須是漏極開路或集電極開路(線與)形式,總線要通過一個上拉電阻(R1、R2)連接到電源Vcc; 主要電氣規范:引腳最大輸入電容10pF低電平輸入電壓-0.50.3Vcc高電平輸入電壓 0.7Vcc Vcc(max) + 0.5 V或5.5 V,低電平輸入電流320mA,高電平輸入電流Ii 10A 9 串行通信接口及應用9.

4、4 串行通信總線 I2C總線-工作原理 數據傳送 數據傳送總是以一個啟始條件S開始、以一個停止條件P結束的; SDA上的數據只能在SCL處于低電平時才能改變,在SCL高電平時必須保持穩定; 發送到SDA線上的數據必須以字節(8 bit)為單位,首先傳輸的bit應該是MSB; 每個字節后必須跟一個響應位ACK,表示從機已接收到一個字節數據,方法是:主機釋放SDA(高電平),從機將SDA變為低電平; 傳輸完成1字節后,緊接著傳輸下一個字節,每次傳輸的字節數不受限制,直至結束。 9 串行通信接口及應用9.4 串行通信總線 串行E2PROM 24LC04B:內部結構 Microchip Technol

5、ogy Inc.生產的、符合I2C總線標準的E2PROM 4 KBit存儲器5128bit字節地址范圍000H01FFH SDA:串行數據 SCL:串行時鐘,最大頻率400KHz。 地址送入“Address Register and Counter”、通過“Y Decoder、X Decoder”選擇存儲器的Byte;數據送入“16 byte Data Buffer”; Control Logic完成I2C接口和存儲器讀寫操作控制, WP:寫保護輸入,禁止對保護存儲器區域進行與寫相關的任何操作; Vcc:電源正極輸入、范圍2.55.0VDC,Vss:電源負極, HV Generator:產生數

6、據寫入需要的高電壓。 9 串行通信接口及應用9.4 串行通信總線 串行E2PROM 24LC04B:寫入數據 字節寫方式時序 1010B從機地址 A10A8存儲器字節地址高3位;R/W:讀寫控制位,0寫入、1讀出; 發出停止條件P后,24LC04B內部啟動數據寫入操作。 頁寫方式時序寫入16個字節后、發出停止條件P,啟動數據寫入操作。 沒有提供寫入完成狀態標志,但可以根據ACK進行判斷:9 串行通信接口及應用9.4 串行通信總線 串行E2PROM 24LC04B:讀出數據 讀當前地址字節數據讀“Address Register and Counter”指定的數據字節 隨機讀字節數據讀任意地址的

7、數據字節先發送寫入控制字和地址,確定“Address Register and Counter”中的值;接著發送讀出控制字,隨后24LC04B輸出1字節數據;發送停止條件而不發送ACK,終止隨機讀。 讀出字節數據后,“Address Register and Counter”自動加1,指向下一個字節。 順序讀字節數據 在當前讀和隨機讀中,若主機發送ACK,則從機繼續輸出數據。9 串行通信接口及應用9.4 串行通信總線 MCS-51單片機的I2C接口軟件模擬方法實現與24LC04B接口BFDAEQU56H;發送、接收緩沖區SCLEQUP1.0SDAEQUP1.19 串行通信接口及應用9.4 串行

8、通信總線 MCS-51單片機的I2C接口;發送啟始條件子程序STC:SETBSDA;SDA=1NOPCLRSCL;SCL=0NOPSETBSCL;SCL=1NOP;延時,保證時序要求SETBSDA;SDA=1NOP;延時,保證時序要求CLRSDA;SDA=0NOPCLRSCL;SCL=0RET9 串行通信接口及應用9.4 串行通信總線 MCS-51單片機的I2C接口;發送停止條件子程序SPC:CLRSDA;SDA=0NOPCLRSCL;SCL=0NOPSETBSCL;SCL=1NOP;延時,保證時序要求CLRSDA;SDA=0NOP;延時,保證時序要求SETBSDA;SDA=1NOPCLRSC

9、L;SCL=0RET9 串行通信接口及應用9.4 串行通信總線 MCS-51單片機的I2C接口;發送1字節子程序T1B:MOVR2,#8;8bit計數T1B1:CLRSCL;SCL=0RLCA;CyD7(要發送的數據在A中)MOVSDA,C;SDACyNOP;延時,保證時序要求NOPSETBSCL;SCL=1NOP;延時,保證時序要求DJNZR2,T1B1RET9 串行通信接口及應用9.4 串行通信總線 MCS-51單片機的I2C接口;接收1字節子程序R1B:MOVR2,#8;8bit計數R1B1:CLRSCL;SCL=0:令24LC04B輸出1 bitNOP;延時,保證時序要求SETBSDA

10、;設置P1.1為輸入SETBSCL;SCL=1NOP;延時,保證時序要求NOPMOVC,SDA;Cy SDARLCA;D0Cy (讀出的數據在A中)DJNZR2,R1B1RET9 串行通信接口及應用9.4 串行通信總線 MCS-51單片機的I2C接口;讀出ACK子程序RACK:CLRSCL;SCL=0NOP;延時,保證時序要求NOPSETBSCL;SCL=1RAC1:MOVC,SDA;Cy SDAJCRAC1;無確認,等待RET9 串行通信接口及應用9.4 串行通信總線 MCS-51單片機的I2C接口;寫1字節數據子程序W1D:LCALLSTC;發送開始條件MOVA,#0A0H;發送寫入控制字

11、和高3位地址LCALLT1BLCALLRACK;讀出ACKMOVA,#10H;發送低8位地址LCALLT1BLCALLRACK;讀出ACKMOVA,BFDA;取要寫入的數據LCALLT1B;發送數據LCALLRACK;讀出ACKLCALLSPC;發送停止條件RET9 串行通信接口及應用9.4 串行通信總線 MCS-51單片機的I2C接口;隨機讀1字節數據子程序R1D:LCALLSTC;發送開始條件MOVA,#0A0H;發送寫入控制字LCALLT1B;和高3位地址LCALLRACK;讀出ACKMOVA,#10H;發送低8位地址LCALLT1BLCALLRACK;讀出ACKLCALLSTC;發送開

12、始條件MOVA,#0A1H;發送讀出控制字LCALLT1BLCALLRACK;讀出ACKLCALLR1B;接收1字節LCALLSPC;發送停止條件MOVBFDA,A;保存數據RET9 串行通信接口及應用9.4 串行通信總線 SPI工作原理 SPI (Serial Peripheral Interface):串行外設接口,是一種串行總線, 采用3線連接方式和1個主機(Master)管理多個從機(Slave)的, 用于單片機與多個器件之間、或多個單片機之間的高速同步數據傳送。 8-Bit Shift Register:進行串入/并出與并入/串出的轉換 MISO (Master-In/Slave-O

13、ut):主入從出,串行數據; MOSI (Master-Out /Slave-In),主出從入,串行數據; SPI Clock Generator:產生移位寄存器需要的移位時鐘信號SCK SS (Slave Select):主機輸出選擇從機,控制通信過程。 優點:數據傳送速度高,缺點:需要I/O口線選擇從機 9 串行通信接口及應用9.4 串行通信總線 SPI工作原理為了配合主從機的移位時序,主機SCK極性CPOL(Clock Polarity)、SCK與MISO、 MOSI間的相位關系CPHA (Clock Phase)是可變的。 CPHA = 0SCK=0 主機輸出SS選擇從機,主機MOSI

14、、從機MISO輸出MSB(b7)位; 主機輸出SCK,在SCK:主機將MISO上的數據位、從機將MOSI上的移入移位寄存器; 主機輸出SCK,在SCK:主機MOSI、從機MISO移出1位數據; 主機輸出8個SCK后,b0(LSB)已經移出,主機MOSI保持邏輯1、從機MISO輸出MSB; 主機將SS變高,從機MISO變為高阻狀態。 9 串行通信接口及應用9.4 串行通信總線 SPI工作原理 CPHA = 1SCK=0 主機輸出信號SS選擇從機,從機MISO輸出LSB(b0)位; 主機輸出SCK,在SCK:主機MOSI、從機MISO移出1位數據; 主機輸出SCK,在SCK:主機將MISO上的數據

15、位、從機將MOSI上的移入移位寄存器; 主機輸出8個SCK后,b0(LSB)已經移出,主機MOSI保持邏輯1、從機MISO輸出其LSB; 主機將SS變高,從機MISO變為高阻狀態 。9 串行通信接口及應用9.4 串行通信總線 串行閃存M25P1616 MBit閃存(Flash memory)芯片采用串行接口SPI,最高時鐘頻率75MHz 16 Mbit的組織2MByte32個區(sector)64KByte/區256Byte為1頁(page)字節地址范圍000000H0FFFFFH read-only memory area:存儲芯片標識碼(ID) Status Register:包含狀態位和

16、控制位9 串行通信接口及應用9.4 串行通信總線 串行閃存M25P16 D:串行數據輸入,它通過I/O Shift Register接收指令、地址和數據 指令送入Control Logic,控制芯片工作狀態, 地址送入Address Register and Counter、通過Y Decoder、X Decoder選擇存儲器的Byte, 數據通過“256 byte Data Buffer”寫入存儲器。 Q:串行數據輸出9 串行通信接口及應用9.4 串行通信總線 串行閃存M25P16 C:移位時鐘,/S:芯片選擇輸入 支持SPI的模式 規律:在時鐘C移入數據,在時鐘C移出數據。 /W:寫保護輸

17、入 /HOLD:暫停串行數據 Vcc:電源正極輸入、范圍2.73.6VDC,Vss:電源負極, High voltage Generator:產生數據寫入需要的高電壓。 9 串行通信接口及應用9.4 串行通信總線 串行閃存M25P16 按字節讀出的指令時序讀出數據有按字節讀和按字節高速讀2種方式 /S選擇M25P16; 接收1 byte按字節讀數據指令碼(03H); 接收24 bit地址A23A0,地址可以是000000H0FFFFFH中的任何值; 輸出1 byte讀數b7b0,輸出后地址自動加1; 若繼續輸出數據字節,保持/S低,繼續輸出;若不,使/S結束指令。 9 串行通信接口及應用9.4

18、 串行通信總線 串行閃存M25P16 頁寫入方式寫入數據的指令時序即一次寫入256字節數據,且頁地址最好從00H開始。 /S選擇M25P16; 接收1 byte寫入數據頁指令碼(02H); 接收24 bit地址A23A0,地址可以是000000H0FFFFFH中的任何值;9 串行通信接口及應用9.4 串行通信總線 串行閃存M25P16 頁寫入方式寫入數據的指令時序 接收第1 byte數據;接收第2 byte數據, ; 接收256 byte數據后,使/S結束指令,M25P16開始寫入數據。 在寫入數據前必須先清除(Erase)存儲器,清除就是把存儲器內容寫入1。一次可以清除1個區,也可一次清除整

19、個存儲器芯片9 串行通信接口及應用9.4 串行通信總線 MCS-51單片機擴展閃存當需要存儲大量數據時,使用串行閃存擴展是一個合適的方法。 D3:線性集成穩壓器,為D2提供3V電源; D4:OC輸出門(74LVC07),作用是轉換邏輯電平。 AT89S53與MCS-51單片機兼容,但內部含有SPI接口。9 串行通信接口及應用9.4 串行通信總線 MCS-51單片機擴展閃存 為了操作SPI設立了SPCR、SPSR和SPDR等SFR。 SPDR:SPI數據寄存器,發送與接收的同名、同地址。 SPCR:SPI控制寄存器 9 串行通信接口及應用9.4 串行通信總線 MCS-51單片機擴展閃存 SPSR

20、:SPI狀態寄存器9 串行通信接口及應用9.4 串行通信總線 MCS-51單片機擴展閃存MOVP1,#0FFH;初始化SPIANLSPCR,#0BFH;SPE=0MOVSPCR,#0;SPIE=0,SPE=0,;DORD=0,MSTR=1ORLSPCR,#12H;CPOL=0,CPHA=0,;SPR1=1,SPR0=0NOPORLSPCR,#40H;SPE=1,打開SPIS1BSPI:MOVSPDR,A;寫入1 Byte:A = 要寫入的數據S1BSP1:MOVA,SPSR;讀狀態寄存器JNB ACC.7,S1BSP1 ;發送完成?RET;是:返回9 串行通信接口及應用9.4 串行通信總線 M

21、CS-51單片機擴展閃存;寫入256字節WRDAT:LCALLWRMEN;M25P16寫使能MOVDPTR,#2000H;緩沖區首地址CLRP1.4;選擇M25P16MOVA,#02H;發送頁數據寫入指令LCALLS1BSPIMOVA,#00H;發送24 Bit地址:A2316LCALLS1BSPIMOVA,#08H;發送24 Bit地址:A158LCALLS1BSPIMOVA,#00H;發送24 Bit地址:A70LCALLS1BSPI9 串行通信接口及應用9.4 串行通信總線 MCS-51單片機擴展閃存;寫入256字節MOVR6,#0;256字節計數WRDA1:MOVXA,DPTR;取1字

22、節MOVSPDR,AWRDA2:MOVA,SPSR;讀狀態寄存器JNB ACC.7,WRDA2 ;1字節發送完成?INCDPTR;修改地址指針DJNZR6,WRDA1;256字節發送完成?MOVA,SPDR;復位SPIESETBP1.4;啟動M25P16頁寫入9 串行通信接口及應用9.4 串行通信總線 MCS-51單片機擴展閃存;寫入256字節WRDA3:NOPCLRP1.4;讀M25P16狀態寄存器MOVA,#05H;發送指令LCALLS1BSPIMOVSPDR,#00H;寫入數據為00H或任意WRDA5:MOV A,SPSR;讀狀態寄存器JNB ACC.7,WRDA5 ;接收完成?SETB

23、P1.4MOVA,SPDR;是:讀取狀態寄存器JBACC.0,WRDA3 ;頁寫入結束?RET;返回9 串行通信接口及應用9.4 串行通信總線 MCS-51單片機多機通信多個MCS-51單片機之間可進行多機通信,構成一個芯片級主從式總線分布式系統。 只有1個單片機為主機,其它單片機均為從機; 為了識別從機,必須給它們預先分別分配一個唯一的地址或編號1N。 支持多機通信硬件條件在方式2、3時,SM2和RB8對RI的控制手段:SM2=1、RB8=0:不置位RI9 串行通信接口及應用9.4 串行通信總線 MCS-51單片機多機通信 多機通信方法 主機首先發送從機地址,且置RB8=1;發送數據時,置R

24、B8=0; 從機初始化后,均置SM2=1,通過RI等待接收自己的地址; 從機接收1字節數據(地址)后,與預置的自己的地址進行比較;相等:主機要與自己進行通信(被尋址);置SM2=0,以便后續數據的RB8=0能激活RI;不相等:主機不是與自己通信的,保持SM2=1;主機發送后續數據時RB8=0,不會激活RI。9 串行通信接口及應用9.4 串行通信總線 MCS-51單片機多機通信MCS-51單片機的串行口是一個UART,那么如何傳送一個數據包呢? 自定義十六進制數據包 地址:從機地址,1個字節;數據1N:要傳送的數據,均為1個字節;校驗碼:占1或2個字節,可按照以前介紹的方法得到。 如何確定一個數

25、據包開始和結束呢?連續發送數據包,一旦接收字節的時間間隔大于某個值(如5ms),就表明當前數據包已經發送完成,當然隨后的也將是新的數據包??梢栽O立一個定時器監督接收字節的間隔,一旦間隔大于5ms就讀取并處理接收的數據包,處理完成后準備接收新的數據包。 9 串行通信接口及應用9.4 串行通信總線 MCS-51單片機多機通信 現有MCS-51單片機的fosc =11.0592MHz,請編寫程序實現主從式多機串行通信,波特率為19200BPS。 解:根據題意,設置串行口工作在方式3,使用CT1產生收發時鐘,使用CT0監督接收字節的時間間隔。為了便于編程和提高程序執行效率,設立必要的標志和緩沖區。 主

26、機程序BFSREQU80H;接收緩沖區 80HFFHBFSTEQU0FFH;發送緩沖區 FFH80HSADREQU30H;從機地址TSCREQU31H;串行接收時間間隔定時器MKSCEQU20H.0;正在串行接收標志MKSREQU20H.1;接收到一個數據包標志MKSTEQU20H.2;串行發送任務標志9 串行通信接口及應用9.4 串行通信總線 MCS-51單片機多機通信-主機程序ORG0000H LJMPSTR;初始化ORG000BH;CT0溢出中斷中斷服務程序入口PUSHPSWLJMPT0INTORG0023H;串行口中斷服務程序入口地址PUSHACCPUSHPSW LJMPSCINTST

27、R:ORLP3,#01H;P3.0為輸入 MOVIE,#12H;EA=0,ES=1,ET0=1MOVTCON,#00H;關閉CT0、CT1MOVIP,#10H;串行口中斷優先級最高9 串行通信接口及應用9.4 串行通信總線 MCS-51單片機多機通信-主機程序MOVTMOD,#21H;CT1定時方式2,產生收發時鐘MOVTH0,#0EEH;CT0定時方式1,5ms初值MOVTL0,#07H;要考慮中斷響應和重裝初值指令MOVTH1,#0FDH;波特率=9600BPS的初值MOVTL1,#0FDHMOV20H,#0;復位各種標志ORLPCON,#80H;SMOD=1,波特率=19200BPSMO

28、VSCON,#0C0H ;Mode 3/9-bit,SM2=0ORLTCON,#50H;啟動CT0、CT1SETBEA;開中斷MAIN: ;主機主程序JNBMKST,MAN1;有發送任務?CLRMKST9 串行通信接口及應用9.4 串行通信總線 MCS-51單片機多機通信-主機程序;主機主程序 ;組織發送數據到發送緩沖區MOVR1,#BFST;發送緩沖區指針MOVR3,#N;發送字節數,包括從機地址字節MOVA,SADR;取從機地址SETBTB8;TB8=1表示發送的是從機地址MOVSBUF,A;啟動串行發送MOVR0,#BFSR;接收緩沖區指針CLRMKSC;清除正在串行接收標志MAN1:J

29、NBMKSR,MAIN;接收到一個數據包?CLRMKSR ;處理數據包LJMPMAIN9 串行通信接口及應用9.4 串行通信總線 MCS-51單片機多機通信-主機程序SCINT:;主機RI+TI中斷服務程序JBTI,SCIS;發送中斷?JBRI,SCIR;接收中斷?SCIE:POPPSWPOPACCRETISCIS:CLRTI;清除發送中斷標志DJNZR3,SCIS1;發送結束?SETBREN;是:打開接收,等待響應SJMPSCIESCIS1:MOVA,R1;否:繼續發送CLRTB8;TB8=0表示發送的是數據MOVSBUF,A;發送DECR1;修改發送緩沖區指針SJMPSCIE9 串行通信接

30、口及應用9.4 串行通信總線 MCS-51單片機多機通信-主機程序SCIR:CLRRI;清除接收中斷標志MOVTSCR,#0;復位時間間隔定時器SETBMKSC;置位正在串行接收標志MOVA,SBUF;讀接收的數據字節MOVR0,A;保存數據INCR0;修改接收緩沖區指針SJMPSCIET0INT:MOVTL0,#0EEH;主機CT0溢出中斷中斷服務MOVTH0,#07H;重裝入初值INCTSCR;時間間隔計數(5ms計數)CJNETSCR,#2,T0I9;=10ms?MOVTSCR,#0JNBMKSC,T0I9;正在串行接收?SETBMKSR;置位接收到一個數據包標志T0I9:POPPSW;

31、恢復斷點現場RETI9 串行通信接口及應用9.4 串行通信總線 MCS-51單片機多機通信-從機程序BFSREQU80H;接收緩沖區 80HFFH ;與主機的相同MKADEQU20H.0;本機已被尋址標志MKSREQU20H.1;接收到一個數據包標志ORG0000H LJMPSTR;初始化ORG000BH;CT0中斷中斷服務程序入口PUSHPSWLJMPT0INTORG0023H;串行口中斷服務程序入口地址PUSHACCPUSHPSWLJMPSCINTSTR:ORLP3,#01H;P3.0為輸入9 串行通信接口及應用9.4 串行通信總線 MCS-51單片機多機通信-從機程序 ;與主機的相同MOVSCON,#0E0H;Mode 3/9-bit,SM2=1ORLTCON,#50H;啟動CT0、CT1SETBREN;打開串行口接收SETBEA;開中斷MAIN: ;從機主程序JNBMKSR,MAIN;接收到一個完整數據包?CLRMKSR ;處理數據包,并發送響應數據LJMPMAINSCINT:;從機RI+TI中斷服務程序JBTI,SCIS;發送中斷?JBRI,SCIR;接收中斷?SCIE:POPPSWP

溫馨提示

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

評論

0/150

提交評論