MSP430-Flash读写操作总结

上传人:沈*** 文档编号:108084994 上传时间:2022-06-15 格式:DOC 页数:35 大小:416.50KB
收藏 版权申诉 举报 下载
MSP430-Flash读写操作总结_第1页
第1页 / 共35页
MSP430-Flash读写操作总结_第2页
第2页 / 共35页
MSP430-Flash读写操作总结_第3页
第3页 / 共35页
资源描述:

《MSP430-Flash读写操作总结》由会员分享,可在线阅读,更多相关《MSP430-Flash读写操作总结(35页珍藏版)》请在装配图网上搜索。

1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateMSP430-Flash读写操作总结MSP430X14X Flash 读写操作总结MSP430X14X Flash 读写操作总结开发平台:IAR Embedded Workbench、MSP430F149开发板作者:谭贝贝Flash简介Flash分为主存储区和信息存储区,主存储区有8个512byte的片段,信息存储区有两个128byte的片段。Flash默认为读取模式

2、。在对Flash进行编程或者擦除时不允许读写,如果需要CPU在这期间进行操作,可以把代码段放在RAM中进行。Flash操作注意事项在读写的过程中电压不能小于2.7V否则擦除和读写的结果将不可预测。Flash的可操作时钟频率为257KHZ-476KHZ。如果频率不符合要求,则结果不可预测。在擦除先需要关闭中断和看门狗,在擦除的过程中如果产生了中断,则会在重新使能中断后产生一个中断请求。Flash只能从1写为0,不能从从0写为1,所以需要擦除。可以被擦除的最小模块是片段,tAll Erase = tMass Erase = 5297/fFTG, tSeg Erase = 4819/fFTG。Fla

3、sh ERASEMSP430X14X的擦除模式可以从Flash或者RAM中进行。从Flash中擦除从Flash中擦除的过程中所有的定时都会被Flash控制,CPU被挂起。擦除完成后需要一个假写入CPU才能复位。从Flash擦除时有可能把后面CPU需要执行的代码擦除。如果发生这样的情况,在擦除后CPU的执行状况将不可预测。Flash中擦除流程图从RAM中擦除从RAM中擦除时CPU不会被挂起,可以继续执行代码。必须检测BUSY位以判断擦除是否结束,如果在擦除的过程中(即BUSY=1时)访问Flash,这是一个违规的访问,ACCVIFG会置位,而擦除的结果也将不可预测。RAM中擦除流程图Flash

4、WriteMSP430X14X有两种写入模式,分为段写入(byte/word write),和块写入(Block Write),块写入要快得多,但是操作麻烦,在擦除的过程中不能有一个Flash word(low + high byte),则会发生损坏。CPU不能在BUSY=1时访问Flash,否则ACCFIG将置位写入将不可预测。1. Byte/Word writeByte/Word 写入可以从Flash或者RAM初始化,当从Flash中初始化时,所有的定时都会被Flash控制,CPU被挂起。写完后CPU将继续执行后面的代码。当从RAM中初始化时,BUSY必须在CPU访问Flash前置0.否则

5、ACCFIG将被置位,写入的结果将不可预测。在Byte/Word 写模式下写入总时间不能超过4ms,如果超过了,当再想这块任何地址写入数据时必须先擦除。Byte/Word 写入流程图从RAM中执行Byte/Word 写入块写入块写入时没一小块不能超过t_cpt=4ms,块写入只能从RAM中进行,在块写入的过程中WAIT位要置0,当想Flash中写入数据时,需要先检查WAIT位是否为1.当前块写完后BLKWRT要清0.流程图在擦除或者写入的过程中访问Flash,见下表Flash的寄存器FCTL1,选择擦除和写入模式的寄存器FRKEY/FWKEY 高八位为密码读的密码为96h,写的密码为A5h。B

6、LKWRT块写入模式选择位,可以自动被EMEX置位WRT字写入模式选择位,可任意自动被EMEX置位MERASE和ERASE,擦除模式选择位FCTL2时钟选择寄存器FWKEYx密码位FSSELx时钟选择位FNx分频比 分频值等于FN+1两个例子#include #include BoardConfig.hvoid Write_A(uchar value);void Copy_A2B(void);void main( void )/ Stop watchdog timer to prevent time out resetWDTCTL = WDTPW + WDTHOLD;BoardConfig(0

7、xb8);FCTL2 = FWKEY + FSSEL0 + FN0; /Select sourceuchar value = 0;for(;)Write_A(value+); /Write data to segment ACopy_A2B(); /Copy data from segment A to segment B_NOP();void Write_A(uchar value)uchar i;uchar *Flash_ptr;Flash_ptr = (uchar *)0x1080;FCTL1 = FWKEY + ERASE; /Set ERASE modeFCTL3 = FWKEY;

8、/Clear LOCK*Flash_ptr = 0; /Dummy writeFCTL1 = FWKEY + WRT;for(i = 0;i 128;i+)*Flash_ptr+ = value; /Write valueFCTL1 = FWKEY; /Clear WRTFCTL3 = FWKEY + LOCK; /Set LOCK/Copy data from B to Avoid Copy_A2B(void)uchar *Flash_ptrA;uchar *Flash_ptrB;uint i;Flash_ptrA = (uchar *)0X1080;Flash_ptrB = (uchar

9、*)0x1000;FCTL1 = FWKEY + ERASE;FCTL3 = FWKEY;*Flash_ptrB = 0;FCTL1 = FWKEY + WRT;for(i = 0;i 128;i+)*Flash_ptrB+ = *Flash_ptrA+;FCTL1 = FWKEY;FCTL3 = FWKEY + LOCK;再来个块写入的(TI例程)/*/ MSP430F14x Demo - Flash In-System Programming, BlockWrite/ Description: This program first copies the FlashWrite routine

10、 to RAM, then/ erases flash seg A, then it increments all values in seg A using the 64/ byte block write mode./ Assumed default MCLK = DCO 800 kHz./ Minimum RAM requirement = 512 bytes/ * Set Breakpoint on NOP in the Mainloop to avoid Stressing Flash */ MSP430F149/ -/ /| XIN|-/ | | |/ -|RST XOUT|-/

11、| |/ H. Grewal / L. Westlund/ Texas Instruments Inc./ Jun 2006/ Built with IAR Embedded Workbench Version: 3.30A/*#include / Global variableschar value = 0; / 8-bit value to write to segment Achar* Flash_ptr; / Flash pointerchar* RAM_ptr; / RAM pointerchar* END_ptr; / End of FlashWrite routine/ Func

12、tion prototypesvoid FlashWrite();void CopyRoutine();void End_of_FlashWrite();void main(void)WDTCTL = WDTPW + WDTHOLD; / Stop watchdog timer_DINT(); / Diable InterruptsCopyRoutine(); / Copy FlashWrite routine to RAM_EINT(); / Enable Interruptswhile(1) / Repeat foreverFlash_ptr = (char *) 0x1000; / In

13、itialize Flash pointerFCTL2 = FWKEY + FSSEL1 + FN0; / MCLK/2 for Flash Timing GeneratorFCTL1 = FWKEY + ERASE; / Set Erase bitFCTL3 = FWKEY; / Clear Lock bit*Flash_ptr = 0; / Dummy write to erase Flash segmentwhile(!(FCTL3 & WAIT); / WAIT until Flash is readyasm(CALL #300h); / Execute FlashWrite from

14、 RAM/ Inline Assemblyvalue+; / Increment value_NOP(); / SET BREAKPOINT HEREvoid CopyRoutine()Flash_ptr = (char*)FlashWrite; / Set pointer to FlashWrite routineRAM_ptr = (char*)0x0300; / Set pointer to RAMEND_ptr = (char*)End_of_FlashWrite; / Set pointer to End_of_FlashWritewhile(END_ptr != Flash_ptr

15、) / Check for end of FlashWrite*RAM_ptr = *Flash_ptr; / Copy word to RAMFlash_ptr+; / Increment Flash pointerRAM_ptr+; / Increment RAM pointervoid FlashWrite()volatile int i; / Use as write counterFlash_ptr = (char*)0x1000; / Initialize Flash pointerwhile(FCTL3 & BUSY); / Check Flash BUSY bitFCTL1 =

16、 FWKEY + BLKWRT + WRT; / Enable block-write operationfor(i = 0; i 64; i+)*Flash_ptr = value; / Write value to flashFlash_ptr+; / Double-increment Flash pointerwhile(!(FCTL3 & WAIT); / WAIT until Flash is readyFCTL1 = FWKEY; / Clear BLKWRT & WRT bitswhile(FCTL3 & BUSY); / Check Flash BUSY bitFCTL3 = FWKEY + LOCK; / Reset LOCK bitreturn; / Exits routinevoid End_of_FlashWrite() / Marks end of FlashWrite-

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!