《接口技術(shù)》:第五章《 I2C串行總線及單總線技術(shù)》 課件_第1頁
《接口技術(shù)》:第五章《 I2C串行總線及單總線技術(shù)》 課件_第2頁
《接口技術(shù)》:第五章《 I2C串行總線及單總線技術(shù)》 課件_第3頁
《接口技術(shù)》:第五章《 I2C串行總線及單總線技術(shù)》 課件_第4頁
《接口技術(shù)》:第五章《 I2C串行總線及單總線技術(shù)》 課件_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第五章I2C串行總線及單總線技術(shù)

串行總線廣泛用于芯片間的串行數(shù)據(jù)傳輸技術(shù)。由于串行總線結(jié)構(gòu)簡單,連接線少,因此,采用串行總線可以使系統(tǒng)的硬件設(shè)計簡化、體積小、可靠性高。同時,系統(tǒng)的更改和擴充極為容易。目前,單片機應(yīng)用系統(tǒng)中使用的串行總線主要有

I2C總線、SPI總線、1-Wire總線。對于無這種接口的89C52等單片機可以用軟件模擬串行通信時序。§5.1I2C串行總線擴展技術(shù)(軟件模擬)

I2C總線是Philips公司推出的一種高性能芯片間的串行傳輸總線,它僅以兩根連線就可實現(xiàn)完善的全雙工同步數(shù)據(jù)傳送。I2C總線采用了器件地址的硬件設(shè)置方法,通過軟件尋址,使硬件系統(tǒng)具有跟簡單、靈活的擴展方法。

I2C總線進行數(shù)據(jù)傳輸時只需兩根信號線,一根是雙向的數(shù)據(jù)線SDA,另一根是時鐘線SCL。所有連接到I2C總線上的設(shè)備,其串行數(shù)據(jù)都連接到總線的SDA線上,而各設(shè)備的時鐘均接到總線的SCL上。I2C總線是一個多主機總線,即一個I2C總線可以有一個或多個主機,總線運行由主機控制。這里所說的主機是指啟動數(shù)據(jù)發(fā)送(發(fā)起始信號),發(fā)終止信號、傳送結(jié)束時發(fā)終止信號的設(shè)備。通常,主機由各種單片機擔(dān)當(dāng)。被主機尋址的設(shè)備叫從機,它可以是各種單片機也可以是其他器件,如IC卡存儲器、LED或LCD的驅(qū)動器、A/D、D/A轉(zhuǎn)換器、時鐘日歷器件等。

為了進行通信,每個接到I2C總線上的設(shè)備都有一個唯一的地址。主機與從機的數(shù)據(jù)傳送可以是由主機發(fā)送數(shù)據(jù)到總線上其他設(shè)備,這時的主機稱為發(fā)送器。從總線上接收數(shù)據(jù)的設(shè)備稱為接收器。單片機ASCLSDA單片機BSCLSDASRAM或E2PROMSCLSDAA/D或D/ASCLSDA日歷時鐘SCLSDA其他I2C外圍設(shè)備SCLSDA§5.1.1I2C串行總線的數(shù)據(jù)傳送

I2C總線進行數(shù)據(jù)傳送時,在時鐘高電平期間,數(shù)據(jù)線上必須保持穩(wěn)定的邏輯電平狀態(tài),高電平為“1”,低電平為“0”。只有在時鐘線為低電平期間,才允許數(shù)據(jù)線上的電平狀態(tài)變化。如下圖所示。一、總線上數(shù)據(jù)的有效性二、數(shù)據(jù)傳送的起始信號和終止信號

根據(jù)I2C總線協(xié)議的規(guī)定,SCL線為高電平期間,SDA線由高電平向低電平的變化表示起始信號;SCL線為高電平期間,SDA線由低電平向高電平的變化表示終止信號。起始和終止信號圖如下圖所示。1、字節(jié)傳送與應(yīng)答每一個字節(jié)必須保證是8位長度。數(shù)據(jù)傳送時,先傳送最高位(MSB),每一個被傳送的字節(jié)后面都必須跟隨一位應(yīng)答位(即一幀共有9位),與應(yīng)答信號相對應(yīng)的時鐘由主機產(chǎn)生,主機必須在這一時鐘位上釋放數(shù)據(jù)線,使其處于高電平狀態(tài)。應(yīng)答信號為低電平表示繼續(xù)接收,高電平為非應(yīng)答表示結(jié)束接收。三、數(shù)據(jù)傳送格式四、單主機I2C總線數(shù)據(jù)傳送時序

START:CLRCLK;起始位

NOP NOPSETB IO;IO=SDA,CLK=SCL NOP NOP SETB CLK NOP NOP CLR IO NOP NOP CLR CLK NOP RET

STOP:CLRCLK;停止位

NOP NOP CLR IO NOP NOP SETB CLK NOP NOP SETB IO NOP NOP CLR CLK NOP NOP CLR IO RETWR_BYTE:MOVR5,#08 ;一字節(jié)8位數(shù)據(jù)

CLR CLK NOP NOPWR_BYTE1:RLC A ;帶進位位左移,A.8->C MOV IO,C ;SCL低電平時改變SDA上的數(shù)據(jù)

NOP SETB CLK ;拉高SCL把數(shù)據(jù)發(fā)送出去

NOP NOP CLR CLKNOP NOP DJNZ R5,WR_BYTE1 ;依次發(fā)送A中的8位數(shù)據(jù)

SETB IO SETB CLK JB IO,$ ;等待IC卡ACK信號

CLR CLK NOP RETB;***************A==讀出的數(shù)據(jù)*********************************RD_BYTE:MOVR5,#08 SETB IO ;設(shè)備IO為輸入狀態(tài)

CLR A ;清空A寄存器RD_BYTE1:MOVC,IO ;讀一位數(shù)據(jù)到進位位,直到第九個時鐘的下降沿泵出

RLC A ;左移數(shù)據(jù)到A.0 SETB CLK NOP NOP CLR CLK ;泵出下一位數(shù)據(jù)

NOP NOP DJNZ R5,RD_BYTE1 ;依次讀出8位數(shù)據(jù)到A中

RET ;無應(yīng)答信號詳見IC卡實驗§5.2單總線(1-Wire)擴展技術(shù)

單總線(1-Wire)是美國Dallas公司推出的外圍串行擴展總線。單總線只有一根數(shù)據(jù)輸入/輸出線,所有單總線的器件都掛在這根線上,即僅通過1條連接線,便可完成全部的控制、通信和供電。本節(jié)以單總線溫度傳感器DS18B20構(gòu)成的溫度測控系統(tǒng)為例詳細介紹單總線的接口方法及應(yīng)用?!?.2.1單總線(1-Wire)簡介

1硬件配置單總線的連接方式如圖1-1(a)所示,一個簡潔的單總線網(wǎng)絡(luò)包括三個主要部分:帶有控制軟件的主控器(由單片機或PC相當(dāng)),連接上拉電阻和穩(wěn)壓二極管的連接線及各種功能的單總線從器件。每一位讀/寫時序開始時,主控器把總線拉低,結(jié)束時,釋放總線為高電平。單總線的內(nèi)部結(jié)構(gòu)如圖1-1(b)所示,單總線接口是用來實現(xiàn)供電和同步的;64位ROM用于存儲由生產(chǎn)廠家光刻的、全球唯一的、且不可更改的64位序列號,其中最低8位是器件的類型號,功能相同的一類器件具有相同的類型號,然后是48位的器件序列號,最后8位是CRC校驗位,用于驗證數(shù)據(jù)傳輸?shù)恼_性;外圍功能部件用來完成某一特定的功能;主控器通過對RAM的讀/寫操作實現(xiàn)對器件的控制。2通信規(guī)程單總線通過主從式、位同步、半雙工串行方式通信,規(guī)程如下:l總線初始化,主控制器先發(fā)復(fù)位脈沖,然后從控制器發(fā)應(yīng)答脈沖。lROM指令,主控制器通過ROM指令讀取各從器件的ROM識別碼(即64位序列號)以選擇單總線上的某一從器件。lRAM指令,通過對從器件RAM的讀/寫操作,讓外圍器件實現(xiàn)某一功能。1、DS18B20的特性及引腳l

采用單總線技術(shù),與單片機只需要一根I/O線。在一根I/O線上可掛接多個DS18B20.l每個DS18B20具有一個獨立的、不可修改的64位序列號,根據(jù)序列號可以訪問對應(yīng)器件。l低電壓供電,電源范圍3-5V。l測溫范圍-55℃-+125℃,在-10℃-+85℃范圍內(nèi)誤差為±0.5℃.l可編程數(shù)據(jù)為9-12位。l用戶可自行設(shè)定報警的上、下限溫度值。lDS18B20的分辨率可由用戶通過EEPROM設(shè)置為9-12位。lDS18B20可將檢測到的溫度值直接轉(zhuǎn)換為數(shù)字量,并通過串行通信方式與主控制器進行數(shù)據(jù)通信。lDQ為數(shù)據(jù)輸入/輸出線?!?.2.2DS18B20內(nèi)部結(jié)構(gòu)2、內(nèi)部結(jié)構(gòu)

DS18B20的內(nèi)部結(jié)構(gòu)如圖1-2所示。主要包括:寄生電源、溫度傳感器、64位激光ROM和單總線接口、存放中間數(shù)據(jù)的高速暫存器RAM、用于存儲用戶設(shè)定溫度上下限值的TH和TL觸發(fā)器、存儲與控制邏輯、8位循環(huán)冗余校驗碼(CRC)發(fā)生器等8部分。圖1-2DS18B20內(nèi)部結(jié)構(gòu)DS18B20內(nèi)部存儲器由ROM、RAM、EEPROM組成,如圖1-3所示字節(jié)ROMRAMEEPROM0產(chǎn)品代號(28H)溫度低8位148位溫度高8位

2器件序列號THTH3

TLTL4

配置寄存器配置寄存器5

保留6

保留7CRC保留8

CRC圖1-3DS18B20內(nèi)部存儲器結(jié)構(gòu)

ROM由64位二進制數(shù)字組成,共分為8個字節(jié),字節(jié)0的內(nèi)容是該產(chǎn)品的廠家代號28H,字節(jié)1~6的內(nèi)容是48位器件序列號,字節(jié)7是ROM前56位的CRC校驗碼。由于64位ROM碼具有唯一性,在使用時作為該器件校對的地址,通過讀ROM命令可以將它讀出來。64位只讀存儲器ROMRAM是由9個字節(jié)的高速暫存器和非易失性電擦寫EEPROM組成。其中字節(jié)0/1存儲當(dāng)前溫度,字節(jié)2、3存儲上、下限報警溫度TH和TL,字節(jié)4是配置寄存器,字節(jié)8是RAM前64位的CRC校驗碼。RAM中EEPROM用于存儲TH、TL和配置存儲器的值。數(shù)據(jù)先寫入RAM,經(jīng)校驗后再傳給EEPROM。通過DS18B20功能命令對RAM進行操作。高速暫存器RAMDS18B20的溫度測量范圍是-55°c~+125°C,分辨率的默認(rèn)值12位。表1-4是溫度存儲格式與配置寄存器控制字的格式。由表1-4可知,檢測溫度由兩個字節(jié)組成,字節(jié)1的高5位S代表符號位,字節(jié)0的低4位是小數(shù)部分,中間7位是整數(shù)部分,字節(jié)4是配置寄存器控制字的格式,當(dāng)R1R0的值為00B、01B、10B、11B時,對應(yīng)的分辨率為9、10、11、12。溫度存儲格式表1-4溫度存儲格式與配置寄存器控制字的格式

Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0字節(jié)0232221202-12-22-32-4字節(jié)1SSSSS262524字節(jié)40R1R011111(1)ROM操作指令

表1-5ROM操作指令命令說明讀ROM命令(33H)讀總線上18B20的序列號(包括產(chǎn)品編號、序列號和校驗碼)搜索ROM命令(F0H)對總線上的多個DS18B20進行ROM編碼的搜索匹配ROM命令(55H)后繼64位序列號對總線上DS18B20尋址,用于多個DS18B20的定位跳過ROM命令(CCH)在單位檢測時,跳過ROM編碼的搜索報警搜索ROM命令(ECH)搜索有報警的DS18B20的測溫點3、DS18B20的命令集

表1-6RAM操作指令命令說明溫度轉(zhuǎn)換(44H)啟動溫度轉(zhuǎn)換讀暫存器(BEH)讀全部暫存器內(nèi)容,包括CRC字節(jié)寫暫存器(4EH)寫暫存器第2、3、4字節(jié)的數(shù)據(jù)復(fù)制暫存器(48H)將暫存器中的TH、TL和配置寄存器內(nèi)容復(fù)制到EEPROM讀EEPROM(B8H)將TH、TL和配置寄存器內(nèi)容從EEPROM中讀至?xí)捍嫫髦凶x供電方式命令(B4H)檢測供電方式

(2)RAM操作指令

當(dāng)主機發(fā)出溫度轉(zhuǎn)換命令(44H)時,啟動溫度轉(zhuǎn)換過程,轉(zhuǎn)換時間最750ms。主機通過讀暫存器功能命令(BEH),將溫度值讀出。通過寫暫存器功能命令(4EH),可改變分辨率的設(shè)置。

數(shù)字式溫度傳感器和模擬傳感器最大的區(qū)別,是將溫度信號直接轉(zhuǎn)化成數(shù)字信號,然后通過串行通信的方式輸出。因此,掌握DS18B20的通信協(xié)議是使用該器件的關(guān)鍵。所有的DS18B20器件要求采用嚴(yán)格的通信協(xié)議,以保證數(shù)據(jù)的完整性。該協(xié)議定義了幾種信號類型:復(fù)位脈沖、應(yīng)答脈沖時序;寫“0”、寫“1”時序;讀“0”、讀“1”時序。與DS18B20的通信,是通過操作時序完成單總線上的數(shù)據(jù)傳輸。發(fā)送所有的命令和數(shù)據(jù)時,都是字節(jié)的低位在前,高位在后。4、DS18B20的通信協(xié)議(1)復(fù)位和應(yīng)答脈沖時序圖1-7復(fù)位和應(yīng)答脈沖時序每個通信周期起始于微控制器發(fā)出的復(fù)位脈沖,其后緊跟DS18B20發(fā)出的應(yīng)答脈沖,如圖1-7所示。在寫時序期間,主機向DS18B20器件寫入數(shù)據(jù),而在讀時序期間,主機讀入來自DS18B20的數(shù)據(jù)。在每寫一個時序,總線只能傳輸一位數(shù)據(jù)。1)DS18B20的復(fù)位子程序RST:SETBDAT

NOP

NOP

CLRDAT;復(fù)位DAT=0

MOVR6,#250DJNZR6,$

movr6,#50djnzr6,$;延時600us

SETBDAT;DAT

=1

MOVR6,#15DJNZR6,$;延時30us

CALL

CHCK;讀應(yīng)答

MOVR6,#60DJNZR6,$;延時120us

SETBDAT;

RETCHCK:MOVC,DAT;讀應(yīng)答

JCRST0;有應(yīng)答C=0

SETBF0;則置“1”F0SJMPCHCK0RST0:CLRF0;無應(yīng)答C=0CHCK0:RET;清”0”F0

當(dāng)主機將單總線DQ從邏輯高(空閑狀態(tài))拉為邏輯低時,即啟動一個寫時序。所有的寫時序必須在60-120μs內(nèi)完成,且在每個時序之間至少需要1μs的恢復(fù)時間。寫“0”和寫“1”時序如圖1-8所示。在寫“0”時序期間微控制器在整個時序中將總線拉低;而寫“1”時序期間,微控制器將總線拉低,然后在時序起始后15μs之內(nèi)釋放總線為高。(1)寫時序圖1-8寫“0”和寫“1”時序WRITE_0:CLRDAT;寫“0”子程序

MOVR6,#30DJNZR6,$;延時60us

SETBDAT

RETWRITE_1:CLRDAT;寫“1”子程序

NOP

NOP

NOP

NOP

NOP;延時12us

SETBDAT

MOVR6,#30DJNZR6,$;延時60us

RETSEND_BYTE:MOVA,R0;寫一字節(jié)子程序

MOVR5,#8SEN3:CLRCRRCA

JCSEN1LCALLWRITE_0SJMPSEN2SEN1:LCALLWRITE_1SEN2:DJNZR5,SEN3

RETDS18B20器件僅在主機發(fā)出讀時序時,才向主機傳輸數(shù)據(jù),所以在主機發(fā)出讀數(shù)據(jù)命令后,必須馬上產(chǎn)生讀時序,以便DS18B20能夠傳輸數(shù)據(jù)。所有讀時序至少需要60μs,且在兩次獨立的時序之間,至少需要1μs的恢復(fù)時間。每個讀時序都由主機發(fā)起,至少拉低總線1μs,讀時序如圖1-9所示。在主機發(fā)起讀時序之后DS18B20器件才開始在總線上發(fā)送“0”或“1”,若DS18B20發(fā)送“1”,則保持總線為高電平;若發(fā)送“0”,則拉低總線。當(dāng)發(fā)送0時,DS18B20需在該時序結(jié)束后,釋放總線,由上拉電阻將總線拉回空閑高電平狀態(tài)。DS18B20發(fā)出的數(shù)據(jù),在起始時序之后保持有效時間15μs,因而主機在讀時序期間,必須釋放總線,并且在起始時序后的15μs之內(nèi)采樣總線狀態(tài)。(3)讀程序READ:SETBDAT;讀一位子程序

NOP

NOPCLRDAT

NOP

NOP

SETBDAT;發(fā)讀時序

NOP

NOP

NOP

NOP

NOP

NOP

NOP

MOVC,DAT;15us內(nèi)讀數(shù)據(jù)

MOVR6,#23DJNZR6,$;延時45usRETREAD_BYTE:

MOVR5,#8;讀一個字節(jié)子程序READ1:LCALLREADRRCADJNZR5,READ1

MOVR0,A

RETDSWD:LCALLRST

JNBF0,KEND;F0=1有應(yīng)答

MOVR0,#0CCH;忽略64位rom地址,直接向DS18B20發(fā)溫度變換指令

LCALLSEND_BYTE

MOVR0,#44H;啟動DS18B20進行溫度轉(zhuǎn)換,轉(zhuǎn)換時間最長500ms(典型為200ms),結(jié)果存入9字節(jié)ram中

LCALLSEND_BYTE

MOV48H,#1SS2:

MOV49H,#255SS1:

MOV4AH,#255

LCALLRST

JNBF0,KEND

MOVR0,#0CCH;忽略64位rom地址,直接向DS18B20發(fā)溫度變換指令

LCALLSEND_BYTE

MOVR0,#0BEH;讀取內(nèi)部9字節(jié)的內(nèi)容

LCALLSEND_BYTELCALLREAD_BYTE

MOVWDLSB,ALCALLREAD_BYTE

MOVWDMSB,ALCALLTRANS12;溫度轉(zhuǎn)換(十進制)子程序KEND:

RETSS0:DJNZ4AH,SS0DJNZ49H,SS1DJNZ48H,SS2啟動18B20轉(zhuǎn)換讀結(jié)果子程序:DATBITP3.7WDLSBDATA30HWDMSBDATA31H/**********************

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論