新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 大容量閃爍存儲器AT45D081及其在稅控加油機中的應用

        大容量閃爍存儲器AT45D081及其在稅控加油機中的應用

        作者: 時間:2016-10-22 來源:網絡 收藏
        摘要:介紹了大容量閃爍存儲器45的特點和主要功能,描述了其引腳定義、工作原理、操作指令及讀寫時序。結合稅控加油機給出了它的硬件設計和相關的軟件編程。

        關鍵詞:45;稅控加油機;可靠性

        在電子產品的設計中,經常存在斷電后數據或機器參數的保存問題。早期一般由電池為RAM供電,但由于環境及電池本身的原因,這種方式常使數據丟失。目前,小容量數據存儲多采用93系列EEPROM(如93C46)或24系列EEPROM(如24C45)。但如果要求存儲的數據量很大?這些芯片的存儲能力就不能勝任。為此,本文介紹一種大容量的閃爍存儲器芯片AT45D081,并給出其在稅控加油機中的應用。

        1 AT45D081簡介

        1.1 AT45D081的特點

        AT45D081A是ATMEL公司生產的閃爍存儲器。它采用串行方式傳送數據, 符合ISO7816標準,時鐘頻率可高達15MHz, 并采用單5V電源供電。同時具有功耗低、體積小、容量大、傳送快速, 與CMOS和TTL電平兼容以及掉電后數據不丟失等特點。 由于讀寫時序與SPI模式0與模式3兼容, 因此,其硬件設計與軟件編程都很容易。

        1.2 內部結構與引腳說明

        AT45D081內部由主存儲器陣列、兩個SRAM數據緩沖區BUFFER1、BUFFER2以及I/0接口組成。其中主存儲器陣列容量為8M Bits,由4096頁組成,每頁264字節,為編程方便又把連續的8頁定義為一塊。每個SRAM數據緩沖區大小為264字節。 這兩個緩沖區可在主存儲器陣列訪問某一緩沖區或某緩沖區訪問主存儲器陣列時,另外一個緩沖區能同時與外部交換數據。主存儲器與緩沖區的相互訪問是在芯片內部自動完成的,且不需要外部的干涉,這樣就大大提高了外部訪問的效率。但外部可以通過讀取芯片提供的只讀狀態存儲器的內容知道芯片容量及工作狀態信息(可用就緒/忙標志指示緩沖區是否與指定的主存儲器陣列頁內容一致)。

        AT45D081的主要引腳功能見表1所列。當AT45D081的CS由高變低時,芯片啟動一次操作,而當CS由低變高時,終止操作。這時SI上的任何數據都被忽略,SO處于高阻態。 當WP為低時,主存儲器的前256頁不能被訪問。如果要訪問前256頁,則必須使WP為高。WP已被芯片內部拉高,如果要對前256頁編程,那么,WP應在外部置高電平。

        1.3 操作指令及讀寫時序

        外部訪問主存儲器陣列和緩沖區及狀態寄存器是通過輸入命令來實現的。AT45D081共提供了26條命令?這些命令按功能可分為讀主存儲器陣列頁、主存儲器陣列頁內容傳送到緩沖區、緩沖區內容傳送到主存儲陣列頁、頁擦除、塊擦除、外部通過緩沖區對主存儲器頁寫入、自動頁重寫?緩沖區讀寫?狀態寄存器讀等。所有的命令都遵循下面的格式?首先是8位命令碼?然后是24位地址碼?有的命令后面還要輸入無關碼。輸入時高位在前?低位在后。輸入模式與SPI模式0與模式3兼容。表2所列是連續讀主存儲陣列、讀狀態寄存器和寫緩沖區命令格式。表中:r代表該位為保留位,p表示該位為頁地址位,b表示該位為頁內字節地址位,x表示該位可以為0也可以為1,N/A表示輸入數據流中沒有這些位,由表2可知:24位地址可分為5位保留位, 7位塊地址,10位頁地址和9位頁內字節地址。對于主寄存器陣列,頁內字節的訪問,如連續讀主寄存器陣列,必須指定頁及頁內地址作為訪問的首地址。同時還需注意,該命令24位地址后還有32位無關位輸入。而對于緩沖區的訪問?因緩沖區的大小為264字節,因此指定9位地址就可以了。此外,在塊的擦除方面,由于是整塊操作,所以,只需指定7位塊地址而無需指定其它地址。

        圖2所示是連續讀主寄存器陣列的時序。從時序圖可看出,當CS為高電平時,SI輸入的位流無效,此時,SO處于高阻態。當CS由高到低時,片選有效,此時將啟動操作命令,在時鐘SCK的上升沿把SI上已備好的數據串行送入芯片(高位在前)。對于連續讀主存儲器陣列命令,其輸入命令格式位流為:

        01101000 rrrrrppp pppppppb bbbbbbbb xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx ,共64位。當第65個時鐘到來時?SO由高阻態變為有效狀態而輸出數據,數據輸出也是高位在前。

        圖2

        2 AT45D081在稅控加油機中的應用

        2.1 稅控加油機對存儲器的要求

        稅控加油機是對車輛、油罐等設備進行加油并進行稅務管理的加油機器。為對加油過程進行有效監督管理,稅控加油機必須達到國家要求的加油精度,并應顯示每次加油的油價、加油量及加油金額,同時稅控加油機也必須能夠存儲7年之內每天的加油記錄,并提供查詢接口。

        為了滿足稅控加油機對數據存儲的要求,存儲器必須提供足夠大的存儲空間,且在掉電時不能丟失數據。同時應有較強的防數據誤寫功能以保證存儲在存儲器中稅務數據的安全。基于多方面考慮?設計中選用了AT45D081。

        2.2 稅控加油機的功能結構

        稅控加油機主要由稅控CPU、主控CPU以及其它一些外圍設備組成。稅控CPU和主控CPU之間是通過模擬的SPI總線來通信的。主控CPU通過SKH向稅控CPU請求通信,稅控CPU通過SKL作應答。通信數據先由一方放到雙端口移位緩存中,然后通知對方到緩存中取數據。加油的工作過程如下,主控CPU檢測到提油槍信號后將向稅控CPU發出加油請求。如果稅控CPU允許加油,則一方面使能電機控制輸入端A,同時通知主控CPU,主控CPU接到通知后,立即使能電機控制端B,同時計算加油數據并通過SPI協議總線傳送到稅控CPU,再由稅控CPU驅動顯示。當主CPU檢測到油槍掛起后,它一方面送出關電機信號,另一方面通知稅控CPU也送出關機信號。當然,主控CPU也可以通過鍵盤向稅控CPU查詢時間及其它信息。

        2.3 提高可靠性的設計措施

        加油的數據由稅控CPU保存在AT45D081中。為提高芯片的抗干擾能力,防止程序對芯片的誤寫,有效保護片內數據。硬件設計中采取了一些保護措施。其原理如下:

        設CS為Q0,RDY為Q1,CPU的復位信號RE-SET為C。AT45D081的復位信號RESET1為Y, 則Y=(Q1Q2)C。因此,當CPU剛上電復位或由于主控CPU運行出錯(如程序跑飛)而使“看門狗”芯片MAX813輸出復位信號RESET產生熱復位時,系統迫使AT45D081復位,同時禁止對該片的任何讀寫操作。當CPU處于正常工作時,只有該片的片選信號有效,同時芯片處于就緒狀態時,才允許對其進行訪問,否則迫使芯片處于復位狀態并禁止訪問,這樣就防止了外界對其進行誤寫,從而有效地保護了片內數據。

        圖3

        2.4 AT45D081的讀寫軟件編程

        AT45D081有關引腳接線如圖3所示,下面給出針對寫緩沖區和連續讀主存儲器陣列命令的51匯編語言軟件編程。

        ;向緩沖區1寫入數據

        writebuf:

        clr CS

        mov a,#84h

        lcall Byte_shift_out ;送命令碼

        clr a

        lcall Byte_shift_out ;送8位任意碼

        mov a,hi_addr

        lcall Byte_shift_out ;送高字節地址

        mov a,lo_addr

        lcall Byte_shift_out ;送低字節地址

        writebuf0:

        mov a,@r0

        ;連續讀主存儲器陣列內容

        Readmain:

        clr CS

        mov a,#68h

        lcall Byte_shift_out ;送命令碼

        clr c

        mov a,lopageadd

        rlc a

        mov a,hi_page_addradd;

        ;合成24位地址的9~18位

        rlc a

        lcall Byte_shift_out;送前8位

        mov a,hi_addr

        rrc a

        mov a,lopageadd

        rlc a ;合成24位地址0~8位

        lcall Byte_shift_out ;送第2個8位

        mov a,lo_addr

        lcall Byte_shift_out ;送0~7位

        clr a

        mov r3,#04H

        readmain0:

        lcall Byte_shift_out

        djnz r3,readmain0 ;送32位無關位

        readmain1:

        lcall Byte_shift_in

        mov @r0,a

        inc r0 ;

        ;連續從指定的頁及頁內地址讀出R2個數據

        djnz r2,readmain1 ; 送命令碼

        setb CS

        ret

        ReadState: ;讀狀態寄存器內容

        clr fmcs

        MOV a,#57h;

        lcall outcommon

        lCALL incommon

        setb fmcs

        lcall Byte_shift_out; 連續從R0指定的地址寫入R2個數據到BUFFER1

        inc r0

        djnz r2,writebuf0

        setb CS

        ret

        3 結束語

        本文設計的稅控加油機已通過國家稅控認證及電磁兼容試驗認證。產品投產5年來,運行一直穩定可靠,各項指標均達到國家要求標準。尚未發現存儲在AT45D081中的數據出現丟失和異常現象。



        關鍵詞: D081 45D AT

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 清水河县| 禹州市| 兰西县| 原阳县| 青海省| 绥德县| 宜丰县| 互助| 铁力市| 巩义市| 应城市| 梁平县| 白银市| 盖州市| 南昌市| 琼海市| 宜兰市| 贡山| 古浪县| 仲巴县| 开原市| 花莲县| 乌鲁木齐市| 霍林郭勒市| 丹棱县| 丰顺县| 肥东县| 红桥区| 陆良县| 永康市| 永胜县| 濉溪县| 仁寿县| 怀安县| 海口市| 尖扎县| 观塘区| 余江县| 黄冈市| 瓮安县| 甘谷县|