了解单片机的内存
导读:
在单片机选型的时候,总要看看资源有多少,外设资源,flash大小,RAM的大小等等,其中flash和RAM大小,直接关系到程序,所以这篇来说说单片机里面的内存。
内存的分类(RAM、ROM和FLASH):
RAM:Random Access Memory,随机存取存储器。特点,断电后数据会丢失。是单片机CPU运算时临时数据存储介质。
RAM分为两种,SRAM(static 静态随机存取存储器)和DRAM(dynamic 动态随机存取存储器)。
SRAM:特点:电路不刷新,数据可以一直保持,读写速度非常快,缺点是价格贵。
DRAM:特点:保留数据时间短,需要每隔一段时间刷新一次,否则数据会消失,这就需要额外一个驱动刷新的电路,缺点是电路复杂,优点是价格便宜。
所以一般的单片机,容量不大,用的都是SRAM,像DDR RAM,SD RAM等大的存储则使用DRAM。
ROM:Read-Only Memory,只读存储器,特点,断电后数据不会丢失。在单片机中是保存程序。
正常来说,只读存储器是只能读,不能写。最开始也是这样的,不过经过时代的发展,变成了可读可写,但是ROM的名字一直没有变,所以翻译也一直沿用下来了,但实际上现在大部分用的都是可读可写的。
最开始是,PROM:Programmable ROM,可编程只读存储器,只能出厂的时候写一次;
EPROM:Erasable Programmable ROM,可擦除可编程只读存储器,可以多次写入,但是擦除时需要紫外线长时间照射,因为需要先擦除才能写入;
EEPROM:Electrically Erasable Programmable ROM,带电可擦除可编程只读存储器,直接可以按字节进行读写。
FLASH:Flash Memory,闪存,结合了ROM和RAM的长处,广义上也可以说是ROM,是可擦除可编程的存储器,因为flash简化了电路,数据密度更高,成本更低,不同与EEPROM是不能以字节为最小单位擦除。
同时flash的特性是,只能把1写为0,不能把0写为1,操作flash的时候,都是先要擦除才能写,不然数据会错乱。
FLASH也分为两种Nor(或非) Flash和Nand(与非) Flash。
Nor Flash:地址、数据总线是分开的,擦除单位是扇区或者块,读写可以最小按照字节,组成结构一般是字节,页,扇区,块。读取速度快,擦除速度慢,价格较贵。
Nand Flash:地址、数据总线共用,擦除单位是块,读写最小按照页,组成结构一般是页,扇区,块。读取速度慢,擦除速度非常快,价格便宜。
Nand Flash和Nor Flash比较:Nand Flash的电路更加简单,价格也相对便宜,但是操作数据也是相对比较大,所以一般大型的存储器,比如硬盘、U盘用的是Nand Flash。
Nor flash可以进行字节寻址,所以CPU可以直接从nor flash中取出数据。而nand flash是最小以页为单位读写,数据就需要先加载到RAM中,再由CPU中执行。嵌入式系统多用一个小容量的nor flash存储引导代码,用一个大容量的nand flash存放文件系统和内核。
目前使用的在单片机上,大部分用的是Nor Flash和SRAM,有些也带有EEPROM,但一般都比较小。
内存在芯片中的分布:
这个一款华大的32位单片机HC32F005。
可以看出来最大地址是0xFFFF_FFFF,说明地址总线是32位的,有很多地址没有使用,是保留的。
其中FLASH最大32KB,地址从0x0000_0000到0x0000_8000;
SRAM最大4KB,地址从0x2000_0000到0x2000_1000。
这是一款赛元的8位单片机SC92F8547,
其中有EEPROM(128bytes),FLASH ROM(32KB),RAM(256bytes)还有外部RAM,LCD RAM。
从中可以看出地址大部分都是从0开始,不像上面的32位单片机内存地址是串行的,由此就可以推断出,这里是做了扩展,地址总线应该是16位。
看手册描述,是通过不同指令,来寻找不同的地址。
关于单片机内存,这篇就先讲到这。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?