Flash 只能将比特从 1 改写为 0,无法从 0 改回 1

一、Flash 的最小存储单元:浮栅晶体管

Flash 每一个 bit 都对应一个浮栅 MOS 晶体管(Floating Gate Transistor),核心结构是在控制极和沟道之间,加了一层被二氧化硅绝缘层完全包裹的「浮栅」。

  • 浮栅被绝缘层包裹,电子进去后很难跑出来,因此掉电后电荷也能长期保存,这就是 Flash 非易失性的来源。
  • 数据的 0 和 1,由浮栅中存储的电子数量 决定:
    • 浮栅里电子少 → 管子导通阈值低 → 加读取电压时管子导通 → 读出为 1
    • 浮栅里电子多 → 管子导通阈值高 → 加读取电压时管子不导通 → 读出为 0

二、两个基本操作的物理过程

1. 擦除操作:把所有位变成 1

擦除的本质是把浮栅里的电子全部移出去。

  • 实现方式:在衬底加高压,通过量子隧穿效应,让浮栅里的电子穿过绝缘层,回到衬底。
  • 结果:浮栅电子变少,所有单元都回到 "导通" 状态,也就是全 1。
  • 关键限制:这个高压电场是按整块(扇区 / 页 / 块)施加的,无法精准作用到单个字节或单个位上,否则会干扰相邻单元。因此擦除只能按扇区 / 块进行,不能单字节擦除。
2. 编程(写入)操作:把 1 改成 0

写入的本质是往浮栅里注入电子。

  • 实现方式:在控制极加高压,让沟道里的热电子穿过绝缘层,注入到浮栅中并被困住。
  • 结果:浮栅电子变多,对应单元变成 "不导通" 状态,也就是 0。
  • 特点:可以通过地址译码,单独选中某个字节 / 半字 / 字进行注入,只改变目标位,不影响其他位。

三、为什么不能直接把 0 改回 1?

要把 0 变回 1,就必须把浮栅里已经注入的电子移走。但:

  1. 移走电子需要反向高压电场,也就是「擦除」这个动作本身;
  2. 现有 Flash 的电路设计中,擦除的高压只能覆盖整个擦除块,无法精确到单个位 / 字节 ------ 如果强行给单个位加反向高压,会把周围相邻的存储单元也一起擦除,造成数据损坏。

简单说:

写入只能 "加电子"(1→0),不能 "减电子"(0→1);想减电子只能整块擦除。


四、通俗类比

你可以把 Flash 想象成一块刷了白漆的黑板:

  • 擦除 = 把整块黑板重新刷白(全 1),只能整块刷,不能只刷一个字;
  • 写入 = 用黑笔在白黑板上写字(把对应位置写成 0),可以一个字一个字写;
  • 你没法用黑笔把 "黑点" 变回 "白色",想改只能把整块黑板重新刷白再重写。
相关推荐
BSD_CGQ6 小时前
FSR传感器STM32 DMA高速采样工程实现(高精度、低CPU占用)
stm32·单片机·嵌入式硬件·压力传感器·源头工厂·柔性薄膜压力传感器·可变电阻压力传感器
芯岭技术郦9 小时前
32 位 ARM® Cortex®-M0+ 内核MCU普冉MS32C001-C
单片机·嵌入式硬件
骑着毛驴数星星9 小时前
STM32 CAN波特率与采样点计算,基于HAL库
stm32·单片机·嵌入式硬件
zhangrelay10 小时前
Arduino-MEGA-ESP单片机理论课笔记02-硬件-2026
笔记·单片机·嵌入式硬件
艾芯微科技10 小时前
钰泰 ETA5055V330DD1E|SOT-223 3.3V LDO,低压差、大电流线性稳压选型分享
网络·单片机·嵌入式硬件·集成测试·51单片机
新晨单片机设计11 小时前
S023A-基于STM32单片机智能插座【Proteus仿真+Keil程序+原理图】
stm32·单片机·proteus·单片机智能插座
EatFans12 小时前
全栈自造 Status Deck(四):硬件终于到了,从点亮屏幕到跑通第一个 Demo
单片机·物联网
qq_4017004112 小时前
STM32 GPIO 精讲|推挽 / 开漏 / 上拉浮空,工程选型避坑
stm32·单片机·嵌入式硬件
创界工坊工作室13 小时前
19-基于单片机的宠物喂养控制系统设计
stm32·单片机·嵌入式硬件·proteus·宠物
兴通物联科技15 小时前
自助终端涉外证件核验选型:XT2010MRZ 嵌入式护照识别模块技术解析
单片机·嵌入式硬件·计算机视觉·硬件架构