《ARM嵌入式接口技術(shù)應(yīng)用》第三章存儲(chǔ)器件課件_第1頁(yè)
《ARM嵌入式接口技術(shù)應(yīng)用》第三章存儲(chǔ)器件課件_第2頁(yè)
《ARM嵌入式接口技術(shù)應(yīng)用》第三章存儲(chǔ)器件課件_第3頁(yè)
《ARM嵌入式接口技術(shù)應(yīng)用》第三章存儲(chǔ)器件課件_第4頁(yè)
《ARM嵌入式接口技術(shù)應(yīng)用》第三章存儲(chǔ)器件課件_第5頁(yè)
已閱讀5頁(yè),還剩91頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第三章存儲(chǔ)器件一、存儲(chǔ)器概述二、EEPROM存儲(chǔ)器件三、SRAM存儲(chǔ)器件四、Nor-Flash存儲(chǔ)器件五、Nand-Flash存儲(chǔ)器件六、附錄--Nor-Flash與Nand-Flash比較

一、存儲(chǔ)器件概述存儲(chǔ)器的重要性

存儲(chǔ)器是嵌入式系統(tǒng)的主要組成部分,運(yùn)行的程序需要存儲(chǔ)器,處理數(shù)據(jù)需要存儲(chǔ)器,存儲(chǔ)數(shù)據(jù)也需要存儲(chǔ)器。沒(méi)有存儲(chǔ)器,系統(tǒng)無(wú)法工作。存儲(chǔ)器的種類(lèi)

①只讀存儲(chǔ)器(簡(jiǎn)稱(chēng)ROM) ROM是一種非易失性的存儲(chǔ)器,即在電源被關(guān)掉之后也不會(huì)丟失數(shù)據(jù)的。

②隨機(jī)訪問(wèn)存儲(chǔ)器(簡(jiǎn)稱(chēng)RAM)

RAM是一種易失性的存儲(chǔ)器,即在電源被關(guān)掉之后數(shù)據(jù)會(huì)丟失。

1.1存儲(chǔ)器ROMROM的種類(lèi)很多,一般分為以下5種:1.只讀存儲(chǔ)器(ROM)2.可編程ROM(PROM)3.電可編程ROM(EPROM) 4.電可擦除可編程ROM(EEPROM)5.閃存(FlashMemory)

二、EEPROM存儲(chǔ)器件EEPROM的種類(lèi)很多,它們大致可分為以下3種: 并行EEPROM 串行EEPROM 加密型EEPROMEEPROM概述

1.1CAT24WC16介紹CAT24WC16是CATALYST公司生產(chǎn)的EEPROM,同系列還有CAT24WC02、CAT24WC04、CAT24WC08、CAT24WC32等。CAT24WC16的存儲(chǔ)空間 內(nèi)部總共有128頁(yè),每一頁(yè)為16字節(jié)(byte),每一字節(jié)為8位(bit),共有2K個(gè)存儲(chǔ)字節(jié)單元(即16K比特位)。CAT24WC16的其他特性 1.8到6.0伏工作電壓范圍。 16字節(jié)頁(yè)寫(xiě)緩沖器。 與400KHz的I2C總線兼容,符合雙向數(shù)據(jù)傳輸協(xié)議。 具有硬件寫(xiě)保護(hù)和軟件數(shù)據(jù)保護(hù)功能。 自動(dòng)定時(shí)擦寫(xiě)周期。

引腳說(shuō)明引腳名稱(chēng)功能功能描述VCC、GND電源、地為芯片提供3.3V電源A0、A1、A2地址選擇在串行總線結(jié)構(gòu)中,最多可以連接8個(gè)CAT24WC16芯片,則用A0、A1、A2設(shè)置地址以示區(qū)別。A0、A1、A2懸空為0。WP寫(xiě)保護(hù)此引腳與地連接時(shí),允許寫(xiě)操作;與VCC連接時(shí),所有的寫(xiě)存儲(chǔ)器操作都被禁止。如果不連任何地方,該引腳將在芯片內(nèi)部下拉到地。SCL時(shí)鐘線串行時(shí)鐘輸入SDA數(shù)據(jù)線雙向串行數(shù)據(jù)輸入/輸出

1.2CAT24WC16工作時(shí)序1.起停信號(hào)

起始信號(hào):

時(shí)鐘線SCL保持高電平期間,數(shù)據(jù)線SDA電平發(fā)生從高到低的跳變。

停止信號(hào):

時(shí)鐘線SCL保持高電平期間,數(shù)據(jù)線SDA電平發(fā)生從低到高的跳變。2.設(shè)備選址3.應(yīng)答信號(hào)4.寫(xiě)操作5.讀操作

設(shè)備選址主器件發(fā)送1個(gè)起始信號(hào)啟動(dòng)發(fā)送過(guò)程,然后發(fā)送尋址的從器件地址。8位從器件地址的高4位固定為1010,接下來(lái)3位(A10、A9、A8)為從器件的地址位。R/W為讀寫(xiě)控制位。CAT24WC16監(jiān)測(cè)總線當(dāng)其地址與發(fā)送的從地址相符時(shí)發(fā)出1個(gè)應(yīng)答信號(hào),CAT24WC16根據(jù)讀寫(xiě)控制位的狀態(tài)準(zhǔn)備讀寫(xiě)操作。

應(yīng)答信號(hào)在SCL時(shí)鐘線上的第9個(gè)時(shí)鐘周期將SDA線拉低就表示一個(gè)應(yīng)答信號(hào)。I2C總線每成功傳送1Byte,接收器都必須產(chǎn)生1個(gè)應(yīng)答信號(hào)。CAT24WC16在接收到起始信號(hào)和從器件地址之后也要產(chǎn)生應(yīng)答信號(hào)。如果該器件工作于讀模式時(shí),在發(fā)送1個(gè)8位數(shù)據(jù)后釋放SDA線并等待1個(gè)應(yīng)答信號(hào)。

在“頁(yè)寫(xiě)”操作模式下,頁(yè)寫(xiě)操作的啟動(dòng)和字節(jié)寫(xiě)一樣,不同在于傳送了一字節(jié)數(shù)據(jù)后并不產(chǎn)生停止信號(hào),主器件被允許發(fā)送15個(gè)額外的字節(jié)。如果在發(fā)送停止信號(hào)之前主器件發(fā)送超過(guò)16個(gè)字節(jié),地址計(jì)數(shù)器將自動(dòng)翻轉(zhuǎn)先前寫(xiě)入的數(shù)據(jù)被覆蓋。在發(fā)送最后一個(gè)字節(jié)后,主器件發(fā)送一個(gè)停止信號(hào)通知數(shù)據(jù)傳輸結(jié)束,如圖所示。

讀操作CAT24WC16支持三種讀操作方式: 1、當(dāng)前地址讀 2、隨機(jī)地址讀 3、連續(xù)讀在“當(dāng)前地址讀”操作方式時(shí),CAT24WC16地址計(jì)數(shù)器內(nèi)容為最后操作字節(jié)的地址上加1。

CAT24WC16接收到從器件地址信號(hào)后,首先發(fā)送一個(gè)應(yīng)答信號(hào),然后發(fā)送一個(gè)8位字節(jié)數(shù)據(jù)。如圖所示:

“隨機(jī)地址讀”操作允許主器件對(duì)存儲(chǔ)器的任意字節(jié)進(jìn)行讀操作。 1、主器件首先通過(guò)發(fā)送起始信號(hào)、從器件地址并選擇寫(xiě)操作。 2、等CAT24WC16應(yīng)答之后主器件重新發(fā)送起始信號(hào)和從器件地址。 3、CAT24WC16響應(yīng)并發(fā)送應(yīng)答信號(hào),然后輸出該地址處的一個(gè)字節(jié)數(shù)據(jù),最后主器件發(fā)送一個(gè)停止信號(hào)結(jié)束此次讀操作。過(guò)程如圖:

1.3實(shí)驗(yàn)?zāi)康呐c內(nèi)容實(shí)驗(yàn)?zāi)康模和ㄟ^(guò)實(shí)驗(yàn),理解I2C數(shù)據(jù)傳輸?shù)脑?,掌握I2C接口電路連接和軟件編程。實(shí)驗(yàn)內(nèi)容:事先往CAT24WC16的某個(gè)地址區(qū)域Addr寫(xiě)入一個(gè)字符串“Hello”,然后從地址Addr處讀取5個(gè)字節(jié)內(nèi)容,并在屏幕上顯示,檢查讀出來(lái)的字符串是否也為“Hello”。

1.4實(shí)驗(yàn)原理分析電路原理分析

EEPRROM(CAT24WC16)通過(guò)I2C接口與處理器進(jìn)行通信,電路中將EEPRROM的地址線A0、A1、A2接地,SCL和SDA線上都接一個(gè)10K的上拉電阻。

軟件設(shè)計(jì)為了方便編程與程序可讀性,首先定義幾個(gè)宏,這些宏分別對(duì)應(yīng)I2C控制寄存器I2CONSET的某些控制位。 #define SI 0x08 //I2C中斷標(biāo)志位 #define STO 0x10 //I2C停止位 #define STA 0x20 //I2C起始位 #define AA 0x04 //I2C應(yīng)答位 #define I2EN 0x40 //I2C使能位根據(jù)實(shí)驗(yàn)內(nèi)容我們?cè)O(shè)計(jì)了3個(gè)底層驅(qū)動(dòng)函數(shù),這三個(gè)底層驅(qū)動(dòng)函數(shù)分別是:CAT24WC16_Init()初始化設(shè)置函數(shù)。CAT24WC16_Write()CAT24WC16的寫(xiě)函數(shù)。CAT24WC16_Read()CAT24WC16的讀函數(shù)。

CAT24WC16_Write()/***************************************************************************名稱(chēng):CAT24WC16_Write()*功能:主發(fā)送模式,向CAT24WC16寫(xiě)入數(shù)據(jù)。*入口參數(shù): sla 器件地址; slaveAddr器件子地址 pWriteData待發(fā)送數(shù)據(jù)緩存區(qū)指針num待寫(xiě)入字符的個(gè)數(shù)*出口參數(shù): 1 代表發(fā)送成功 I2STAT返回錯(cuò)誤狀態(tài)碼,代表發(fā)送不成功**************************************************************************/uint8CAT24WC16_Write(uint8sla,uint8slaveAddr,uint8*pWriteData,uint8num){ uint8 i; //通過(guò)軟件置位STA進(jìn)入主發(fā)送模式 I2CONCLR=AA|SI|STA; //清零:SI位,起始標(biāo)志位,應(yīng)答標(biāo)志位 I2CONSET=I2EN|STA; //啟動(dòng)總線 while((I2CONSET&SI)==0); //等待SI置位 if(I2STAT!=0x08) //查看狀態(tài)碼 { I2CONSET=STO; //結(jié)束數(shù)據(jù)傳輸結(jié)束 return(I2STAT); //返回錯(cuò)誤狀態(tài)碼 }

//發(fā)送器件地址+W位 I2CONCLR=SI|STA; //清零:SI位,起標(biāo)志位標(biāo)志位 I2DAT=sla&0xFE; while((I2CONSET&SI)==0); //等待SI置位 if(I2STAT!=0x18) //查看狀態(tài)碼 { I2CONSET=STO; //結(jié)束數(shù)據(jù)傳輸結(jié)束 return(I2STAT); //返回錯(cuò)誤狀態(tài)碼 } //發(fā)送器件子地址 I2CONCLR=SI; //SI位清零 I2DAT=slaveAddr; while((I2CONSET&SI)==0); //等待SI置位 if(I2STAT!=0x28) //查看狀態(tài)碼 { I2CONSET=STO; //結(jié)束數(shù)據(jù)傳輸結(jié)束 return(I2STAT); //返回錯(cuò)誤狀態(tài)碼 }

//發(fā)送數(shù)據(jù) for(i=num;i>0;i--) { I2CONCLR=SI; //SI位清零 I2DAT=*pWriteData++; while((I2CONSET&SI)==0); //等待SI置位 if(I2STAT!=0x28) //查看狀態(tài)碼 { I2CONSET=STO; //結(jié)束數(shù)據(jù)傳輸結(jié)束 return(I2STAT); //返回錯(cuò)誤狀態(tài)碼 } }

I2CONCLR=SI; //SI位清零 I2CONSET=STO; //結(jié)束數(shù)據(jù)傳輸結(jié)束 return(1);}

if(I2STAT!=0x08) //查看狀態(tài)碼 { I2CONSET=STO; //結(jié)束數(shù)據(jù)傳輸結(jié)束 return(I2STAT); //返回錯(cuò)誤狀態(tài)碼 } //發(fā)送器件地址+R位 I2CONCLR=SI|STA; //SI位,STA位清零 I2DAT=sla|0x01; while((I2CONSET&SI)==0); //等待SI置位 if(I2STAT!=0x40) //查看狀態(tài)碼 { I2CONSET=STO; //結(jié)束數(shù)據(jù)傳輸結(jié)束 return(I2STAT); //返回錯(cuò)誤狀態(tài)碼 } //接收數(shù)據(jù) I2CONSET=AA; //設(shè)置應(yīng)答位 I2CONCLR=SI; //SI位清零 for(i=0;i<num;i++) { while((I2CONSET&SI)==0); //等待SI置位 *pReadData++=I2DAT; I2CONCLR=SI; //SI位清零 if(i!=num-1) I2CONSET=AA; //將接收數(shù)據(jù),設(shè)置應(yīng)答位 else I2CONSET=STO; //發(fā)送停止位 } return(1);}

1.5實(shí)驗(yàn)參考程序uint8EEPROM_TAB[10]="Hello!\0";/***************************************************************************名稱(chēng):main()*功能:對(duì)EEPROM進(jìn)行讀寫(xiě)控制*************************************************************************/intmain(void){ uint8REEPROM_buf[5]; uint8flag; //初始化 IO1DIR=IO1DIR|BEE;

//設(shè)置蜂鳴器控制引腳 BEEOFF(); //關(guān)閉蜂鳴器 CAT24WC16_Init(10000); //寫(xiě)數(shù)據(jù) flag=CAT24WC16_Write(CAT24WC16,0x00,EEPROM_TAB,5);

三、SRAM存儲(chǔ)器件

SRAM概述

RAM分為SRAM和DRAM兩種類(lèi)型。

DRAM的存取速度沒(méi)有SRAM快,但是DRAM更容易做成大容量的RAM。在存放信息比較多的嵌入式系統(tǒng)中,主存儲(chǔ)器采用DRAM,而快速存儲(chǔ)器則采用SRAM。

SRAM它不具有掉電保持?jǐn)?shù)據(jù)的特性,但其存取速度高于Flash存儲(chǔ)器,且具有讀/寫(xiě)的屬性。系統(tǒng)及用戶(hù)堆棧、運(yùn)行數(shù)據(jù)也都放在SRAM中。

SRAM架構(gòu)是處于同一列的基本存儲(chǔ)單元共用一條列地址線,而處于同一行的基本存儲(chǔ)單元共用一條行地址線,組成一個(gè)基本存儲(chǔ)單元構(gòu)成的矩陣架構(gòu)。

1.1IS61LV25616AL介紹IS61LV25616AL是美國(guó)ISSI公司生產(chǎn)的高速SRAM器件。IS61LV25616AL的特性如下: 高速訪問(wèn)時(shí)間10~12ns CMOS低功耗工作 單個(gè)3.3V電源工作,TTL兼容接口電平 完全靜態(tài)操作無(wú)需時(shí)鐘和刷新 三態(tài)輸出 高低字節(jié)數(shù)據(jù)控制 可用的工業(yè)級(jí)溫度

IS61LV25616AL內(nèi)部功能模塊與引腳描述IS61LV25616AL內(nèi)部主要由4部分組成: 1、控制電路2、數(shù)據(jù)電路3、譯碼器電路4、存儲(chǔ)器陣列內(nèi)部功能框圖IS61LV25616AL引腳圖

引腳描述引腳描述A0~A17地址輸入。OE輸出使能。(低電平有效)I/O0~I(xiàn)/O15數(shù)據(jù)輸入輸出。WE寫(xiě)使能。(低電平有效)CE芯片使能。(低電平有效)LB低字節(jié)控制(I/O0-I/O7)(低電平有效)GND地。UB高字節(jié)控制(I/O8-I/O15)(低電平有效)IS61LV25616AL芯片一共有44條引腳,其中18根地址線、16根數(shù)據(jù)線、5根控制線、4根電源線和1根閑置線。IS61LV25616AL引腳描述見(jiàn)表所列。

IS61LV25616AL的讀寫(xiě)和擦除操作ARM是通過(guò)操作IS61LV25616AL的控制線而執(zhí)行相應(yīng)的操作。IS61LV25616AL可工作在輸出禁能、讀操作、寫(xiě)操作3種工作模式下。IS61LV25616AL工作模式:工作模式CEWEOELBUBI/O0~I/O7I/O8~I/O15不選擇芯片工作高----高阻高阻輸出禁能低高高--高阻高阻低--高高高阻高阻讀操作低高低低高輸出高阻低高低高低高阻輸出低高低低低輸出輸出寫(xiě)操作低低-低高輸入高阻低低-高低高阻輸入低低-低低輸入輸入

1.2實(shí)驗(yàn)?zāi)康呐c內(nèi)容實(shí)驗(yàn)?zāi)康模和ㄟ^(guò)實(shí)驗(yàn),深刻理解RAM器件操作與電路連接。實(shí)驗(yàn)內(nèi)容:完成一塊內(nèi)存區(qū)域的自檢(類(lèi)似于臺(tái)式機(jī)的開(kāi)機(jī)內(nèi)存自檢),具體做法是:向這塊內(nèi)存區(qū)域的每個(gè)單元寫(xiě)入數(shù)據(jù)0x55,然后從該單元讀出數(shù)據(jù),若讀出的數(shù)據(jù)也為0x55,表明該單元沒(méi)有問(wèn)題;若讀出的數(shù)據(jù)不為0x55,表明該內(nèi)存單元已壞,蜂鳴器短叫一聲,并且將損壞的單元地址保存起來(lái)加以標(biāo)記。

1.3實(shí)驗(yàn)原理分析當(dāng)IS61LV25616AL與LPC2220的外部接口Bank0連接時(shí),則IS61LV25616AL的芯片地址范圍為0x80000000。當(dāng)IS61LV25616AL與LPC2220的外部接口Bank1連接時(shí),則IS61LV25616AL的芯片地址范圍為0x81000000;

RAM_Write()、為SRAM(IS61LV25616AL)寫(xiě)數(shù)據(jù)函數(shù)RAM_Read()、為SRAM讀數(shù)據(jù)函數(shù)。#defineRAM_ADDR0x81000000/***************************************************************************名稱(chēng):RAM_Write(uint32Addr,uint16Data)。*功能:向RAM寫(xiě)一個(gè)半字?jǐn)?shù)據(jù)。*入口參數(shù): Addr=RAM器件中具體的某一存儲(chǔ)單元地址; Data=待發(fā)送的數(shù)據(jù)(16位數(shù)據(jù))**************************************************************************/voidRAM_Write(uint32Addr,uint16Data){ volatileuint16*addr; addr=(volatileuint16*)(RAM_ADDR|(Addr<<1)); *addr=Data;}驅(qū)動(dòng)子程序

/***************************************************************************名稱(chēng):uint16RAM_Read(uint32Addr)*功能:從RAM某個(gè)單元地址讀取一個(gè)半字的內(nèi)容。*入口參數(shù):Addr 內(nèi)存單元地址*出口參數(shù):返回一個(gè)半字?jǐn)?shù)據(jù)**************************************************************************/uint16RAM_Read(uint32Addr){ volatileuint16*addr; addr=(volatileuint16*)(RAM_ADDR|(Addr<<1)); return((uint16)*addr);}RAM的讀子程序

1.4實(shí)驗(yàn)參考程序/***************************************************************************名稱(chēng):main()*功能:完成某塊內(nèi)存區(qū)域的自檢,損壞的單元地址保存在數(shù)組Remake中*************************************************************************/intmain(void){ uint8i,j; uint32Remake[50]; uint16data; IO1DIR=IO1DIR|(1<<24);//設(shè)置P1.24為I/O輸出 IO1CLR=(1<<24); //P1.24=0,關(guān)閉蜂鳴器

//檢查起始地址為0x81000100的100個(gè)內(nèi)存單元(字節(jié)單位) for(i=0,j=0;i<50;i++) { RAM_Write(100+i,0x5555); data=RAM_Read(100+i); if(data!=0x5555) //判斷內(nèi)存單元地址是否損壞 { Remake[j]=100+i; j++; IO1SET=(1<<24); //打開(kāi)蜂鳴器 DelayMS(10); IO1CLR=(1<<24); //關(guān)閉蜂鳴器 DelayMS(10); } } return(0);}

運(yùn)行程序,for循環(huán)體中的程序每運(yùn)行一次,則對(duì)應(yīng)的地址上的內(nèi)容就會(huì)更改為0x55。正確運(yùn)行結(jié)果如下圖所示:

四、Nor-Flash存儲(chǔ)器件Nor-Flash存儲(chǔ)器是一種可以在系統(tǒng)(In-System)進(jìn)行電擦寫(xiě),掉電后信息不丟失的存儲(chǔ)器。常用的Flash為8位或16位的數(shù)據(jù)寬度。優(yōu)點(diǎn):它具有低功耗、大容量、擦寫(xiě)速度快、可整片或分扇區(qū)在系統(tǒng)編程(燒寫(xiě))、擦除等特點(diǎn),在體積、抗震性方面都有很大的優(yōu)勢(shì)。最大的特點(diǎn):是可在芯片內(nèi)執(zhí)行,即應(yīng)用程序可以直接在上面運(yùn)行,不必再把代碼讀到系統(tǒng)RAM中。而其他類(lèi)型的Flash存儲(chǔ)器不具備這個(gè)特點(diǎn)。

1.1Nor-Flash器件SST39VF1601SST39VF1601是由SST公司推出的,是一個(gè)多功能Flash器件,存儲(chǔ)容量為2MB,16位數(shù)據(jù)寬度。SST39VF1601由SST提供了固定的擦除和編程時(shí)間,與擦除/編程周期數(shù)無(wú)關(guān)。SST39VF1601的特性 存儲(chǔ)空間組織 1M×16。 讀寫(xiě)操作采用單一電源2.7~3.6V。

低功耗、高可靠性。 具有地址和數(shù)據(jù)鎖存功能。 自動(dòng)寫(xiě)時(shí)序內(nèi)部產(chǎn)生Vpp。 寫(xiě)結(jié)束檢測(cè)

SST39VF1601引腳描述SST39VF1601一共有48個(gè)引腳,48個(gè)引腳中包括:20根地址線、16根數(shù)據(jù)線、3根控制線、3根電源線和其他不用連接的引腳。引腳描述引腳描述CE芯片使能(低電平有效)。A0~A19地址輸入。WE寫(xiě)使能(低電平有效)。D0~D15數(shù)據(jù)輸入輸出OE輸出使能(低電平有效)。NCNotConnectVdd正電源Vss電源地

SST39VF1601內(nèi)部主要由控制邏輯電路、緩沖區(qū)電路、譯碼器電路、存儲(chǔ)器電路四大部分組成。

SST39VF1601的讀寫(xiě)和擦除操作NORFlash存儲(chǔ)采用的是SRAM接口,其地址線和數(shù)據(jù)線是分開(kāi)的。SST39VF1601芯片可工作在讀模式、寫(xiě)模式、擦除模式3種模式之下。模式CE#OE#WE#DQ15~DQ0地址線讀低電平低電平高電平DoutAin寫(xiě)低電平高電平低電平DinAin擦除高電平--高阻-工作模式選擇

SST39VF1601的讀操作SST39VF1601具備快速讀訪問(wèn)能力。SST39VF1601的讀操作是CE和OE信號(hào)線控制的。

讀操作的時(shí)序如圖所示:

SST39VF1601的寫(xiě)操作SST39VF1601的寫(xiě)操作主要是以一個(gè)半字接一個(gè)半字的方式進(jìn)行寫(xiě)入的。寫(xiě)操作分3步進(jìn)行:第1步,送出“軟件數(shù)據(jù)保護(hù)”的3字節(jié),SW0,SW1,SW2。 第一字節(jié)SW0:地址線載入地址0x5555,數(shù)據(jù)線載入0xXXAA; 第二字節(jié)SW1:地址線載入地址0x2AAA,數(shù)據(jù)線載入0xXX55; 第三字節(jié)SW2:地址線載入地址0x5555,數(shù)據(jù)線載入0xXXA0;

第2步,送出地址和數(shù)據(jù),地址在CE或WE的下降沿(無(wú)論哪一個(gè)后產(chǎn)生下降沿)鎖存。

第3步,內(nèi)部寫(xiě)入處理階段。在內(nèi)部寫(xiě)入階段,任何指令都將被忽略。WE控制的字寫(xiě)入時(shí)序如圖所示:

扇區(qū)/塊/整片擦除操作SST39VF1601扇區(qū)是統(tǒng)一的2K半字(16位)大小,塊是統(tǒng)一的32K半字大小。SST39VF1601存儲(chǔ)容量為2M字節(jié)大小。SST39VF1601支持以下操作: 1、扇區(qū)擦除操作 2、塊擦除操作 3、整片擦除操作扇區(qū)或塊擦除操作允許SST39VF1601以一個(gè)扇區(qū)接一個(gè)扇區(qū),或一個(gè)塊接一個(gè)塊地進(jìn)行擦除。

這三種擦除操作都是通過(guò)6字節(jié)的指令序列進(jìn)行的。其中前面5字節(jié)的指令序列是相同的,唯一不同的在第6個(gè)字節(jié)指令中。3種擦除操作的流程圖如左圖所示:

3中擦除操作時(shí)序如圖:扇區(qū)擦除操作時(shí)序塊擦除操作時(shí)序整片擦除操作時(shí)序

⑹內(nèi)部操作查詢(xún)芯片進(jìn)入內(nèi)部編程或擦除操作狀態(tài)后,允許處理器查詢(xún)DQ6位來(lái)判別芯片內(nèi)部操作是否完成。當(dāng)內(nèi)部操作進(jìn)行中,所得的DQ6在1和0之間跳變當(dāng)內(nèi)部操作結(jié)束后,DQ6位的值不再變化。

1.2實(shí)驗(yàn)?zāi)康呐c內(nèi)容實(shí)驗(yàn)?zāi)康模和ㄟ^(guò)實(shí)驗(yàn),理解Nor-Flash操作時(shí)序和電路連接,深刻掌握Flash燒寫(xiě)算法。實(shí)驗(yàn)內(nèi)容1:擦除SST39VF1601中某段未用的扇區(qū),往這個(gè)扇區(qū)填充0x55,然后通過(guò)AXD調(diào)試工具觀察該段扇區(qū)的內(nèi)容。實(shí)驗(yàn)內(nèi)容2:擦除SST39VF1601中某段未用的扇區(qū),往這個(gè)扇區(qū)拷入某個(gè)程序的二進(jìn)制代碼,比如一段蜂鳴的子程序代碼,然后讓程序指針跳到該扇區(qū)執(zhí)行。

1.3電路原理分析SST39VF1601與LPC2220的連接如圖所示。LPC2220使用外部的存儲(chǔ)器接口Bank0上的存儲(chǔ)器引導(dǎo)程序運(yùn)行。

編寫(xiě)2個(gè)子程序:SST_SErase()和SST_Write(),分別完成SST39VF1601扇區(qū)擦除功能和字編程功能。

扇區(qū)刪除函數(shù)#defineFLASH_ADDR0x80000000#defineGetAddr(addr) (volatileuint16*)(FLASH_ADDR|(addr<<1))/***************************************************************************名稱(chēng):SST_SErase(uint32SA)*功能:SST39VF1601扇區(qū)擦除。*入口參數(shù):SA 扇區(qū)號(hào)(1~512)*出口參數(shù):返回1表示成功,返回0表示失敗**************************************************************************/1.4軟件設(shè)計(jì)

uint8SST_SErase(uint32SA){ volatileuint16*ip; uint16data1,data2; if((SA>512)||(SA<1)) //檢查扇區(qū)號(hào)是否在1~512范圍內(nèi) return(0); SA=4096*(SA-1); //根據(jù)扇區(qū)號(hào),計(jì)算扇區(qū)地址 /*寫(xiě)入六個(gè)字節(jié)的扇區(qū)擦除指令序列*/ ip=GetAddr(0x5555); *ip=0xaaaa; //第一個(gè)寫(xiě)周期,地址0x5555,數(shù)據(jù)0xAA ip=GetAddr(0x2aaa); *ip=0x5555; //第二個(gè)寫(xiě)周期,地址0x2aaa,數(shù)據(jù)0x55 ip=GetAddr(0x5555); *ip=0x8080; //第三個(gè)寫(xiě)周期,地址0x5555,數(shù)據(jù)0x80 ip=GetAddr(0x5555); *ip=0xaaaa; //第四個(gè)寫(xiě)周期,地址0x5555,數(shù)據(jù)0xAA ip=GetAddr(0x2aaa);

*ip=0x5555; //第五個(gè)寫(xiě)周期,地址0x2aaa,數(shù)據(jù)0x55 ip=(volatileuint16*)(FLASH_ADDR|(SA)); *ip=0x30; //第六個(gè)寫(xiě)周期,扇區(qū)地址SA,數(shù)據(jù)0x30,執(zhí)行扇區(qū)擦除操作 /*等待操作完成*/ while(1) //若編程操作沒(méi)有完成,每次讀操作DQ6會(huì)跳變 { data1=*ip; data2=*ip; if(data1==data2) { if(data1!=0xffff) return(0); else return(1); } } }

/***************************************************************************名稱(chēng):SST39VF1601_WriteByte()*功能:SST39VF1601的半字寫(xiě)入。*入口參數(shù): Addr 寫(xiě)入地址 WriteData 寫(xiě)入的數(shù)據(jù)

*出口參數(shù): 0 操作不成功 1 操作成功**************************************************************************/uint8SST_Write(uint32Addr,uint16WriteData){ volatileuint16*ip; volatileuint16*SADDR; uint16data1,data2; SADDR=(volatileuint16*)(FLASH_ADDR|(Addr&0x1fffff));字編程函數(shù)

ip=GetAddr(0x5555); //轉(zhuǎn)換地址0x5555 ip[0]=0xaaaa; //第一個(gè)寫(xiě)周期,地址0x5555,數(shù)據(jù)0xAA ip=GetAddr(0x2aaa); ip[0]=0x5555; //第二個(gè)寫(xiě)周期,地址0x2aaa,數(shù)據(jù)0x55 ip=GetAddr(0x5555); ip[0]=0xa0a0; //第三個(gè)寫(xiě)周期,地址0x5555,數(shù)據(jù)0xA0 *SADDR=WriteData; //第四個(gè)寫(xiě)周期,地址Addr,數(shù)據(jù)Writ

/*等待操作完成*/ while(1) //若編程操作沒(méi)有完成,每次讀操作DQ6會(huì)跳變 { data1=*SADDR; data2=*SADDR; if(data1==data2) { if(data1!=WriteData) return(0); else return(1); } } }

實(shí)驗(yàn)1參考程序#defineSsize 4096 //一個(gè)扇區(qū)4096個(gè)字節(jié)大小/***************************************************************************名稱(chēng):main()*功能:往NOR-FLASH最后一個(gè)扇區(qū)填充數(shù)據(jù)0x55;*************************************************************************/intmain(void){ uint32i,Addr; SST_SErase(512); //擦除最后一個(gè)扇區(qū) for(i=0;i<Sszie;i=i+2) //往最后一個(gè)扇區(qū)填充0x55 { Addr=Ssize*511+i; SST_Write(Addr,0x5555); } return(0);}

實(shí)驗(yàn)2參考程序首先用匯編函數(shù)定義了一個(gè)程序跳轉(zhuǎn)函數(shù)uint32JUMP(uint32addr),參數(shù)addr為給定的程序地址。EXPORTJUMP AREAJUMPC,CODE,READONLY ENTRY JUMP MOVPC,R0END

然后用C語(yǔ)言定義了一個(gè)BEE_Function()函數(shù)#defineBEE (1<<24) //BEE連接P1.24/*****************************************************************************名稱(chēng):BEE_Function()*功能:控制蜂鳴器叫****************************************************************************/voidBEE_Function(void){ PINSEL2=PINSEL2&0xFFFFFFF7; IO1DIR=IO1DIR|BEE; while(1) { IO1SET=BEE //蜂鳴器引腳為高電平 DelayMS(1); //軟件延時(shí) IO1CLR=BEE //蜂鳴器引腳為低電平 DelayMS(2); }}

#defineSsize 4096 //一個(gè)扇區(qū)4096個(gè)字節(jié)大小externuint32JUMP(uint32addr); //聲明跳轉(zhuǎn)函數(shù)/***************************************************************************名稱(chēng):main()*功能:首先擦除第6號(hào)扇區(qū),然后找到BEE_Function函數(shù)地址,將BEE_Function函數(shù)復(fù)制到第6號(hào)扇區(qū),最后將程序跳轉(zhuǎn)到第6號(hào)扇區(qū)起始處運(yùn)行。*************************************************************************/intmain(void){ uint16i,Data1;uint32Addr,Data,*P; SST_SErase(6); //擦除6號(hào)扇區(qū) P=(uint32*)BEE_Function; //指針指向BEE_Function函數(shù) Addr=0x80000002+(Ssize*5); //地址Addr指向第6個(gè)扇區(qū)的開(kāi)始位置主函數(shù)main。

for(i=0;i<200;i++)//數(shù)據(jù)寫(xiě)入 { Data=*P; Data1=(uint16)Data; SST_Write(Addr,Data1); Data1=(uint16)(Data>>16); SST_Write(Addr+2,Data1); P++; Addr+=4; } Addr=0x80000002+(Ssize*5); JUMP(Addr); //程序跳轉(zhuǎn)到第6號(hào)扇區(qū)運(yùn)行 return(0);}

五、Nand-Flash存儲(chǔ)器件NOR和NAND是目前市場(chǎng)上兩種主要的非易失性閃存技術(shù)。Nand-Flash存儲(chǔ)器結(jié)構(gòu)則能提供極高的單元密度,可以達(dá)到很大的存儲(chǔ)容量,并且寫(xiě)入和擦除的速度也很快。但Nand-Flash存儲(chǔ)器需要特殊的接口來(lái)操作。二者以其各自的特點(diǎn),在不同場(chǎng)合中發(fā)揮著各自的作用。Nand-Flash存儲(chǔ)器是Flash存儲(chǔ)器的一種技術(shù)規(guī)格,其內(nèi)部采用非線性宏單元模式,現(xiàn)在得到了越來(lái)越廣泛的應(yīng)用。由于Nand-Flash(非線性Flash)存儲(chǔ)器內(nèi)部結(jié)構(gòu)不同于Nor-Flash(線性Flash)存儲(chǔ)器。一般來(lái)講,讀寫(xiě)的過(guò)程要靠軟件編程來(lái)完成。

1.1K9F6408U0C介紹K9F6408U0C是SAMSUNG公司生產(chǎn)的NAND型Flash存儲(chǔ)器,存儲(chǔ)容量為66Mb。片內(nèi)寫(xiě)控制邏輯自動(dòng)實(shí)現(xiàn)所有的編程和擦除功能,包括脈沖的周期、內(nèi)部校驗(yàn)和數(shù)據(jù)冗余。K9F6408U0C的其他特性 存儲(chǔ)空間組織 (8M+256K)byte 頁(yè)寄存器 (512+16)byte 支持頁(yè)編程;支持塊擦除。 命令/地址/數(shù)據(jù)復(fù)用I/O口。 可靠性高:耐久力可經(jīng)受100K次擦寫(xiě),數(shù)據(jù)保存10年。 命令寄存器操作。 工作電壓:2.7~3.6V。 采用唯一ID號(hào)保護(hù)版權(quán)。 48腳封裝TSOP。

K9F6408U0C引腳描述

引腳描述引腳描述CLE命令鎖存使能(高電平有效)RE讀使能(低電平有效)ALE地址鎖存使能(高電平有效)WE寫(xiě)使能(低電平有效)CE芯片使能(低電平有效)WP寫(xiě)保護(hù)(低電平有效)R/B 讀/忙輸出該引腳輸出反映器件的當(dāng)前狀態(tài)(該引腳為低電平表示某個(gè)寫(xiě)入、擦除或任意讀操作正在進(jìn)行,當(dāng)操作完成之后該引腳自動(dòng)回到高電平)I/O0~I(xiàn)/O7數(shù)據(jù)輸入/輸出引腳(復(fù)用端口,用來(lái)輸入地址、指令和數(shù)據(jù),并在讀周期時(shí)輸出數(shù)據(jù)的。當(dāng)芯片未被選中或輸出使能時(shí),I/O口呈高阻狀態(tài))Vcc、VssVcc是電源正極,Vss是電源地NCNotConnect空腳

K9F6408U0C內(nèi)部結(jié)構(gòu)K9F6408U0C由1024塊組成,每塊由16頁(yè)組成,每頁(yè)中有512+16個(gè)字節(jié)。K9F6408U0C的有效總?cè)萘繛?6K頁(yè),合計(jì)8M字節(jié)。這種結(jié)構(gòu),滿足文件系統(tǒng)中劃分簇和扇區(qū)的結(jié)構(gòu)要求。

K9F6408U0C有效地址空間為8M字節(jié),那么片內(nèi)必須提供23根地址線進(jìn)行選址,其中A9~A22稱(chēng)為行地址,送入X譯碼器;A0~A8稱(chēng)為列地址,送入Y譯碼器中。K9F6408U0C芯片的內(nèi)部結(jié)構(gòu)框圖如圖所示:

K9F6408U0C的內(nèi)部指令K9F6408U0C具備自己的操作指令。有一些指令只需要一個(gè)總線周期完成;另外一些指令,則需要2個(gè)周期。K9F6408U0C具備的指令和功能如右圖:功能第一個(gè)周期第二個(gè)周期頁(yè)讀方式100h/01h-頁(yè)讀方式250h-頁(yè)寫(xiě)入80h10h塊擦除60hD0h讀當(dāng)前狀態(tài)70h-讀芯片ID號(hào)90h-復(fù)位FFh-回拷貝00h8Ah

K9F6408U0C的內(nèi)部操作讀操作2種讀的方式:頁(yè)讀方式1:

默認(rèn)的頁(yè)讀方式,用于讀取頁(yè)寄存器的前半頁(yè)、后半頁(yè)或整個(gè)頁(yè)(0~511)。頁(yè)讀方式2:

用來(lái)讀取備用區(qū)域(512~527)

通過(guò)將00h/01h指令寫(xiě)入指令寄存器,接著寫(xiě)入3字節(jié)地址來(lái)啟動(dòng)。寫(xiě)入指令和地址后,處理器可以通過(guò)對(duì)信號(hào)線R/B的分析來(lái)判斷該操作是否完成。要讀取的數(shù)據(jù)被送入了K9F6408U0C內(nèi)部的頁(yè)寄存器。外部控制器可以RE脈沖信號(hào)的控制下,從I/O口依次讀出數(shù)據(jù)。連續(xù)頁(yè)讀操作中,輸出的數(shù)據(jù)是從指定的列地址開(kāi)始,直到該頁(yè)的最后一個(gè)列地址的數(shù)據(jù)為止。⑷

頁(yè)讀方式1的操作時(shí)序

頁(yè)讀方式2操作通過(guò)將50h指令寫(xiě)入指令寄存器,同樣寫(xiě)入3字節(jié)地址來(lái)啟動(dòng)。頁(yè)讀方式2的其他時(shí)序與頁(yè)讀方式1相同。⑸

頁(yè)讀方式2的操作時(shí)序

K9F6408U0C的寫(xiě)操作同樣以頁(yè)為單位。頁(yè)寫(xiě)入周期總共3個(gè)步驟: 1、寫(xiě)入串行數(shù)據(jù)輸入指令 2、然后寫(xiě)入3個(gè)字節(jié)的地址信息 3、最后串行寫(xiě)入數(shù)據(jù)⑹

寫(xiě)操作

內(nèi)部寫(xiě)入操作開(kāi)始后,器件自動(dòng)進(jìn)入“讀狀態(tài)寄存器”模式。此時(shí),系統(tǒng)控制器可以讀取狀態(tài)寄存器,或檢測(cè)R/B的輸出來(lái)判斷內(nèi)部寫(xiě)入是否結(jié)束。寫(xiě)操作時(shí)序圖

擦除操作是以塊為單位進(jìn)行的。啟動(dòng)擦除,隨后輸入塊地址,接著初始化內(nèi)部擦除操作。器件檢測(cè)到擦除確認(rèn)命令后,在WE的上升沿啟動(dòng)內(nèi)部寫(xiě)控制器開(kāi)始執(zhí)行擦除和擦除校驗(yàn)。⑺擦除操作

K9F6408U0C中包含一個(gè)狀態(tài)寄存器。I/O口狀態(tài)定義見(jiàn)表所列:I/On狀態(tài)定義I/O0寫(xiě)入/擦除狀態(tài)0:成功寫(xiě)入/擦除1:在寫(xiě)入/擦除中出錯(cuò)I/O1~5保留0I/O6器件操作0:忙1:準(zhǔn)備好I/O7寫(xiě)保護(hù)0:保護(hù)1:未保護(hù)⑻讀狀態(tài)寄存器

K9F6408U0C器件具有一個(gè)產(chǎn)品鑒定識(shí)別碼(ID),讀出ID,起到識(shí)別器件的作用。讀ID的步驟是: 1、寫(xiě)入90h指令 2、然寫(xiě)入一個(gè)00h⑼讀器件ID號(hào)

器件提供一個(gè)復(fù)位指令,通過(guò)向指令寄存器寫(xiě)入FFh來(lái)完成對(duì)器件的復(fù)位。當(dāng)器件處于忙狀態(tài)時(shí),發(fā)送復(fù)位指令可以使器件中止當(dāng)前的操作。復(fù)位指令寫(xiě)入后,K9F6408U0C進(jìn)行內(nèi)部復(fù)位操作,此時(shí)引腳R/B將變低,持續(xù)一段時(shí)間直到復(fù)位操作完成。⑽復(fù)位操作

1.2實(shí)驗(yàn)內(nèi)容擦除K9F6408U0C中的某塊,往該塊的某頁(yè)寫(xiě)入一段字符串,然后讀取該頁(yè)的內(nèi)容,通過(guò)串口調(diào)試工具顯示讀取的結(jié)果。

1.3電路原理圖

對(duì)該存儲(chǔ)器進(jìn)行任何操作都是由CLE,ALE兩條信號(hào)線的邏輯電平?jīng)Q定的。根據(jù)寫(xiě)指令、寫(xiě)地址和讀寫(xiě)數(shù)據(jù)時(shí)CLE,ALE信號(hào)控制線的時(shí)序要求。以下宏定義完成對(duì)信號(hào)線的控制,同時(shí)還定義了讀取R/B線狀態(tài)的宏。

#define K9f_CLE(1<<23) //與P1.23連接#define K9f_ALE(1<<11) //與P0.11連接#define K9f_Busy(1<<12) //與P0.12連接#define K9f_IO (*((volatileunsignedshort*)0x82000000))#defineRead_Busy()IO0PIN&K9f_Busy

//讀取R/B線狀態(tài)#defineCMD_State()IO1SET=K9f_CLE;IO0CLR=K9f_ALE//ALE為低,CLE為高#defineADR_State()IO1CLR=K9f_CLE;IO0SET=K9f_ALE//ALE為高,CLE為低#defineDAT_State()IO1CLR=K9f_CLE;IO0CLR=K9f_ALE//ALE為低,CLE為低1.4軟件設(shè)計(jì)

在以上宏定義的基礎(chǔ)上,根據(jù)K9F6408U0C的功能,我們完成幾個(gè)功能子程序,分別用來(lái)芯片復(fù)位、讀器件ID號(hào)、擦除塊、頁(yè)寫(xiě)入、頁(yè)讀等操作。軟件復(fù)位子程序

/***************************************************************************名稱(chēng):uint16K9f_Reset(void)*功能:復(fù)位K9F6408U0C芯片。*入口參數(shù): 無(wú)*出口參數(shù): 無(wú)**************************************************************************/voidK9f_Reset(void){ uint32i; IO0CLR=K9f_CE; //芯片使能 COM_State();

K9f_IO=0xff; //發(fā)送復(fù)位指令 DAT_State(); for(i=0;i<20;i++); while(Read_Busy()==0); //等待芯片復(fù)位操作完成 IO0SET=K9f_CE; }讀器件的ID號(hào)子程序/***************************************************************************名稱(chēng):uint16K9f_ReadID(void)*功能:讀器件的ID號(hào)。*入口參數(shù): 無(wú)*出口參數(shù): 返回16位的器件ID號(hào)**************************************************************************/uint16K9f_ReadID(void){ uint16ID; uint8i,RData;

while(Read_Busy()!=0); IO0CLR=K9f_CE; COM_State(); K9f_IO=0x90; ADR_State(); K9f_IO=0x00; DAT_State(); for(i=0;i<20;i++); while(Read_Busy()==0); ID=K9f_IO; ID=ID<<8; RData=K9f_IO; ID=ID+RData; IO0SET=K9f_CE; return(ID);}

/***************************************************************************名稱(chēng):uint8K9f_EraseBlock(uint16block)*功能:擦除K9F6408U0C的某個(gè)存儲(chǔ)塊,K9F6408U0C一共包括1024個(gè)塊。*入口參數(shù): block塊號(hào)(1~1024)*出口參數(shù): 1代表發(fā)送成功 0代表發(fā)送不成功**************************************************************************/uint8K9f_EraseBlock(uint16block){ uint8i,RData; while(Read_Busy()!=0); block=(block-1)<<4;

IO0CLR=K9f_CE; COM_State(); K9f_CMD=0x60; ADR_State();塊擦除子程序

K9f_ADR=block&0xFF; //送低位地址A9~A16 block=block>>8; K9f_ADR=block&0xFF; //送高位地址A17~A24 COM_State(); K9f_CMD=0xd0; DAT_State(); for(i=0;i<20;i++); while(Read_Busy()==0); RData=K9f_DAT; IO0SET=K9f_CE; if((RData&0x01)==0) //擦除成功 return(1); elsereturn(0);}

/***************************************************************************名稱(chēng):uint8K9f_WritePage(uint16Page,uint8*Buffer)*功能:往擦除K9F6408U0C的某個(gè)頁(yè)寫(xiě)入512個(gè)字節(jié)數(shù)據(jù)。*入口參數(shù): Page頁(yè)號(hào)(16K頁(yè):1~16K)Buffer要寫(xiě)入的數(shù)據(jù)緩沖區(qū)指針*出口參數(shù): 1代表發(fā)送成功0代表發(fā)送不成功 **************************************************************************/uint8K9f_WritePage(uint8Addr,uint16Page,uint8*Buffer,uint16Length){ uint8i,RData; while(Read_Busy()!=0); IO0CLR=K9f_CE; COM_State(); K9f_CMD=0x80; ADR_State();頁(yè)寫(xiě)入子程序

K9f_ADR=0x00; //送列地址A0~A7 Page=Page–1; K9f_ADR=Page&0xFF; //送行地址A9~A16 Page=Page>>8; K9f_ADR=Page&0xFF; //送行地址A17~A24 DAT_State(); for(i=0;i<512;i++) K9f_DAT=Buffer[i]; COM_State(); K9f_CMD=0x10;

for(i=0;i<20;i++); while(Read_Busy()==0); RData=K9f_DAT; IO0SET=K9f_CE; if((RData&0x01)==0) return(1); //寫(xiě)入成功 elsereturn(0);}

/***************************************************************************名稱(chēng):voidK9f_ReadPage(uint16Page,uint8*Buffer)*功能:讀取K9F6408U0C某頁(yè)的數(shù)據(jù),一次讀取一頁(yè)。*入口參數(shù): Page頁(yè)號(hào)Buffer接收讀取數(shù)據(jù)的緩沖區(qū)指針*出口參數(shù):無(wú)**************************************************************************/voidK9f_ReadPage(uint16Page,uint8*Buffer){ uint8i; uint16Page1; Page=Page–1; Page1=Page>>8; while(Read_Busy()!=0); IO0CLR=K9f_CE; //先讀前半頁(yè) COM_State();頁(yè)讀方式1子程序

K9f_CMD=0x00; ADR_State(); K9f_ADR=0x00; //送列地址A0~A7 K9f_ADR=Page&0xFF; //送行地址A9~A16 K9f_ADR=Page1&0xFF; //送行地址A17~A24 DAT_State(); while(Read_Busy()!=0); for(i=0;i<256;i++) Buffer[i]=K9f_DAT; //再讀后半頁(yè) COM_State(); K9f_CMD=0x01; ADR_State(); K9f_ADR=0x00; //送列地址A0~A7 K9f_ADR=Page&0xFF; //送行地址A9~A1 K9f_ADR=Page1&0xFF; //送行地址A17~A24 DAT_State(); while(Read_Busy()!=0); for(;i<512;i++) Buffer[i]=K9f_DAT; IO0SET=K9f_CE;}

/***************************************************************************名稱(chēng):voidK9f_ReadBackPage(uint16Page,uint8*Buffer

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論