这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » ATmega128 关于ATmega128存储器的理解

共2条 1/1 1 跳转至

ATmega128 关于ATmega128存储器的理解

院士
2006-09-17 18:14:16     打赏
ATmega128 关于ATmega128存储器的理解



关键词: ATmega128     关于     存储器     理解    

院士
2006-12-22 22:43:00     打赏
2楼
问 小弟初学AVR,俺以前缺乏硬件设计的经验,连51都没玩过,看了几天的英文手册,整理了一下关于存储空间的理解,发在这里,高手们看看对不对。

从存储介质上讲,ATmega128有128K字节的Flash,4K字节的EEPROM,4K字节的内部SRAM,还有最多可扩展至64K字节的SRAM。

AT128是程序区和数据区分开编址的,程序区俺的理解就是那128K字节的Flash,由于多数指令是16位或32位的,因此Flash区被组织成64K×16(位)的形式,这样16位的PC指针寄存器寻址空间可以达到64K。

关于数据存储区,要稍微复杂一些,在空间上看是64K字节($0000-$FFFF),其中$0000-$001F部分是32个CPU可以直接访问的通用寄存器,地址$0020-$005F是内部IO空间(内部IO寄存器区),其中包括重要的SREG、MCUCR等寄存器,内部IO空间共有64字节,按照IO空间地址编为$00-$3F,在程序存储区里被统一编址成了$0020-$005F。程序存储区之后的$0060-$10FF是160字节的外部IO空间(外部IO寄存器),包含的是控制外围设备的寄存器,如定时/计数器、AD转换等。在外部IO空间之后就是4K的SRAM区,地址从$1100到$2100,堆栈就位于SRAM中。在SRAM之后是外扩的外部SRAM区,最大可扩展到64K,偶的理解是外部SARM从$2101开始,最大可延伸到$FFFF,并不是外部SRAM区本身大小就能达到64K

关于EEPROM,是独立于以上的数据、程序存储区之外的。

偶的理解就这些了,可能非常肤浅和不正确。有经验的朋友说我抠这些东西抠的太多了,很多东西用到再学。

此外还有两个问题
1 EEPROM通常在什么情况下被使用到
2 堆栈位于SRAM中,堆栈指针寄存器SP位于内部IO空间中,数据手册上说SP必须设置为大于$60,但是数据存储区$60地址还刚刚是外部IO寄存器开始,并不是SRAM区,为什么指向这里呢?

谢谢好心人的指正 1: 基本正确,不过SRAM有些问题:$0000-$001F:32个寄存器
$0020-$005F:I/O寄存器
$0060-$00FF:扩展I/O寄存器
$0100-$10FF:内部4KRAM
$1100-$FFFF:外部RAM
看mega128的datasheet的18页。
EEPROM一般用在掉电后需要保存的数据。
SP不能设置在$60之后,一般设置在$10FF,即RAM的最后。 2: 谢谢赐教数据存储区是俺写错了,疏忽
感谢楼上的指点

数据存储区
$0000-$001F:32个寄存器
$0020-$005F:I/O寄存器
$0060-$00FF:扩展I/O寄存器
$0100-$10FF:内部4K SRAM
$1100-$FFFF:外扩 SRAM




3: EEPROM我一般情况是这样用的    放一些外部设备的配置信息;各种系数的标定值;设备的ID编号;错误警告的极限值;试用板子的使用次数记录;板子交钱后的通过INTELNET或IC卡激活后的标志等等。一般在数据量不大的情况下将EEPROM区分成两个区,每个区的内容是一样的,板子一上电开始验证各区域的校验和,校验失败的区域被自动更新。由于芯片加密后EEPROM内的数据无法从外部读出,所有可以放心使用。不过要记住避开$00H。

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]