I2C總線24C08_第1頁
I2C總線24C08_第2頁
I2C總線24C08_第3頁
I2C總線24C08_第4頁
I2C總線24C08_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、典型的典型的I2C總線系統(tǒng)結(jié)構(gòu)總線系統(tǒng)結(jié)構(gòu) AT24C08的引腳結(jié)構(gòu)的引腳結(jié)構(gòu) AT24C01AT24C01:128128字節(jié)(字節(jié)(1281288 8位);位);AT24C02AT24C02:256256字節(jié)(字節(jié)(2562568 8位);位);AT24C04AT24C04:512512字節(jié)(字節(jié)(5125128 8位)位)AT24C08AT24C08:1K1K字節(jié)字節(jié) (1K1K8 8位);位);AT24C16AT24C16:2K2K字節(jié)字節(jié) (2K2K8 8位);位);AT24C32 4KAT24C32 4K字節(jié)字節(jié) (4KX84KX8位)位)起始信號(hào)時(shí)序起始信號(hào)時(shí)序 起始信號(hào)用于開始起

2、始信號(hào)用于開始I2CI2C總線通信。其中,起始信號(hào)是在時(shí)鐘線總線通信。其中,起始信號(hào)是在時(shí)鐘線SCLSCL為高電平為高電平 期間,數(shù)據(jù)期間,數(shù)據(jù)SDASDA上高電平向低電平變化的下降沿信號(hào)。起始信號(hào)出現(xiàn)以后,上高電平向低電平變化的下降沿信號(hào)。起始信號(hào)出現(xiàn)以后, 才可以進(jìn)行后續(xù)的才可以進(jìn)行后續(xù)的I2CI2C總線尋址或數(shù)據(jù)傳輸?shù)瓤偩€尋址或數(shù)據(jù)傳輸?shù)?終止信號(hào)時(shí)序終止信號(hào)時(shí)序 應(yīng)答信號(hào)時(shí)序應(yīng)答信號(hào)時(shí)序 I2C總線的傳送格式為主從式,對(duì)系統(tǒng)中的某一器件來說有總線的傳送格式為主從式,對(duì)系統(tǒng)中的某一器件來說有四種工作方式:主發(fā)送方式、從發(fā)送方式、主接收方式、從接四種工作方式:主發(fā)送方式、從發(fā)送方式、主接收

3、方式、從接收方式。收方式。 只講只講主發(fā)送從接收(單片機(jī)發(fā)送主發(fā)送從接收(單片機(jī)發(fā)送 24C08接收)接收) 主器件產(chǎn)生開始信號(hào)以后,發(fā)送的第一個(gè)字節(jié)為控制字節(jié)。前主器件產(chǎn)生開始信號(hào)以后,發(fā)送的第一個(gè)字節(jié)為控制字節(jié)。前七位為從器件的地址片選信號(hào)。最低位為數(shù)據(jù)傳送方向位(高七位為從器件的地址片選信號(hào)。最低位為數(shù)據(jù)傳送方向位(高電平表示讀從器件,低電平表示寫從器件),然后發(fā)送一個(gè)選電平表示讀從器件,低電平表示寫從器件),然后發(fā)送一個(gè)選擇從器件片內(nèi)地址的字節(jié),來決定開始讀寫數(shù)據(jù)的起始地址。擇從器件片內(nèi)地址的字節(jié),來決定開始讀寫數(shù)據(jù)的起始地址。接著再發(fā)送數(shù)據(jù)字節(jié),可以是單字節(jié)數(shù)據(jù),也可以是一組數(shù)據(jù),接

4、著再發(fā)送數(shù)據(jù)字節(jié),可以是單字節(jié)數(shù)據(jù),也可以是一組數(shù)據(jù),由主器件來決定。從器件每接收到一個(gè)字節(jié)以后,都要返回一由主器件來決定。從器件每接收到一個(gè)字節(jié)以后,都要返回一個(gè)應(yīng)答信號(hào)(個(gè)應(yīng)答信號(hào)(ASK=0)。主器件在應(yīng)答時(shí)鐘周期高電平期間釋)。主器件在應(yīng)答時(shí)鐘周期高電平期間釋放放SDA線,轉(zhuǎn)由從器件控制,從器件在這個(gè)時(shí)鐘周期的高電平線,轉(zhuǎn)由從器件控制,從器件在這個(gè)時(shí)鐘周期的高電平期間必須拉低期間必須拉低SDA線,并使之為穩(wěn)定的低電平,作為有效的應(yīng)線,并使之為穩(wěn)定的低電平,作為有效的應(yīng)答信號(hào)。答信號(hào)??刂谱止?jié)控制字節(jié) 在起始條件之后,必須是器件的控制字節(jié),其中,高四位在起始條件之后,必須是器件的控制字節(jié)

5、,其中,高四位為器件類型識(shí)別符(不同的芯片類型有不同的定義,為器件類型識(shí)別符(不同的芯片類型有不同的定義,E2PROM為為1010),接著三位為片選,最低位為讀寫控制位,為),接著三位為片選,最低位為讀寫控制位,為“1”時(shí)時(shí)為讀操作,為為讀操作,為“0”時(shí)為寫操作。如下圖所示。時(shí)為寫操作。如下圖所示。 寫操作寫操作 寫操作分為字節(jié)寫和頁面寫兩種操作,對(duì)于頁面寫,根據(jù)寫操作分為字節(jié)寫和頁面寫兩種操作,對(duì)于頁面寫,根據(jù)芯片的一次裝載的字節(jié)不同有所不同。頁面寫的地址、應(yīng)答和芯片的一次裝載的字節(jié)不同有所不同。頁面寫的地址、應(yīng)答和數(shù)據(jù)傳送的時(shí)序如下圖所示。數(shù)據(jù)傳送的時(shí)序如下圖所示。 讀操作讀操作 讀操作

6、有三種基本操作:當(dāng)前地址讀、隨機(jī)讀和順序讀。讀操作有三種基本操作:當(dāng)前地址讀、隨機(jī)讀和順序讀。下圖給出的是順序讀的時(shí)序圖。應(yīng)當(dāng)注意的是,為了結(jié)束讀操下圖給出的是順序讀的時(shí)序圖。應(yīng)當(dāng)注意的是,為了結(jié)束讀操作,主機(jī)必須在第作,主機(jī)必須在第9個(gè)周期間發(fā)出停止條件或者在第個(gè)周期間發(fā)出停止條件或者在第9個(gè)時(shí)鐘周個(gè)時(shí)鐘周期內(nèi)保持期內(nèi)保持SDA為高電平,然后發(fā)出停止條件為高電平,然后發(fā)出停止條件。 起始信號(hào)時(shí)序起始信號(hào)時(shí)序 起始信號(hào)用于開始起始信號(hào)用于開始I2CI2C總線通信。其中,起始信號(hào)是在時(shí)鐘線總線通信。其中,起始信號(hào)是在時(shí)鐘線SCLSCL為高電平為高電平 期間,數(shù)據(jù)期間,數(shù)據(jù)SDASDA上高電平向低

7、電平變化的下降沿信號(hào)。起始信號(hào)出現(xiàn)以后,上高電平向低電平變化的下降沿信號(hào)。起始信號(hào)出現(xiàn)以后, 才可以進(jìn)行后續(xù)的才可以進(jìn)行后續(xù)的I2CI2C總線尋址或數(shù)據(jù)傳輸?shù)瓤偩€尋址或數(shù)據(jù)傳輸?shù)葀oid start()/ void start()/ 開始位開始位 SDA = 1; /SDA SDA = 1; /SDA初始化為高電平初始化為高電平“1”1” SCL = 1; / SCL = 1; /開始數(shù)據(jù)傳送時(shí),要求開始數(shù)據(jù)傳送時(shí),要求SCLSCL為高電平為高電平“1”1”_nop_nop_(); /_(); /等待一個(gè)機(jī)器周期等待一個(gè)機(jī)器周期_nop_nop_(); /_(); /等待一個(gè)機(jī)器周期等待一個(gè)機(jī)

8、器周期_nop_nop_(); /_(); /等待一個(gè)機(jī)器周期等待一個(gè)機(jī)器周期_nop_nop_(); /_(); /等待一個(gè)機(jī)器周期等待一個(gè)機(jī)器周期_nop_nop_(); /_(); /等待一個(gè)機(jī)器周期等待一個(gè)機(jī)器周期SDA = 0; /SDASDA = 0; /SDA的下降沿被認(rèn)為是開始信號(hào)的下降沿被認(rèn)為是開始信號(hào)_nop_nop_(); /_(); /等待一個(gè)機(jī)器周期等待一個(gè)機(jī)器周期_nop_nop_(); /_(); /等待一個(gè)機(jī)器周期等待一個(gè)機(jī)器周期_nop_nop_(); /_(); /等待一個(gè)機(jī)器周期等待一個(gè)機(jī)器周期_nop_nop_(); /_(); /等待一個(gè)機(jī)器周期等待一

9、個(gè)機(jī)器周期 _nop_nop_(); /_(); /等待一個(gè)等待一個(gè)機(jī)器周期機(jī)器周期SCL = 0; /SCLSCL = 0; /SCL為低電平時(shí),為低電平時(shí),SDASDA上數(shù)據(jù)才允許變上數(shù)據(jù)才允許變化化( (即允許以后的數(shù)據(jù)傳遞)即允許以后的數(shù)據(jù)傳遞) 終止信號(hào)時(shí)序終止信號(hào)時(shí)序 void stop()/ void stop()/ 停止位停止位 SDA = 0; /SDASDA = 0; /SDA初始化為低電平初始化為低電平“0”0”SCL = 1; /SCL = 1; /結(jié)束數(shù)據(jù)傳送時(shí),要求結(jié)束數(shù)據(jù)傳送時(shí),要求SCLSCL為高電平為高電平“1”1”_nop_nop_(); /_(); /等待

10、一個(gè)機(jī)器周期等待一個(gè)機(jī)器周期_nop_nop_(); /_(); /等待一個(gè)機(jī)器周期等待一個(gè)機(jī)器周期_nop_nop_(); /_(); /等待一個(gè)機(jī)器周期等待一個(gè)機(jī)器周期_nop_nop_(); /_(); /等待一個(gè)機(jī)器周期等待一個(gè)機(jī)器周期_nop_nop_(); /_(); /等待一個(gè)機(jī)器周期等待一個(gè)機(jī)器周期SDA = 1; /SDASDA = 1; /SDA的上升沿被認(rèn)為是結(jié)束信號(hào)的上升沿被認(rèn)為是結(jié)束信號(hào)_nop_nop_(); /_(); /等待一個(gè)機(jī)器周期等待一個(gè)機(jī)器周期_nop_nop_(); /_(); /等待一個(gè)機(jī)器周期等待一個(gè)機(jī)器周期_nop_nop_(); /_(); /

11、等待一個(gè)機(jī)器周期等待一個(gè)機(jī)器周期_nop_nop_(); /_(); /等待一個(gè)機(jī)器周期等待一個(gè)機(jī)器周期_nop_nop_(); /_(); /等待一個(gè)機(jī)器周期等待一個(gè)機(jī)器周期SDA=0;SDA=0;SCL=0;SCL=0; 應(yīng)答信號(hào)時(shí)序應(yīng)答信號(hào)時(shí)序 bit Ask() /bit Ask() /檢測(cè)應(yīng)答檢測(cè)應(yīng)答 bit ack_bit bit ack_bit; /; /儲(chǔ)存應(yīng)答位儲(chǔ)存應(yīng)答位 SDA = 1;SDA = 1; / / 發(fā)送設(shè)備(主機(jī))發(fā)送設(shè)備(主機(jī))/應(yīng)在時(shí)鐘脈沖的高電平期間應(yīng)在時(shí)鐘脈沖的高電平期間(SCL=1)(SCL=1)釋放釋放SDASDA線,線,/以讓以讓SDASDA線轉(zhuǎn)

12、由接收設(shè)備線轉(zhuǎn)由接收設(shè)備(AT24Cxx)(AT24Cxx)控制控制_nop_nop_(); /_(); /等待一個(gè)機(jī)器周期等待一個(gè)機(jī)器周期 _nop_nop_(); /_(); /等待一個(gè)機(jī)器周期等待一個(gè)機(jī)器周期 SCL = 1; /SCL = 1; /根據(jù)上述規(guī)定,根據(jù)上述規(guī)定,SCLSCL應(yīng)為高電平應(yīng)為高電平_nop_nop_(); /_(); /等待一個(gè)機(jī)器周期等待一個(gè)機(jī)器周期 _nop_nop_(); /_(); /等待一個(gè)機(jī)器周期等待一個(gè)機(jī)器周期 _nop_nop_(); /_(); /等待一個(gè)機(jī)器周期等待一個(gè)機(jī)器周期 _nop_nop_(); /_(); /等待一個(gè)機(jī)器周期等待一

13、個(gè)機(jī)器周期_nop_nop_(); /_(); /等待一個(gè)機(jī)器周期等待一個(gè)機(jī)器周期 ack_bitack_bit = SDA; / = SDA; /接受設(shè)備(接受設(shè)備(AT24Cxx)AT24Cxx)向向SDASDA送低電平,送低電平,/表示已經(jīng)接收到一個(gè)字節(jié)表示已經(jīng)接收到一個(gè)字節(jié)/若送高電平,表示沒有接收到,傳送異常若送高電平,表示沒有接收到,傳送異常 結(jié)束發(fā)送結(jié)束發(fā)送SCL = 0; /SCLSCL = 0; /SCL為低電平時(shí),為低電平時(shí), /SDA/SDA上數(shù)據(jù)才允許變化上數(shù)據(jù)才允許變化( (即允許以后的數(shù)據(jù)傳遞)即允許以后的數(shù)據(jù)傳遞)return ack_bitreturn ack_

14、bit; / ; / 返回返回AT24CxxAT24Cxx應(yīng)答位應(yīng)答位 寫操作寫操作 寫操作分為字節(jié)寫和頁面寫兩種操作,寫操作分為字節(jié)寫和頁面寫兩種操作, 在字節(jié)寫模式下在字節(jié)寫模式下 主器件發(fā)送起始命令和從器件地址信息主器件發(fā)送起始命令和從器件地址信息 R/WR/W位置零位置零 給從器件給從器件 在從器件產(chǎn)生在從器件產(chǎn)生應(yīng)答信號(hào)后應(yīng)答信號(hào)后 主器件發(fā)送主器件發(fā)送1616的字節(jié)地址的字節(jié)地址 主器件在收到從器件的另一個(gè)應(yīng)答信號(hào)后主器件在收到從器件的另一個(gè)應(yīng)答信號(hào)后 再發(fā)送數(shù)據(jù)到被尋址的存再發(fā)送數(shù)據(jù)到被尋址的存儲(chǔ)單元儲(chǔ)單元 再次應(yīng)答再次應(yīng)答 并在主器件產(chǎn)生停止信號(hào)后并在主器件產(chǎn)生停止信號(hào)后開始內(nèi)

15、部數(shù)據(jù)的擦寫開始內(nèi)部數(shù)據(jù)的擦寫 在內(nèi)部擦寫過程中在內(nèi)部擦寫過程中 從器件不再應(yīng)答主器件的任何請(qǐng)求從器件不再應(yīng)答主器件的任何請(qǐng)求 void WriteCurrent(unsignedvoid WriteCurrent(unsigned char y) char y) start start();();unsigned char i;unsigned char i;for(ifor(i = 0; i 8; i+) = 0; i 8; i+)/ / 循環(huán)移入循環(huán)移入8 8個(gè)位個(gè)位 SDA = (bit)(y&0 x80); /SDA = (bit)(y&0 x80); /通過按位通過

16、按位“與與”運(yùn)算將最高位數(shù)據(jù)送到運(yùn)算將最高位數(shù)據(jù)送到S/S/因?yàn)閭魉蜁r(shí)高位在前,低位在后因?yàn)閭魉蜁r(shí)高位在前,低位在后_nop_nop_(); /_(); /等待一個(gè)機(jī)器周期等待一個(gè)機(jī)器周期 SCL = 1; /SCL = 1; /在在SCLSCL的上升沿將數(shù)據(jù)寫入的上升沿將數(shù)據(jù)寫入AT24Cxx AT24Cxx _nop_nop_(); /_(); /等待一個(gè)機(jī)器周期等待一個(gè)機(jī)器周期 _nop_nop_(); /_(); /等待一個(gè)機(jī)器周期等待一個(gè)機(jī)器周期 SCL = 0; /SCL = 0; /將將SCLSCL重新置為低電平,以在重新置為低電平,以在SCSC線形成傳送數(shù)據(jù)所需的個(gè)脈沖線形成傳

17、送數(shù)據(jù)所需的個(gè)脈沖y = 1; /y = 1; /將將y y中的各二進(jìn)位向左移一位中的各二進(jìn)位向左移一位 讀操作有三種基本操作:當(dāng)前地址讀、隨機(jī)讀和順序讀。下圖給出的是順序讀的時(shí)序圖。應(yīng)當(dāng)注意的是,讀操作有三種基本操作:當(dāng)前地址讀、隨機(jī)讀和順序讀。下圖給出的是順序讀的時(shí)序圖。應(yīng)當(dāng)注意的是,為了結(jié)束讀操作,主機(jī)必須在第為了結(jié)束讀操作,主機(jī)必須在第9個(gè)周期間發(fā)出停止條件或者在第個(gè)周期間發(fā)出停止條件或者在第9個(gè)時(shí)鐘周期內(nèi)保持個(gè)時(shí)鐘周期內(nèi)保持SDA為高電平,然后為高電平,然后發(fā)出停止條件發(fā)出停止條件。 unsigned char ReadDataunsigned char ReadData() / (

18、) / 從從AT24CxxAT24Cxx移入數(shù)據(jù)到移入數(shù)據(jù)到MCUMCU unsigned char i; unsigned char i;unsigned char x; /unsigned char x; /儲(chǔ)存從儲(chǔ)存從AT24CxxAT24Cxx中讀出的數(shù)據(jù)中讀出的數(shù)據(jù)for(ifor(i = 0; i 8; i+) = 0; i 8; i+) SCL = 1; /SCL SCL = 1; /SCL置為高電平置為高電平x=1; /x=1; /將將x x中的各二進(jìn)位向左移一位中的各二進(jìn)位向左移一位x|=(unsigned char)SDAx|=(unsigned char)SDA; /; /將將SDASDA上的數(shù)據(jù)通過按位上的數(shù)據(jù)通過按位“或或“運(yùn)算存入運(yùn)算存入x x中中SCL = 0; /SCL = 0; /在在SCLSCL的下降沿讀出數(shù)據(jù)的下降沿讀出數(shù)據(jù) return(x return(x); /); /將讀取的數(shù)據(jù)返回將讀取的數(shù)據(jù)返回 unsigned char ReadCurrentunsigned char ReadCurrent

溫馨提示

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