mc9s12xs128内存映射和数据flash操作.pptVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
mc9s12xs128内存映射和数据flash操作

MC9S12XS128内存映射和 数据flash操作 北京联合大学实训基地——潘峰 QQ问题 内部地址总线宽度为16位,寻址范围有多大? MC9S12XS128的RAM,P-FLASH,D-FLASH各有多大? 在程序中给出如下定义 unsigned int *p; p=0x8000; data=*p; 这上面这段代码中,访问的是哪一块存储区域? 解答 16位地址,寻址范围为0~65536,即64k MC9S12XS128的RAM为8K,P-FLASH为128K,D-FLASH为8K。 *p=0x8000,访问的是P-FLASH? MC9S12XS128内存结构 MC9S12XS128使用global adress(全局地址)对内存划分地址空间。全局地址共23bit,寻址能力达到8M 使用全局地址划分的内存空间如下: 0x10_0000~0x10_1FFF:8K d-flash 0x7E_0000~0x7F_FFFF:128K p-flash 0x0F_E000~0x0F_FFFF:8K 非分页RAM 问题:CPU和BDM都是使用16bit local address(本地地址)我们在程序中定义的指针变量默认都是near型,即16位地址,如何解决? 分页地址映射 MC9S12XS128使用分页地址映射的方法,在程序中使用16位地址访问更大的存储空间。 访问RAM 使用地址0x2000 ~0x3FFF,访问8K RAM 访问D-FLASH 使用地址0x0800 ~ 0x0BFF,访问1K D-FLASH(一个D-FLASH页) 访问P-FLASH 使用地址0x8000 ~0xBFFF,访问16K P-FLASH(一个P-FLASH页) 我们程序中的指针指向不同的地址范围,访问的内存空间也不同。 问题?如何访问8k的d-flash空间和128k的p-flash空间 分页地址映射 MC9S12XS128的FLASH存储区是分页组织的以D-FLASH为例,共分8个页面,每页1K大小,地址如下: EEPROM_00 0x00_0800 TO 0x00_0BFF; EEPROM_01 0x01_0800 TO 0x01_0BFF; EEPROM_02 0x02_0800 TO 0x02_0BFF; EEPROM_03 0x03_0800 TO 0x03_0BFF; EEPROM_04 0x04_0800 TO 0x04_0BFF; EEPROM_05 0x05_0800 TO 0x05_0BFF; EEPROM_06 0x06_0800 TO 0x06_0BFF; EEPROM_07 0x07_0800 TO 0x07_0BFF; 访问D-FLASH 当访问d-flash时,地址由页地址和页内偏移量组成 页地址由EPAGE寄存器指定 页内偏移量范围0x0800~0x0BFF; 例如,读出第0页的第一个存储单元一个字的信息,代码如下: unsigned int data; EPAGE=0x00; data=((unsigned int)(*(volatile unsigned int *__near)(0x0800))) D-FLASH常见操作 D-FLASH是一种非易失性存储器(NVM)用于保存掉电后不会丢失的数据 常用操作有读、擦除、写入,其中读操作可直接通过指针读取,而擦除和写入则需要通过flash控制器完成,具体步骤如下: 设置flash模块时钟 设置命令字和相关参数 将命令字和相关参数传递给flash控制器,启动flash操作 设置flash模块时钟 初始化flash模块是必须设置fclk,且为1MHz,fclk是有晶振时钟分频而来, Flash控制模块使用该时钟实现flash写入和擦除时的定时,通过设置FCLKDIV寄存器完成。 7 6 5 4 3 2 1 0 R FDIVLD FDIV[6:0] W Reset 0 0 0 0 0 0 0 0 该寄存器每一位都可读出,但只有FDIV[6:0]可写入。 FDIVLD:时钟分频载入 1:从上一次复位开始,FCLKDIV寄存器已写入。 0:FCLKDIV寄存器还未写入。 当晶振频率为16M时,FDIV设置为0x0F。当晶振频率为其它值时,具体设置参考数据手册。 *注意:1.在flash命令执行过程中,FDIV不可被写入 2.只有FDIVLD==1时,才可以进行flash操作 设置命令字和相关参数 D-flash操作是通过FCCOB寄存器向存储器控制器提供命令码和相关参数实现的。用户首先需要初始化所需的FCCOB寄存器。 FCCOB是

文档评论(0)

linsspace + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档