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