stm32专题十四:存储器介绍

发布者:bettylove最新更新时间:2021-10-25 来源: eefocus关键字:stm32  存储器  RAM  ROM 手机看文章 扫描二维码
随时随地手机看文章

存储器通常分为易失性存储器(RAM - random access memory)和非易失性存储器(ROM - read only memory)


易失性存储器


SRAM:Static Random Access Memory(静态随机存储器),基本的存储单元由SR锁存器组成,不需要定时刷新。

DRAM:Dynamic  Random Access Memory(静态随机存储器),由电容和晶体管组成,结构非常简单。动态随机存储器 DRAM 的存储单元以电容的电荷来表示数据,有电荷代表 1,无电荷代表 0。但时间一长,代表 1 的电容会放电,代表 0 的电容会吸收电荷,因此它需要定期刷新操作。刷新操作会对电容进行检查,若电量大于满电量的 1/2,则认为其代表 1,并把电容充满电;若电量小于 1/2,则认为其代表 0,并把电容放电,藉此来保证数据的正确性。

DRAM又分为同步(Synchronous)和异步(Asynchronous)。


SDRAM(同步DRAM)在通讯时使用时钟信号,在时钟的上升沿表示数据有效,如下为时序图

为了进一步提高速度,由有了新的SDRAM,它可以把时钟信号的下降沿也利用起来,这样就能够实现两倍的传输速度,这就是DDR SDRAM(Double Data Rate SDRAM)。然后还有DDR2 SDRAM、DDR3 SDRAM、DDR4 SDRAM,存储特性和DDR SDRAM没有什么区别,但时钟频率越来越快。


接下来时SRAM和DRAM的特性和区别:

非易失性存储器


ROM:

EEPROM可以用普通电压擦除(3.3V 5V),不需要专门的高电压来擦除。


Flash,现在应用的非常广泛(U盘、SSD硬盘)。


FLASH 存储器又称为闪存,它也是可重复擦写的储器,部分书籍会把 FLASH 存储器称为FLASH ROM,但它的容量一般比 EEPROM 大得多,且在擦除时,一般以多个字节为单位(扇区 / 块),一个块可能固定为512字节或1024字节。如有的 FLASH 存储器以 4096 个字节为扇区,最小的擦除单位为一个扇区。根据存储单元电路的不同,FLASH 存储器又分为 NOR FLASH 和 NAND FLASH。擦除是将数据全部擦除为1。


NOR FLASH可以用来读写程序,而NAND FLASH只能够用来存储数据。为什么会有这种区别?实际上是因为,NOR FLASH的数据线和地址线时分开的,而NAND FLASH的地址/数据线是共用的。


非常重要。NOR FLASH和NAND FLASH都必须按扇区/块擦除,但是,有一个最大的区别就是,NOR FLASH可以按字节写入和读取(因此可以作为程序存储器),而NAND FLASH必须按块读写。

二者的对比:

关键字:stm32  存储器  RAM  ROM 引用地址: stm32专题十四:存储器介绍

上一篇:stm32专题十七:深度解析 stm32 硬件iic (i2c)
下一篇:stm32专题十七:EEPROM存储小数

推荐阅读最新更新时间:2024-11-03 23:22

基于SST89C54/58的单片机仿真器的设计
1 概 述   SST89C54/58(简称89C54/58)是美国SST公司推出的多用途51系列单片机,片内集成了20 kB/36 kB的SuperFlashE'PROM程序存储器,分为BLOCK0(16kB/32kB)和BLOCKl(4kB)两块。其中,BLOCKl可以映射(Mapping)到64kB存储空间的最高端或最低端,而且,对于程序计数器来说可以是不可见的。由于其存储结构上独特的优点,使得89C54/58非常适合于用做单片机仿真器。 2 SST89C54/58的程序存储结构 2.1 存储器结构   89C54/58片内的存储块BLOCK0占据从0000H到3FFFH/7FFFH的存储空间,BLOCKl占据从F0
[单片机]
STM32是怎样进入执行中断函数xxx_IRQHandler(void)的
在STM32单片机的编程当中,中断函数的名称都是xxx_IRQHandler格式的。那当编译程序的时候是怎么知道这是一个中断函数的呢? 每个中断都是有入口地址的。程序在执行过程中遇到中断的时候,会先判断这个中断的类型,根据类型再到中断向量表中查找,找到之后,根据表中指明的地址,程序就跳到该地址开始执行代码。 ST提供的固件库当中,有提供一个stm32f10x_it.c文件,打开之后会发现里面放的都是些空函数,但是名字都是“xxx_Handler()”格式,需要使用某个中断的时候,在代码中使能该中断,并到这个文件中将中断服务函数添加上,就可以了。 而这些名字就是一个个的中断函数入口地址。在启动代码中便有这些定义。如下图所示:
[单片机]
<font color='red'>STM32</font>是怎样进入执行中断函数xxx_IRQHandler(void)的
情非得已 传苹果求助三星解决iPhone 6存储器问题
韩媒报导,苹果为解决iPhone 6的TLC事件,只得向三星低头,请求三星再度供货,以度过危机。 三星与苹果之间的专利大战长久以来持续上演,也因此导致苹果打定主意力行去三星化的政策。无奈,苹果热卖新机iPhone 6与iPhone 6 Plus因为部分机型使用了TLC(三阶储存单元)NAND记忆体的缘故,衍伸出品质不稳的情况,为解决此情况,苹果只好再度求助对手三星。 据《Business Korea》网站报导,苹果虽未正面承认部分iPhone 6以及iPhone 6 Plus品质不佳、容易崩溃重启的情况是何原因,但从后续行动来看,等于已默认就是记忆体出现了问题。该网站表示,苹果已与三星开始谈判,苹果期待三星能为iP
[手机便携]
基于 STM32 的硬件 I2C 读取 MPU6050 数据
MPU6050其实就是一个 I2C 器件,里面有很多寄存器(但是我们用到的只有几个),我们通过读写寄存器来操作这个芯片。所以首要问题就是 STM32 和 MPU6050 的 I2C 通信。 1、配置 STM32 (用I2C1:PB6——SCL;PB7——SDA) 1)时钟 RCC RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1 , ENABLE); 2)GPIO 配置 GPIO_InitStructure.GPIO_Pin = GPIO
[单片机]
基于 <font color='red'>STM32</font> 的硬件 I2C 读取 MPU6050 数据
STM32采集DHT11温湿度传感器的信号采集
首先的介绍下DHT11这款温湿度传感器。 DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。DHT11的供电电压为 3-5.5V。传感器上电后,要等待 1s 以越过不稳定状态在此期间无需发送任何指令。电源引脚(VDD,GND)之间可增加一个100nF 的电容,用以去耦滤波。 DHT11温湿度传感器的引脚定义如下: Pin 名称 注释
[单片机]
<font color='red'>STM32</font>采集DHT11温湿度传感器的信号采集
一种嵌入式系统的内存分配方案
摘要:实时性、可靠性的要求,使得许多嵌入式应用使用自己的内存管理程序。本文探讨嵌入式系统中对内存管理的要求、存在的问题以及可能的解决策略;介绍一种“一次分配,多次使用”的动态内存分配方法,并给出2个例子。 关键词:嵌入式系统 内存管理 一次分配多次使用 1 嵌入式系统中对内存分配的要求 ①快速性。嵌入式系统中对实时性的保证,要求内存分配过程要尽可能地快。因此在嵌入式系统中,不可能采用通用操作系统中复杂而完善的内存分配策略,一般都采用简单、快速的内存分配方案。当然,对实性要求的程序不同,分配方案也有所不同。例如,VxWorks采用简单的最先匹配如立即聚合方法;VRTX中采用多个固定尺寸的binning方案。 ②可靠性。也就是
[应用]
STM32串口下载方法-USART BootLoader
玩STM32,J-LINK仿真器固然很好,不够J-Link价格昂贵,还好STM32内部自带Bootloader,可以串口下载程序。本人觉得串口下载方式简洁,廉价,就一个USB-TTL转换器即可完成。 一.首先在能正常工作的最小系统板,开发板上将232电路调通,保证可用,就是无障碍的和PC通讯。然后将写好编译好的HEX文件载入下载即可,这里STM32的识别hex文件的,这点比LM3S系列的ARM 强。首先要到网上下载Flash_Loader_Demonstrator_V2.1.0_Setup串口下载的上位机软件,去ST官方网站去下载也可以。 二.安装软件并进行相关设计 确认你的串口设置OK,注意串口号对应即可。 三.连
[单片机]
<font color='red'>STM32</font>串口下载方法-USART BootLoader
STM32 assert_param
在STM32的固件库和提供的例程中,到处都可以见到assert_param()的使用。如果打开任何一个例程中的stm32f10x_conf.h文件,就可以看到实际上assert_param是一个宏定义;在固件库中,它的作用就是检测传递给函数的参数是否是有效的参数。 所谓有效的参数是指满足规定范围的参数,比如某个参数的取值范围只能是小于3的正整数,如果给出的参数大于3,则这个assert_param()可以在运行的程序调用到这个函数时报告错误,使程序员可以及时发现错误,而不必等到程序运行结果的错误而大费周折。 这是一种常见的软件技术,可以在调试阶段帮助程序员快速地排除那些明显的错误。 它确实在程序的运行上牺牲了效率(但只
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved