AT24C02驅(qū)動講解_第1頁
AT24C02驅(qū)動講解_第2頁
AT24C02驅(qū)動講解_第3頁
AT24C02驅(qū)動講解_第4頁
AT24C02驅(qū)動講解_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 I2C總線器件的擴展總線器件的擴展一、一、擴展電路擴展電路 基于IIC總線的E2PROM AT24C02特性特性 與與 400KHz IIC 總線兼容總線兼容 1.8 到到 6.0 伏工作電壓范圍伏工作電壓范圍 低功耗低功耗 CMOS 技術(shù)技術(shù) 寫保護功能寫保護功能 當(dāng)當(dāng) WP 為高電平時進入寫保護狀態(tài)為高電平時進入寫保護狀態(tài) 頁寫緩沖器頁寫緩沖器 自定時擦寫周期自定時擦寫周期 1,000,000 編程編程/擦除周期擦除周期 可保存數(shù)據(jù)可保存數(shù)據(jù) 100 年年 8 腳腳 DIP SOIC 或或 TSSOP 封裝封裝 溫度范圍溫度范圍 商業(yè)級商業(yè)級 工業(yè)級和汽車級工業(yè)級和汽車級 串行串行E2P

2、ROM典型產(chǎn)品典型產(chǎn)品 AT24C01:128字節(jié)(字節(jié)(1288位);位); AT24C02:256字節(jié)(字節(jié)(2568位);位);AT24C04:512字節(jié)(字節(jié)(5128位)位)AT24C08:1K字節(jié)(字節(jié)(1K8位);位);AT24C16:2K字節(jié)(字節(jié)(2K8位);位); ATMEL公司的公司的AT24C系列:系列: AT24C02引腳分布引腳分布WP 寫保護寫保護 如果如果WP 管腳連接到管腳連接到 Vcc 所有的內(nèi)容都被寫保護所有的內(nèi)容都被寫保護,只能讀。當(dāng),只能讀。當(dāng) WP 管腳連接到管腳連接到Vss或懸空,允許器件進行正常的讀或懸空,允許器件進行正常的讀/寫操作。寫操作。A

3、T24C02讀寫時間周期讀寫時間周期 AT24WC01/02/04/08/16支持支持I2C總線數(shù)據(jù)傳送協(xié)議總線數(shù)據(jù)傳送協(xié)議和和I2C總線協(xié)議規(guī)定??偩€協(xié)議規(guī)定。 任何將數(shù)據(jù)傳送到總線的器件作為發(fā)送器,任何任何將數(shù)據(jù)傳送到總線的器件作為發(fā)送器,任何從總線接收數(shù)據(jù)的器件為接收器。從總線接收數(shù)據(jù)的器件為接收器。 數(shù)據(jù)傳送是由產(chǎn)生串行時鐘和所有起始停止信號數(shù)據(jù)傳送是由產(chǎn)生串行時鐘和所有起始停止信號的主器件控制的,主器件和從器件都可以作為發(fā)送器的主器件控制的,主器件和從器件都可以作為發(fā)送器或接收器,但由主器件控制傳送數(shù)據(jù)或接收器,但由主器件控制傳送數(shù)據(jù)(發(fā)送或接收發(fā)送或接收)的的模式,通過器件地址輸入

4、端模式,通過器件地址輸入端A0、A1和和A2可以實現(xiàn)將可以實現(xiàn)將最多最多8個個24WC01和和24WC02器件,器件,4個個24WC04器件器件(僅使用僅使用A1A2 地址管腳地址管腳),2個個24WC08器件器件(僅使用地址僅使用地址管腳管腳 A2 A0)和和 1個個 24WC16器件連接到總線上器件連接到總線上(所有所有地址管腳地址管腳 A0 A1 A2 都未用都未用)。AT24C02功能描述功能描述I2C總線協(xié)議總線協(xié)議1、只有在總線空閑時才允許啟動數(shù)據(jù)傳送;、只有在總線空閑時才允許啟動數(shù)據(jù)傳送;2、在數(shù)據(jù)傳送過程中,、在數(shù)據(jù)傳送過程中,當(dāng)當(dāng)SCL=1時時,數(shù)據(jù)線,數(shù)據(jù)線SDA必須保持必

5、須保持穩(wěn)定狀態(tài),穩(wěn)定狀態(tài),不允許有跳變不允許有跳變;SCL=1時,時,數(shù)據(jù)線數(shù)據(jù)線SDA的任何電的任何電平變化將被看作總線的起始或停止信號平變化將被看作總線的起始或停止信號;起始信號起始信號 時鐘線時鐘線SCL保持高電平期間,數(shù)據(jù)線保持高電平期間,數(shù)據(jù)線SDA電平從高到低電平從高到低的跳變作為的跳變作為I2C總線的起始信號??偩€的起始信號。 停止信號停止信號 時鐘線時鐘線SCL保持高電平期間,數(shù)據(jù)線保持高電平期間,數(shù)據(jù)線SDA電平從低到高的電平從低到高的跳變作為跳變作為I2C總線的停止信號總線的停止信號 器件尋址器件尋址1010A2A1A0 主器件通過發(fā)送一個起始信號啟動發(fā)送過程,然后發(fā)送它主

6、器件通過發(fā)送一個起始信號啟動發(fā)送過程,然后發(fā)送它所要尋址的從器件的地址:所要尋址的從器件的地址: 8 8位從器件地址的高位從器件地址的高4 4位固定為位固定為10101010,接下來的,接下來的3 3位位A2A1A0 A2A1A0 為器件的地址位,用來定義哪個器件以及器件的哪個部分被為器件的地址位,用來定義哪個器件以及器件的哪個部分被主器件訪問。主器件訪問。最低位作為讀寫控制位:最低位作為讀寫控制位: 1 1 表示對從器件進行讀操作表示對從器件進行讀操作 0 0 表示對從器件進行寫操作表示對從器件進行寫操作 在主器件發(fā)送起始信號和從器件地址字節(jié)后在主器件發(fā)送起始信號和從器件地址字節(jié)后24C02

7、監(jiān)視總線監(jiān)視總線并當(dāng)其地址與發(fā)送的從地址并當(dāng)其地址與發(fā)送的從地址相符時相符時,響應(yīng)一個應(yīng)答信號響應(yīng)一個應(yīng)答信號(通過通過SDA線線),24C02根據(jù)讀寫控制位根據(jù)讀寫控制位(R/W)的狀態(tài)進行讀或?qū)懖僮鞯臓顟B(tài)進行讀或?qū)懖僮?W/R應(yīng)答信號應(yīng)答信號 I2C總線數(shù)據(jù)傳送時,每成功地傳送一個字節(jié)數(shù)據(jù)后,接總線數(shù)據(jù)傳送時,每成功地傳送一個字節(jié)數(shù)據(jù)后,接收器都必須產(chǎn)生一個應(yīng)答信號,收器都必須產(chǎn)生一個應(yīng)答信號,應(yīng)答的器件在第應(yīng)答的器件在第9個時鐘周期個時鐘周期時,將時,將SDA線拉低線拉低,表示其已收到一個,表示其已收到一個8位數(shù)據(jù)。位數(shù)據(jù)。 24C02在接收到起始信號和從器件地址之后響應(yīng)一個應(yīng)答在接收到

8、起始信號和從器件地址之后響應(yīng)一個應(yīng)答信號,如果器件已選擇了寫操作信號,如果器件已選擇了寫操作,則在每接收一個則在每接收一個8位字節(jié)之位字節(jié)之后響應(yīng)一個應(yīng)答信號;后響應(yīng)一個應(yīng)答信號; 當(dāng)當(dāng)24C02工作于讀模式時,在發(fā)送一個工作于讀模式時,在發(fā)送一個 8 位數(shù)據(jù)后釋放位數(shù)據(jù)后釋放SDA線并監(jiān)視一個應(yīng)答信號,一旦接收到應(yīng)答信號,線并監(jiān)視一個應(yīng)答信號,一旦接收到應(yīng)答信號,24C02繼續(xù)發(fā)送數(shù)據(jù),如主器件沒有發(fā)送應(yīng)答信號器件停止傳送繼續(xù)發(fā)送數(shù)據(jù),如主器件沒有發(fā)送應(yīng)答信號器件停止傳送數(shù)據(jù)且等待一個停止信號。數(shù)據(jù)且等待一個停止信號。應(yīng)答時序應(yīng)答時序主機時鐘主機時鐘發(fā)送器輸出的數(shù)據(jù)發(fā)送器輸出的數(shù)據(jù)接收器輸出

9、的數(shù)據(jù)接收器輸出的數(shù)據(jù) (2)寫入過程)寫入過程 AT24C系列系列E2PROM芯片地址的固定部分為芯片地址的固定部分為1010,A2、A1、A0引腳接高、低電平后得到確定引腳接高、低電平后得到確定的的3位編碼。形成的位編碼。形成的7位編碼即為該器件的地址碼。位編碼即為該器件的地址碼。 單片機進行寫操作時,首先發(fā)送該器件的單片機進行寫操作時,首先發(fā)送該器件的7位地位地址碼和寫方向位址碼和寫方向位“0”(共(共8位,即一個字節(jié)),發(fā)位,即一個字節(jié)),發(fā)送完后釋放送完后釋放SDA線并在線并在SCL線上產(chǎn)生第線上產(chǎn)生第9個時鐘信個時鐘信號號;被選中的存儲器器件在確認是自己的地址后,在被選中的存儲器器

10、件在確認是自己的地址后,在SDA線上產(chǎn)生一個應(yīng)答信號作為相應(yīng),單片機收到線上產(chǎn)生一個應(yīng)答信號作為相應(yīng),單片機收到應(yīng)答后就可以傳送數(shù)據(jù)了。應(yīng)答后就可以傳送數(shù)據(jù)了。 傳送數(shù)據(jù)時,單片機首先發(fā)送一個字節(jié)的被寫入器件的傳送數(shù)據(jù)時,單片機首先發(fā)送一個字節(jié)的被寫入器件的存儲區(qū)的首地址,收到存儲器器件的應(yīng)答后,單片機就逐個存儲區(qū)的首地址,收到存儲器器件的應(yīng)答后,單片機就逐個發(fā)送各數(shù)據(jù)字節(jié),但每發(fā)送一個字節(jié)后都要等待應(yīng)答。發(fā)送各數(shù)據(jù)字節(jié),但每發(fā)送一個字節(jié)后都要等待應(yīng)答。 AT24C系列器件片內(nèi)地址在接收到每一個數(shù)據(jù)字節(jié)地址后系列器件片內(nèi)地址在接收到每一個數(shù)據(jù)字節(jié)地址后自動加自動加1,在芯片的,在芯片的“一次裝

11、載字節(jié)數(shù)一次裝載字節(jié)數(shù)”(不同芯片字節(jié)數(shù)不(不同芯片字節(jié)數(shù)不同)限度內(nèi),只需輸入首地址。裝載字節(jié)數(shù)超過芯片的同)限度內(nèi),只需輸入首地址。裝載字節(jié)數(shù)超過芯片的“一一次裝載字節(jié)數(shù)次裝載字節(jié)數(shù)”時,數(shù)據(jù)地址將時,數(shù)據(jù)地址將“上卷上卷”,前面的數(shù)據(jù)將被,前面的數(shù)據(jù)將被覆蓋。覆蓋。 當(dāng)要寫入的數(shù)據(jù)傳送完后,單片機應(yīng)發(fā)出終止信號以結(jié)束當(dāng)要寫入的數(shù)據(jù)傳送完后,單片機應(yīng)發(fā)出終止信號以結(jié)束寫入操作。寫入寫入操作。寫入n個字節(jié)的數(shù)據(jù)格式個字節(jié)的數(shù)據(jù)格式 :S1010 xxx0A字節(jié)首地址字節(jié)首地址AData1AData2A AData nAP寫入時序?qū)懭霑r序S器件地址器件地址+0A字節(jié)首地址字節(jié)首地址AData1

12、AData2A AData nAP頁寫頁寫 頁寫操作的啟動和字節(jié)寫一樣,不同在于傳送了一字節(jié)頁寫操作的啟動和字節(jié)寫一樣,不同在于傳送了一字節(jié)數(shù)據(jù)后并不產(chǎn)生停止信號,主器件被允許再發(fā)送數(shù)據(jù)后并不產(chǎn)生停止信號,主器件被允許再發(fā)送 P=15個額個額外的字節(jié);外的字節(jié); 每發(fā)送一個字節(jié)數(shù)據(jù)后每發(fā)送一個字節(jié)數(shù)據(jù)后24C02產(chǎn)生一個應(yīng)答位并將字節(jié)產(chǎn)生一個應(yīng)答位并將字節(jié)地址低位加地址低位加 1 高位保持不變高位保持不變 ,如果在發(fā)送停止信號之前主,如果在發(fā)送停止信號之前主器件發(fā)送超過器件發(fā)送超過P+1個字節(jié)個字節(jié) 地址計數(shù)器將自動翻轉(zhuǎn),先前寫地址計數(shù)器將自動翻轉(zhuǎn),先前寫入的數(shù)據(jù)被覆蓋。入的數(shù)據(jù)被覆蓋。24C

13、02可以一次寫入可以一次寫入 16 個字節(jié)的數(shù)據(jù)個字節(jié)的數(shù)據(jù) 接收到接收到P+1字節(jié)數(shù)據(jù)和主器件發(fā)送的停止信號后字節(jié)數(shù)據(jù)和主器件發(fā)送的停止信號后 24C02 啟動內(nèi)部寫周期將數(shù)據(jù)寫到數(shù)據(jù)區(qū),所有接收的數(shù)據(jù)在一啟動內(nèi)部寫周期將數(shù)據(jù)寫到數(shù)據(jù)區(qū),所有接收的數(shù)據(jù)在一個寫周期內(nèi)寫入個寫周期內(nèi)寫入24C02。頁寫時序頁寫時序S1010XXX0A字節(jié)首地址字節(jié)首地址AData1AData2A AData nAP 寫保護操作特性可使用戶避免由于不當(dāng)操作而造成對存寫保護操作特性可使用戶避免由于不當(dāng)操作而造成對存儲區(qū)域內(nèi)部數(shù)據(jù)的改寫。儲區(qū)域內(nèi)部數(shù)據(jù)的改寫。 當(dāng)當(dāng) WP管腳接高時,整個寄存器區(qū)全部被保護起來而變管腳

14、接高時,整個寄存器區(qū)全部被保護起來而變?yōu)橹豢勺x取;為只可讀?。?4C02可以接收從器件地址和字節(jié)地址,但是可以接收從器件地址和字節(jié)地址,但是裝置在接收到第一個數(shù)據(jù)字節(jié)后不發(fā)送應(yīng)答信號從而避免寄裝置在接收到第一個數(shù)據(jù)字節(jié)后不發(fā)送應(yīng)答信號從而避免寄存器區(qū)域被編程改寫存器區(qū)域被編程改寫 。寫保護寫保護讀操作讀操作 24C02 讀操作的初始化方式和寫操作時一樣讀操作的初始化方式和寫操作時一樣,僅把僅把 位置為位置為 1 ,有三種不同的讀操作方式:,有三種不同的讀操作方式:立即地址讀立即地址讀、選擇讀選擇讀和和連續(xù)讀連續(xù)讀。 1010A2A1A0W/RW/R立即地址讀立即地址讀 AT24C02的地址計數(shù)

15、器內(nèi)容為最后操作字節(jié)的地址的地址計數(shù)器內(nèi)容為最后操作字節(jié)的地址加加 1。也就是說,如果上次讀。也就是說,如果上次讀/寫的操作地址為寫的操作地址為 N,則立,則立即讀的地址從地址即讀的地址從地址 N+1開始。如果開始。如果 N=E(這里對這里對24WC01, E=127;對;對 24WC02,E=255;對;對24WC04,E=511;對;對24WC08,E=1023;對;對 24WC16,E=2047)則計數(shù)器將則計數(shù)器將翻轉(zhuǎn)到翻轉(zhuǎn)到 0 且繼續(xù)輸出數(shù)據(jù)。且繼續(xù)輸出數(shù)據(jù)。 AT24C02 接收到從器件地址信號后接收到從器件地址信號后R/W 位置位置 1,它首,它首先發(fā)送一個應(yīng)答信號,然后發(fā)送一

16、個先發(fā)送一個應(yīng)答信號,然后發(fā)送一個8 位字節(jié)數(shù)據(jù)位字節(jié)數(shù)據(jù),主器,主器件不需發(fā)送一個應(yīng)答信號,但要產(chǎn)生一個停止信號。件不需發(fā)送一個應(yīng)答信號,但要產(chǎn)生一個停止信號。 立即地址讀時序立即地址讀時序選擇性讀選擇性讀 選擇性讀操作允許主器件對寄存器的任意字節(jié)進行讀選擇性讀操作允許主器件對寄存器的任意字節(jié)進行讀操作,主器件首先通過發(fā)送操作,主器件首先通過發(fā)送起始信號起始信號、從器件地址從器件地址和和它想它想讀取的字節(jié)數(shù)據(jù)的地址讀取的字節(jié)數(shù)據(jù)的地址執(zhí)行一個偽寫操作。執(zhí)行一個偽寫操作。 在在24C02應(yīng)答之后,主器件重新發(fā)送起始信號和從器件應(yīng)答之后,主器件重新發(fā)送起始信號和從器件地址,此時地址,此時R/W位

17、置位置1,24C02響應(yīng)并發(fā)送應(yīng)答信號,然后響應(yīng)并發(fā)送應(yīng)答信號,然后輸出所要求的一個輸出所要求的一個8 位字節(jié)數(shù)據(jù),主器件不發(fā)送應(yīng)答信號位字節(jié)數(shù)據(jù),主器件不發(fā)送應(yīng)答信號但產(chǎn)生一個停止信號但產(chǎn)生一個停止信號 。選擇性讀時序選擇性讀時序 連續(xù)讀連續(xù)讀 連續(xù)讀操作可通過立即讀或選擇性讀操作啟動,在連續(xù)讀操作可通過立即讀或選擇性讀操作啟動,在24C02發(fā)送完一個發(fā)送完一個 8 位字節(jié)數(shù)據(jù)后,主器件產(chǎn)生一個應(yīng)答信號來響位字節(jié)數(shù)據(jù)后,主器件產(chǎn)生一個應(yīng)答信號來響應(yīng),告知應(yīng),告知24C02主器件要求更多的數(shù)據(jù),對應(yīng)每個主機產(chǎn)生的主器件要求更多的數(shù)據(jù),對應(yīng)每個主機產(chǎn)生的應(yīng)答信號,應(yīng)答信號,24C02將發(fā)送一個將

18、發(fā)送一個 8 位數(shù)據(jù)字節(jié),當(dāng)主器件不發(fā)位數(shù)據(jù)字節(jié),當(dāng)主器件不發(fā)送應(yīng)答信號而發(fā)送停止位時結(jié)束此操作。送應(yīng)答信號而發(fā)送停止位時結(jié)束此操作。 從從24C02輸出的數(shù)據(jù)按順序由輸出的數(shù)據(jù)按順序由 N 到到 N+1 輸出,讀操作時,輸出,讀操作時,地址計數(shù)器在地址計數(shù)器在24C02 整個地址內(nèi)增加,這樣整個寄存器區(qū)域整個地址內(nèi)增加,這樣整個寄存器區(qū)域在可在一個讀操作內(nèi)全部讀出。當(dāng)讀取的字節(jié)超過在可在一個讀操作內(nèi)全部讀出。當(dāng)讀取的字節(jié)超過E (這里對這里對24WC01, E=127;對;對 24WC02,E=255;對;對24WC04,E=511;對;對24WC08,E=1023;對;對 24WC16,E

19、=2047),計,計數(shù)器將翻轉(zhuǎn)到零并繼續(xù)輸出數(shù)據(jù)字節(jié)。數(shù)器將翻轉(zhuǎn)到零并繼續(xù)輸出數(shù)據(jù)字節(jié)。 連續(xù)讀時序連續(xù)讀時序 小結(jié)讀出過程小結(jié)讀出過程 單片機先發(fā)送該器件的單片機先發(fā)送該器件的7位地址碼和寫方向位位地址碼和寫方向位“0”(“偽偽寫寫”),),發(fā)送完后釋放發(fā)送完后釋放SDA線并在線并在SCL線上產(chǎn)生第線上產(chǎn)生第9個時鐘信個時鐘信號。號。被選中的存儲器器件在確認是自己的地址后,在被選中的存儲器器件在確認是自己的地址后,在SDA線線上產(chǎn)生一個應(yīng)答信號作為回應(yīng)。上產(chǎn)生一個應(yīng)答信號作為回應(yīng)。 然后,再發(fā)一個字節(jié)的要讀出器件的存儲區(qū)的首地址,收然后,再發(fā)一個字節(jié)的要讀出器件的存儲區(qū)的首地址,收到應(yīng)答后,

20、單片機要重復(fù)一次起始信號并發(fā)出器件地址和讀到應(yīng)答后,單片機要重復(fù)一次起始信號并發(fā)出器件地址和讀方向位(方向位(“1”),收到器件應(yīng)答后就可以讀出數(shù)據(jù)字節(jié),每),收到器件應(yīng)答后就可以讀出數(shù)據(jù)字節(jié),每讀出一個字節(jié),單片機都要回復(fù)應(yīng)答信號。當(dāng)最后一個字節(jié)讀出一個字節(jié),單片機都要回復(fù)應(yīng)答信號。當(dāng)最后一個字節(jié)數(shù)據(jù)讀完后,單片機應(yīng)返回以數(shù)據(jù)讀完后,單片機應(yīng)返回以“非應(yīng)答非應(yīng)答”(高電平),并發(fā)(高電平),并發(fā)出終止信號以結(jié)束讀出操作。出終止信號以結(jié)束讀出操作。 S1010XXX0A字節(jié)首地址字節(jié)首地址AS1010XXX1AData1A AData nAP大賽大賽24C02部分電路圖部分電路圖 sbit S

21、CL = P20;sbit SDA = P21; /用單片機的兩個用單片機的兩個I/O口模擬口模擬I2C接口接口 void iic_start(void) SDA = 1; /釋放釋放SDA總線總線 somenop; SCL = 1; somenop; SDA = 0; somenop;#define somenop _nop_();_nop_();_nop_();_nop_();_nop_();起始信號起始信號 /開始信號開始信號 SCL在高電平期間,在高電平期間,SDA一個下降沿則表示啟動信號一個下降沿則表示啟動信號 void iic_stop(void) SDA = 0; somenop

22、; SCL = 1; somenop; SDA = 1; somenop;終止信號終止信號 /停止停止 SCL在高電平期間,在高電平期間,SDA一個上升沿則表示停止信號一個上升沿則表示停止信號 sbit SCL = P20;sbit SDA = P21;#define somenop _nop_();_nop_();_nop_();_nop_();_nop_();void iic_ack(bit ackbit) if(ackbit) SDA = 0; /第第9個周期拉低,表示應(yīng)答個周期拉低,表示應(yīng)答 else SDA = 1; /第第9個周期拉高,表示非應(yīng)答個周期拉高,表示非應(yīng)答 someno

23、p; SCL = 1; somenop; SCL = 0; SDA = 1; /釋放數(shù)據(jù)總線釋放數(shù)據(jù)總線單片機向單片機向24C02的應(yīng)答信號的應(yīng)答信號單片機單片機24C02I2C總線數(shù)據(jù)傳送時,每成功地傳送一個字節(jié)數(shù)總線數(shù)據(jù)傳送時,每成功地傳送一個字節(jié)數(shù)據(jù)后,接收器都必須產(chǎn)生一個應(yīng)答信號,據(jù)后,接收器都必須產(chǎn)生一個應(yīng)答信號,應(yīng)答應(yīng)答的器件在第的器件在第9個時鐘周期時,將個時鐘周期時,將SDA線拉低線拉低,表,表示其已收到一個示其已收到一個8位數(shù)據(jù)。位數(shù)據(jù)。/形參形參ackbit=1表示應(yīng)答,表示應(yīng)答,0表示非應(yīng)答表示非應(yīng)答bit iic_waitack(void) SDA = 1;/釋放總線釋

24、放總線 somenop; SCL = 1; somenop; if(SDA) SCL = 0;iic_stop();return 0; /無應(yīng)答無應(yīng)答 else SCL = 0;return 1; /有應(yīng)答有應(yīng)答單片機等待來自單片機等待來自24C02的應(yīng)答信號的應(yīng)答信號單片機單片機24C02SCL在高電平期間,在高電平期間,SDA被從設(shè)備拉為低電平表示應(yīng)答被從設(shè)備拉為低電平表示應(yīng)答 void iic_sendbyte(unsigned char byt) unsigned char i; for(i=0;i8;i+) if(byt&0 x80) /先發(fā)高位先發(fā)高位 SDA = 1;el

25、se SDA = 0;somenop;SCL = 1;byt = 1;somenop; SCL = 0; 單片機向從機發(fā)送一個字節(jié)單片機向從機發(fā)送一個字節(jié)每次程序的開始都默認每次程序的開始都默認SCL=0,因此程序最后要將,因此程序最后要將SCL=0SCL低電平期間才可以寫數(shù)據(jù)低電平期間才可以寫數(shù)據(jù)unsigned char iic_recbyte(void) unsigned char da; unsigned char i; for(i=0;i8;i+) SCL = 1;somenop;da = 1;if(SDA) da |= 0 x01;SCL = 0;somenop; return d

26、a;單片機從從機讀取一個字節(jié)單片機從從機讀取一個字節(jié)每次程序的開始都默認每次程序的開始都默認SCL=0,因此程序最后要將,因此程序最后要將SCL=0SCL高電平期間才可以讀數(shù)據(jù)高電平期間才可以讀數(shù)據(jù)void wrbyte_24c02(unsigned char add,unsigned char dat) / Device Address 1010 000 R/W iic_start(); /啟動 iic_sendbyte(0 xa0); /發(fā)送從設(shè)備地址 iic_waitack(); /等待從設(shè)備的響應(yīng) iic_sendbyte(add); /發(fā)出芯片內(nèi)地址 iic_waitack(); /

27、等待從設(shè)備的響應(yīng) iic_sendbyte(dat); /發(fā)送數(shù)據(jù) iic_waitack(); /等待從設(shè)備的響應(yīng) iic_stop(); /停止 S1010XXX0A字節(jié)首地址字節(jié)首地址AData1AData2A AData nAP單片機向從機的單片機向從機的add地址上,寫入地址上,寫入char型的數(shù)型的數(shù)datunsigned char rdbyte_24c02(unsigned char add) / Device Address 1100 000 R/W unsigned char da; iic_start(); /啟動 iic_sendbyte(0 xa0); /發(fā)送發(fā)送從設(shè)備

28、地址 寫操作 iic_waitack(); /等待從設(shè)備的響應(yīng) iic_sendbyte(add); /發(fā)送芯片內(nèi)地址 iic_waitack(); /等待從設(shè)備的響應(yīng) iic_start(); /啟動 iic_sendbyte(0 xa1); /發(fā)送發(fā)送從設(shè)備地址 讀操作 iic_waitack(); /等待從設(shè)備的響應(yīng) da = iic_recbyte(); /獲取數(shù)據(jù) iic_ack(0); /可省去可省去 iic_stop(); /停止 return da;S1010XXX0A字節(jié)首地址字節(jié)首地址AS1010XXX1AData1A AData nAP單片機從單片機從24C02的的add

29、地址上讀取一個數(shù)地址上讀取一個數(shù)temp = rdbyte_24c02(0 x00);/從從24C02的的0 x00地址上讀取一個字節(jié)到地址上讀取一個字節(jié)到temp中中主程序調(diào)用主程序調(diào)用 wrbyte_24c02(0 x00,a0);/向向24C02的的0 x00地址寫入地址寫入a0的內(nèi)容的內(nèi)容void wrbyte_24c02(uchar add, uchar dat0, uchar dat1,) / Device Address 1010 000 R/W iic_start(); iic_sendbyte(0 xa0); iic_waitack(); iic_sendbyte(add); iic_waitack(); iic_sendbyte(dat0); iic_waitack(); iic_sendbyte(dat1); iic_waitack(); iic_stop(); delay(10);S1010XXX0A字節(jié)

溫馨提示

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

評論

0/150

提交評論