单片机中都有FLASH还需要EEROM吗?

单片机中有FLASH为啥还需要EEROM?

///插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程,想要的同学找我拿就行了免費的,私信我就可以哦~点我头像黑色字体加我地球呺也能领取哦。最近比较闲,带做毕设,带学生参加省级或以上比赛///9f717aafca2d91ca015d574e98828d2a.png76b8aa60fcd9c0270628bc06a709de43.png

既然打算学,基础的东西元件的得知道是什么,这样写代码的时候才能知道自己在干什么!

ROM和Flash断电后都能储存数据,RAM则不能

其实闪存(flash)是ROM的一种它的全名---FLASH EEPROM

EEPROM---电可擦除可编程只读存储器

Flash

Flash是⼀种⾮易失性存储器,即断电之后数据也不会丢失,这个存储器的特点是不能以字节的方式擦除信息,它按扇区(block)操作

32的芯片有些参数说 Flash的大小256k,64k,512k,它可以用于存储代码,也可以用于存储数据。

我们编译好的程序就放在这个地方。内核通过 ICode总线来取里面的指令。

也存放常量  const修饰的

SRAM

静态随机存取存储器(SRAM)是随机存取存储器的⼀种。所谓的“静态”,是指这种存储器只要保持通电,⾥⾯储存的数据就可以恒常保持。

相对之下,动态随机存取存储器(DRAM)⾥⾯所储存的数据就需要周期性地更新

程序的变量,堆栈等的开销都是基于内部的SRAM。内核通过DCode总线来访问它。

单片机中有FLASH为啥还需要EEROM?

flash可以一个字节一个字节写,但是删除的话,得一整个扇区删除。

目前常见的flash一个扇区是4k的大小。如果你只要删改一个哪怕一个字节的数据。都要先把flash的至少一个扇区的数据读到ram里。然后修改。改好了后再把这个扇区的数据再存回去。如果只是小数据量的修改。则这样一折腾,操作复杂。而且mega328才2k的RAM。存不下一个扇区的数据。所以内置了EEPROM,可以按字节删改。

stm32 F10xxx系统结构,图下面是每个名词的介绍,结合着看

系统构架

●四个驱动单元:

.CortexTM-M3内核DCode总线(D-bus)和系统总线(S-bus)

.通用DMA1和通用DMA2

●四个被动单元

.内部SRAM

.内部闪存存储器

.FSMC

.AHB到APB的桥(AHB2APBx),它连接所有的APB设备

我们可以把驱动单元理解成是CPU部分,被动单元都理解成外设。下面我们简单介绍下驱动单元和被动单元的各个部件

这些都是通过一个多级的AHB总线构架相互连接的,如下图所示:

从AHB总线延伸出来的两条(APB1和APB2)总线,上面挂载着STM32各种各样的特色外设。我们经常说的GPIO、串口、I2C、SPI这些外设就挂载在这两条总线上,这个是我们学习STM32的重点,就是要学会编程这些外设去驱动外部的各种设备。

dd73b9e891a03e95a0edbce373ce3abb.png

ICode总线

该总线将CortexTM-M3内核的指令总线与闪存指令接口相连接。指令预取在此总线上完成。

ICode中的I表示Instruction,即指令。程序编译之后生成的二进制文件都是一条条指令,烧录后寄存在FLASH中,内核要读取这些指令来执行程序就必需通过ICode总线,它简直每时每刻都须要被使用,它是专门用来取指的。

由上图也可看出ICode连接M3内核与Flash接口

DCode总线

该总线将CortexTM-M3内核的DCode总线与闪存存储器的数据接口相连接(常量加载和调试访

问)。

DCode中的D表示Data,即数据,那说明这条总线是用来取数的。我们在写程序的时候,数据有常量和变量两种,常量就是固定不变的,用C语言中的const关键字修饰,是放到内部的FLASH?当中的,变量是可变的,不管是全局变量还是局部变量都放在内部的SRAM。由于数据能够被Dcode总线和DMA总线访问,所以为了避免访问冲突,在取数的时候须要经过一个总线矩阵来仲裁,决定哪个总线在取数。

系统总线

此总线连接CortexTM-M3内核的系统总线(外设总线)到总线矩阵,总线矩阵协调着内核和DMA间

的访问。

DMA总线

此总线将 DMA的AHB主控接口与总线矩阵相联 ,总线矩阵协调着 CPU的 DCode和 DMA到SRAM、闪存和外设的访问。

总线矩阵

总线矩阵协调内核系统总线和DMA主控总线之间的访问仲裁,仲裁利用轮换算法。在互联型产品中,总线矩阵包含5个驱动部件(CPU的DCode、系统总线、以太网DMA、DMA1总线和DMA2总线)和3个从部件(闪存存储器接口(FLITF)、SRAM和AHB2APB桥)。在其它产品中总线矩阵包含4个驱动部件(CPU的DCode、系统总线、DMA1总线和DMA2总线)和4个被动部件(闪存存储器接口(FLITF)、SRAM、FSMC和AHB2APB桥)。

AHB外设通过总线矩阵与系统总线相连,允许DMA访问。

首先,说点不靠谱的,APB和AHB总线,我个人感觉这个类似于个人PC系统里的北桥和南桥总线。

南桥总线上挂接的都是鼠标、键盘这些慢速的设备,北桥上挂接显卡等高速设备。南桥频次低,北桥频次高。另外,南桥最后也要接到北桥上。

这些感觉都类似于APB和AHB。

一定要看图,比照着看!

从AHB总线延伸出来的两条(APB1和APB2)总线,上面挂载着STM32各种各样的特色外设。我们经常说的GPIO、串口、I2C、SPI这些外设就挂载在这两条总线上,这个

猜你喜欢

转载自blog.csdn.net/danpianji777/article/details/124698520