S0814FreescaleHCS08单片机FLASH编程应用_第1页
S0814FreescaleHCS08单片机FLASH编程应用_第2页
S0814FreescaleHCS08单片机FLASH编程应用_第3页
S0814FreescaleHCS08单片机FLASH编程应用_第4页
S0814FreescaleHCS08单片机FLASH编程应用_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Copyright Yang Ming. 2011.Electronics and Information Engineering Department of Huazhong University of Science and TechnologyWuhan, Hubei 430074, P.R. ChinaFreescale 单片机原理及应用单片机原理及应用 Freescale HCS08单片机单片机FLASH编程应用编程应用Copyright Yang Ming. 2011.Electronics and Information Engineering Department of Hua

2、zhong University of Science and TechnologyWuhan, Hubei 430074, P.R. ChinaSlide 1Slide 1Freescale HCS08单片机单片机FLASH编程应用编程应用: 理解HCS08的FLASH模块原理 FLASH的特性 FLASH的块保护 加密 向量重定位 学会FLASH模块设计 FLASH的在系统编程 在系统擦除 在系统写入 进一步认识“对MCU外部管脚/内部模块的控制正是通过Regs的控制来实现”Copyright Yang Ming. 2011.Electronics and Information Engi

3、neering Department of Huazhong University of Science and TechnologyWuhan, Hubei 430074, P.R. ChinaS08系列单片机内部的的擦除和写入工作不需要外部特殊高电压,支持两种编程功能:在电路编程(ICP,In-circuit programming)在应用编程(IAP,In-application programming)对FLASH的擦除操作都是以页(512B)为单位的,而写入操作则以字节为单位,且支持标准和突发两种模式。擦除操作是将存储单元的0变成1,而写入操作恰好相反,是将存储单元的1变成0。Sli

4、de 212.1 概述概述Copyright Yang Ming. 2011.Electronics and Information Engineering Department of Huazhong University of Science and TechnologyWuhan, Hubei 430074, P.R. China在高页寄存器空间,共有6个和FLASH模块功能相关的8位寄存器: FLASH保护寄存器(FPROT,FLASH Protection Register) FLASH选项寄存器(FOPT, FLASH Options Register) FLASH时钟分频寄存器(

5、FCDIV,FLASH Clock Divider Register) FLASH配置寄存器(FCNFG,FLASH Configuration Register) FLASH命令寄存器(FCMD,FLASH Command Register) FLASH状态寄存器(FSTAT,FLASH Status Register)Slide 312.2 FLASH功能及寄存器功能及寄存器Copyright Yang Ming. 2011.Electronics and Information Engineering Department of Huazhong University of Scienc

6、e and TechnologyWuhan, Hubei 430074, P.R. China块保护: FLASH 块保护功能使得FLASH 可以按页(512字节)被保护,被保护的页不会被误擦除或者误编程。 通过寄存器FPROT控制 复位期间,地址为$FFBD的非易失性保护寄存器NVPROT中的内容被自动复制到FLASH保护寄存器FPROT中Slide 412.2 FLASH功能及寄存器功能及寄存器Copyright Yang Ming. 2011.Electronics and Information Engineering Department of Huazhong University

7、 of Science and TechnologyWuhan, Hubei 430074, P.R. China块保护: 当允许块保护时,块保护区域从任意一个512字节边界到FLASH的最末地址处$FFFF。 FPS位用来设定未保护区域最末地址的高位地址,此最末地址值由FPS7:FPS1后接9位1构成把NVPROT设置为%11101110,保护FLASH的$F000$FFFF区域的汇编代码如下:ORG$FFBD ; NVPROT寄存器地址DC.B $EE; FLASH的$F000$FFFF空间设为保护区域Slide 512.2 FLASH功能及寄存器功能及寄存器Copyright Yang

8、Ming. 2011.Electronics and Information Engineering Department of Huazhong University of Science and TechnologyWuhan, Hubei 430074, P.R. China加密: S08系列MCU内部含有加密电路,用于防止对Flash和RAM存储空间未经授权的非法访问。 在保密的存储器内执行的程序能够正常访问任何MCU存储器空间和资源。通过非加密存储空间或背景调试接口执行的程序去访问加密存储空间,都会被阻止(写操作被忽略,读操作返回全0)。 通过寄存器FOPT控制 复位期间,地址为$F

9、FBF的非易失性保护寄存器NVOPT中的内容被自动复制到FLASH选项寄存器FOPT中Slide 612.2 FLASH功能及寄存器功能及寄存器Copyright Yang Ming. 2011.Electronics and Information Engineering Department of Huazhong University of Science and TechnologyWuhan, Hubei 430074, P.R. China加密: 通过寄存器FOPT控制 复位期间,地址为$FFBF的非易失性保护寄存器NVOPT中的内容被自动复制到FLASH选项寄存器FOPT中Sli

10、de 712.2 FLASH功能及寄存器功能及寄存器Copyright Yang Ming. 2011.Electronics and Information Engineering Department of Huazhong University of Science and TechnologyWuhan, Hubei 430074, P.R. China向量重定位: 通过寄存器FOPT控制 可以通过编程FOPT寄存器中的FNORED位为0来允许向量重定位功能Slide 812.2 FLASH功能及寄存器功能及寄存器Copyright Yang Ming. 2011.Electronic

11、s and Information Engineering Department of Huazhong University of Science and TechnologyWuhan, Hubei 430074, P.R. ChinaFLASH的擦写 擦除和写入时间 在对FLASH进行任何擦除或编程之前,必须写FLASH时钟分频寄存器FCDIV,使得FLASH模块的内部时钟FCLK的频率(fFCLK)范围落在200KHz150KHz范围。fFCLK = fBUS (8PRDIV8(DIV5:0 + 1)Slide 912.2 FLASH功能及寄存器功能及寄存器Copyright Yang

12、 Ming. 2011.Electronics and Information Engineering Department of Huazhong University of Science and TechnologyWuhan, Hubei 430074, P.R. ChinaFLASH的擦写 擦除和写入时间 在对FLASH进行任何擦除或编程之前,必须写FLASH时钟分频寄存器FCDIV,使得FLASH模块的内部时钟FCLK的频率(fFCLK)范围落在200KHz150KHz范围。fFCLK = fBUS (8PRDIV8(DIV5:0 + 1)Slide 1012.2 FLASH功能及

13、寄存器功能及寄存器Copyright Yang Ming. 2011.Electronics and Information Engineering Department of Huazhong University of Science and TechnologyWuhan, Hubei 430074, P.R. ChinaFLASH的擦写 擦除和编程命令 FLASH 存储器的编程和擦除操作都由内建的算法逻辑完成,用户程序只要向FLASH命令寄存器写入相应的命令即可调用这些算法逻辑。 和FLASH擦除、写入相关的寄存器有FLASH配置寄存器FCNFG、FLASH命令寄存器FCMD和FLAS

14、H状态寄存器FSTAT。Slide 1112.2 FLASH功能及寄存器功能及寄存器当KEYACC位设为0时,向地址$FFB0$FFB7(NVBACKKEY)的写操作被认作编程或擦除命令的开始。当KEYACC位设为1时,向地址NVBACKKEY 的写操作被认作写比较密钥。Copyright Yang Ming. 2011.Electronics and Information Engineering Department of Huazhong University of Science and TechnologyWuhan, Hubei 430074, P.R. ChinaFLASH的擦写

15、 擦除和编程命令 在普通用户模式下,仅有5种FLASH命令。这5种命令通过设定FLASH命令寄存器FCMD来产生。Slide 1212.2 FLASH功能及寄存器功能及寄存器Copyright Yang Ming. 2011.Electronics and Information Engineering Department of Huazhong University of Science and TechnologyWuhan, Hubei 430074, P.R. ChinaFLASH的擦写 擦除和编程命令 5种FLASH命令的产生还需要结合FLASH模块当前的工作状态来产生。Slide

16、 1312.2 FLASH功能及寄存器功能及寄存器Copyright Yang Ming. 2011.Electronics and Information Engineering Department of Huazhong University of Science and TechnologyWuhan, Hubei 430074, P.R. ChinaFLASH的擦写 擦除和编程命令 5种FLASH命令的产生还需要结合FLASH模块当前的工作状态来产生。Slide 1412.2 FLASH功能及寄存器功能及寄存器Copyright Yang Ming. 2011.Electronics

17、 and Information Engineering Department of Huazhong University of Science and TechnologyWuhan, Hubei 430074, P.R. ChinaFLASH的擦写 流程Slide 1512.2 FLASH功能及寄存器功能及寄存器Copyright Yang Ming. 2011.Electronics and Information Engineering Department of Huazhong University of Science and TechnologyWuhan, Hubei 43

18、0074, P.R. ChinaFLASH的擦写 流程Slide 1612.2 FLASH功能及寄存器功能及寄存器突发编程用于编程连续的FLASH字节Copyright Yang Ming. 2011.Electronics and Information Engineering Department of Huazhong University of Science and TechnologyWuhan, Hubei 430074, P.R. China若MC9S08AW60的总线时钟为4 MHz。写出对Flash模块时钟FCLK进行初始化的子程序。分析: Flash时钟频率必须落在200

19、150kHz。根据表14-5可知,总线频率为4 MHz时,PRDIV8=0,DIV5:0=19=010011B,能够满足FCLK时钟要求。另外,FCDIV寄存器属于在MCU复位后只能写一次的寄存器。Slide 1712.3 FLASH编程举例编程举例INCLUDE MC9S08AW60.inc; 包含头文件initFCDIVEQU%00010011; PRDIV8=0, DIV5:0=19 ORG $1860FCLK_Init:; FLASH时钟初始化子程序LDAinitFCDIVSTAFCDIV RTSCopyright Yang Ming. 2011.Electronics and Inf

20、ormation Engineering Department of Huazhong University of Science and TechnologyWuhan, Hubei 430074, P.R. ChinaMC9S08AW60通过SCI从PC的COM口接收4Byte数据并存储到内部RAM空间,一旦4Byte数据接收完毕就把它们存入起始地址为$6000的FLASH空间保存。 参考代码:Slide 1812.3 FLASH编程举例编程举例INCLUDE MC9S08AW60.inc; 包含头文件initFCDIVEQU%00010011; PRDIV8=0, DIV5:0=19,针

21、对4MHz总线的取值 ORG$0070Rx_DataDS4; 接收数据变量区Rx_CntDS1; 接收个数 ORG $8000FCLK_Init:; FLASH时钟初始化子程序LDAinitFCDIVSTAFCDIV RTS FLASHErase1:; 擦除一页(512 字节)子程序; 代码略,参见例14.2RTS Copyright Yang Ming. 2011.Electronics and Information Engineering Department of Huazhong University of Science and TechnologyWuhan, Hubei 430

22、074, P.R. ChinaMC9S08AW60通过SCI从PC的COM口接收4Byte数据并存储到内部RAM空间,一旦4Byte数据接收完毕就把它们存入起始地址为$6000的FLASH空间保存。 参考代码:Slide 1912.3 FLASH编程举例编程举例FLASHProg1:; 字节编程子程序; 代码略,参见例14.3RTS DoOnStack:; 把FLASH代码复制到堆栈并执行的子程序; 代码略,参见例14.2RTS SpSub:; 堆栈中执行的代码函数; 代码略,参见例14.2SpSubEnd: RTSSpSubSize:EQU(*-SpSub) SCI1_Init:; SCI1

23、模块初始化子程序,参见例14.2MOV#$00, SCI1BDH; 先写高8位,再写低8位MOV#$1A, SCI1BDL ; 4MHz总线时钟产生9600baudCopyright Yang Ming. 2011.Electronics and Information Engineering Department of Huazhong University of Science and TechnologyWuhan, Hubei 430074, P.R. ChinaMC9S08AW60通过SCI从PC的COM口接收4Byte数据并存储到内部RAM空间,一旦4Byte数据接收完毕就把它们存

24、入起始地址为$6000的FLASH空间保存。 参考代码:Slide 2012.3 FLASH编程举例编程举例SCI1_Init:; SCI1模块初始化子程序,参见例14.2MOV#$00, SCI1BDH; 先写高8位,再写低8位MOV#$1A, SCI1BDL ; 4MHz总线时钟产生9600baudMOV#$00, SCI1C1; 禁止环路模式,8位数据MOV#$2C, SCI1C2; 允许发送和接收,允许接收中断MOV#$00, SCI1C3; 禁止所有SCI错误中断,Tx输出不取反CLI; 开总中断RTS SCI1_ISR:; SCI1接收中断服务子程序LDASCI1S1; 先读SCI

25、1S1再读SC1D,以清零RDRFLDASCI1D; 读SC1DCLRHLDXRx_CntSTARx_Data, X; 保持数据INCRx_Cnt; 接收字符个数加1RTICopyright Yang Ming. 2011.Electronics and Information Engineering Department of Huazhong University of Science and TechnologyWuhan, Hubei 430074, P.R. ChinaMC9S08AW60通过SCI从PC的COM口接收4Byte数据并存储到内部RAM空间,一旦4Byte数据接收完毕就

26、把它们存入起始地址为$6000的FLASH空间保存。 参考代码:Slide 2112.3 FLASH编程举例编程举例Main:LDHX#RAMEnd+1; H:X指RAM末TXS; 初始化堆栈指针,SP指到RAM末CLRHCLRXCLRASTASOPT; 禁止看门狗JSRFCLK_Init; FCLK初始化JSRSCI1_Init; 初始化SCI1,8位数据格式,9600baudAgain:MOV#$00, Rx_Cnt; 接收个数清零Rec_Next: LDARx_CntCMP#$4; 所有字符是否接收完BNERec_Next; 未收完继续接收下一个字符LDHX#$6000JSRFLASHE

27、rase1; 擦除地址为$6000的一个页BNEAgain; 擦除不成功则不进行FLASH操作 LDHX#$6000Copyright Yang Ming. 2011.Electronics and Information Engineering Department of Huazhong University of Science and TechnologyWuhan, Hubei 430074, P.R. ChinaMC9S08AW60通过SCI从PC的COM口接收4Byte数据并存储到内部RAM空间,一旦4Byte数据接收完毕就把它们存入起始地址为$6000的FLASH空间保存。 参考代码:Slide 2212.3 FLASH编程举例编程举例BNEAgain; 擦除不成功则不进行FLASH操作 LDHX#$6000LDA

温馨提示

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

评论

0/150

提交评论