msp430是一个16位的单片机。
但是他的地址线可以是16位的,当然也可以是20位的。
我用的msp430f2132的flash只有8kb,flash的范围是0xE000-0xFFFF,
但是像msp430f2416的flash却有92kb,flash的范围是0x2100-0xFFFF,这部分可作为cstartup和isr的code区以及一般普通的code区,固定DATA_16的放置区域,
还有0x10000-0x18FFF这部分只能作为普通的code区,和固定DATA_20的放置区域
(msp2416使用的是msp430x体系结构,具体可看这篇文章http://blog.chinaunix.net/u2/66435/showart.php?id=2076097)
flash空间分为两部分
一部分叫main memory,由两块以上segments(512byte)组成,segment1-segmentn,每个segment由8个blocks(64byte)组成,
一部分叫information memory,都是256byte(图中的512有误),由四个64byte的segments组成。这四个segment主要做配置信息存储,其中segmentA是比较特殊的一个,他保存了这个cpu出产的一些矫正和配置信息,只有LOCKA被置0,segmentA中的内容才会被修改。
flash的功能有
1,byte/word写,执行flash写的时候,执行代码可以是在flash中或者ram中,flash中时,flash整个都会被挂起,写完了flash才会继续执行代码,而在ram中时,需要判断busy位,判断是否写完。
2,block写,这个写操作只能在ram中被执行。不知为啥有待测试。
3,segment擦除,擦除某个flashsegment,只要往这个segment的任意地址写任何数据,都会擦除对应segment区域
4,mass擦除,all擦除,过程同segment擦除,只是在控制寄存器中选择(注意:all擦除如果LOCKA没被置0,segmentA不会修改)
flash的频率,msp430x2xxx系列的基本都是257khz-476khz
flash的写必须是往一个空白地址写,如果已经写入需要先擦除。
flash有个控制位EEI可以允许在操作flash的中途发生中断。
阅读(2104) | 评论(0) | 转发(0) |