国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

什么是Flash閃存以及STM32使用NAND Flash

jim ? 來源:雷龍發(fā)展 ? 作者:雷龍發(fā)展 ? 2025-07-03 14:31 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

NAND

文章目錄

NAND

一、FLASH閃存是什么?

二、SD NAND Flash

三、STM32例程

一、FLASH閃存是什么?

簡介

FLASH閃存是屬于內(nèi)存器件的一種,“Flash”。閃存則是一種非易失性( Non-Volatile )內(nèi)存,在沒有電流供應(yīng)的條件下也能夠長久地保持?jǐn)?shù)據(jù),其存儲特性相當(dāng)于硬盤,這項(xiàng)特性正是閃存得以成為各類便攜型數(shù)字設(shè)備的存儲介質(zhì)的基礎(chǔ)。


各類 DDR 、 SDRAM 或者 RDRAM 都屬于揮發(fā)性內(nèi)存,只要停止電流供應(yīng)內(nèi)存中的數(shù)據(jù)便無法保持,因此每次電腦開機(jī)都需要把數(shù)據(jù)重新載入內(nèi)存。


閃存則是一種非易失性( Non-Volatile )內(nèi)存,在沒有電流供應(yīng)的條件下也能夠長久地保持?jǐn)?shù)據(jù),其存儲特性相當(dāng)于硬盤,這項(xiàng)特性正是閃存得以成為各類便攜型數(shù)字設(shè)備的存儲介質(zhì)的基礎(chǔ)。


分類

NOR和NAND是市場上兩種主要的非易失閃存技術(shù)。


在1984年,東芝公司的發(fā)明人舛岡富士雄首先提出了快速閃存存儲器(此處簡稱閃存)的概念。與傳統(tǒng)電腦內(nèi)存不同,閃存的特點(diǎn)是NVM,其記錄速度也非??臁?/p>


Intel是世界上第一個(gè)生產(chǎn)閃存并將其投放市場的公司。1988年,公司推出了一款256K bit閃存芯片。它如同鞋盒一樣大小,并被內(nèi)嵌于一個(gè)錄音機(jī)里。後來,Intel發(fā)明的這類閃存被統(tǒng)稱為NOR閃存。它結(jié)合EPROM和EEPROM兩項(xiàng)技術(shù),并擁有一個(gè)SRAM接口。


第二種閃存稱為NAND閃存。它由日立公司于1989年研制,并被認(rèn)為是NOR閃存的理想替代者。NAND閃存的寫周期比NOR閃存短90%,它的保存與刪除處理的速度也相對較快。NAND的存儲單元只有NOR的一半,在更小的存儲空間中NAND獲得了更好的性能。鑒于NAND出色的表現(xiàn),它常常被應(yīng)用于諸如CompactFlash、SmartMedia、 SD、 MMC、 xD、 and PC cards、USB sticks等存儲卡上。


NAND 閃存的存儲單元采用串行結(jié)構(gòu),存儲單元的讀寫是以頁和塊為單位來進(jìn)行(一頁包含若干字節(jié),若干頁則組成儲存塊, NAND 的存儲塊大小為 8 到 32KB ),這種結(jié)構(gòu)最大的優(yōu)點(diǎn)在于容量可以做得很大,超過 512MB 容量的 NAND 產(chǎn)品相當(dāng)普遍, NAND 閃存的成本較低,有利于大規(guī)模普及。


特點(diǎn)

性能


flash閃存是非易失存儲器,可以對稱為塊的存儲器單元塊進(jìn)行擦寫和再編程。任何flash器件的寫入操作只能在空或已擦除的單元內(nèi)進(jìn)行,所以大多數(shù)情況下,在進(jìn)行寫入操作之前必須先執(zhí)行擦除。NAND器件執(zhí)行擦除操作是十分簡單的,而NOR則要求在進(jìn)行擦除前先要將目標(biāo)塊內(nèi)所有的位都寫為1。


由于擦除NOR器件時(shí)是以64~128KB的塊進(jìn)行的,執(zhí)行一個(gè)寫入/擦除操作的時(shí)間為5s,與此相反,擦除NAND器件是以8~32KB的塊進(jìn)行的,執(zhí)行相同的操作最多只需要4ms。


執(zhí)行擦除時(shí)塊尺寸的不同進(jìn)一步拉大了NOR和NADN之間的性能差距,統(tǒng)計(jì)表明,對于給定的一套寫入操作(尤其是更新小文件時(shí)),更多的擦除操作必須在基于NOR的單元中進(jìn)行。這樣,當(dāng)選擇存儲解決方案時(shí),設(shè)計(jì)師必須權(quán)衡以下的各項(xiàng)因素。


● NOR的讀速度比NAND稍快一些。


● NAND的寫入速度比NOR快很多。


● NAND的4ms擦除速度遠(yuǎn)比NOR的5s快。


● 大多數(shù)寫入操作需要先進(jìn)行擦除操作。


● NAND的擦除單元更小,相應(yīng)的擦除電路更少。


可靠性


采用flash介質(zhì)時(shí)一個(gè)需要重點(diǎn)考慮的問題是可靠性。對于需要擴(kuò)展MTBF的系統(tǒng)來說,Flash是非常合適的存儲方案??梢詮膲勖?耐用性)、位交換和壞塊處理三個(gè)方面來比較NOR和NAND的可靠性。


耐用性


在NAND閃存中每個(gè)塊的最大擦寫次數(shù)是一百萬次,而NOR的擦寫次數(shù)是十萬次。NAND存儲器除了具有10比1的塊擦除周期優(yōu)勢,典型的NAND塊尺寸要比NOR器件小8倍,每個(gè)NAND存儲器塊在給定的時(shí)間內(nèi)的刪除次數(shù)要少一些。


易于使用


可以非常直接地使用基于NOR的閃存,可以像其他存儲器那樣連接,并可以在上面直接運(yùn)行代碼。


由于需要I/O接口,NAND要復(fù)雜得多。各種NAND器件的存取方法因廠家而異。


在使用NAND器件時(shí),必須先寫入驅(qū)動程序,才能繼續(xù)執(zhí)行其他操作。向NAND器件寫入信息需要相當(dāng)?shù)募记?因?yàn)樵O(shè)計(jì)師絕不能向壞塊寫入,這就意味著在NAND器件上自始至終都必須進(jìn)行虛擬映射。


其他作用


驅(qū)動還用于對DiskOnChip產(chǎn)品進(jìn)行仿真和NAND閃存的管理,包括糾錯(cuò)、壞塊處理和損耗平衡。


虛擬化

FLASH閃存是一種內(nèi)存技術(shù),與RAM不同,在斷電時(shí)它仍舊可以保留所存儲的信息。盡管FLASH閃存在執(zhí)行讀寫操作時(shí)并不像RAM那樣快,但性能遠(yuǎn)遠(yuǎn)高于典型的硬盤。更為重要的是,F(xiàn)LASH閃存訪問數(shù)據(jù)時(shí)幾乎不存在任何時(shí)間延遲。FLASH閃存技術(shù)非常適合隨機(jī)I/O,而虛擬服務(wù)器環(huán)境中恰恰存在大量的隨機(jī)I/O。


對FLASH閃存主要的關(guān)注點(diǎn)之一是其執(zhí)行寫操作的方式。FLASH閃存可以執(zhí)行的寫操作次數(shù)有限,這意味著FLASH閃存廠商需要開發(fā)復(fù)雜的控制器技術(shù),對寫入FLASH閃存模塊的方式進(jìn)行管理,確保每個(gè)FLASH閃存單元接收相同的寫請求。


目前有三種類型的FLASH閃存,耐久性各不相同。單階存儲單元(SLC)FLASH閃存在每個(gè)單元寫一位數(shù)據(jù),耐久性最好。多階存儲單元(MLC)FLASH閃存在每個(gè)單元寫多位數(shù)據(jù),耐久性排名第二。三階存儲單元(TLC)在每個(gè)單元寫三位數(shù)據(jù),耐久性最差。每個(gè)單元寫入的數(shù)據(jù)位越多意味著每個(gè)單元的容量越高,每GB的成本越低,同樣意味著平均壽命更短。


SLC是數(shù)據(jù)中心標(biāo)準(zhǔn),但控制器技術(shù)的不斷優(yōu)化使得MLC被大多數(shù)用例所接受。尤其是在采用了某種方式的數(shù)據(jù)保護(hù),比如鏡像或者RAID或者使用了FLASH閃存層時(shí)。


二、SD NAND Flash

我以貼片式TF卡“CSNP32GCR01-AOW”型號為例介紹

wKgZPGhmI6KAVoUPAACsZyGq-_Q785.png


芯片樣子都一樣,這里隨便放一張


概述

CSNP32GCR01-AOW是基于NAND閃存和SD控制器的32Gb密度嵌入式存儲。該產(chǎn)品與原始NAND相比,它有許多優(yōu)點(diǎn),包括嵌入式壞塊管理和更強(qiáng)的嵌入式ECC。即使在異常斷電的情況下,它仍然可以安全地保存數(shù)據(jù)。


特點(diǎn)

接口:標(biāo)準(zhǔn)SD規(guī)范2.0版,帶有1-I/O和4-I/O。


電源:Vcc=2.7V-3.6V


默認(rèn)模式:可變時(shí)鐘頻率0-25 MHz,最高12.5 MB/秒接口速度(使用4條并行數(shù)據(jù)線)


高速模式:可變時(shí)鐘頻率0-50 MHz,最高25 MB/秒接口速度(使用4條并行數(shù)據(jù)線)


工作溫度:-25°C至+85°C


儲存溫度:-40°C至+85°C


備用電流:<250uA


開關(guān)功能命令支持高速、電子商務(wù)和未來功能


內(nèi)存字段錯(cuò)誤的糾正


內(nèi)容保護(hù)機(jī)制-符合SDMI標(biāo)準(zhǔn)的最高安全性。


SD NAND的密碼保護(hù)(CMD42-鎖定和解鎖)


使用機(jī)械開關(guān)的寫保護(hù)功能


內(nèi)置寫保護(hù)功能(永久和臨時(shí))


特定于應(yīng)用程序的命令

3. 引腳分配

wKgZO2hmI6KAGyTJAABukkuYxJE179.pngwKgZPGhmI6OASJUeAAJiFzLu7I8327.png


4.數(shù)據(jù)傳輸模式

wKgZO2hmI6SAY_t_AAL1iypAqEc543.png

5. SD NAND寄存器


SDNAND接口中定義了六個(gè)寄存器:OCR、CID、CSD、RCA、DSR和SCR。這些信息只能通過


相應(yīng)的命令。OCR、CID、CSD和SCR寄存器攜帶SDNAND/內(nèi)容特定信息,而RCA、DSR寄存器是存儲實(shí)際配置參數(shù)的配置寄存器(這里選取倆個(gè)寄存器進(jìn)行展示)。


CID register

wKgZPGhmI6SARM43AAHFad0sbMI351.png

SCR register

wKgZO2hmI6WAfzxpAAJP-9vA2FY445.png


通電圖

wKgZO2hmI6aAELOVAAD5Io3_kmI870.png

通電時(shí)間

wKgZPGhmI6eACfTOAAD-JOzJKXY034.pngwKgZO2hmI6eAf9pBAAErqiJ_x1M144.png


Tips: RDAT和RCMD(10K~100 kΩ)是上拉電阻器,當(dāng)SDNAND處于a狀態(tài)時(shí),保護(hù)CMD和DAT線路不受總線浮動的影響;在高阻抗模式,即使主機(jī)僅在SD模式下使用SDNAND作為1位模式,主機(jī)也應(yīng)通過RDAT上拉所有DAT0-3線。它是建議VCC上有2.2uF電容。RCLK參考0~120Ω。


wKgZPGhmI6iAa6vTAAGl2rsLFdc671.png

?

三、STM32例程

1. 初始化




SD_Error SD_Init(void)


{


uint32_t i = 0;




/*!< Initialize SD_SPI */


GPIO_Configuration();




/*!< SD chip select high */


SD_CS_HIGH();




/*!< Send dummy byte 0xFF, 10 times with CS high */


/*!< Rise CS and MOSI for 80 clocks cycles */


for (i = 0; i <= 9; i++)


{


/*!< Send dummy byte 0xFF */


SD_WriteByte(SD_DUMMY_BYTE);


}



//獲取卡的類型,最多嘗試10次


i=0;


do


{


/*------------Put SD in SPI mode--------------*/


/*!< SD initialized and set to SPI mode properly */


SD_GoIdleState();




/*Get card type*/


SD_GetCardType();



}while(SD_Type == SD_TYPE_NOT_SD && i++ >10);



//不支持的卡


if(SD_Type == SD_TYPE_NOT_SD)


return SD_RESPONSE_FAILURE;



return SD_GetCardInfo(&SDCardInfo);



}


2. 單數(shù)據(jù)塊測試




void SD_SingleBlockTest(void)


{


/*------------------- Block Read/Write --------------------------*/


/* Fill the buffer to send */


Fill_Buffer(Buffer_Block_Tx, BLOCK_SIZE, 0x320F);




if (Status == SD_RESPONSE_NO_ERROR)


{


/* Write block of 512 bytes on address 0 */


Status = SD_WriteBlock(Buffer_Block_Tx, 0x00, BLOCK_SIZE);


/* Check if the Transfer is finished */


}




if (Status == SD_RESPONSE_NO_ERROR)


{


/* Read block of 512 bytes from address 0 */


Status = SD_ReadBlock(Buffer_Block_Rx, 0x00, BLOCK_SIZE);




}




/* Check the correctness of written data */


if (Status == SD_RESPONSE_NO_ERROR)


{


TransferStatus1 = Buffercmp(Buffer_Block_Tx, Buffer_Block_Rx, BLOCK_SIZE);


}



if(TransferStatus1 == PASSED)


{


LED2_ON;


printf("Single block 測試成功!n");




}


else


{


LED1_ON;


printf("Single block 測試失敗,請確保SD卡正確接入開發(fā)板,或換一張SD卡測試!n");



}


}


3. 多數(shù)據(jù)塊測試



void SD_MultiBlockTest(void)


{


/*--------------- Multiple Block Read/Write ---------------------*/


/* Fill the buffer to send */


Fill_Buffer(Buffer_MultiBlock_Tx, MULTI_BUFFER_SIZE, 0x0);




if (Status == SD_RESPONSE_NO_ERROR)


{


/* Write multiple block of many bytes on address 0 */


Status = SD_WriteMultiBlocks(Buffer_MultiBlock_Tx, 0x00, BLOCK_SIZE, NUMBER_OF_BLOCKS);


/* Check if the Transfer is finished */


}




if (Status == SD_RESPONSE_NO_ERROR)


{


/* Read block of many bytes from address 0 */


Status = SD_ReadMultiBlocks(Buffer_MultiBlock_Rx, 0x00, BLOCK_SIZE, NUMBER_OF_BLOCKS);


/* Check if the Transfer is finished */


}




/* Check the correctness of written data */


if (Status == SD_RESPONSE_NO_ERROR)


{


TransferStatus2 = Buffercmp(Buffer_MultiBlock_Tx, Buffer_MultiBlock_Rx, MULTI_BUFFER_SIZE);


}



if(TransferStatus2 == PASSED)


{


LED2_ON;


printf("Multi block 測試成功!");




}


else


{


LED1_ON;


printf("Multi block 測試失敗,請確保SD卡正確接入開發(fā)板,或換一張SD卡測試!");


}


}


4. 狀態(tài)緩沖



TestStatus Buffercmp(uint8_t* pBuffer1, uint8_t* pBuffer2, uint32_t BufferLength)


{


while (BufferLength--)


{


if (*pBuffer1 != *pBuffer2)


{


return FAILED;


}




pBuffer1++;


pBuffer2++;


}




return PASSED;


}




void Fill_Buffer(uint8_t *pBuffer, uint32_t BufferLength, uint32_t Offset)


{


uint16_t index = 0;




/* Put in global buffer same values */


for (index = 0; index < BufferLength; index++)


{


pBuffer[index] = index + Offset;


}


}

了解產(chǎn)品更多詳情:官網(wǎng) http://www.longsto.com/

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • NAND
    +關(guān)注

    關(guān)注

    16

    文章

    1755

    瀏覽量

    141041
  • SD
    SD
    +關(guān)注

    關(guān)注

    1

    文章

    174

    瀏覽量

    36388
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    從NOR FlashNAND Flash 和SD NAND,從底層結(jié)構(gòu)到應(yīng)用差異

    在嵌入式系統(tǒng)開發(fā)中,“存儲選型”是經(jīng)常會遇到的問題,特別是許多曾長期使用 NOR   Flash 的工程師,在切換到 NAND Flash 時(shí)常常感到疑惑:   為什么 NAND
    發(fā)表于 03-05 18:23

    SPI NOR Flash和SPI NAND Flash存儲芯片的區(qū)別

    SPI NOR Flash與SPI NAND Flash并非相互替代,而是互補(bǔ)關(guān)系。SPI NOR勝在讀取速度快、使用簡單、可靠性高,是代碼存儲的理想選擇。SPI NAND則以其大容量
    的頭像 發(fā)表于 01-29 16:58 ?460次閱讀
    SPI NOR <b class='flag-5'>Flash</b>和SPI <b class='flag-5'>NAND</b> <b class='flag-5'>Flash</b>存儲芯片的區(qū)別

    單片機(jī)Flash是什么類型

    最近看到交流群小伙伴在討論單片機(jī)Flash的話題,比如:Flash類型、速度等。 我們平時(shí)在單片機(jī)開發(fā)過程中也會遇到各種各樣的Flash,比如:SPI Flash、Nor
    發(fā)表于 01-04 07:10

    從NOR FlashNAND Flash和SD NAND,從底層結(jié)構(gòu)到應(yīng)用差異

    在嵌入式系統(tǒng)開發(fā)中,“存儲選型”是經(jīng)常會遇到的問題,特別是許多曾長期使用 NOR   Flash 的工程師,在切換到 NAND Flash 時(shí)常常感到疑惑:   為什么 NAND
    發(fā)表于 12-08 17:54

    MCU固件幾種Flash閃存)劃分方式

    你通過U盤、OTA遠(yuǎn)程等方式下載的程序,其實(shí)你還是需要提前下載BootLoader程序,才能進(jìn)一步下載APP程序。? ? ?今天就來說說通過OTA方式升級固件時(shí),幾種Flash閃存)劃分方式
    的頭像 發(fā)表于 11-27 18:20 ?1270次閱讀

    STM32C011開發(fā)(3)----Flash操作

    STM32C011 系列微控制器內(nèi)置 Flash 存儲器,支持程序存儲與數(shù)據(jù)保存,具備頁面擦除、雙字寫入、讀寫保護(hù)等功能。本文將簡要介紹 STM32C011 的 Flash 結(jié)構(gòu)與特性
    的頭像 發(fā)表于 09-18 16:48 ?4889次閱讀
    <b class='flag-5'>STM32</b>C011開發(fā)(3)----<b class='flag-5'>Flash</b>操作

    NAND Flash的基本原理和結(jié)構(gòu)

    NAND Flash是什么?NAND Flash閃存)是一種非易失性存儲器技術(shù),主要用于數(shù)據(jù)存儲。與傳統(tǒng)的DRAM或SRAM不同,
    的頭像 發(fā)表于 09-08 09:51 ?7031次閱讀
    <b class='flag-5'>NAND</b> <b class='flag-5'>Flash</b>的基本原理和結(jié)構(gòu)

    SPI NOR FLASH是什么,與SPI NAND Flash的區(qū)別

    存儲一位數(shù)據(jù) (0或1) ,可以直接尋址,尋址速度非??臁PI NOR FLASH支持全雙工、單工以及半雙工傳輸方式,被廣泛應(yīng)用于嵌入式系統(tǒng)中,如Bootloader、操作系統(tǒng)內(nèi)核等程序的存儲。由于它的讀寫速度和尋址方式類似于系統(tǒng)內(nèi)存,因此它可以映射到系統(tǒng)的0地址空間。
    的頭像 發(fā)表于 08-21 09:26 ?1580次閱讀

    FLASH燒寫/編程白皮書

    白皮書:如何燒寫Flash——不同場景不同需求下的選擇認(rèn)識Flash?NAND vs. NOR如何燒寫/編程不同方案比較
    發(fā)表于 07-28 16:05 ?0次下載

    對于在STM32CubeMx使用FMC中的NAND FLASH里面配置這些時(shí)間有什么說明嗎?

    對于在STM32CubeMx使用FMC中的NAND FLASH里面配置這些時(shí)間有什么說明嗎?
    發(fā)表于 07-21 07:07

    什么是Flash閃存以及STM32使用NAND Flash

    NAND 文章目錄 NAND 一、FLASH閃存是什么? 二、SD NAND Flash 三、
    發(fā)表于 07-03 14:33

    兆易創(chuàng)新推出GD5F1GM9系列高速Q(mào)SPI NAND Flash

    中國北京(2025 年4 月15 日) —— 業(yè)界領(lǐng)先的半導(dǎo)體器件供應(yīng)商 兆易創(chuàng)新 GigaDevice (股票代碼 603986)宣布推出GD5F1GM9系列高速Q(mào)SPI NAND Flash
    發(fā)表于 04-22 10:23 ?1648次閱讀
     兆易創(chuàng)新推出GD5F1GM9系列高速Q(mào)SPI <b class='flag-5'>NAND</b> <b class='flag-5'>Flash</b>

    兆易創(chuàng)新推出GD5F1GM9系列高速Q(mào)SPI NAND Flash

    今日,兆易創(chuàng)新宣布推出GD5F1GM9系列高速Q(mào)SPI NAND Flash,該系列以其突破性的讀取速度和創(chuàng)新的壞塊管理(BBM)功能,可有效解決傳統(tǒng)SPI NAND Flash響應(yīng)速
    的頭像 發(fā)表于 04-16 13:50 ?1427次閱讀

    NAND Flash與SD NAND的存儲扇區(qū)架構(gòu)差異

    NAND Flash?和?SD卡(SD NAND)的存儲扇區(qū)分配表都是用于管理存儲設(shè)備中扇區(qū)的分配信息。它們記錄了哪些扇區(qū)已被使用、哪些是空閑的,以及文件或數(shù)據(jù)與扇區(qū)的對應(yīng)關(guān)系,以便實(shí)
    的頭像 發(fā)表于 03-13 15:20 ?1880次閱讀
    <b class='flag-5'>NAND</b> <b class='flag-5'>Flash</b>與SD <b class='flag-5'>NAND</b>的存儲扇區(qū)架構(gòu)差異