




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 3.11 Flash编程主要内容 嵌入式系统中存储器介绍 嵌入式系统中常用存储器分类 Flash 存储器介绍 变量的物理存储 MSP430存储器介绍 Flash 存储器读写操作 Flash 存储器分段结构 Flash 存储器寄存器嵌入式系统中常用存储器分类RAM 存储器掉电后数据丢失静态RAM(SRAM)动态RAM(DRAM)ROM 存储器掉电后数据不会丢失PROMEPROMEEPROMFlash存储器电擦写、读写速度快,掉电后数据不会丢失NandFlashNorFlashFlash特点在对Flash存储器进行写操作时,可以以字节或字为单位进行写操作,但对Flash存储器进行擦除操作时,必须
2、以段为单位进行擦除。换句话说,即使要改变存储器中某个地址处的字节内容,也必须首先将该字节所在的段先擦除,然后再将该地址的字节内容写入,由于擦除操作会擦掉整段的内容,所以建议将有用的内容先保存到RAM中,然后再进行擦除操作。擦除后Flash存储器的值为逻辑1。每一位可以单独通过编程,从1变到0,但是要将其重新编程从0到1需要擦除操作。 变量的物理存储 全局变量或常量放在Flash里,局部变量放在RAM区域中,程序段放在flash中,程序开始运行时,放到RAM中运行,从flash的主存储区第一段开放存放程序和全局变量,这个存放位置是可以设定的,所以想利用Flash空间进行读写时,必须绕开操作程序存
3、储段。MSP430 Flash存储器特征 内部的编程电压发生器 可字节、字(2个字节)、 长字(4个字节)编程 超低功耗运作 段擦除、扇区擦除和全部擦除 边沿0、边沿1读模式 在程序运行时对别的块进行擦除操作。 FLASH模块逻辑图模块逻辑图FLASH结构 Flash存储器分为主存储区、信息存储区和引导加载存储器(BSL)。 每个主存储区段大小为512 个字节。 有四个信息存储段,A到D。每个信息存储段包含128个字节,并且可以单独擦除。 引导加载存储器(BSL)包含4个段,A到D。每个引导加载段有512个字节,并且可以单独擦除。通过引导加载程序(BSL)对FLASH存储器编程 每个MSP43
4、0 Flash型芯片都包含一个引导加载区(BSL)。BSL允许用户使 用UART串行接口对Flash存储器或RAM进行读取或编程操作。用户自定义的 256 位口令可以保护通过BSL对Flash 存储器的访问。MSP430F663x系列单片机的存储器结构图Flash特性 (1/2) Flash存储器通过BLKWRT,WRT,MERAS和ERASE 位选择写入/擦除模式: 字节/字/长字(32位)写入 块写入 段擦除 扇区擦除(针对主存储区) 主存擦除(所有的主存储扇区) 当擦除扇区时读(除了从当前的扇区读) Flash特性 (2/2)MERASERASE擦除模式 0 1 段擦除 10空写地址选择
5、的扇区擦除(一个扇区) 11主存擦除(所有的存储扇区,信息存储区A到D以及引导装载段A到D不被擦除) 从Flash存储区启动擦除操作 从RAM区启动擦除操作 Flash存储器写操作 可以通过WRT和BLKWRT位来选择写模式从FLASH存储器中启动字/字节写入从RAM区中启动字/字节写入从FLASH存储器中启动长字写入 从RAM区启动长字写入Flash存储寄存器寄存器名称缩写访问初始状态偏移地址Flash存储控制寄存器1 FCTL1读/写9600h0000hFlash存储控制寄存器3FCTL3读/写9658h0004hFlash存储控制寄存器4FCTL4 读/写9600h0006h中断使能1
6、IE1 读/写0000h000Ah中断标志1IFG1 读/写0000h 000Ch MSP430F5xx6xx系列单片机的Flash存储寄存器如下表所列。基地址可以在具体芯片的数据手册里面找到,下表给出偏移地址。 配置和访问Flash存储控制器 FCTLx寄存器是一个16位的,具有密码保护的读/写寄存器。读或写访问时必须使用字指令,写操作时高字节内必须包括写入密码0A5h。对任何FCTLx寄存器写入0A5h以外的其他值,将引起密钥错误,KEYV标志将置位,产生一个PUC系统复位。读取任何FCTLx寄存器高字节的结果为096h。 在擦除或字节/字/双字写入操作期间,对FCTL1的写操作都是非法操
7、作,ACCVIFG将置位。在块写入模式下,WAIT = 1 时,允许对FCTL1进行写操作,但是当WAIT = 0 时,对FCTL1的写操作为非法操作,ACCVIFG置位。 当BUSY = 1 时,对FCTL2的任何写入操作是非法操作。 当BUSY = 1 时,可以读FCTLx寄存器。读操作不会产生非法访问。 写入或者擦除期间访问Flash存储器 当BUSY = 1时,从RAM区启动写入或擦除操作,CPU可能不会在任何Flash 位置进行写操作。否则,将发生非法访问,ACCVIFG位置位,结果不可预料。 当写操作从Flash存储器内启动时,在写周期完成后(BUSY = 0),CPU将继续取下一
8、指令。 当写操作完成且BUSY = 0 时,Flash控制器才允许CPU取出操作代码,继续执行代码。位1514131211109 8功能FRKEY 读密码是96h,写时必须为A5h FLASH控制寄存器1 (FCTL1)位76543210功能BLKWRWRTSWRT保留保留MERASERASE 保留 0 1 字节/字写 1 0 长字写 1 1 长字块写 位1514131211109 8功能FRKEY 读密码是96h,写时必须为A5h FLASH控制寄存器1 (FCTL1)位76543210功能BLKWRWRTSWRT保留保留MERASERASE 保留 智能写位。假如该位置位,编程时间会缩短了。
9、编程质量必须由边沿读模式检查确认。 位1514131211109 8功能FRKEY 读密码是96h,写时必须为A5h FLASH控制寄存器1 (FCTL1)位76543210功能BLKWRWRTSWRT保留保留MERASERASE 保留 没有擦除操作 0 0 段擦除 0 1 扇区擦除 1 0 全部擦除(包括主FLASH和信息段) 1 1 位1514131211109 8功能FRKEY 读密码是96h,写时必须为A5h FLASH控制寄存器3 (FCTL3)位76543210功能保留LOCKA保留 LOCKWAITACCVIFKEYV BUSY锁信息A段。对该位写1能改变该位状态。写0无效。 0
10、 信息A、B、C、D、被解锁。 1 信息A段被写保护。 位1514131211109 8功能FRKEY 读密码是96h,写时必须为A5h FLASH控制寄存器3 (FCTL3)位76543210功能保留LOCKA保留 LOCKWAITACCVIFKEYV BUSY0 解锁 1 锁定锁。该位对FLASH的写和擦除操作进行解锁。该位可以字/字节写的任意时刻置位。在快写模式中,当BLKWRT=WAIT=1,LOCK置位的话,BLKWRT和WAIT会立即复位,该模式正常终止。 位1514131211109 8功能FRKEY 读密码是96h,写时必须为A5h FLASH控制寄存器3 (FCTL3)位76
11、543210功能保留LOCKA保留 LOCKWAITACCVIFKEYV BUSY 非法访问中断标志 1 没有中断产生 2 中断产生 位1514131211109 8功能FRKEY 读密码是96h,写时必须为A5h FLASH控制寄存器3 (FCTL3)位76543210功能保留LOCKA保留 LOCKWAITACCVIFKEYV BUSY FCTLx密码写入正确 0 FCTLx密码写入不正确 1 Flash安全键值出错。该位指示了一个不正确的FCTLx安全键值被写入到flash控制寄存器中,KEYV会置位。并触发PUC。KEYV位必须被软件复位。 位1514131211109 8功能FRKE
12、Y 读密码是96h,写时必须为A5h FLASH控制寄存器3 (FCTL3)位76543210功能保留LOCKA保留 LOCKWAITACCVIFKEYV BUSY 不忙 0 忙 1 忙标志位。该位指示是否Flash正忙于当前的擦除或者编程。 位1514131211109 8功能FRKEY 读密码是96h,写时必须为A5h FLASH控制寄存器4 (FCTL4)位76543210功能LOCKINFO保留MRG1MRG0保留VPE 信息段锁定。如果该位置位,信息存储区不能在段擦除模式下擦除,也不能够被写入。位1514131211109 8功能FRKEY 读密码是96h,写时必须为A5h FLAS
13、H控制寄存器4 (FCTL4)位76543210功能LOCKINFO保留MRG1MRG0保留VPE 0 边沿1读模式禁止 1 边沿1读模式使能 边沿读1模式。该位使能边沿读1模式。仅仅当从Flash存储区读时,边沿读1位才是有效的。在存取周期内,边沿模式自动关闭。如果MRG1和MRG0都置位,则MRG1有效MRG0被忽略。 位1514131211109 8功能FRKEY 读密码是96h,写时必须为A5h FLASH控制寄存器4 (FCTL4)位76543210功能LOCKINFO保留MRG1MRG0保留VPE 0 边沿0读模式禁止 1 边沿0读模式使能 边沿读0模式。该位使能边沿读0模式。仅仅
14、当从Flash存储区读时,边沿读0位才是有效的。在存取周期内,边沿模式自动关闭。如果MRG1和MRG0都置位,则MRG1有效,MRG0被忽略。 位1514131211109 8功能FRKEY 读密码是96h,写时必须为A5h FLASH控制寄存器4 (FCTL4)位76543210功能LOCKINFO保留MRG1MRG0保留VPE 编程错误期间变化的电压。该位被软件置位,只能被软件清除。如果在编程期间DVCC改变很大,该位置位指示一个无效的结果。如果VPE置位,则ACCVIFG位置位。 位1514131211109 8功能FRKEY 读密码是96h,写时必须为A5h FLASH控制寄存器4 (
15、FCTL4)位76543210功能LOCKINFO保留MRG1MRG0保留VPE 信息段锁定。如果该位置位,信息存储区不能在段擦除模式下擦除,也不能够被写入。示例1 实现对SegD进行擦除和写入数据操作,将value值写入SegD的指定地址。 本实验用两种编程方式实现: 直接操作寄存器 使用官方库函数driverlib示例1:操作寄存器void main(void) / 初始化FLASH信息段SegD的指针,该指针指向Flash地址0 x1800 unsigned long * FLASH_ptrD = (unsigned long *) 0 x1800; unsigned long valu
16、e = 0 x12345678; WDTCTL = WDTPW+WDTHOLD; / 关闭看门狗 While(FCTL3 & BUSY); / 判断是否处于忙碌状态 FCTL3 = FWKEY; / 清除LOCK标志 FCTL1 = FWKEY+ERASE; / 置位ERASE位,选择段擦除 *FLASH_ptrD = 0; / 空写操作,地址可以为段范围内的任意值 FCTL1 = FWKEY+BLKWRT; / 写允许,长字 *FLASH_ptrD = value; / 写FLASH While(FCTL3 & BUSY); / 判断是否处于忙碌状态 FCTL1 = FWKE
17、Y; / 清除WRT位 FCTL3 = FWKEY+LOCK; / 置位LOCK标志 示例1:库函数编程(1/2)/ 初始化FLASH信息段SegD的指针,该指针指向Flash地址0 x1800,可以试试把0 x1800改成0 x18000unsigned long * FLASH_ptrD = (unsigned long *) 0 x1800;unsigned long value = 0 x12345678;void main (void) unsigned int status; / 关闭看门狗定时器 WDT_hold(_MSP430_BASEADDRESS_WDT_A_); 示例1:
18、库函数编程(2/2) / 擦除FLASH Info D段do Flash_segmentErase( _MSP430_BASEADDRESS_FLASH_, (unsigned int *)FLASH_ptrD ); status = Flash_eraseCheck( _MSP430_BASEADDRESS_FLASH_, (unsigned int *)FLASH_ptrD, 128 ); while (status = STATUS_FAIL);/ 写FLASH长字Flash_write32( _MSP430_BASEADDRESS_FLASH_, &value, (unsigned long *)(FLASH_ptrD), 1 );示例2 (1/2) 实现不同Seg之间的数据拷贝,首先把递增的数据写入SegC,然后实现将SegC的数据拷贝至SegD。 本实验用两种编程方式实现: 直接操作寄存器 使用官方库函数driverlib示例2 (2/2)#define NumToWrite 128/ 初始化FLASH信息段SegC与SegD的指针uint8_t *FLASH_ptrC = (uint8_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 范稿模板06财务部会计主管年度工作总结模版
- 《神经系统病变诊断攻略》课件
- 高中物理学史内容总结模版
- 《机械设备的维护与保养》课件
- 《胆囊炎与怀孕》课件
- 新质生产力时政素材
- 2025年度学校安全工作计划总结模版
- 2025雅居室内设计合同范本
- 《两只小猫咪课件》
- 餐厅顾客财产安全培训
- 微生物污染问题的防治策略试题及答案
- 2025重庆建峰工业集团有限公司招聘77人笔试参考题库附带答案详解
- 自然分娩接产操作规范
- 公务卡管理制度
- 砌体开槽处理详细方案
- 小型涡喷发动机市场深度评估与发展机遇研究报告
- 贷款延期通知函
- 2025-2030年中国钢铁中厚板行业运行状况及发展规划分析报告
- 儿科专业课 17-肾病综合征学习课件
- 中国健美协会cbba(高级)健身教练证考试复习题库(含答案)
- 2025年广东乳源瑶族自治县明源国有资产经营有限公司招聘笔试参考题库附带答案详解
评论
0/150
提交评论