《(15)--第10章 存储器控制模块.pdf》由会员分享,可在线阅读,更多相关《(15)--第10章 存储器控制模块.pdf(96页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第10章章 存储器控制模块存储器控制模块10.1 RAM控制器控制器10.1.1 RAM控制器介绍RAM存储器一般可分为存储器一般可分为4段,每段最小段,每段最小2kB。MSP430F5529单片机的单片机的RAM共共8kB,另外还有一段,另外还有一段2kB的的UAB RAM空间。空间。每个段可通过每个段可通过RAM控制寄存器控制寄存器RCCTL0中的中的RCRSxOFF控控制位进行控制。制位进行控制。RCCTL0寄存器由密码保护,只有在字写入模式寄存器由密码保护,只有在字写入模式下写入正确的密码后,才可以修改下写入正确的密码后,才可以修改RCCTL0寄存器的内容。寄存器的内容。10.1.2
2、 RAM控制器操作1.活动模式活动模式在活动模式下,在活动模式下,RAM存储器可以随时进行读存储器可以随时进行读/写。如果写。如果某段的某段的RAM地址需要保存一些数据,那么不能关闭该地址需要保存一些数据,那么不能关闭该RAM段段。2.低功耗模式低功耗模式在低功耗模式下,在低功耗模式下,CPU处于关闭状态。一旦处于关闭状态。一旦CPU被关闭被关闭,RAM立即进入待机模式以减少漏电流。立即进入待机模式以减少漏电流。3.RAM关闭模式关闭模式RAM存储器内的每一段都可以通过置位各自的存储器内的每一段都可以通过置位各自的RCRSxOFF控制位独立关闭。读取关闭的控制位独立关闭。读取关闭的RAM段,返
3、回的数段,返回的数据是据是0。即使该段被重新上电,之前存储在关闭的。即使该段被重新上电,之前存储在关闭的RAM段内段内的所有数据都会丢失,无法读取。的所有数据都会丢失,无法读取。4.堆栈指针堆栈指针RAM段段程序堆栈位于程序堆栈位于RAM空间,如果需要执行中断服务程序,空间,如果需要执行中断服务程序,不能关闭保存堆栈的不能关闭保存堆栈的RAM段,否则将进入低功耗模式。段,否则将进入低功耗模式。5.USB缓冲区缓冲区在具有在具有USB模块的模块的MSP430单片机中,单片机中,USB缓冲区在缓冲区在RAM内。第内。第7段段RAM是专门为是专门为USB缓冲使用的。如果不需要缓冲使用的。如果不需要U
4、SB操作或在正常操作中没有使用时,可以通过置位操作或在正常操作中没有使用时,可以通过置位RCRS7OFF控制位关闭这个控制位关闭这个RAM段。段。10.1.3 RAM控制器寄存器RAM控制器仅具有一个控制寄存器控制器仅具有一个控制寄存器RCCTL0,为,为16位寄存器,初始位寄存器,初始状态为状态为8900h,具体介绍如下:,具体介绍如下:15141312111098RCKEY 读出是为96h,写入时必须为5Ah76543210RCRS7OFFRCRS6OFFRCRS5OFFRCRS4OFFRCR37OFFRCRS2OFFRCRS1OFFRCRS0OFF RCKEY:第:第815位,位,RAM
5、控制器密钥。读取的结果为控制器密钥。读取的结果为96h,写入,写入必须为必须为5Ah,否则此次操作将被忽略。,否则此次操作将被忽略。RCRSxOFF:第:第07位,位,RAM段开关控制位。置位相应控制位将段开关控制位。置位相应控制位将关闭相应关闭相应RAM段,关闭后,该段,关闭后,该RAM段内保存的数据将丢失。段内保存的数据将丢失。10.2 Flash控制器控制器Flash 存储器介绍FLASH存储器又称闪存,它结合了存储器又称闪存,它结合了ROM和和RAM的长处,的长处,不仅具备电子可擦除可编程不仅具备电子可擦除可编程(EEPROM)的性能,还不会断电丢的性能,还不会断电丢失数据同时可以快速
6、读取数据失数据同时可以快速读取数据(NVRAM的优势的优势),U盘和盘和MP3里里用的就是这种存储器。用的就是这种存储器。在过去的在过去的20年里,嵌入式系统一直使用年里,嵌入式系统一直使用ROM(EPROM)作作为它们的存储设备,然而近年来为它们的存储设备,然而近年来Flash全面代替了全面代替了ROM(EPROM)在嵌入式系统中的地位,用作存储在嵌入式系统中的地位,用作存储Bootloader以及操作系统或者程序代码或者直接当硬盘使用以及操作系统或者程序代码或者直接当硬盘使用(U盘盘)。FLASH存储器种类多样,其中最为常用的为存储器种类多样,其中最为常用的为NOR型和型和NAND型型FL
7、ASH。通常,通常,NOR型比较适合存储程序代码,其随机读写速度型比较适合存储程序代码,其随机读写速度快,但容量一般较小快,但容量一般较小(比如小于比如小于32 MB),且价格较高;,且价格较高;而而NAND型容量可达型容量可达1GB以上,价格也相对便宜,适合存以上,价格也相对便宜,适合存储数据,但一般只能整块读写数据,随机存取能力差。储数据,但一般只能整块读写数据,随机存取能力差。它们对数据的存取不是使用线性地址映射,而是通过寄它们对数据的存取不是使用线性地址映射,而是通过寄存器的操作串行存取数据。存器的操作串行存取数据。FLASH存储器分类在对在对Flash存储器进行写操作时,可以以字节或
8、字为单存储器进行写操作时,可以以字节或字为单位进行写操作,但对位进行写操作,但对Flash存储器进行擦除操作时,必须以存储器进行擦除操作时,必须以段为单位进行擦除。换句话说,即使要改变存储器中某个地段为单位进行擦除。换句话说,即使要改变存储器中某个地址处的字节内容,也必须首先将该字节所在的段先擦除,然址处的字节内容,也必须首先将该字节所在的段先擦除,然后再将该地址的字节内容写入,由于擦除操作会擦掉整段的后再将该地址的字节内容写入,由于擦除操作会擦掉整段的内容,所以建议将有用的内容先保存到内容,所以建议将有用的内容先保存到RAM中,然后再进行中,然后再进行擦除操作。擦除操作。擦除后擦除后Flas
9、h存储器的值为逻辑存储器的值为逻辑1。每一位可以单独通过。每一位可以单独通过编程,从编程,从1变到变到0,但是要将其重新编程从,但是要将其重新编程从0到到1需要擦除操作。需要擦除操作。Flash特点Flash存储全局变量或常量放在全局变量或常量放在Flash里,局部变量放在里,局部变量放在RAM区域区域中,程序段放在中,程序段放在flash中,程序开始运行时,放到中,程序开始运行时,放到RAM中运行,中运行,从从flash的主存储区第一段开始存放程序和全局变量,这个存的主存储区第一段开始存放程序和全局变量,这个存放位置是可以设定的,所以想利用放位置是可以设定的,所以想利用Flash空间进行读写
10、时,必空间进行读写时,必须绕开操作程序存储段。须绕开操作程序存储段。Flash控制器MSP430单片机的单片机的Flash控制器主要用来实现对控制器主要用来实现对Flash存存储器的烧写程序、写入数据和擦除功能,可对储器的烧写程序、写入数据和擦除功能,可对Flash存储器存储器进行字节进行字节/字字/长字(长字(32位)的寻址和编程。位)的寻址和编程。Flash存储器和控存储器和控制器的结构框图如图制器的结构框图如图4-45所示。所示。图图4-45 Flash存储器的结构框图存储器的结构框图Flash控制器模块包括控制器模块包括4个部分:控制寄存器和地址个部分:控制寄存器和地址/数据数据锁存器
11、、时序发生器、编程电压发生器及锁存器、时序发生器、编程电压发生器及Flash存储器。控制存储器。控制寄存器主要用来控制寄存器主要用来控制Flash存储器的擦除和写入,地址存储器的擦除和写入,地址/数据锁数据锁存器用来实现擦除与编程时执行锁存操作,时序发生器用来存器用来实现擦除与编程时执行锁存操作,时序发生器用来产生擦除与编程所需所有时序控制信号,编程电压产生器用产生擦除与编程所需所有时序控制信号,编程电压产生器用来产生来产生Flash写入和擦除操作所需的较高电压。写入和擦除操作所需的较高电压。Flash控制器时序发生器的原始时钟源自系统的时序发生器的原始时钟源自系统的ACLK,MCLK和和SM
12、CLK,经过分频器得到适当频率的时钟后产生,经过分频器得到适当频率的时钟后产生fX信号,这信号,这是送入时序发生器的真正原始时钟,时序发生器产生所有需是送入时序发生器的真正原始时钟,时序发生器产生所有需要的时钟都源于要的时钟都源于fX信号。信号。时序发生器用于产生时序发生器用于产生FLASH存储器阵列地址锁存器和数存储器阵列地址锁存器和数据锁存器的锁存信号及编程电压发生器需要的信号等,如图据锁存器的锁存信号及编程电压发生器需要的信号等,如图4-46所示。所示。这些时序信号对用户不可见,而用户能用的信号有这些时序信号对用户不可见,而用户能用的信号有BUSY、WAIT及及EMEX等。等。BUSY=
13、1表示锁存器正在被操作,表示锁存器正在被操作,这时不能对其访问。这时不能对其访问。WAIT=1 表明对表明对FLASH的操作已经完成。的操作已经完成。如果在对如果在对FLASH操作过程中出错,可用操作过程中出错,可用EMEX位紧急退出。位紧急退出。Flash时序发生器图图4-46 时序发生器的电路框图时序发生器的电路框图FLASH存储器结构Flash存储器分为主存储区、信息存储区和引导加载存存储器分为主存储区、信息存储区和引导加载存储器(储器(BSL)。如图)。如图4-47所示。所示。4个信息存储段,个信息存储段,A到到D。每个信息存储段包含。每个信息存储段包含128个字节,个字节,并且可以单
14、独擦除。并且可以单独擦除。4个引导加载存储器(个引导加载存储器(BSL)段,)段,A到到D。每个引导加载段。每个引导加载段有有512个字节,并且可以单独擦除。个字节,并且可以单独擦除。4个主存储区段,个主存储区段,A到到D。每个区段大小为。每个区段大小为64K个字节。个字节。图图4-47 FLASH存储器结构存储器结构MSP430F663x系列单片机的存储器结构图用户通过用户通过3个控制寄存器个控制寄存器(FCTL1,FCTL2及及FCTL3)的的设置设置(见表见表4-22),可以完成编程、擦除等操作。这,可以完成编程、擦除等操作。这3个寄存器个寄存器都在字地址空间,需用字命令对其读都在字地址
15、空间,需用字命令对其读/写,同时可用安全键值写,同时可用安全键值(口令码口令码)来防止错误的编程和擦除周期,口令出错将产生非来防止错误的编程和擦除周期,口令出错将产生非屏蔽中断请求。安全键值位于每个控制字的高字节,读时为屏蔽中断请求。安全键值位于每个控制字的高字节,读时为96H,写时为,写时为A5H。FLASH存储器模块的控制寄存器表表4-22 FLASH存储器模块寄存器存储器模块寄存器寄寄 存存 器器缩缩 写写寄存器类型寄存器类型地地 址址初始化状态初始化状态FLASH存储控制寄存器存储控制寄存器1FCTL1读读/写写0128HPUC后后09600HFLASH存储控制寄存器存储控制寄存器2F
16、CTL2读读/写写012AHPUC后后09642HFLASH存储控制寄存器存储控制寄存器3FCTL3读读/写写012CHPUC后后09618H中断使能寄存器中断使能寄存器1IE1读读/写写0000HPUC后复位后复位(1)CTL1:控制寄存器:控制寄存器1。FCTL1用于控制所有写用于控制所有写(编程编程)或者删除操作的有效操作,或者删除操作的有效操作,各位定义如下:各位定义如下:15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 安全键值,读时为 96H,写时为 0A5H BLKWRT WRT 保留 MERAS ERASE 保留 BLKWRT:块编程位。如果有较多的连
17、续数据要编程到:块编程位。如果有较多的连续数据要编程到某一段或某几段,则可选择这种方式,这样可缩短编程时间。某一段或某几段,则可选择这种方式,这样可缩短编程时间。在一段程序完毕,再编程其它段时,需对该位先复位再置位,在一段程序完毕,再编程其它段时,需对该位先复位再置位,在下一条写指令前在下一条写指令前WAIT位应为位应为1。0 未选用块编程方式;未选用块编程方式;1 选用块编程方式选用块编程方式控制寄存器FCTL1WRT:编程位。如对:编程位。如对FLASH写操作,发生非法访问,使写操作,发生非法访问,使ACCVIFG位置位;位置位;0 不编程;不编程;1 编程。编程。MERAS:主存擦除控制
18、位。该位控制:主存擦除控制位。该位控制FLASH主存储器主存储器0n段段一起被擦除。但不包含信息段。一起被擦除。但不包含信息段。0 不擦除;不擦除;1 主存全擦除,主存全擦除,对主存空写时启动擦除操作对主存空写时启动擦除操作,完成后,完成后MERAS自动复位。自动复位。ERASE:擦除一段控制位。:擦除一段控制位。MERAS与与ERASE联合擦除控制联合擦除控制见下表。见下表。0 不擦除;不擦除;1 擦除一段。擦除一段。由空写指令带入段号来指定擦除哪一段由空写指令带入段号来指定擦除哪一段,操作,操作完成后自动复位。完成后自动复位。表表4-23 MERAS和和ERASE擦除控制擦除控制MERAS
19、ERASE擦擦 除除 说说 明明00不擦除不擦除01只擦除一段只擦除一段10擦除主存储器擦除主存储器11擦除所有的主存储和信息存储段擦除所有的主存储和信息存储段(2)FCTL2:控制寄存器:控制寄存器2。FCTL2中各位主要完成进入时序发生器的时钟的定义,中各位主要完成进入时序发生器的时钟的定义,各位定义如下:各位定义如下:15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 安全键值 096H(读),0A5H(写)SSEL1 SSEL0 FN5 FN4 FN3 FN2 FN1 FN0 控制寄存器FCTL2SSEL1,SSEL0:选择时钟源。:选择时钟源。00 ACLK;
20、01 MCLK;10 SMCLK;11 SMCLK。FN5FN0:分频系数选择位。:分频系数选择位。000000 直通;直通;000001 2分频;分频;000010 3分频;分频;111111 64分频。分频。(3)FCTL3:控制寄存器:控制寄存器3。FCTL3寄存器用于控制寄存器用于控制FLASH存储器操作,保存相应的存储器操作,保存相应的状态标志和错误条件。对该寄存器的修改无限制,状态标志和错误条件。对该寄存器的修改无限制,WAIT位由位由PUC复位,复位,KEYV由由POR复位。各位定义如下:复位。各位定义如下:15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
21、0 安全键值:096H,(读),0A5H(写)保留 保留 EMEX LOCK WAIT ACCVIFG KEYV BUSY EMEX:紧急退出位。对:紧急退出位。对FLASH的操作失控时使用该位的操作失控时使用该位作紧急处理。作紧急处理。0 无作用;无作用;1 立即停止对立即停止对FLASH的操作。的操作。控制寄存器FCTL3LOCK:锁定位,给已经编程好的:锁定位,给已经编程好的FLASH存储器加锁。存储器加锁。该位可由用户程序写入,也可由硬件自动设置。该位可由用户程序写入,也可由硬件自动设置。可在编程、段擦除、主存擦除期间置位,置位后当前操可在编程、段擦除、主存擦除期间置位,置位后当前操作
22、能正常结束。作能正常结束。在段编程模式中,如果在段编程模式中,如果BLKWRT=1,且在,且在WAIT=1时,时,LOCK位被置位,则位被置位,则BLKWRT和和WAIT都将复位,段编程模式都将复位,段编程模式结束。如果在段编程模式中发生非法访问,则结束。如果在段编程模式中发生非法访问,则ACCVIFG和和LOCK位将置位。位将置位。0 不加锁,不加锁,FLASH存储器可读、可写、可擦除;存储器可读、可写、可擦除;1 加锁,加锁的加锁,加锁的FLASH存储器可读、不可写、不可擦除。存储器可读、不可写、不可擦除。WAIT:等待指示信号位,该位只读。在段编程模式中指:等待指示信号位,该位只读。在段
23、编程模式中指示示FLASH存储器可以接受编程数据。存储器可以接受编程数据。如果如果BLKWRT位复位或位复位或LOCK位置位,则位置位,则WAIT自动复位,自动复位,段编程结束使得段编程结束使得WAIT置位。置位。在在BLKWRT=1时,每一次成功地写入之后,时,每一次成功地写入之后,BUSY位被位被复位,指示其它的字或字节单元可以被编程操作。复位,指示其它的字或字节单元可以被编程操作。0 FLASH存储器没有准备好下一字节存储器没有准备好下一字节/字写入;字写入;1 FLASH存储器准备好下一字节存储器准备好下一字节/字写入。字写入。ACCVIFG:非法访问中断标志位。当对:非法访问中断标志
24、位。当对FLASH阵列进阵列进行编程或擦除操作时不能访问行编程或擦除操作时不能访问FLASH,否则将使得该位置位。,否则将使得该位置位。如果非法访问中断允许,同时总的中断也允许,则将执行如果非法访问中断允许,同时总的中断也允许,则将执行NMI中断程序。中断程序。0 没有对没有对FLASH存储器的非法访问,没有中断请求。存储器的非法访问,没有中断请求。1 有对有对FLASH存储器的非法访问,有中断请求。存储器的非法访问,有中断请求。KEYV:安全键值:安全键值(口令码口令码)出错标志位。出错标志位。0 对对3个控制寄存器的访问,写入时高字节是个控制寄存器的访问,写入时高字节是0A5H,FCTLx
25、口令写入正确;口令写入正确;1 对对3个控制寄存器的访问,写入时高字节不是个控制寄存器的访问,写入时高字节不是0A5H,同时引发同时引发PUC信号。信号。KEYV不会自动复位,须用软件复位,不会自动复位,须用软件复位,FCTLx口令写入口令写入错误。错误。BUSY:忙标志位。该位表示:忙标志位。该位表示FLASH模式现在的状态,模式现在的状态,是否正在对其操作,现在忙与否。该位只读,为用户提供一是否正在对其操作,现在忙与否。该位只读,为用户提供一个判断标志位。个判断标志位。每次编程或擦除之前都应该检查每次编程或擦除之前都应该检查BUSY位。每次编程或位。每次编程或擦除启动以后,时序发生器将自动
26、设置该位为擦除启动以后,时序发生器将自动设置该位为1,操作完成后,操作完成后,BUSY位自动复位。位自动复位。0 FLASH存储器不忙;存储器不忙;1 FLASH存储器忙。存储器忙。(4)IE1:中断使能寄存器。:中断使能寄存器。7 6 5 4 3 2 1 0 ACCVIE ACCVIE:非法访问中断使能位。:非法访问中断使能位。0 不允许中断;不允许中断;1 允许中断。允许中断。由于该寄存器的其它位用于其它模块,可以通过由于该寄存器的其它位用于其它模块,可以通过BIS.B或或BIC.B对该位进行设置,一般不用对该位进行设置,一般不用MOV.B或或CLR.B。中断使能寄存器FLASH存储器绝大
27、多数时间工作在读模式下,这时数据、存储器绝大多数时间工作在读模式下,这时数据、地址锁存器是透明的,时序发生器和电压发生器关闭。地址锁存器是透明的,时序发生器和电压发生器关闭。FLASH模块在模块在POR信号之后,处于默认的读模式,不须信号之后,处于默认的读模式,不须对控制位作任何操作,就可读出其中数据。对控制位作任何操作,就可读出其中数据。当对当对FLASH存储器进行编程或擦除操作时,需要对存储器进行编程或擦除操作时,需要对FLASH的控制寄存器的控制寄存器FCTL1、FCTL2和和FCTL3进行适当的设进行适当的设置,以确保编程置,以确保编程/擦除操作能正确进行。擦除操作能正确进行。FLAS
28、H存储器的操作由于由于FLASH存储器由很多相对独立的段组成,因此可在存储器由很多相对独立的段组成,因此可在一个段中运行程序,而对另一个段进行擦除或写入数据等操一个段中运行程序,而对另一个段进行擦除或写入数据等操作。作。如果程序的运行和擦除如果程序的运行和擦除(或编程或编程)的段为同一段,则标志位的段为同一段,则标志位BUSY=1,从而使得,从而使得CPU挂起,直至编程周期结束,标志位挂起,直至编程周期结束,标志位BUSY=0时为止,这时才能继续时为止,这时才能继续CPU的运行,执行下一条指的运行,执行下一条指令。令。正在执行编程或擦除等操作的正在执行编程或擦除等操作的FLASH段是不能被访问
29、的,段是不能被访问的,因为这时该段是与片内地址数据总线暂时断开的。因为这时该段是与片内地址数据总线暂时断开的。FLASH模块包含读出、擦除及写入模块包含读出、擦除及写入3类操作:类操作:其中读出很简单,可使用各种寻址方式,借助指令就可以其中读出很简单,可使用各种寻址方式,借助指令就可以轻松完成;轻松完成;擦除可分为单段擦除和整个模块擦除;擦除可分为单段擦除和整个模块擦除;写入分为字写入、字节写入、字连续写入和字节连续写入,写入分为字写入、字节写入、字连续写入和字节连续写入,同时也可分为经过同时也可分为经过 JTAG接口的访问与用户程序的访问。接口的访问与用户程序的访问。擦除与写入需要按其固有的
30、操作过程,通过控制擦除与写入需要按其固有的操作过程,通过控制FLASH模块的三个控制字中的相应位来完成,只有控制位的唯一组模块的三个控制字中的相应位来完成,只有控制位的唯一组合才能实现相应的功能,表合才能实现相应的功能,表4-24为正确的控制位组合。为正确的控制位组合。表表4-24 编程与擦除控制位编程与擦除控制位在表在表4-24以外的控制位组合下操作以外的控制位组合下操作FLASH模块会引起非模块会引起非法访问,将使标志位法访问,将使标志位ACCVIFG置位。表置位。表4-24中所列各功能在中所列各功能在被执行期间被执行期间(BUSY=1),不对,不对FLASH进行读操作,这时出现进行读操作
31、,这时出现在数据总线的数总是在数据总线的数总是3FFFH。功功 能能BLKWRT WRTMERASERASEBUSYWAITLOCK字或字节写入字或字节写入块写入块写入段擦除并写入段擦除并写入块擦除块擦除(全部主存储器段全部主存储器段)全部擦除并写入全部擦除并写入01000110000001100101000000100000001.擦除操作擦除操作FLASH存储器各位的缺省值为存储器各位的缺省值为1,经过一次成功的擦除,经过一次成功的擦除操作各位置位。操作各位置位。对对FLASH要写入数据,必须先擦除相应的段,即使对某要写入数据,必须先擦除相应的段,即使对某段中的某位编程,也必须擦除该位所在
32、的段。段中的某位编程,也必须擦除该位所在的段。对对FLASH存储器的擦除必须是整段地进行存储器的擦除必须是整段地进行(可以一段、几可以一段、几段或整个模块进行段或整个模块进行),擦除之后各位为,擦除之后各位为1。FLASH存储器的操作(擦除)表表4-25 擦除模式设置列表擦除模式设置列表MERASERASE擦擦 除除 模模 式式01段擦除段擦除10扇区擦除扇区擦除11块擦除块擦除(所有主存储器的所有主存储器的4个扇区都被擦除个扇区都被擦除,信息存储器信息存储器AD及及BSL引导装载程序段引导装载程序段AD不被擦除不被擦除)Flash存储器的最小擦除单元是段,通过存储器的最小擦除单元是段,通过M
33、ERAS和和ERASE控制位可选择控制位可选择3种擦除模式,具体配置如表种擦除模式,具体配置如表4-25所示。所示。擦除操作的步骤如下:擦除操作的步骤如下:(1)选择适当的时钟源和分频因子,为时序发生器提供选择适当的时钟源和分频因子,为时序发生器提供正确的输入时钟。正确的输入时钟。(2)如果如果LOCK=1,则将它复位。,则将它复位。(3)查查BUSY标志位,只有当标志位,只有当BUSY=0时才可以进入下一时才可以进入下一步。步。(4)如果擦除一段,则如果擦除一段,则ERASE=1。(5)如果擦除多段,则如果擦除多段,则MERAS=1。(6)如果整个如果整个FLASH全擦除,则全擦除,则ERA
34、SE=1 且且MERAS=1。(7)对擦除的地址范围内任意位置作一次空写入,用以对擦除的地址范围内任意位置作一次空写入,用以启动擦除操作,如启动擦除操作,如CLR&0F012H。如果空写的地址在不能。如果空写的地址在不能执行擦除操作的段地址范围内,则写入操作不起作用。执行擦除操作的段地址范围内,则写入操作不起作用。正确完成擦除操作须满足的条件如下:正确完成擦除操作须满足的条件如下:(1)在擦除周期,选择的时钟源始终有效。在擦除周期,选择的时钟源始终有效。(2)在擦除周期,不修改分频因子。如果时钟源改变或分在擦除周期,不修改分频因子。如果时钟源改变或分频因子改变,容易引起频因子改变,容易引起FL
35、ASH擦除时序的失控。擦除时序的失控。(3)在在BUSY=1期间不再访问所操作的段,这包括:不从期间不再访问所操作的段,这包括:不从中读出,不对它写入或不对这一段再次进行擦除操作。如果中读出,不对它写入或不对这一段再次进行擦除操作。如果发生这些操作,则会使发生这些操作,则会使ACCVIFG置位,并产生置位,并产生 NMI中断。中断。(4)电源电压应符合芯片的相应要求,只允许有较小的容电源电压应符合芯片的相应要求,只允许有较小的容差。电压的跌落容易使电压超出正常的范围,而不能完成操差。电压的跌落容易使电压超出正常的范围,而不能完成操作。作。对对FLASH的擦除要做以下的擦除要做以下4件事:件事:
36、(1)对对FLASH控制寄存器的控制位进行的设置;控制寄存器的控制位进行的设置;(2)查询查询BUSY位;位;(3)空写一次;空写一次;(4)等待。等待。(1)擦除周期)擦除周期对需要擦除的段地址范围内执行一次空写操作(写入对需要擦除的段地址范围内执行一次空写操作(写入0)将启动一次擦除,擦除周期时序如图将启动一次擦除,擦除周期时序如图4-48所示。所示。擦除开始时,擦除开始时,Flash控制器需要产生适当的时序信号和控制器需要产生适当的时序信号和正确的编程电压,然后由时序发生器控制整个擦除过程,正确的编程电压,然后由时序发生器控制整个擦除过程,擦除完毕,编程电压撤销。擦除完毕,编程电压撤销。
37、注意:在空写后(擦除开始后),注意:在空写后(擦除开始后),BUSY标志位立即标志位立即置位,并且在整个擦除周期内保持置位,当擦除完成后置位,并且在整个擦除周期内保持置位,当擦除完成后BUSY、MERAS和和ERASE标志位自动清除。标志位自动清除。图图4-48 擦除周期时序擦除周期时序(2)各存储器的擦除)各存储器的擦除主存储器包含一个或多个扇区,每个扇区可以采用扇主存储器包含一个或多个扇区,每个扇区可以采用扇区擦除模式进行单独擦除,也可以通过块擦除模式擦除主区擦除模式进行单独擦除,也可以通过块擦除模式擦除主存储器下的所有扇区。存储器下的所有扇区。信息存储段信息存储段AD及及BSL引导装载程
38、序段引导装载程序段AD只可采只可采用段擦除模式擦除,若采用扇区擦除或块擦除模式,将不用段擦除模式擦除,若采用扇区擦除或块擦除模式,将不能擦除这些存储器。能擦除这些存储器。2.FLASH编程操作编程操作FLASH存储器主要用于保存用户程序或重要的数据、存储器主要用于保存用户程序或重要的数据、信息等一些掉电后不丢失的数据,只有通过对信息等一些掉电后不丢失的数据,只有通过对FLASH的编的编程操作,才能将这些数据写入程操作,才能将这些数据写入FLASH存储器。存储器。有三种方式可以实现有三种方式可以实现FLASH存储编程:单个字或字节存储编程:单个字或字节写入,多个字或字节写入,块写入。写入,多个字
39、或字节写入,块写入。FLASH存储器的操作(编程)对对FLASH编程应按如下步骤进行:编程应按如下步骤进行:(1)选择适当的时钟源以及合适的分频因子。选择适当的时钟源以及合适的分频因子。(2)如果如果LOCK=1,则将它复位。,则将它复位。(3)查询查询BUSY位,直到位,直到BUSY=0时才可进入下一步。时才可进入下一步。(4)如果写入单字或单字节,则将设置如果写入单字或单字节,则将设置WRT=1。(5)如果是块写入或多字、多字节顺序写入,则将设置如果是块写入或多字、多字节顺序写入,则将设置BLKWRT=1,WRT=1。(6)将数据写入选定地址时启动时序发生器,在时序发将数据写入选定地址时启
40、动时序发生器,在时序发生器控制下完成整个过程。生器控制下完成整个过程。块写入可用于在块写入可用于在FLASH段中的一个连续的存储区域写段中的一个连续的存储区域写入一系列数据。一个块为入一系列数据。一个块为64Byte长度,如图长度,如图4-44所示。所示。块开始在块开始在0XX00H、0XX40H、0XX80H、0XXC0H等地等地址,块结束在址,块结束在0XX3FH、0XX7FH、0XXBFH、0XXFFH等地等地址。址。可以写入连续数据的存储器块有可以写入连续数据的存储器块有0XX00H-0XX3FH、0XX40H-0XX7FH、0XX80H-0XXBFH、0XXC0H-0XXFFH。图图
41、4-44 4K容量的容量的FLASH段与地址的对应关系段与地址的对应关系块写操作在块写操作在64Byte的分界处需要相应的操作配合,它们的分界处需要相应的操作配合,它们包括以下操作:包括以下操作:(1)等待等待WAIT位,直到位,直到WAIT=1,表明最后一个字或字节,表明最后一个字或字节写操作结束。写操作结束。(2)将控制位将控制位BLKWRT复位。复位。(3)保持保持BUSY位为位为1,直到编程电压撤离,直到编程电压撤离FLASH模块。模块。(4)在新块编程之前,等待在新块编程之前,等待Trcv(编程电压恢复时间)时(编程电压恢复时间)时间。间。在写周期中,必须满足以下条件:在写周期中,必
42、须满足以下条件:(1)被选择的时钟源在写过程中保持有效。被选择的时钟源在写过程中保持有效。(2)分频因子不发生改变。分频因子不发生改变。(3)在在BUSY=1期间,不访问期间,不访问FLASH存储器模块。存储器模块。(4)电源电压应符合芯片的相应要求。电源电压应符合芯片的相应要求。对对FLASH的写入要做以下的写入要做以下4件事:件事:(1)对对FLASH控制寄存器的控制位进行设置。控制寄存器的控制位进行设置。(2)查询查询BUSY位。位。(3)写一个数据。写一个数据。(4)继续写,一直到写完。继续写,一直到写完。BLKWRTWRT写写 模模 式式01字节字节/字写入字写入10长字写入长字写入
43、11长字块写入长字块写入表表4-26 写模式配置列表写模式配置列表单字或单字节写入与块写入的控制时序是不一样的。单字或单字节写入与块写入的控制时序是不一样的。Flash存储器的写模式可通过存储器的写模式可通过BLKWRT和和WRT控制位进行选控制位进行选择,具体配置如表择,具体配置如表4-26所示。所示。(1)字节)字节/字和长字写入模式字和长字写入模式字节字节/字和长字写入模式的写入周期时序图如图字和长字写入模式的写入周期时序图如图4-49所示。所示。在写入过程中,在写入过程中,BUSY忙标志位一直置位。忙标志位一直置位。这两种写入模式均可以从这两种写入模式均可以从Flash中启动,也可以从
44、中启动,也可以从RAM中启动,与擦除操作相同,从中启动,与擦除操作相同,从Flash中启动时,中启动时,CPU停止;停止;从从RAM中启动时,中启动时,CPU可继续运行。可继续运行。图图4-49 单字或单字节写入周期单字或单字节写入周期(2)长字块写入模式)长字块写入模式当有许多连续的字节或字需要编程写入时,长字块写入当有许多连续的字节或字需要编程写入时,长字块写入模式能够提高模式能够提高Flash的写入速度。长字块写入模式周期时序的写入速度。长字块写入模式周期时序图如图图如图4-50所示。所示。长字块写入模式不能从长字块写入模式不能从Flash存储器中启动,只能从存储器中启动,只能从RAM中
45、启动。在整个块写入的过程中,中启动。在整个块写入的过程中,BUSY忙标志位置位。忙标志位置位。以一个长字(以一个长字(4Byte)为单位地写入,每个长字之间必须检)为单位地写入,每个长字之间必须检查查WAIT标志位,当标志位,当WAIT标志位置位时,表示已完成前一个标志位置位时,表示已完成前一个长字的写入,可以写入后一个长字。长字的写入,可以写入后一个长字。在当前块数据写完之后,在当前块数据写完之后,BLKWRT控制位必须清零,控制位必须清零,且在一个块的写入之前必须置位。当且在一个块的写入之前必须置位。当BUSY标志位清零后,标志位清零后,表示当前块已完成写入操作,可以对下一块执行写入操作。
46、表示当前块已完成写入操作,可以对下一块执行写入操作。图图4-50 块写入周期块写入周期3.FLASH错误操作的处理错误操作的处理在写入在写入FLASH控制寄存器控制参数时,可引发以下错误:控制寄存器控制参数时,可引发以下错误:如果写入高字节口令码错误,则引发如果写入高字节口令码错误,则引发KEYV置位。置位。在对在对FLASH操作期间读操作期间读FLASH内容,会引发内容,会引发ACCVFIG置位。置位。建议用户程序在进行建议用户程序在进行FLASH操作之前先停掉看门狗定时操作之前先停掉看门狗定时器,等操作结束之后再打开看门狗。否则在对器,等操作结束之后再打开看门狗。否则在对FLASH进行操进
47、行操作时,如果这时看门狗定时器的数据将近尾声,则看门狗定作时,如果这时看门狗定时器的数据将近尾声,则看门狗定时器会溢出。时器会溢出。FLASH存储器的操作(错误处理)所有的所有的FLASH类型的类型的MSP430器件的器件的0段都包含有中断段都包含有中断向量等重要的程序代码,如果对其进行擦除操作,将会引起向量等重要的程序代码,如果对其进行擦除操作,将会引起严重的后果。严重的后果。建议用户程序在进行建议用户程序在进行FLASH操作之前,先将该段的重要操作之前,先将该段的重要数据(或程序代码)保存到数据(或程序代码)保存到RAM中或写入到其它暂时未用的中或写入到其它暂时未用的段中,等待该段操作完毕
48、再还原这些数据(或程序代码);段中,等待该段操作完毕再还原这些数据(或程序代码);同时一定不要使正在执行的程序处在正要被擦除的段中;也同时一定不要使正在执行的程序处在正要被擦除的段中;也不要在不要在FLASH操作期间允许中断发生。操作期间允许中断发生。4.Flash控制器中断控制器中断Flash控制器有两个中断源:控制器有两个中断源:ACCVIFG和和KEYV。当产生非法访问时,当产生非法访问时,ACCVIFG标志位置位。如使能标志位置位。如使能ACCVIE,ACCVIFG标志位将产生不可屏蔽中断,所以当标志位将产生不可屏蔽中断,所以当ACCVIFG请求中断时,请求中断时,GIE控制位无须置位
49、。控制位无须置位。当利用错误的密码配置当利用错误的密码配置Flash控制器寄存器时,将置位控制器寄存器时,将置位KEYV密钥错误标志位,此时将立即产生密钥错误标志位,此时将立即产生PUC复位信号,系复位信号,系统将会被复位。统将会被复位。FLASH存储器的操作(中断)5.Flash存储器编程方法存储器编程方法对对MSP430 Flash型单片机有型单片机有3种烧写程序的方法:通过种烧写程序的方法:通过JTAG接口编程、通过接口编程、通过BSL引导加载程序编程和通过用户自定引导加载程序编程和通过用户自定义方式编程,所有方式都支持在线编程。义方式编程,所有方式都支持在线编程。MSP430单片机单片
50、机CPU对对Flash存储器的在线和外部用户自存储器的在线和外部用户自定义写入方式如图定义写入方式如图4-51所示。用户可以选择通过所示。用户可以选择通过UART、SPI等方式进行编程。等方式进行编程。用户可以自行开发软件用于接收数据或对用户可以自行开发软件用于接收数据或对Flash存储器进存储器进行编程。由于这种编程方式是由用户定义开发的,所以它完行编程。由于这种编程方式是由用户定义开发的,所以它完全能够用户化,从而符合用户编程、擦除或者更新全能够用户化,从而符合用户编程、擦除或者更新Flash存储存储器的实际应用需求。器的实际应用需求。FLASH存储器的操作(编程方法)图图4-51 用户自