AT45DB161在稅控器開發(fā)中的應(yīng)用
引言
稅控設(shè)備是國(guó)家稅務(wù)部門實(shí)施稅收管理信息化的必然手段之一,稅控器作為稅控設(shè)備之一,它是在計(jì)算機(jī)等電子設(shè)備的配合下實(shí)現(xiàn)稅控功能的電子裝置,能保證數(shù)據(jù)的正確生成、可靠存儲(chǔ)和安全傳輸,同時(shí)能滿足稅務(wù)機(jī)關(guān)的管理和數(shù)據(jù)核查等要求。它內(nèi)部裝有自動(dòng)記錄,但不能更改和抹掉計(jì)稅存儲(chǔ)器,由于系統(tǒng)記錄著每日的營(yíng)業(yè)數(shù)據(jù)和應(yīng)納稅額,因此可作為向稅務(wù)機(jī)關(guān)納稅的憑據(jù)。這就決定了稅控器中必然要包含可靠的存儲(chǔ)芯片。事實(shí)上,在眾多型號(hào)的存儲(chǔ)芯片中,at45dbl6l芯片則更加適合在稅控器中的應(yīng)用。
稅控器的總體概述
稅控器平臺(tái)應(yīng)具有實(shí)時(shí)時(shí)鐘和記錄稅控?cái)?shù)據(jù)的大容量存儲(chǔ)器、符合iso 7816標(biāo)準(zhǔn)的ic卡讀寫器,以及支持稅控卡、用戶卡和稅務(wù)管理卡。要能通過usb或串口與主機(jī)通信,同時(shí)要具有在掉電后可保存存儲(chǔ)器數(shù)據(jù)和時(shí)鐘運(yùn)行的備份電池。其內(nèi)部硬件系統(tǒng)結(jié)構(gòu)見圖1所示。
flash存儲(chǔ)芯片
at45dbl61是atmel公司推出的大容量串行flash存儲(chǔ)器,采用串行外圍接口spi系統(tǒng);同時(shí)具有體積小、容量大、功耗低和硬件接口簡(jiǎn)單等特點(diǎn),非常易于構(gòu)成微型低功耗的測(cè)量系統(tǒng)。最大時(shí)鐘頻率可達(dá)到20mhz,它支持頁(yè)和塊(1塊=8頁(yè))擦除功能。存儲(chǔ)器有4
096頁(yè),每頁(yè)528b容量,并有兩個(gè)528b的緩沖區(qū),共2mb存儲(chǔ)空間。
◇at45dbl61的引腳功能
at45dbl61具有28腳tsop、28腳soic和24針cbga等封裝形式。圖2所示是其引腳排列。各引腳的主要功能如表1所列。
◇操作模式
at45dbl61的操作碼有26條,按操作對(duì)象的不同可以分為與頁(yè)相關(guān)操作和與頁(yè)無關(guān)操作;與頁(yè)相關(guān)操作包括:讀主存頁(yè)、主存頁(yè)數(shù)據(jù)拷貝到緩沖區(qū)、主存頁(yè)與緩沖區(qū)數(shù)據(jù)比較、緩沖區(qū)數(shù)據(jù)寫入主存頁(yè)、頁(yè)擦除、塊擦除、頁(yè)編程和頁(yè)重寫等;與頁(yè)無關(guān)操作則包括:讀緩沖區(qū)、寫緩沖區(qū)和讀狀態(tài)寄存器。其中緩沖區(qū)數(shù)據(jù)寫入主存頁(yè)的操作中又包括寫前擦除和邊寫邊擦,具體應(yīng)用要依據(jù)實(shí)際情況來定:如果寫數(shù)據(jù)前已確保該頁(yè)被擦除(數(shù)據(jù)全是0xff),則可使用寫前擦除操作來減少操作時(shí)間,以提高系統(tǒng)的速度;而如果不能保證該頁(yè)已經(jīng)被擦除,為保險(xiǎn)起見,建議使用邊寫邊擦操作來提高系統(tǒng)的可靠性。
at45dbl61支持spi系統(tǒng)工作方式,spi的四種工作方式如圖3所示。
其中支持spi 0和spi 3兩種方式的時(shí)序圖分別如圖4和圖5所示。
對(duì)于不同的操作模式,即使在執(zhí)行相同的操作時(shí),其操作碼也可能不同。如讀存儲(chǔ)頁(yè)操作,spi 0模式下的命令代碼為52h,而spi
3模式下的命令代碼則為d2h。
除讀狀態(tài)寄存器外,所有的命令格均示于圖6圖中的rr:代表保留位,建議清零。
操作時(shí),mcu首先向at45dbl6l發(fā)送1個(gè)命令字節(jié),其后跟隨24位地址數(shù)據(jù)(前兩位為保留位,其后12位為頁(yè)地址選擇位,最后10位為頁(yè)內(nèi)開始字節(jié)地址),最后根據(jù)不同的操作對(duì)si執(zhí)行不同的處理。如寫操作后面緊跟著待寫入的數(shù)據(jù)(高位在前),那么,讀存儲(chǔ)頁(yè)就要延遲32個(gè)sck時(shí)鐘周期以處理讀操作,讀緩沖區(qū)則需延遲8個(gè)sck時(shí)鐘周期。讀狀態(tài)寄存器的時(shí)序(spi 0)如圖7所示。
讀狀態(tài)寄存器(sck上升沿寫入)時(shí),在寫入命令字節(jié)(57h)后,如沒有地址數(shù)據(jù),那么,在其后的8個(gè)sck周期就可以直接從so讀取status數(shù)據(jù),而且可以連續(xù)讀取,直到片選信號(hào)/cs置高為止。
基于at45dbl61稅控器的存儲(chǔ)電路設(shè)計(jì)
◇系統(tǒng)硬件設(shè)計(jì)
圖8所示為at45db16l與w78e516b連接示意圖。雖然flash的工作電壓和mcu不同,但它們都不需要電平轉(zhuǎn)換,兩者仍能正常通訊,從而簡(jiǎn)化了電路設(shè)計(jì),節(jié)約了系統(tǒng)成本。由于wp接高電平,因而去掉了flash前256個(gè)字節(jié)的寫保護(hù)功能,并且不會(huì)對(duì)系統(tǒng)的安全造成隱患,同時(shí)還節(jié)約了單片機(jī)的i/o口資源。為了保證對(duì)flash操作的可靠性,上電后,可對(duì)flash在操作前復(fù)位一次。at45db16l的rdy沒有占用單片機(jī)的i/o口,可在軟件處理中通過讀狀態(tài)寄存器的方法來確定flash內(nèi)部操作是否處于忙狀態(tài)。
◇系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)中包含智能卡的讀寫、flash讀寫和串口通訊處理操作,對(duì)于智能卡讀寫和串口通訊處理,由于和本文的側(cè)重點(diǎn)相關(guān)不大,就不再一一介紹了。flash的讀寫操作主要包括讀緩沖區(qū)、讀存儲(chǔ)頁(yè)、讀狀態(tài)寄存器、寫緩沖區(qū)和寫存儲(chǔ)頁(yè)。下面以flash的讀寫存儲(chǔ)頁(yè)的操作為例,簡(jiǎn)要介紹一下軟件處理流程。
flash寫數(shù)據(jù)過程都采用先寫入緩沖區(qū),再?gòu)木彌_區(qū)寫入存儲(chǔ)頁(yè)中方法,且數(shù)據(jù)都是以頁(yè)為單位,每次要寫入528個(gè)字節(jié)。如果只修改頁(yè)中部分?jǐn)?shù)據(jù),而保留該頁(yè)其他數(shù)據(jù),那么,必須先把該頁(yè)數(shù)據(jù)拷貝到緩沖區(qū)中,然后調(diào)用寫緩沖區(qū)操作,再把緩沖區(qū)的數(shù)據(jù)寫入該存儲(chǔ)頁(yè)中。具體的實(shí)現(xiàn)請(qǐng)參考文獻(xiàn)[1]。
結(jié)束語(yǔ)
at45dbl61串行flash存儲(chǔ)芯片在稅控器中的實(shí)際應(yīng)用效果很好,而且編程也比較簡(jiǎn)單,與其它一些flash存儲(chǔ)芯片相比,at45db16的突出特點(diǎn)是電路簡(jiǎn)單,存儲(chǔ)容量大,占用系統(tǒng)資源少。
評(píng)論