關(guān) 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設(shè)計應(yīng)用 > AT93C46/56/55串行EEPROM及單片機程序

        AT93C46/56/55串行EEPROM及單片機程序

        作者: 時間:2004-12-08 來源:網(wǎng)絡(luò) 收藏

        摘要:93C46/56/66是Atmel公司生產(chǎn)的低功耗、低電壓、電可擦除、可編程只讀存儲器,采用CMOS工藝技術(shù)制造并帶有3線串行接口,其容量分別為1kB/4kB,可重復(fù)寫100萬次,數(shù)據(jù)可保存100年以上。文中介紹了該存儲器的引腳功能和指令時序,給出了93C46/56/66和單片機的接口應(yīng)用電路和軟件程序。

        關(guān)鍵詞: 存儲器 接口應(yīng)用 程序 93C46/56/66

        16位單片機以其適于高速控制場合及功能多等優(yōu)點已在工業(yè)控制領(lǐng)域中占領(lǐng)了一定的市場。由于EEPROM能在不脫離系統(tǒng)的情況下修改其存儲單元中的內(nèi)容,故在16位單片機中的應(yīng)用愈來愈廣泛。本文結(jié)合16位機的特點,詳細(xì)介紹AT93系列EEPROM及其使用方法。

        AT93C46/56/66是ATMEL公司推出的低功耗、低電壓電可擦除的可編程只讀存儲器。它采用CMOS技術(shù)和Fairchild Semiconductor 公司的Mi-croWire工業(yè)標(biāo)準(zhǔn)3線串行接口,具有1kB/2kB/4kB的容量,并可通過ORG管腳配置成1288/2568/5128或6416/12816/25616等結(jié)構(gòu)。該系列存儲器可靠性高,能夠重復(fù)寫100萬次,數(shù)據(jù)可以保存100年不丟失;采用8腳PDIP/SOIC封裝和14腳SOI封裝(SOI封裝為JEDEC和EIAJ標(biāo)準(zhǔn)),與并行的EEPROM相比,AT93C46/56/66可大大節(jié)省印制板空間,且接線簡單,因而在多功能的精密測試儀中具有廣闊的前途。

        1 引腳功能

        AT93C46/56/66存儲器芯片的引腳排列如圖1所示。各引腳的功能如下:

        CS:片選信號。高電平有效,低電平時進(jìn)入等待模式。在連續(xù)的指令之間,CS信號必須持續(xù)至少250ns的低電平,才能保證芯片正常工作。

        CLK:串行時鐘信號。在CLK的上升沿,操作碼、地址和數(shù)據(jù)位進(jìn)入器件或從器件輸出。在發(fā)送序列時,CLK最好不停止,以防止讀/寫數(shù)據(jù)的錯誤。

        DI:串行數(shù)據(jù)輸入。可在CLK的同步下輸入開始位、操作碼、地址位和數(shù)據(jù)位。

        DO:串行數(shù)據(jù)輸出。在CLK同步下讀周期時,用于輸出數(shù)據(jù);而在地址擦/寫周期或芯片擦/寫周期時,該端用于提供忙/閑信息。

        VSS:接地。

        VCC:接+5V電源。

        ORG:存貯器構(gòu)造配置端。該端接VCC或懸空時,輸出為16位;接GND時,輸出為8位。

        NC:空腳,不連接。

        表1 AT93C46/56/66系統(tǒng)指令

        指 令起始位操作碼地址位數(shù)據(jù)位備 注
        *8 *16
        READ110AnAo AnAo從指定的單元讀數(shù)
        EWEN10011xxxxx 11xxxx允許寫指令
        ERASE111An~Ao An-1~Ao擦除指定單元
        WRITE101An~Ao An-1~AoD7~D0 D15~D0寫入存儲單元
        ERAL10010xxxxx 10xxxx擦除存儲器所有單元
        WRAL10001xxxx 01xxxxD7~D0 D15~D0寫入存儲器所有單元
        EWDS10000xxxxx 00xxxx禁止寫指令

        表中,93C46 n=6;93C56n=7; 93C66n=8

        2 指令及時序

        AT93C46/56/66的指令如表1所列,各指令的具體含義如下:

        (1)擦/寫允許指令(EWEN)

        由于在上電復(fù)位后?AT93C46/56/66首先將處于擦/寫不允許狀態(tài)。故該指令必須在所有編程模式前執(zhí)行,一旦該指令執(zhí)行后,只要外部沒有斷電就可以對芯片進(jìn)行編程。

        (2)地址擦指令(ERASE)

        該指令用于強迫指定地址中所有數(shù)據(jù)位都為“1”。一旦信息在DI端上被譯碼,就需使CS信號保持至少250ns的低電平,然后將CS置為高電平,這時,DO端就會指示“忙”標(biāo)志。DO為“0”,表示編程正在進(jìn)行;DO為“1”,表示該指定地址的寄存器單元已擦完,可以執(zhí)行下一條指令。

        (3)地址寫指令(WRITE)

        寫指令時,先寫地址,然后將16位的?或8位?數(shù)據(jù)寫入到指定地址中。當(dāng)DI端輸出最后一個數(shù)據(jù)位后,在CLK時鐘的下一個上升沿以前,CS必須為低,且需至少保持250ns,然后將CS置為高電平。需要說明的是:寫周期時,每寫一個字節(jié)需耗時4ms。

        (4)地址讀指令(READ)

        讀指令用于從指定的單元中把數(shù)據(jù)從高位到低位輸出至DO端,但邏輯“0”位先于數(shù)據(jù)位輸出。讀指令在CLK的上升沿觸發(fā),且需經(jīng)過一段時間方可穩(wěn)定。為防止出錯,建議在讀指令結(jié)束后,再輸出2~3個CLK脈沖。

        (5)芯片擦指令(ERAL)

        該指令可將整個存貯器陣列置為1,其它功能與地址擦指令相同。

        (6)芯片寫指令?WRAL?

        該指令可將命令中指定的數(shù)據(jù)寫入整個存貯器陣列,其它功能與地址寫指令相同。該指令周期所花費時間的最大值為30ms。

        (7)擦/寫禁止指令(EWDS)

        使用該指令可對寫入的數(shù)據(jù)進(jìn)行保護,操作步驟與擦/寫允許指令相同。

        3 AT93C56的應(yīng)用

        3.1 AT93C56與80C196KB的連接

        串行EEPROM芯片AT93C56同80C196單片機接口的硬件電路連接方法如圖2所示。圖中,由于MCS-96系列16位單片機的P1口為準(zhǔn)雙向口,因此,為了防止數(shù)據(jù)錯位,在向其P1口寫數(shù)據(jù)時,必須先將P1口置“1”。

        3.2 軟件編程

        該讀/寫程序采用PL/M語言編寫,由于PL/M語言介于高級語言與匯編語言之間,故其對數(shù)據(jù)、地址位的處理比較繁瑣。其中ADDR為指定的地址單元,DATA為寫入的數(shù)據(jù),在寫數(shù)據(jù)、地址時均從高位開始。本程序已在仿真器上調(diào)試通過。且已被應(yīng)用于電量測試儀中(如接觸電阻測試儀)。

        DECLARE SETCS LITERALLY ‘CALL BITSET?. IO-PORT2,0?′;

        DECLARE CLRCS LITERALLY ‘CALL BITCLR?. IOPORT2,0?′;

        DECLARE SETCLK LITERALLY ‘CALL BITSET?. IOPORT2,5?′;

        DECLARE CLRCLK LITERALLY ‘CALL BITCLR?. IOPORT2,5?′;

        DECLARE SETDI LITERALLY ‘CALL BITSET?. IO-PORT1,5?′;

        DECLARE CLRDI LITERALLY ‘CALL BITCLR?. IOPORT1,5?′;

        EWEN:PROCEDURE PUBLIC;

        DECLARE I BYTE;

        CLRCS; CLRDI; CLRCLK;

        SETCS; SETDI; SETCLK;

        DO I=1 TO 2;

        CLRCLK; CLRDI; SETCLK;

        END;

        DO I=1 TO 2;

        CLRCLK; SETDI; SETCLK;

        END;

        DO I = 0 TO 6;

        CLRCLK; SETDI; SETCLK;

        END;

        CLRCLK; CLRCS; SETCS;

        SETCLK; CLRCLK;

        END EWEN;

        READ:PROCEDURE(ADDR) PUBLIC;

        DECLARE (ADDR,I,COUNT) BYTE;

        CLRCS; CLRDI;

        CLRCLK; SETCS;

        DO I= 1 TO 2;

        CLRCLK; SETDI; SETCLK;

        END;

        DO I =1 TO 2;

        CLRCLK; CLRDI; SETCLK;

        DO COUNT=1 TO 7;

        BITOUT(COUNT)=SHR(BITOUT(COUNT),1);

        END;

        CLRCS; CLRDI; CLRCLK;

        CALL TIME(100);

        SETCS; CLRC;

        END READ;

        WRITE: PROCEDURE(ADDR,DATA) PUBLIC;

        DECLARE (ADDR,DATA) BYTE;

        CLRCS; CLRDI; CLRCLK;

        SETCS; SETDI; SETCLK;

        CLRDI; CLRCLK; SETCLK;

        SETDI; CLRCLK; SETCLK;

        END;

        DO I =-1 TO 8;

        X=ROL(ADDR,1);

        ADDR=X; CLRCLK;

        IF ((X AND 01H)=01H)THEN SETDI;

        ELSE CLRDI;

        SETCLK;

        END;

        DO I =1 TO 7;

        CLRCLK; SETCLK;

        END;

        DO I =1 TO 8?

        CALL BITSET(.IOPORT1,7);

        COUNT=COUNT-1;

        CLRCLK; SETCLK;

        BITOUT(COUNT)=IOPORT1;

        END;

        CLRCLK; SETCLK;

        J=0;

        AA: DO I= 1 TO 8;

        J=J+1;

        X=ROL(ADDR,1;

        ADDR=X; CLRCLK;

        IF((X AND 01H)=01H) THEN SETDI

        ELSE CLRDI;

        SETCLK;

        END;

        IF J<>16 THEN DO;

        ADDR =DATA;

        GOTO AA;

        END;

        CLRCS;SETCS;

        CALL TIME(100);?

        END;



        關(guān)鍵詞: EEPROM AT

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 鸡西市| 锦州市| 津南区| 商丘市| 尚义县| 阿瓦提县| 临邑县| 临泽县| 无锡市| 寿宁县| 正阳县| 无棣县| 百色市| 津市市| 宜良县| 黄龙县| 广宁县| 东安县| 永定县| 明光市| 堆龙德庆县| 商河县| 虹口区| 基隆市| 连州市| 建瓯市| 五家渠市| 成都市| 额尔古纳市| 青河县| 丰城市| 百色市| 浮山县| 深圳市| 古浪县| 曲阳县| 莆田市| 黄石市| 襄樊市| 淳化县| 定结县|