關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > 串行FLASH SSF1101在單片機

        串行FLASH SSF1101在單片機

        作者: 時間:2004-12-08 來源:網絡 收藏
        摘要:1101是存儲容量為4Mbit的SPI接口存儲器,其IC卡封裝形式可作為單片機系統的大容量數據存儲卡。文中介紹了該器件的主要特性和工作原理,并以IC卡封裝形式為例,給出了其與單片機的接口電路及相應的讀寫程序。

        關鍵詞: 單片機 IC卡

        1 概述

        對于野外移動工作或不便與上位機通信的單片機數據采集系統,使用一個大容量、可插拔、便于更換和攜帶的智能卡來存儲采集到的數據,是一個較好的數據存儲方案。SSF1101是上海新茂半導體有限公司生產的4Mbit接口可編程閃速存儲器,該器件采用SPI串口模式與單片機或微機通信,無需任何外圍元件。利用該器件提供的IC卡封裝形式,可非常方便地和單片機系統進行接口以構成大容量的數據存儲裝置。同時,該芯片具有封裝尺寸小、集成度高、電壓低、存儲容量大、接口方式簡單等優點,在商業和工業領域具有廣泛的應用前景。

        2 性能特點

        SSF1101是一個4Mbit的串行FLASH存儲器,具有4根器件識別腳,可在一個系統中最多能擴展16片,其總存儲容量可達8M字節,該器件的性能特點如下:

        ●SPI串行數據接口符合SPI標準;

        ●器件內具有4M Bit 閃速存儲器,512頁,每頁1024字節;

        ●內置4位器件地址譯碼電路,可直接并聯擴展存儲容量,最多可連接16片;

        ●帶有雙1k字節的數據緩沖器,可在編程期間寫入或讀取數據,且讀?。瘜懭氲刂纷詣舆f增;

        ●高速頁面編程,典型時間為20ms;

        ●高速頁面到數據緩沖器的傳輸典型時間為100μs;

        ●頁面擦除典型時間為10ms;

        ●器件擦除典型時間為2s;

        ●內置擦除/編程時序邏輯;

        ●可硬件寫保護;

        ●時鐘頻率最高達10MHz;

        ●采用單5V電源工作,并有低電壓2.7~3.5V可供選擇;

        ●低功耗,休眠電流典型值為18μA;

        ●與CMOS電平和TTL輸入/輸出電平兼容;

        ●工作溫度很寬(商用);

        ●內置上電復位電路;

        ●在數據緩沖器和主Flash之間進行傳送或比較時,可對未用的數據緩沖器和狀態寄存器進行操作。

        SSF1101采用32腳TSOP封裝和IC卡封裝兩種形式,其TSOP封裝外形及引腳排列如圖1(a)所示,IC卡的觸點配置如圖1(b)所示。器件的引腳功能說明見表1所列。

        表1 110引腳說明

        序 號引腳名I/O

        描 述

        1RDY/BUSYO閑/忙指示,此腳為低時表示器件忙,不能閃存進行操作
        2RSTI復位,低有效
        3WPI寫保護,高有效。此信號有效時不能對閃存進行寫擦除操作
        6VccI電源
        7,8GNDI
        4,5,9,10ID0~ID3I芯片地址A0~A3,只有命令中的Device ID和ID0~ID3引腳電平一致時,命令才會被器件接受
        11TMI測試引腳,正常使用時接地
        12CSI片選,低有效,命令輸入后應重新置為高電平
        13SCKI串行輸入數據時鐘
        14SII數據輸入,命令和數據都由此腳串行輸入
        15SOO/Z串行數據輸出,三態
        16~32NCZ空腳

        3 工作原理

        SSF1101具有4194304位主存儲單元,分成512頁面、每頁面1024個字節。此外SSF1101還包含有2個SRAM緩沖器,每個緩沖器有1024個字節,當主存儲器內的1頁正被編程時,緩沖器照樣能接收輸入數據。SSF1101使用SPI串口訪問它的數據,因而硬件設計十分方便,系統可靠性很強,并可把開關噪聲降到最低。該芯片在編程期間,不需要高電壓,而編程電壓仍為電源電壓。 圖2所示是SSF1101存儲器的內部結構框圖。

        SSF1101通過簡單的SPI串行口進行數據存取,器件的操作由主機發出的指令控制,一個有效指令包括一字節4位操作碼、4位器件地址以及目的緩沖器或主儲器地址位置。當CS為0時,主機向器件SCK端發送時鐘信號,以引導操作碼和地址從SI端寫入到器件中。所有指令地址和數據都是先送高位。SSF1101的操作命令如表2所列。表中的X可取任意值,它對器件操作沒有影響。

        表2 1101操作命令表

        操 作命 令器件地址頁面地址緩沖區地址
        讀緩沖區11110ddddXXXXXXXXXXXXBA11-BA0
        讀緩沖區21111ddddXXXXXXXXXXXXBA11-BA0
        寫緩沖區10110ddddXXXXXXXXXXXXBA11-BA0
        寫緩沖區20111ddddXXXXXXXXXXXXBA11-BA0
        使用內建擦除周期的從緩沖區1到閃存傳送1010ddddPA11-PA0XXXXXXXXXXXX
        使用內建擦除周期的從緩沖區2到閃存傳送1011ddddPA11-PA0XXXXXXXXXXXX
        不使用內建擦除周期的從緩沖區1到閃存傳0010ddddPA11-PA0XXXXXXXXXXXX
        不使用內建擦除周期的從緩沖2到內存傳送0011ddddPA11-PA10XXXXXXXXXXXX
        閃存到緩沖區1的傳送1100ddddPA11-PA0XXXXXXXXXXXX
        閃存到緩沖區2的傳送1101ddddPA11-PA0XXXXXXXXXXXX
        比較閃存頁面和緩沖區10100ddddPA11-PA0BA11-BA0
        比較閃存頁面和緩沖區20101ddddPA11-PA0BA11-BA0
        閃存直接讀0001ddddPA11-PA0BA11-BA0
        狀態寄存器讀0000ddddXXXXXXXXXXXXXXXXXXXXXXXX
        片擦除1001ddddXXXXXXXXXXXXXXXXXXXXXXXX

        3.1 狀態寄存器(SR)

        SSF1101具有一個8bit的狀態寄存器,可用于指示器件的工作狀態。該寄存器可通過“狀態寄存器讀”命令讀出寄存器中的內容。寄存器內容及定義如下:

        BF: 忙標志,為1時,表示器件忙,無法執行對閃存的操作命令;

        CF:比較標志,為1時,表示緩沖區中的內容和指定的被比較的閃存頁面不一致;

        WPF:寫保護標志,為1表示器件處于硬件寫保護狀態;

        Bit2~Bit0:容量指示位,為全1表示閃存容量為4Mbit;

        Res:保留位,暫為01;

        當器件正確上電復位后,SR為 00001111B。

        3.2 命令操作說明

        (1)緩沖區傳送

        緩沖區傳送分為三種,首先通過閃存到緩沖區的傳送命令可把指定閃存頁面中的內容拷貝到緩沖區1或緩沖區2中,傳送到緩沖區1的命令碼為:1100dddd PA11-PA0 XXXXXXXXXXXX,共32位, 并繼續保持SCK到至少第35個周期。其中的PA11 - PA0為指定被傳送的閃存頁面, 如果超出器件的范圍,則自動取模。當CS被置高后,傳送操作開始, 同時狀態寄存器中的BF位有效。 完成傳送操作大約需要100μs, 完成后,BF標志清零(下述命令中,如沒有特別指出,其命令碼含義及操作時序均與此相同,此外針對緩沖區2的操作僅命令不同,其余部分完全相同,下述命令均相同)。

        使用內建擦除周期的從緩沖區到閃存傳送命令時,一般先使用內建的擦除周期擦除指定的閃存頁面,然后把緩沖區中的內容拷貝到指定的閃存頁面中。

        不使用內建擦除周期的從緩沖區到閃存傳送命令時,可直接把緩沖區中的內容拷貝到指定的閃存頁面中。

        (2)讀寫緩沖區

        讀緩沖區命令用于讀取緩沖區1(或2)中的一個或多個字節數據,命令碼為:

        1110ddddXXXXXXXXXXXXBA11-BA0。

        其中,BA11-BA0 用于指定從緩沖區中讀取數據的開始地址,如果超出緩沖區大小則自動取模。器件在第35個SCK的下降沿開始從SO引腳輸出數據,且高位在前。讀取一個字節后,緩沖區地址自動加1,然后繼續輸出下一地址的數據。如到達緩沖區的尾部, 則自動返回到緩沖區的起始地址。輸出最后一個字節后需額外的3~7個脈沖。

        寫緩沖區命令用于將一個或多個字節數據寫入緩沖區1(或2)中,命令碼為:

        0110ddddXXXXXXXXXXXXBA11-BA0

        其中,BA11-BA0用來指定寫入緩沖區的開始地址,如果地址超出緩沖區大小則自動取模。器件在第33個SCK的上升沿開始從SI引腳接收數據(高位在前),接收一個字節后寫入緩沖區, 并自動對緩沖區地址加1后繼續接收下一地址的數據。如果到達緩沖區的頁尾,則自動返回到緩沖區的起始地址。輸出最后一個字節后需額外的3~7個脈沖。

        (3)閃存直接讀

        閃存直接讀命令用于直接從閃存頁面中讀取數據,而不通過緩沖區,也不影響緩沖區中的內容。其命令碼為:

        0001dddd PA11-PA0 BA11-BA0。

        其中,PA11-PA0用于指定被操作的閃存頁面, 如果超出器件的范圍,則自動取模;BA11-BA0則用來指定從頁面內讀取數據的開始地址,同樣, 如果超出頁面大小則自動取模。器件在第35個SCK的下降沿開始從SO引腳輸出數據, 高位在前。 輸出一個字節后頁面內數據地址自動加1,然后繼續輸出下一地址的數據。如果到達頁尾,則自動返回到頁初地址。

        (4)比較閃存頁面和緩沖區

        此命令用于比較指定的閃存頁面和緩沖區內的數據是否相同,在被置高后開始比較, 同時BF被置1。如果比較結果為不相同,則狀態寄存器的CF位被置1, 否則CF清零, 比較結束后BF清零。

        (5)讀狀態寄存器

        狀態寄存器讀命令用于讀出器件內狀態寄存器的值。

        (6)片擦除

        片擦除命令用于擦除閃存所有頁面的數據,一個擦除周期大約需要2s。

        4 具體應用

        SSF1101由于具有512kbyte的大存儲容量,因此可廣泛應用于數字語音存儲、圖象存儲和數據存儲等應用領域,以構成大容量的單片機數據采集系統。由AT89C52單片機與SSF1101構成的IC卡讀寫電路如圖3所示。

        圖3中,AT89C52的P1.0、P1.1、P1.2分別與SSF1101 SPI的接口SI、SCK及SO端相連以實現簡單的三線串行通信,P1.3與CS相連用于控制對器件的訪問,圖中的C9與C10是IC卡座的接通開關,當IC卡插入時開關閉合,C1端接入+5V電源,SSF1101上電復位后讀寫電路進入正常的讀寫狀態,當IC卡拔出后C1端經電阻R2向AT89C52的INT0端發出中斷請求,從而轉向掉卡中斷處理程序。下面的程序代碼為與上述硬件電路配套的讀寫IC卡程序:

        ;位定義

        SI BIT P1.0;串行數據輸入

        SCK BIT P1.1;串行時鐘

        SO BIT P1.2;串行數據輸出

        CS BIT P1.3;片選控制

        ;內存定義

        RCMD EQU 30H;讀卡命令單元

        PAH EQU 31H;閃存頁面高位單元

        PAL EQU 32H;閃存頁面低位單元

        BAH EQU 33H;閃存地址高位單元

        BAL EQU 24H;閃存地址低位單元

        ICRDATA EQU 20H;讀寫數據緩沖區首址

        NUMBER EQU 80H;數據塊長度

        ;讀IC卡子程序,采用閃存直接讀方式

        RCARD: SETB CS

        SETB SI ;初始化SPI

        SETB SO

        CLR SCK

        MOV RCMD,#10H;“閃存直接讀”命令

        MOV DAH,#00H ;00頁面

        MOV DAL,#00H

        MOV BAH,#00H ;00地址

        MOV BAL,#00H

        CLR CS ;選中芯片

        MOV R0,#RCMD ;指向命令單元

        MOV R1,#04H ;4字節命令

        T RCMD: MOV A,@R0

        LCALL S OUT ;調用發送子程序

        INC R0

        DJNZ R1,T RCMD

        MOV R0,#ICRDATA ;指向讀寫數據

        緩沖區首址

        MOV R1,#NUMBER

        RICDATA: LCALL SIN ;調用接收子程序

        MOV @R0,A ;讀128字節數據到主機

        INC R0

        DJNZ R1,RICDATA

        SETB CS

        RET

        ;寫IC卡子程序;數據首先寫入緩沖區,再使用內建擦除周期的從緩沖區1到內存傳送命令寫入主存

        WCARD: SETB CS

        SETB SI

        SETB SO

        CLR SCK

        MOV RCMD,#60H ;“寫緩沖區1”命令

        MOV BAH,#00H ;寫00H地址

        MOV BAL,#00H ;單元

        CLR CS

        MOV R0,#RCMD

        MOV R1,#04H

        T RCMD1: MOV A,@R0

        LCALL S OUT

        INC R0

        DJNZ R1,T RCMD

        MOV R0,#ICRDATA;指向讀寫緩沖區

        MOV R1,#NUMBER

        T RDATA: MOV A,@R0

        LCALL S OUT

        INC R0

        DJNZ R1,T-RDATA

        SETB SCK

        CLR SCK

        SETB SCK

        CLR SCK

        SETB SCK

        CLR SCK

        MOV RCMD,#0A0H

        MOV DAH,#00H

        MOV DAC,#00H

        CLR CS

        MOV R0,#RCMD

        MOV R1,#04H

        T RCMD2: MOV A,@R0

        LCALL S OUT

        INC R0

        DJNZ R1,T-RCMD

        SETB CS

        LCALL DL30MS ;延時30ms

        RET

        ;接收一字節數據程序

        S-IN: MOV R6,#8

        RSHIFT: MOV C,SO

        SETB SCK

        RLC A

        CLR SCK

        DJNZ R6,RSHIFT

        RET

        ;發送一字節數據子程序

        S OUT: MOV R7,#8

        TSHIFT: RLC A

        MOV SI,C

        SETB SCK

        NOP

        CLR SCK

        NOP

        CLR SCK

        DJNA R7,TSHIFT

        RET

        5 結束語

        SSF1101串行閃速存儲器的串行IC卡封裝形式非常便于和單片機接口,以便構成便攜式數據存儲裝置,同時其較大的存儲容量也可滿足數據存儲量較大的應用系統要求,因而該器件在數據存儲領域有著較為廣泛的應用前景。



        關鍵詞: FLASH SSF 串行

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 福清市| 磐安县| 湖北省| 莎车县| 海门市| 天气| 英山县| 托克逊县| 襄城县| 锦屏县| 祁连县| 崇礼县| 海宁市| 全椒县| 泗洪县| 新乡市| 芜湖市| 瓦房店市| 平昌县| 泌阳县| 大连市| 平乡县| 甘德县| 宁明县| 德惠市| 德阳市| 上饶市| 东乡族自治县| 涞水县| 扶沟县| 特克斯县| 巢湖市| 古蔺县| 罗城| 荆州市| 苍溪县| 秦安县| 积石山| 朔州市| 锡林郭勒盟| 桐柏县|