版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第16單元IIC串行串行EEPROM 掌握掌握IIC串行串行EEPROM存儲器的讀寫存儲器的讀寫 進一步掌握串口調試助手的使用進一步掌握串口調試助手的使用16.1實驗目標對對IIC串行串行EEPROM存儲器進行讀寫操作存儲器進行讀寫操作按照實驗按照實驗1的步驟搭建好硬件平臺,然后按照本實驗步驟的硬件連接進的步驟搭建好硬件平臺,然后按照本實驗步驟的硬件連接進行接線,使用行接線,使用STC-ISP軟件下載軟件下載“IIC串行串行EEPROM讀寫驅動包讀寫驅動包outFM24C128.hex”到單片機中,便可觀察到如下實驗現(xiàn)象,實驗到單片機中,便可觀察到如下實驗現(xiàn)象,實驗效果圖見實驗步驟中的操作演示
2、。效果圖見實驗步驟中的操作演示。16.2實驗內容1、FM24C128概述概述n EPROM由以色列工程師Dov Frohman發(fā)明,是一種斷電后仍能保留數(shù)據(jù)的計算機儲存芯片-即非易失性的(非揮發(fā)性)。它是一組浮柵晶體管,被一個提供比電子電路中常用電壓更高電壓的電子器件分別編程。一旦編程完成后,EPROM只能用強紫外線照射來擦除。通過封裝頂部能看見硅片的透明窗口,很容易識別EPROM,這個窗口同時用來進行紫外線擦除??梢詫PROM的玻璃窗對準陽光直射一段時間就可以擦除。16.3實驗原理圖16.1 EPROM芯片n EEPROM(電可擦寫可編程只讀存儲器)用電檫除,主要用于存儲數(shù)據(jù),通過高于普通
3、電壓的作用來擦除和重編程(重寫),可以在線編程寫入數(shù)據(jù)。在一個EEPROM中,當單片機在使用的時候可頻繁地反復編程。當然,EEPROM的壽命也是有限的,EEPROM的壽命是一個很重要的設計考慮參數(shù)。n FM24C128是一個131,072位的串行電可擦除只讀存儲器,內部組織為16384個字節(jié),每個字節(jié)為8位,該器件可串聯(lián)的特點能實現(xiàn)八個器件共用一個二線制總線尋址(因為它有三根地址線)。FM24C128芯片被廣泛應用于低電壓及低功耗的工商業(yè)領域。圖16.2 FM24C128芯片n FM24C128的特點: 工作電壓:1.75.5V。 內部結構:163848。 二線串行接口。 輸入引腳經(jīng)施密特觸發(fā)
4、器濾波抑制噪聲。 雙向數(shù)據(jù)傳輸協(xié)議。 兼容1MHz(5.5V、2.5V)和 400kHz(1.7V)操作。 支持硬件寫保護。 支持64字節(jié)頁寫模式。 支持部分頁寫。 寫周期內部定時 (小于5ms)。 高可靠性。 寫次數(shù):1,000,000 次。 數(shù)據(jù)保存:40年。2、FM24C128內部結構內部結構圖16.3 FM24C128的內部結構圖3、FM24C128引腳說明引腳說明引腳名稱引腳名稱引腳功能引腳功能A0A2器件地址輸入SDA串行數(shù)據(jù)輸入輸出SCL串行時鐘輸入WP寫保護VCC電源GND地NC不連接器件器件/頁地址引腳(頁地址引腳(A2A1A0):):A2A1A0是硬件連接的器件地址輸入引腳
5、,是硬件連接的器件地址輸入引腳,可作為和其他可作為和其他FM24CXX系列器件的兼容引腳。當這些引腳作為硬件連接系列器件的兼容引腳。當這些引腳作為硬件連接的地址輸入引腳時,在一個單一的總線系統(tǒng)上最多可尋址的地址輸入引腳時,在一個單一的總線系統(tǒng)上最多可尋址8個個128K的器件。的器件。如果這些引腳浮空并且對電路板上電源如果這些引腳浮空并且對電路板上電源VCC端的耦合電容小于端的耦合電容小于3pF,則,則A2A1A0引腳在內部被拉低接地。如果對電源引腳在內部被拉低接地。如果對電源VCC端的耦合電容大于端的耦合電容大于3pF,建議將地址引腳直接接地。建議將地址引腳直接接地。表16.1 FM24C12
6、8的引腳說明n 串行數(shù)據(jù)輸入/輸出引腳(SDA):SDA引腳可實現(xiàn)雙向串行數(shù)據(jù)傳輸。該引腳為開漏輸出,可與其它多個開漏輸出器件或開集電極器件線或連接。 n 串行時鐘信號引腳(SCL):在SCL輸入時鐘信號的上升沿將數(shù)據(jù)送入FM24C128器件,并在時鐘的下降沿將數(shù)據(jù)讀出。 n 寫保護引腳(WP):FM24C128具有用于硬件數(shù)據(jù)寫保護功能的引腳。當該引腳接GND時,允許正常的讀/寫操作。當該引腳接VCC時,芯片啟動寫保護功能。4、FM24C128操作說明操作說明n 時鐘及數(shù)據(jù)傳輸:SDA引腳通常被外圍器件拉高。SDA引腳的數(shù)據(jù)應在SCL為低時變化;當數(shù)據(jù)在SCL為高時變化,將視為下文所述的一個
7、起始或停止命令。 n 起始命令:當SCL為高,SDA由高到低的變化被視為起始命令,必須以起始命令作為任何一次讀/寫操作命令的開始。 n 停止命令:當SCL為高,SDA由低到高的變化被視為停止命令,在一個讀操作后,停止命令會使EEPROM進入等待態(tài)低功耗模式。n 應答:所有的地址和數(shù)據(jù)字節(jié)都是以8位為一組串行輸入和輸出的。FM24C128每收到一組8位數(shù)據(jù)后,都會在第9個時鐘周期時返回應答信號。每當主控器件接收到一組8位的數(shù)據(jù)后,應當在第9個時鐘周期向FM24C128返回一個應答信號。收到該應答信號后,F(xiàn)M24C128會繼續(xù)輸出下一組8位數(shù)據(jù)。若此時沒有得到主控器件的應答信號,F(xiàn)M24C128會
8、停止讀出數(shù)據(jù),直到主控器件返回一個停止命令來結束讀周期。n 等待模式:FM24C128特有一個低功耗的等待模式,可以通過以下方法進入該模式。n 上電。n 收到停止位并且結束所有的內部操作后。器件復位:在協(xié)議中斷、下電或系統(tǒng)復位后,器件可通過以下步驟復位。 連續(xù)輸入9個時鐘。 在每個時鐘周期中確保當SCL為高時SDA也為高。 建立一個起始條件。5、FM24C128器件尋址器件尋址n 在接到起始命令后,F(xiàn)M24C128需要一個8位的器件地址來啟動一次讀/寫操作。n 地址字節(jié)的前4位是由一個固定的1、0序列組成的,所有二線制EEPROM器件地址的前4位都相同。圖16.4 FM24C128的地址n F
9、M24C128使用三個器件地址位A2A1A0實現(xiàn)在同一個總線上同時尋址八個器件。這三個地址位必須與相應器件地址引腳的邏輯電平保持一致。如果浮空,那么A2A1A0引腳將使用內部電路對自身偏置(拉低)以形成邏輯低的條件。n 模塊封裝(FM24C128的另一種封裝形式)的器件地址的前4位也由一個固定的1、0順序組成,隨后3位為全0。 n 器件地址的第8位是讀/寫選擇位,該位為高則啟動讀操作,為低則啟動寫操作。n 如果器件地址正確匹配,F(xiàn)M24C128將應答一個“0”;否則,芯片將返回等待模式。6、FM24C128讀寫操作讀寫操作n 讀操作 n 當前地址讀:內部數(shù)據(jù)的地址計數(shù)器保留最后一次訪問的地址,
10、并自動加1。只要芯片是處于上電狀態(tài),這個地址在操作運行期間始終有效。如果從存儲器的最后一頁的最后一個字節(jié)開始讀,則讀下一個字節(jié)時地址將會翻轉到整個FM24C128的最小地址;如果從當前頁面的最后一個字節(jié)開始寫,則寫下一個字節(jié)時地址將會翻轉到同一頁內的最小地址。 一旦時鐘將讀/寫位為“1”的器件地址送入,并得到FM24C128應答后,就會串行輸出當前地址的數(shù)據(jù)。主控器件不對FM24C128返回應答信號,而是產生一個緊隨的停止命令來結束當前地址讀操作。圖16.5 FM24C128當前地址讀的操作n 自由讀:自由讀需要通過假的字節(jié)寫操作來獲得數(shù)據(jù)地址。一旦器件地址和數(shù)據(jù)地址字節(jié)被時鐘送入并得到FM2
11、4C128的應答后,主控器件必須產生另一個起始命令。主控器件通過發(fā)送一個讀/寫選擇位為高的器件地址來開啟一次當前地址讀。FM24C128對器件地址做出應答后由時鐘串行輸出數(shù)據(jù)。主控器件不對數(shù)據(jù)傳輸返回應答信號,而是產生一個緊隨的停止命令來結束自由讀操作。圖16.6 FM24C128自由讀的操作n 連續(xù)讀:連續(xù)讀由一個當前地址讀或自由讀啟動。主控器件收到一組8位的數(shù)據(jù)后會返回應答信號。FM24C128每接收到一個應答信號,數(shù)據(jù)地址將被自動加1,并且將串行輸出下一組數(shù)據(jù)。當器件達到存儲器的最大地址時,數(shù)據(jù)地址將翻轉到最小地址,并且繼續(xù)進行連續(xù)讀操作。主控器件不發(fā)出應答信號,而是產生一個緊隨的停止命
12、令來結束連續(xù)讀操作。圖16.7 FM24C128連續(xù)讀的操作n 寫操作 n 字節(jié)寫:在輸入器件地址并得到FM24C128應答后,緊接著需要一個8位的數(shù)據(jù)地址來進行寫操作;FM24C128收到數(shù)據(jù)地址并再次返回應答信號后,時鐘會把前8位數(shù)據(jù)送入FM24C128;接到這8位數(shù)據(jù)后,F(xiàn)M24C128返回應答信號,并且主控器件在產生停止命令后結束寫操作。這時EEPROM進入內部定時的寫周期(非易失性寄存器的寫時間)。所有的輸入操作在該寫周期內均無效,而且只有在寫周期結束后,F(xiàn)M24C128才會對操作指令做出應答。圖16.8 FM24C128字節(jié)寫的操作n 頁寫操作與字節(jié)寫操作的啟動方式基本相同。不同的
13、是,在時鐘送入第一組數(shù)據(jù)并得到FM24C128應答后,主控器件不是發(fā)出停止命令,而是繼續(xù)發(fā)送可達63組數(shù)據(jù),每收到一組數(shù)據(jù)FM24C128都會返回應答信號。主控器件必須以停止命令來結束頁寫操作。 每接收一組數(shù)據(jù),數(shù)據(jù)地址的低六位會在內部自動遞加。數(shù)據(jù)地址的高幾位將不會變化,以保持存儲器的頁地址不變。當內部產生的數(shù)據(jù)地址達到頁邊界時,數(shù)據(jù)地址將會翻轉,接下來的數(shù)據(jù)的寫入地址將被置為同一頁的最小地址。如果有超過64組數(shù)據(jù)被送入FM24C128,數(shù)據(jù)地址將回到最先寫入的地址,先前寫入的數(shù)據(jù)將被覆蓋。圖16.9 FM24C128頁寫(連續(xù)寫)的操作n 應答輪詢:一旦主控器件啟動FM24C128內部定時
14、寫周期并且FM24C128輸入被禁止,便可進行應答輪詢。當內部寫周期結束,F(xiàn)M24C128返回應答信號后,主控器件即可執(zhí)行下一個寫命令。7、FM24C128的硬件電路的硬件電路n U1的SCL、SDA和WP連接到單片機的I/O口,J1的三個腳可以懸空,那么U1的A2A1A0引腳將使用內部電路對自身偏置(拉低)以形成邏輯低的條件。圖16.10 FM24C128的硬件電路1、硬件連接、硬件連接n J2-1連接單片機的P2.0,J2-2連接單片機的P2.1,J2-3連接單片機的P2.2。16.4 實驗步驟圖16.11 FM24C128硬件連接的實物圖n FM24C128硬件連接的示意圖如下圖所示。圖
15、16.12 FM24C128硬件連接的示意圖2、實驗操作演示、實驗操作演示n 按照實驗1的步驟搭建好硬件平臺,然后按照本實驗步驟的硬件連接進行接線,使用STC-ISP軟件下載“IIC串行EEPROM讀寫驅動包outFM24C128.hex”到單片機中,下面還需要使用STC-ISP軟件中的串口助手來調試程序。n 像PC機上電時內存條自檢一樣,在上電時檢查FM24C128的好壞。在使用FM24C128之前,將寫入FM24C128的數(shù)據(jù)與讀出的數(shù)據(jù)進行比較,并打印比較結果(“讀出與寫入一致, 成功!”或“讀出與寫入不一致, 失敗!”)。與前面的實驗7一樣,在使用串口助手之前,也需要做好相應的設置。圖
16、16.13 通過串口助手來調試程序3、程序流程圖、程序流程圖n 本實驗要實現(xiàn)的效果是將寫入FM24C128的數(shù)據(jù)與讀出的數(shù)據(jù)進行比較,并打印出比較結果,即將比較結果通過串口上傳到PC機。n 讀寫不一致,單片機將通過串口將錯誤信息(“讀出與寫入不一致, 失敗!”)上傳到PC機,這里就需要檢查硬件連接,或檢查程序是否有錯。在排除故障之后,重新上電運行程序。圖16.14 主程序流程圖4、代碼分析、代碼分析n 代碼結構n 本實驗對應例程如下圖所示,其中app文件夾用于存放Main.c,drv文件夾用于存放FM24C128、定時器和串口的驅動程序等,out文件夾用于存放工程編譯時生成的中間文件和可執(zhí)行程
17、序等,project文件夾用于存放工程文件,si文件夾用于存放source insight工程文件。圖16.15 資源管理器中的例程代碼n 本實驗對應例程在Keil中打開如下圖所示,app組用于存放Main.c,drv組用于存放FM24C128、定時器和串口的驅動程序等。圖16.16 在Keil中打開的例程代碼n 本實驗是FM24C128有關的實驗,我們只關注Main.c、FM24C128驅動程序24Cxx.c和I2C.c這三個.c文件,其它程序文件可以不去了解其細節(jié)。分層分層文件文件函數(shù)函數(shù)應用層應用層Main.c主函數(shù)。驅動層驅動層FM24C128.c和FM24C128.h從FM24C12
18、8讀多個字節(jié)函數(shù)。往FM24C128寫入多個字節(jié)函數(shù)。I2C.c和I2C.h啟動I2C總線函數(shù)。停止I2C總線函數(shù)。對I2C總線產生應答函數(shù)。不對I2C總線產生應答函數(shù)。檢查應答位函數(shù)。從I2C總線讀取1Byte數(shù)據(jù)函數(shù)。往I2C總線寫入1Byte數(shù)據(jù)函數(shù)。往I2C總線寫入從機地址函數(shù)。n 代碼分析nA、主程序Main.c的代碼/=/ 程序功能: 將寫入FM24C128的數(shù)據(jù)與讀出的數(shù)據(jù)進行比較, 并打印出比較結果/ 硬件平臺: STC15W1K24S/ 軟件平臺: Keil uVision 4/=#include Global.h#include timer.h#include UART.h
19、#include 24Cxx.h /=/ 函數(shù)功能: 主函數(shù)main() int16u i, address; int8u xdata buf1264, xdata buf2264; Timer_Init(); UART_Init(); dly_ms(10); printf(FM24C128模塊 v1.0! rn); for(i=0;i=264;i+) /為兩組緩存賦初值 buf1i = i; buf2i = 0; address = 0 x00; /起始地址 FM24C128_WriteBytes(address, buf1, 264);/將buf1的數(shù)據(jù)寫入FM24C128 FM24C12
20、8_ReadBytes(address, buf2, 264); /從FM24C128讀取數(shù)據(jù)存入buf2 if( memcmp(buf1, buf2, 264)!=0 ) /比較 printf(讀出與寫入不一致, 失敗! rn); while(1); printf(讀出與寫入一致, 成功! rn); while(1) ; /等待 n 主程序Main.c注釋說明n 在Main.c中最上面是整個程序的說明,在其它.c中最上面是這個文件對外提供的接口說明。n 在Main.c中右邊是語句的注釋,要求整齊劃一。n 主程序Main.c命名說明n 同樣要考慮變量命名、常量命名、管腳命名、函數(shù)命名等。n 主
21、程序Main.c頭文件說明n 在Main.c中調用了FM24C128_WriteBytes()、FM24C128_ReadBytes()等多個函數(shù),這些函數(shù)的源代碼位于FM24C128的驅動程序FM24C128.c中,其聲明位于FM24C128.h中。n B、FM24C128的驅動程序24Cxx.c的代碼/=/ 程序功能: 從FM24C128讀多個字節(jié)/ 往FM24C128寫入多個字節(jié)/ 程序接口: void FM24C128_ReadBytes(int16u ucStartAddr, uchar *buf, int16u count);/ void FM24C128_WriteBytes(i
22、nt16u ucStartAddr, uchar *buf, int16u count);/ 編寫時間: 2015-08-22/=#include Global.h#include timer.h#include UART.h#include I2C.h/ 函數(shù)功能: FM24C128的接口信號(邏輯管腳與物理管腳的對應表)/=sbit WP = P20;/=/ 函數(shù)功能: 本地變量及常量的定義/=#define FM24C128_ADDR 0 xA0|(03)|(02)|(08); I2C_WriteByte(ucStartAddr&0 xFF);I2C_WriteSlaveAddr(FM2
23、4C128_ADDR|0 x01);/地址第0位置1表示讀操作for(i=0;icount;i+) bufi = I2C_ReadByte(); if(i8); I2C_WriteByte(address&0 xFF); I2C_WriteByte(mdata); I2C_Stop(); Delay_Ms(5); /Write Clycle 5mS WP = 1;/ 函數(shù)功能: 往FM24C128寫入多個字節(jié)/ 函數(shù)接口: void FM24C128_WriteBytes(int16u ucStartAddr, uchar *buf, int16u count);/=void FM24C128
24、_WriteBytes(int16u ucStartAddr,uchar *buf,int16u count) WP = 0; I2C_WriteSlaveAddr(FM24C128_ADDR&0 xFE); /第0位清0表示寫操作 I2C_WriteByte(ucStartAddr8); I2C_WriteByte(ucStartAddr&0 xFF);while(count) I2C_WriteByte(*buf); /寫數(shù)據(jù) buf+; count-; ucStartAddr+; if(ucStartAddr&(FM24C128_PAGEBYTE-1)!=0) continue; els
25、e I2C_Stop(); Delay_Ms(5); /Write Clycle 5mS if( count=0 ) return; I2C_WriteSlaveAddr(FM24C128_ADDR&0 xFE); I2C_WriteByte(ucStartAddr8); /從下一頁字節(jié)0開始寫 I2C_WriteByte(ucStartAddr&0 xFF); I2C_Stop(); Delay_Ms(5); /Write Clycle 5mS WP = 1;C、FM24C128的驅動程序24Cxx.c的代碼void FM24C128_ReadBytes(int16u ucStartAddr,uchar *buf,int16u count);void FM24C128_WriteBytes(int16u ucStartAddr,uchar
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版電商平臺客戶數(shù)據(jù)保密及隱私保護合同3篇
- 二零二五版農業(yè)產業(yè)化合同管理與農產品質量安全協(xié)議3篇
- 二零二五版智能廣告終端設備投放與維護合同3篇
- 二零二五年綠色環(huán)保抵押貸款合同范本分享3篇
- 二零二五版一期臨床試驗統(tǒng)計分析合同3篇
- 二零二五年度辣椒種植與冷鏈物流運輸合同3篇
- 二零二五版餐廳智能點餐系統(tǒng)維護與升級合同3篇
- 二零二五年度餐飲企業(yè)承包經(jīng)營與品牌升級合同3篇
- 二零二五版智能簽約二手房購房合同范本2篇
- 二零二五版新能源汽車電池購銷合同樣本3篇
- 冬春季呼吸道傳染病防控
- 中介費合同范本(2025年)
- 《kdigo專家共識:補體系統(tǒng)在腎臟疾病的作用》解讀
- 生產調度員崗位面試題及答案(經(jīng)典版)
- 【物 理】2024-2025學年八年級上冊物理寒假作業(yè)人教版
- 交通運輸安全生產管理規(guī)范
- 電力行業(yè) 電力施工組織設計(施工方案)
- 《法制宣傳之盜竊罪》課件
- 通信工程單位勞動合同
- 查對制度 課件
- 2024-2030年中國豬肉市場銷售規(guī)模及競爭前景預測報告~
評論
0/150
提交評論