第6章:串行總線技術(shù)_第1頁
第6章:串行總線技術(shù)_第2頁
第6章:串行總線技術(shù)_第3頁
第6章:串行總線技術(shù)_第4頁
第6章:串行總線技術(shù)_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 第6章 串行總線技術(shù) 一、本章主要內(nèi)容: 鏈路層通信協(xié)議、各種串行總線。 二、本章重點: PC機與單片機的通信,I2C總線、SPI總線 三、本章難點: I2C總線 四、教學內(nèi)容如下: 第第6章串行總線技術(shù)章串行總線技術(shù) 6.1 串行通信概述串行通信概述按照數(shù)據(jù)流的方向可分為全雙工、半雙工和單工。 第第6章串行總線技術(shù)章串行總線技術(shù) 6.1 串行通信概述串行通信概述按照數(shù)據(jù)流的方向可分為全雙工、半雙工和單工。串行通信按通信雙方是否用同一個時鐘,分同步通信和異步通信 發(fā)信方 收信方 發(fā)信方 收信方 第第6章串行總線技術(shù)章串行總線技術(shù) 6.1 串行通信概述串行通信概述按照數(shù)據(jù)流的方向可分為全雙工、

2、半雙工和單工。串行通信按通信雙方是否用同一個時鐘,分同步通信和異步通信串行通信的傳輸速率:波特率(BaudRate)表示 每秒傳送的位數(shù)(bit/s)。通信協(xié)議(鏈路層協(xié)議和應用層協(xié)議)之鏈路層協(xié)議。 1、異步協(xié)議(適合于異步通信) 每次通信1幀,每幀1個字符 2、同步協(xié)議(適合于同步通信): 每次通信1幀(用幀頭和幀尾標注1個幀) ,每幀若干個字符。1. 異步通信協(xié)議的實例異步通信協(xié)議的實例起止式異步協(xié)議起止式異步協(xié)議 發(fā)信方 收信方 2、同步協(xié)議、同步協(xié)議(適合于同步通信適合于同步通信): 每次通信每次通信1幀幀(用幀頭和幀尾標注用幀頭和幀尾標注1個幀個幀) ,每幀若,每幀若干個字符。干個

3、字符。(1)面向字符的同步協(xié)議面向字符的同步協(xié)議 每次通信1幀(用幀頭和幀尾標注1個幀) ,每幀若干個字符。 用若干特殊字符標注一幀名名 稱稱ASCIIASCIIEBCDICEBCDIC序始序始(SOH)(SOH)000000100000010000000100000001文始(文始(STXSTX)000001000000100000001000000010組終組終(ETB)(ETB)001011100101110010011000100110文終(文終(ETXETX)000001100000110000001100000011同步同步(SYN)(SYN)0010110001011000110

4、01000110010送畢送畢(EOT)(EOT)000010000001000011011100110111詢問詢問(ENQ)(ENQ)000010100001010010110100101101確認確認(ACK)(ACK)000011000001100010111000101110否認(否認(NAKNAK)001010100101010011110100111101轉(zhuǎn)義轉(zhuǎn)義(DLE)(DLE)001000000100000001000000010000(2)面向比特的同步協(xié)議(面向比特的同步協(xié)議(SDLC/HDLC) 每次通信1幀(用幀頭和幀尾標注1個幀) ,每幀若干個字位。 (1)標志場

5、:01111110,稱標志場。 (2)地址場A和控制場C。 地址場A用來規(guī)定與之通信的次站的地址。 控制場C可規(guī)定若干個命令。 (3)信息場I。 I場包含有要傳送的數(shù)據(jù)。并不是每一幀都必須有信息場。即數(shù)據(jù)場可以為0,當它為0時,則這一幀主要是控制命令。 (4)幀校驗場FC。緊跟在信息場之后的是兩字節(jié)的幀校驗場。 16位循環(huán)冗余校驗碼CRC,經(jīng)計算獲得。除了標志場和自動插入的“0”以外,所有的信息都參加CRC計算。 實際應用時的兩個技術(shù)問題: (1)“0”位插入/刪除。 協(xié)議規(guī)定以01111110為標志,但在信息場中也完全有可能有同一種模式的字符,為了把它與標志區(qū)分開來,所以采取了“0”位插入和

6、刪除技術(shù): 發(fā)送端在發(fā)送所有信息(除標志字節(jié)外)時,只要遇到連續(xù)5個“1”,就自動插入一個“0”。 接收端在接收數(shù)據(jù)時(除標志字節(jié))如果連續(xù)收到5個“1”,就自動將其后的一個“0”刪除,以恢復信息的原有形式。 這種“0”位的插入和刪除過程是由硬件自動完成的。 實際應用時的兩個技術(shù)問題: (1)“0”位插入/刪除。 (2)異常結(jié)束。 若在發(fā)送過程中出現(xiàn)錯誤,則協(xié)議常用異常結(jié)束字符使本幀作廢。 在HDLC中,7個連續(xù)的“1”被作為失效字符。 在SDLC中,8個連續(xù)的“1”被作為失效字符。 在兩幀之間,發(fā)送器可以連續(xù)輸出標志字符序列,也可以輸出連續(xù)的高電平,它被稱為空閑(Idle)信號。6.2 串行

7、通信串行通信RS系列總線標準及其接口系列總線標準及其接口6.2.1 RS-232C標準接口總線標準接口總線 機械標準:控制信號線的定義。 電氣標準:-5V-15V規(guī)定為“1” +5V+15V規(guī)定為“0”。6.2.3 單片機與單片機與PC機之間的通信機之間的通信 單片機內(nèi)部的串行口可以作為通信接口,利用該串行口與PC機的COM口進行串行通信:將單片機采集的數(shù)據(jù)傳送到PC機中,由PC機的高級語言或數(shù)據(jù)庫語言對數(shù)據(jù)進行整理及統(tǒng)計等復雜處理就能滿足實際的應用需要。 1、硬件連接 PC機的COM口,輸入輸出為RS-232C電平,而51單片機串行口的輸入輸出均為TTL電平,必須進行電平轉(zhuǎn)換。 2、軟件設計

8、 初始化 PC機和單片機在進行通信時,首先分別對各自的串行口進行初始化、確定串行口工作方式、設定波特率(兩者應設置一致)、傳輸數(shù)據(jù)長度等。 數(shù)據(jù)傳輸。 1) PC機通信軟件的設計機通信軟件的設計 在Windows環(huán)境下提供了完備的API應用程序接口函數(shù),程序員通過這些函數(shù)與通信硬件接口。 初始化 通信 通信函數(shù)是中斷驅(qū)動的: 發(fā)送數(shù)據(jù)時,先將其放入緩存區(qū),串口準備好后,就將其發(fā)送出去; 傳來的數(shù)據(jù)迅速申請中斷,使Windows接收它并將其存入緩沖區(qū),以供讀取。 接收 查詢方式時:CPU要不斷測試串口是否有數(shù)據(jù),以防接收串口數(shù)據(jù)時出現(xiàn)錯誤、效率低; 中斷方式:一旦有數(shù)據(jù)傳至,CPU終止當前任務,

9、由中斷服務程序完成操作。因此,中斷方式具有效率高、接收準確、編程簡單等特點。 (1)打開串口。 可使用CreateFile ( )函數(shù),其格式如下:HANDLE CreateFile ( LPCTSTR lpFileName, DWORD dwDesiredAccess, DWORD dwSharedMode, DWORD LPSECURITY_ ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDistribute, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile ) ; (1)打開串口。 可使

10、用CreateFile ( )函數(shù),其格式如下:HANDLE CreateFile ( LPCTSTR lpFileName, DWORD dwDesiredAccess, DWORD dwSharedMode, DWORD LPSECURITY_ ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDistribute, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile ) ; (2)設置串口。設置串口可以分兩步完成。首先用BuildCommDCB ( )函數(shù)修改DCB (串行通信設備控制塊)結(jié)構(gòu),

11、然后用SetCommState ( )函數(shù)將DCB結(jié)構(gòu)寫到打開的串口,便完成了串口的設置。 (1)打開串口。 可使用CreateFile ( )函數(shù),其格式如下:HANDLE CreateFile ( LPCTSTR lpFileName, DWORD dwDesiredAccess, DWORD dwSharedMode, DWORD LPSECURITY_ ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDistribute, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile ) ; (2)設

12、置串口。設置串口可以分兩步完成。首先用BuildCommDCB ( )函數(shù)修改DCB (串行通信設備控制塊)結(jié)構(gòu),然后用SetCommState ( )函數(shù)將DCB結(jié)構(gòu)寫到打開的串口,便完成了串口的設置。 BuildCommDCB( )函數(shù)使用格式如下:BOOL BuildCommDCB(LPCTSTR lpDef, LPDCB lpDCB ) ;如果該函數(shù)調(diào)用成功,則返回值為TRUE;否則返回值為FALSE。 (1)打開串口。 可使用CreateFile ( )函數(shù),其格式如下:HANDLE CreateFile ( LPCTSTR lpFileName, DWORD dwDesiredAc

13、cess, DWORD dwSharedMode, DWORD LPSECURITY_ ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDistribute, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile ) ; (2)設置串口。設置串口可以分兩步完成。首先用BuildCommDCB ( )函數(shù)修改DCB (串行通信設備控制塊)結(jié)構(gòu),然后用SetCommState ( )函數(shù)將DCB結(jié)構(gòu)寫到打開的串口,便完成了串口的設置。 BuildCommDCB( )函數(shù)使用格式如下:BOOL BuildC

14、ommDCB(LPCTSTR lpDef, LPDCB lpDCB ) ;如果該函數(shù)調(diào)用成功,則返回值為TRUE;否則返回值為FALSE。 SetCommState( )函數(shù)使用格式如下:BOOL SetCommState(HANDL EhFile, LPDCB lpDCB ) ; (3)設置緩沖區(qū)大小。 如果程序需要重新分配發(fā)送和接收緩沖區(qū),則使用SetupComm ( )函數(shù)。 (4)清除緩沖區(qū)。 可使用PurgeComm( )函數(shù)。 (5)從串口接收數(shù)據(jù)。 可使用ReadFile( ) 函數(shù)。 (6)從串口發(fā)送數(shù)據(jù)。 可使用WriteFile( )函數(shù)。 (7)關閉串口。 可使用Clos

15、eHandle( )函數(shù)。 編寫Win32 串行通信程序的基本步驟是: 使用CreateFile( )函數(shù)獲得串口句柄; 使用BuildCommDCB( )和SetCommState( )函數(shù)設置串口工作狀態(tài); 可根據(jù)需要選擇相應的結(jié)構(gòu)和函數(shù)進行其它設置。 如重新設置發(fā)送接收緩沖區(qū)可使用SetupComm( )函數(shù);設置超時則可修改COMMTIMEOUTS結(jié)構(gòu)并使用SetCommTimeouts( )函數(shù)等; 使用ReadFile( )和WriteFile( )函數(shù)讀寫串口; 串行通信結(jié)束時,使用CloseHandle( )函數(shù)關閉串口以釋放控制權(quán),使串口可以被其它的程序使用。 2. 單片機收

16、發(fā)軟件設計單片機收發(fā)軟件設計 設計單片機的通信軟件,實際上是對單片機的串行口的設計,通常采用匯編語言來設計。 首先必須設置串行通信方式( SCON ) 和波特率( PCON)。 匯編程序如下所示: (1)發(fā)送程序的設計。TRT: MOV SCON,#50H ;初始化方式1,波特率為F/32 MOV PCON,#80H MOV R0,#50H MOV R7,#10H ;發(fā)送16個字節(jié)LOOP:MOV A,R0 MOV C,P ;發(fā)送的第9數(shù)據(jù)位 MOV TB8,C MOV SBUF,A ;數(shù)據(jù)給SBUF,啟動發(fā)送WAIT: JBC TI,CONT ;判斷發(fā)送中斷標志 SJMP WAITCONT:

17、INC R0 DJNZ R7,LOOP RET (2)接收程序的設計。RVE: MOV TMOD,#20H ;初始化定時器T1方式2 MOV TH1,#0F4H ;定時器T1賦初值 MOV TL1,#0F4H SETB TR1 MOV R0,#50H MOV R7,#10H ;接收長度16個字節(jié) MOV SCON,#0D0H ;串行口化方式3,接收 MOV PCON,#00H ;置SMOD = 0WAIT0: JBC RI,PRI SJMP WAIT0PRI: MOV A,SBUF JNB P,PNP JNB RB8,ERROR ;轉(zhuǎn)出錯處理 SJMP RIGHTPNP: JB RB8,ERR

18、OR ;轉(zhuǎn)出錯處理RIGHT: MOV R0,A ;數(shù)據(jù)到緩沖器 INC R0 DJNZ R7,WAIT0 ;判斷數(shù)據(jù)是否接收結(jié)束 CLR REN ;清接收標志 RETERROR: (略) 6.2.4 PC機與多個單片機間的通信機與多個單片機間的通信 1. PC機與多個單片機通信電路 PC機與多個單片機通信,不能采用點對點的RS-232C標準,要采用一點對多點的RS-485標準等,要將PC機RS-232C接口轉(zhuǎn)換成RS-485接口: 2. PC機與多個單片機通信協(xié)議 要保證串行通信的可靠進行要保證串行通信的可靠進行,在相互通信時在相互通信時,必須有一套嚴格的必須有一套嚴格的通信協(xié)議。一般稱為應

19、用層通信協(xié)議。一般包含:通信協(xié)議。一般稱為應用層通信協(xié)議。一般包含: 幀頭標志; 地址:主機/從機地址、廣播地址; 命令:點對點命令和廣播命令兩大類。 長度; 數(shù)據(jù); 校驗; 幀尾標志。 2. PC機與多個單片機通信協(xié)議 要保證串行通信的可靠進行要保證串行通信的可靠進行,在相互通信時在相互通信時,必須有一套嚴格的必須有一套嚴格的通信協(xié)議。一般稱為應用層通信協(xié)議。一般包含:通信協(xié)議。一般稱為應用層通信協(xié)議。一般包含: 幀頭標志; 地址:主機/從機地址、廣播地址; 命令:點對點命令和廣播命令兩大類。 點對點命令主要是數(shù)據(jù)和命令傳輸; 廣播命令主要是參數(shù)設置,廣播招故障等。 廣播招故障命令一般是有故

20、障的節(jié)點應答,無故障的節(jié)點不應答,設計時應注意采用舉手排隊機制應答;否則,多節(jié)點同時應答就會有沖突,這一點應特別注意。 長度; 數(shù)據(jù); 校驗; 幀尾標志。 2. PC機與多個單片機通信協(xié)議 要保證串行通信的可靠進行要保證串行通信的可靠進行,在相互通信時在相互通信時,必須有一套嚴格的必須有一套嚴格的通信協(xié)議。一般稱為應用層通信協(xié)議。一般包含:通信協(xié)議。一般稱為應用層通信協(xié)議。一般包含: 幀頭標志; 地址:主機/從機地址、廣播地址; 命令:點對點命令和廣播命令兩大類。 點對點命令主要是數(shù)據(jù)和命令傳輸; 廣播命令主要是參數(shù)設置,廣播招故障等。 廣播招故障命令一般是有故障的節(jié)點應答,無故障的節(jié)點不應答

21、,設計時應注意采用舉手排隊機制應答;否則,多節(jié)點同時應答就會有沖突,這一點應特別注意。 長度; 數(shù)據(jù); 校驗; 幀尾標志。 通信分為三個階段:呼叫、握手階段,發(fā)送通信分為三個階段:呼叫、握手階段,發(fā)送/接收階段,結(jié)束階接收階段,結(jié)束階段。段。 3. 上位機軟件設計 實現(xiàn)PC機的串行通信通常有以下幾種方法, 一是利用嵌入式匯編語言編寫串行口讀寫函數(shù),在通信程序中直接調(diào)用這些函數(shù),這種方法的優(yōu)點是代碼效率高,通信速度快,但需要掌握較深的匯編語言知識; 3. 上位機軟件設計 實現(xiàn)PC機的串行通信通常有以下幾種方法, 一是利用嵌入式匯編語言編寫串行口讀寫函數(shù),在通信程序中直接調(diào)用這些函數(shù),這種方法的優(yōu)

22、點是代碼效率高,通信速度快,但需要掌握較深的匯編語言知識; 二是利用Windows 提供的API函數(shù)完成與硬件接口的通信,優(yōu)點是可以開發(fā)出各種通信軟件,但編程復雜,需要掌握大量的通信知識; 3. 上位機軟件設計 實現(xiàn)PC機的串行通信通常有以下幾種方法, 一是利用嵌入式匯編語言編寫串行口讀寫函數(shù),在通信程序中直接調(diào)用這些函數(shù),這種方法的優(yōu)點是代碼效率高,通信速度快,但需要掌握較深的匯編語言知識; 二是利用Windows 提供的API函數(shù)完成與硬件接口的通信,優(yōu)點是可以開發(fā)出各種通信軟件,但編程復雜,需要掌握大量的通信知識; 三是利用第三方串口通信控件來實現(xiàn),如免費的SPComm 控件、Visua

23、l Basic 中的MSComm 控件、TurboPower 公司的APRO 通信組件等, 優(yōu)點是使用方便簡單,可以加快應用程序的開發(fā),但如果不提供組件的源代碼,功能難以擴展。 4. 單片機軟件設計 (1) 設置通信方式和波特率。MOV SCON,#50H ;初始化串口設為方式1MOV TMOD,#20H ;利用定時器利用定時器1為波特率發(fā)生器并設為模式為波特率發(fā)生器并設為模式2MOV PCON,#XXH ;設置SMOD值MOV TH1,#XXH ;設置定時器初始值SETB TR1 ;啟動定時器1 4. 單片機軟件設計 (1) 設置通信方式和波特率。MOV SCON,#50H ;初始化串口設為

24、方式1MOV TMOD,#20H ;利用定時器利用定時器1為波特率發(fā)生器并設為模式為波特率發(fā)生器并設為模式2MOV PCON,#XXH ;設置SMOD值MOV TH1,#XXH ;設置定時器初始值SETB TR1 ;啟動定時器1 (2) 單片機通信協(xié)議處理程序設計。 單片機等待接收PC機發(fā)來的信號幀并按通信協(xié)議作出相應響應。 (2) 單片機通信協(xié)議處理程序設計。 單片機等待接收PC機發(fā)來的信號幀并按通信協(xié)議作出相應響應。例如: 6.3.1 SPI總線簡介總線簡介 通信結(jié)構(gòu)如圖:通信結(jié)構(gòu)如圖: 通信中有一個主機(Master),多個從機(Slave)。SPI總線是一種三線同步總線: 1、MISO

25、(Data line):Master Input Slave Output 6.3.1 SPI總線簡介總線簡介 通信結(jié)構(gòu)如圖:通信結(jié)構(gòu)如圖: 通信中有一個主機(Master),多個從機(Slave)。SPI總線是一種三線同步總線: 1、MISO(Data line):Master Input Slave Output 2、MOSI(Data line):Master Output Slave Input 6.3.1 SPI總線簡介總線簡介 通信結(jié)構(gòu)如圖:通信結(jié)構(gòu)如圖: 通信中有一個主機(Master),多個從機(Slave)。SPI總線是一種三線同步總線: 1、MISO(Data line):

26、Master Input Slave Output 2、MOSI(Data line):Master Output Slave Input 3、SCK (Clock line):Master Output Slave Input 主機在主機在SCK的上升沿,從的上升沿,從MO線輸出數(shù)據(jù);線輸出數(shù)據(jù); 從機在從機在SCK的下降沿,從的下降沿,從SI線采樣(輸入)數(shù)據(jù);線采樣(輸入)數(shù)據(jù);SCK/SCKMOSI 從機在從機在SCK的上升沿,從的上升沿,從SO線輸出數(shù)據(jù);線輸出數(shù)據(jù); 主機在主機在SCK的下降沿,從的下降沿,從MI線采樣(輸入)數(shù)據(jù);線采樣(輸入)數(shù)據(jù); 主機在主機在SCK的上升沿,

27、從的上升沿,從MO線輸出數(shù)據(jù);線輸出數(shù)據(jù); 從機在從機在SCK的下降沿,從的下降沿,從SI線采樣(輸入)數(shù)據(jù);線采樣(輸入)數(shù)據(jù);SCK/SCKMISOSCK/SCKMOSI6.4 I2C總線I2C簡介 I2C總線用于IC器件之間的通信,它由兩根線構(gòu)成: 1、SDA(串行數(shù)據(jù)線) 2、SCL(串行時鐘線)RpRpVDDSCLSDASDA出SDA入SCL入SCL出SCLSDA器件1器件2I2C BUS I2C總線接口均為開漏或開集電極輸出,因此需要為總線增加上拉電阻Rp。I2C總線時序 在數(shù)據(jù)傳送過程中,必須確認數(shù)據(jù)傳送的開始和結(jié)束,這通過起始和結(jié)束信號識別。起始信號結(jié)束信號SDASCLSPRp

28、RpVDDSCLSDASDA出SDA入SCL入SCL出SCLSDA器件1器件2I2C BUSI2C總線時序 I2C總線數(shù)據(jù)傳送時,每傳送一個字節(jié)數(shù)據(jù)后接收方都必須有應答信號(A=0)。主控器接收數(shù)據(jù)時,如果要結(jié)束通信時,將在停止位之前發(fā)送非應答信號( =1)_ARpRpVDDSCLSDASDA出SDA入SCL入SCL出SCLSDA器件1器件2I2C BUS應答:發(fā)送器每發(fā)送完一個字節(jié),將數(shù)據(jù)線應答:發(fā)送器每發(fā)送完一個字節(jié),將數(shù)據(jù)線SDA拉高,由主控制拉高,由主控制器產(chǎn)生第器產(chǎn)生第9個脈沖,個脈沖,接收器將接收器將SDA拉低,以此作為接收器對發(fā)送器拉低,以此作為接收器對發(fā)送器的應答。的應答。發(fā)送

29、器在第發(fā)送器在第9個脈沖探測個脈沖探測SDA為低,表明接收器已成功接為低,表明接收器已成功接收到發(fā)送器發(fā)送的一個字節(jié),可以繼續(xù)進行后面的通信。收到發(fā)送器發(fā)送的一個字節(jié),可以繼續(xù)進行后面的通信。8D791D0SDA . SCL 規(guī)定每次發(fā)送到規(guī)定每次發(fā)送到SDA上的數(shù)據(jù)必須是一個字節(jié),每次發(fā)送的字節(jié)上的數(shù)據(jù)必須是一個字節(jié),每次發(fā)送的字節(jié)數(shù)量不限。數(shù)量不限。每發(fā)送一個字節(jié)后,每發(fā)送一個字節(jié)后,收方必須回一個應答。收方必須回一個應答。如果從器件接收一字節(jié)后需要時間對當前數(shù)進行處理,如果從器件接收一字節(jié)后需要時間對當前數(shù)進行處理,從器件將從器件將保持保持SCL為低電平。從器件釋放時鐘線為低電平。從器件

30、釋放時鐘線SCL后后,主器件才可以繼續(xù),主器件才可以繼續(xù)發(fā)數(shù)據(jù)。(此步可有可無)發(fā)數(shù)據(jù)。(此步可有可無)8D791D0SDA . SCL S從器件地址 R/W第一字節(jié) 發(fā)送起始信號后傳送的第一字節(jié)數(shù)據(jù)具有特別的意義,其中前七位為從機地址,最后一位為讀寫方向位(0表示寫,1表示讀)。RpRpVDDSCLSDASDA出SDA入SCL入SCL出SCLSDA器件1器件2I2C BUS P1.0P1.1SDASCL主方發(fā)送(設P1.0,P1.1原輸出為1)SDA bit P1.0 SCL bit P1.1CLR SDANOPCLR SCLMOV R7,#8LOOP: RLC AMOV SDA,CSETB

31、 SCLNOPCLR SCLDJNZ R7,LOOP SETB SDASETB SCLNOPJB SDA,ERRORCLR SCL.CLR SDASETB SCLSETB SDA8D791D0SDA(P1.0) . SCL(P1.1) P1.0P1.1SDASCL 單片機為從方接收SDA bit P1.0 SCL bit P1.1 MOV R7,#8L1:JNB SCL,$JNB SDA,L1LB:JNB SDA,L2 JNB SCL,L1SJMP LBL2:JB SCL,$JNB SCL,$ MOV C,SDARLC ADJNZ R7,L2CLR SDAJNB SCL,$ JB PSCL,$

32、SETB P1.0.8D791D0SDA(P1.0) . SCL(P1.1) P1.0P1.1SDASCL 單片機為從方接收SDA bit P1.0 SCL bit P1.1 MOV R7,#8L1:JNB SCL,$JNB SDA,L1LB:JNB SDA,L2 JNB SCL,L1SJMP LBL2:JB SCL,$JNB SCL,$ MOV C,SDARLC ADJNZ R7,L2CLR SDAJNB SCL,$ JB PSCL,$SETB P1.0.8D791D0SDA(P1.0) . SCL(P1.1) 2. I2C E2PROM芯片24C02 (1) 概述。 串行EEPROM,相關

33、的操作有字節(jié)寫、頁寫、現(xiàn)行地址讀、隨機讀和序列讀等方式。實現(xiàn)字節(jié)寫的時序為:S 1 0 1 0 A2 A1 A0 0 A addr A data A PS起始信號;1010為器件型號地址;A2A1A0頁地址(器件地址);0為寫操作;A應答信號:肯定時應答信號為低電平,否定時應答信號為高平;addr地址字節(jié),指定片內(nèi)操作單元地址。Data為數(shù)據(jù)字節(jié),由主節(jié)點出發(fā),從節(jié)點接收;P停止信號 S 1 0 1 0 A2 A1 A0 0 A addr A data A PS起始信號;1010為器件型號地址;A2A1A0頁地址(器件地址);0為寫操作;A應答信號:肯定時應答信號為低電平,否定時應答信號為高平

34、;addr地址字節(jié),指定片內(nèi)操作單元地址。Data為數(shù)據(jù)字節(jié),由主節(jié)點出發(fā),從節(jié)點接收;P停止信號 如將數(shù)據(jù)#55H寫入20H單元的時序為:隨機讀是按指定地址讀出一個單元的數(shù)據(jù),其時序為:如將30H單元中的數(shù)(#10H)讀出的時序為:WC為為0時時的的寫寫模模式式WC為為0時時的的讀讀模模式式開始發(fā)送開始條件器件選擇(RW=0)應答否?下一操作是尋址否?發(fā)送地址,接收應答有開始條件?器件選擇,使RW=1重新開始寫數(shù)據(jù)繼續(xù)寫操作繼續(xù)隨機讀操作結(jié)束NYNYYN發(fā)送結(jié)束條件指令的第1個字節(jié)中WR=0已經(jīng)被裝置解碼寫寫周周期期用用ACK輪輪詢詢流流程程(2) 程序設計。 /*/*頭文件調(diào)用*/#pragma code debug small#include #include #include #include /*/*參數(shù)定義*/#define uchar unsigned char#define uint unsigned intsbit SCL=P16; /*SCL=P1.6*/sbit SDA=P17;/*SDA=1.7*/sbit K0=P13; /*K0=P1.3*/uchar E24_State

溫馨提示

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

評論

0/150

提交評論