串行E2PROMAT 24C512在單片機(jī)中應(yīng)用
(4)寫操作
寫操作可分為字節(jié)寫和頁寫兩種寫入方式。通常E2PROM的寫入占用一定的寫入時(shí)間,但AT24C512內(nèi)部設(shè)有128字節(jié)的頁寫緩存,使得操作該器件如同操作SRAM一樣方便,頁面緩存使得兩種寫入方式的操作過程相同,區(qū)別僅在于寫入數(shù)據(jù)字節(jié)的多少。下面以字節(jié)寫入為例介紹寫操作過程。
在字節(jié)寫操作模式下,主器件首先給從器件發(fā)送起始信號(hào)和從器件地址信息,在從器件送回應(yīng)答信號(hào)后,主器件在發(fā)送兩字節(jié)的16位地址信息寫入到 AT24C512地址指針,主器件在收到從器件的應(yīng)答信號(hào)后,再發(fā)送1個(gè)字節(jié)的數(shù)據(jù)到被尋址的存儲(chǔ)單元,從器件在此應(yīng)答,并在主器件產(chǎn)生停止信號(hào)后開始內(nèi)部數(shù)據(jù)擦寫,在內(nèi)部擦寫過程中,從器件不再應(yīng)答主器件的任何請求,字節(jié)寫入操作時(shí)序如圖2所示。
圖2 字節(jié)寫操作時(shí)序
(5)讀操作
讀操作分為立即讀、隨機(jī)讀和連續(xù)讀。立即讀是在最后操作字節(jié)的地址上加1進(jìn)行讀取,而連續(xù)讀則是在立即讀和隨機(jī)讀起動(dòng)后主器件通過應(yīng)答信號(hào)響應(yīng)完成多個(gè)數(shù)據(jù)的讀取,在主器件發(fā)出停止信號(hào)后結(jié)束讀取過程。下面以隨機(jī)讀為例介紹讀操作過程。
隨機(jī)讀操作允許主器件對(duì)存儲(chǔ)器的任意字節(jié)進(jìn)行讀操作。操作過程為主器件首先發(fā)送起始信號(hào),從器件地址和欲讀取字節(jié)的地址執(zhí)行1個(gè)偽寫操作,此時(shí)R/W位應(yīng)置0,在AT24C512應(yīng)答后,主器件重新發(fā)送起始信號(hào)和從器件地址,此時(shí)R/W位應(yīng)置1,AT24C512響應(yīng)并發(fā)送應(yīng)答信號(hào),然后輸出所要求的1個(gè) 8位字節(jié)數(shù)據(jù)。主器件不發(fā)送應(yīng)答信號(hào),但產(chǎn)生1個(gè)停止信號(hào)。字節(jié)讀操作時(shí)序如圖3所示。
AT24C512與AT89C2051單片機(jī)的硬件連接電路如圖4所示。這里使用了2個(gè)AT24C512組成尋址空間為128K字節(jié)的E2PROM存儲(chǔ)器電路。其中U2的器件地址為A0H,存儲(chǔ)地址空間為0000-0FFFFH;U3的器件地址為A2H,存儲(chǔ)地址空間為0000-0FFFFH。
圖3 字節(jié)讀操作時(shí)序
由于AT89C2051不具有I2C總線,因此采用P1.0和P1.1口線來模擬I2C總線,AT24C512的SDA和SCL為開漏輸出,故接入10kΩ的上拉電阻器。下面是與上述電路配套的E2PROM讀寫程序:
;內(nèi)存數(shù)據(jù)定義
BitCnt DATA 30H;讀/寫數(shù)據(jù)位數(shù)計(jì)數(shù)器
ByteCnt DATA 31H;讀/寫數(shù)據(jù)字節(jié)數(shù)計(jì)數(shù)器
SlvAddr DATA 32H;E2PROM器件地址
SubAdrl DATA 33H;存儲(chǔ)單元地址高8位
SubAdr2 DATA 34H;存儲(chǔ)單元地址低8位
ReadDat DATA 50H;讀操作數(shù)據(jù)緩沖區(qū)
WriteDat DATA 40H;寫操作數(shù)據(jù)緩沖區(qū)
;端口位定義
SDA BIT P1.0;模擬I2C數(shù)據(jù)傳送位
SCL BIT P1.1;模擬I2C時(shí)鐘控制位
ACK BIT 20H;讀非應(yīng)答標(biāo)志
;主程序
評(píng)論