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),可以一个字一个字写;
  • 你没法用黑笔把 "黑点" 变回 "白色",想改只能把整块黑板重新刷白再重写。
相关推荐
吠品3 小时前
智谱开源 ZCode 之后,真正的考试才开始
单片机·嵌入式硬件·1024程序员节
小李不想当小白8 小时前
SPI通信外设与W25Q64 (硬件SPI)(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·嵌入式
LCG米8 小时前
STM32驱动W5500以太网模块实测:TCP吞吐瓶颈定位、TX指针回绕陷阱与断线重连保活落地
stm32·单片机·嵌入式硬件·tcp/ip
创界工坊工作室9 小时前
63-基于STC89C52霍尔传感器的智能化电能表设计
stm32·单片机·嵌入式硬件·51单片机·proteus
智购科技自动售货机厂家10 小时前
让AI经营自动售货机:从Project Vend看工具权限与业务规则~YH
大数据·服务器·单片机·嵌入式硬件·深度学习
Zwawa12 小时前
从 printf 到曲线:把数据送上 VOFA+
c语言·单片机·嵌入式
意法半导体STM3212 小时前
【官方原创】LAT6048 如何扩大MP2的A35核和M33核共享内存
stm32·单片机·嵌入式硬件·内存映射·stm32mp2
en.en..12 小时前
STM32(F429)启动模式与两种烧录方式
stm32·单片机·嵌入式硬件
单片机仿真设计13 小时前
基于 51 单片机的数字温度计(DS18B20+LCD1602+Proteus 仿真,支持阈值可调声光报警)
单片机·嵌入式硬件·proteus·课设
芝士爱沙拉13 小时前
原生内置agent智能开发能力的MCU IDE-MounRiver Studio
ide·单片机·嵌入式硬件