MC68HC908LJ12微控制器中的闪存在电路编程_第1页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

1、mc68hc908lj12微控制器中的闪存在电路编程在编程是指在器件安装在终于电路板(目标系统)上的时候对器件举行编程或擦除操作。这允许在不把电路从目标系统取下的状况下转变用户代码,从而实现对器件的重新编程或初始化编程。motorola mc68hc908lj12 (lj12)是基于hc08架构的一种通用器件,具有12k字节的片上闪存和512字节的ram、一个通信接口、一个串行外设接口、一个ad转换器、一个实时钟和一个驱动器模块。其中12k字节闪存分配给用户代码,另外还有48字节分配给用户定义的复位和中断向量。对于编程或擦除操作不需要高供电,由于所需要的高电压由内部的电荷泵产生。可利用运行在用

2、户模式或监控模式的软件例程通过写地址为$fe08的闪存控制寄存器实现对闪存的编程或擦除操作。用户模式在用户模式下,lj12运行的是已经编程存储在闪存中的用户代码。这是lj12在大多数时光中所处的模式。监控模式在监控模式下,lj12运行在生产时永远编程在lj12中的存储器区域中的监控代码。监控代码用于通过lj12的pta0管脚在lj12和外部主机间实现串行通信。 对初始的空白lj12闪存编程就是在监控模式下举行的。闪存初始编程lj12 操作模式在上电复位(por)后锁定,并由复位向量($fffe-$ffff)和下列管脚的规律电平打算:irq、 rst、 pta0、 pta1、 pta2和1。块庇

3、护的闪存当闪存被块庇护(block protected)时,闪存是不能被擦除可编程的。地址为$fe09的闪存块庇护寄存器用来庇护闪存的一块或囫囵闪存。向块庇护寄存器中写$ff将解除囫囵闪存的庇护。rom驻留程序lj12中的rom驻留程序旨在简化用户的闪存编程和擦除。这些程序是存储在rom中的永远代码,可利用子程序调用执行。表1 示出了闪存编程和擦除操作的四个程序。用户模式下的在电路编程在用户模式下的icp可保证在目标系统运行的同时对lj12中的闪存举行重新编程。对lj12中的闪存举行重新编程分成两步。第一步是通过擦除操作擦除闪存中的现有数据。最小的擦除单位是128字节,称为页。闪存控制寄存器中

4、的mass位提供了一次操作擦除囫囵闪存阵列的挑选,这种操作称为整体擦除(mass erase)。必须指出的是,闪存中被擦除的单元读出值为$ff。其次步是编程,即利用新的数据对空的闪存举行编程。因此,重新编程包括:擦除和编程两步。icp 代码在用户模式下举行icp要求,icp代码存储在可被用户程序调用的非易失性存储器中。这意味着icp代码必需做为用户代码的一部分编程到lj12的闪存中。考虑到这一点,用户模式下的icp在闪存最初为空(空白器件)时是不能举行的。初始的空白器件必需在监控模式下编程。icp代码编程在闪存中,可以利用软件或硬件启动icp过程,有两种操作方式:1.icp 代码通过lj12的

5、端口引脚或sci接口建立lj12与一个外部主机系统的通信衔接。主机发出指令擦除lj2的闪存并下载数据对闪存举行编程。在这种状况下,lj12 icp代码就象一个指令说明器。2.icp 代码运行自己的擦除子程序擦除闪存。然后icp代码通过lj12的端口引脚或sci接口建立lj12与一个外部主机系统的通信衔接。新的数据下载编程到闪存中。在两种办法中,icp代码都必需加载到ram存储器中,并在ram中执行。当程序在闪存中运行时不允许编程或擦除操作。假如在icp代码还在闪存中运行时就举行编程或擦除操作,那么有擦除icp代码本身的危急。监控模式下的在电路编程在监控模式下, lj12运行在创造过程中永远编程

6、在存储器中($fc00-$fdff 和 $fe10-$ffcf)中的监控代码。lj12器件中闪存的第一次编程只能在监控模式下举行。通过施加高电压进入监控模式与许多motorola 8位 ,通过在/irq引脚施加高电压(对lj12为1.5 * vdd、 max. 8v )和在几个i/o引脚施加特定的规律电平(对lj12为pta1、 pta2、和ptc1),则在上电复位(por)之后进入监控模式。利用这一高电压进入办法时,mcu(在osc1)的时钟输入必需来自外部,频率为4.9152mhz 或 9.8304mhz。通过对这一时钟分频在pta0生成9600波特的通信速度。通过空向量办法进入监控模式在

7、新的闪存实施计划中,需要削减采纳icp对mcu举行编程时衔接目标系统的线数。进入监控模式的另一办法是空(被擦除)的复位向量。复位向量惟独通过整体擦除操作擦除。 假如在上电复位后的模式锁定过程中/irq引脚接地,pll被使能,允许利用接在osc1和osc2间的32.768khz晶体作为输入时钟,生成9600的波特率。假如irq引脚在上电复位后的模式锁定过程中被拉成高(vdd),pll被禁止,一个外部4.9152mhz输入时钟(晶体或外部振荡器)将可产生4800的波特率。与高电压进入方式相比,这一办法节省了三条线,不需要衔接pta1、 pta2、和 ptc1。在监控模式下实现icp的优点是不需要在

8、用户代码包含icp代码。此外,还可以利用mcuscribe 编程或 ics motorola工具通过pta0串行衔接实现pc主机系统与mcu的通信。有关 icp的其它考虑信号状态为无中断地完成编程过程,在icp操作中正常的系统活动通常被停止。因此,在icp开头时,应该配置mcu使得在icp过程中不会产生引脚矛盾或信失控号。同时还必需注重当带有空白闪存的mcu系统第一次上电时,其端口引脚处于其缺省复位状态。引脚隔离假如用于衔接外部主机的 mcu引脚是与目标系统分享的,必需保证举行icp衔接时它们被隔离到适当的规律电平。cop 操作当在用户模式下举行 icp操作时,还必需考虑cop操作。一旦cop

9、被使能,在用户程序运行过程中是不能被禁止的。因此,在icp擦除和编程程序中,cop计数器必需定时清除以防止cop复位。在监控模式下,cop是被禁止的。下面的代码在用户模式下完成整体擦除。ramfile存储器区被保留用于存储erarnge子程序调用的数据块。当icp哀求被接受时,这一代码需要上载到ram中,然后才干通过调用ramstart执行。然后 lj12复位。在这一例子中,利用了非法操作码举行复位。;reference upload coding for mass erase in user modeerarnge equ $fcbeorg ramramfile:dc.b $14 ;indi

10、cates 4*bus (bus=4.9152mhz)dc.b $40 ;data size assumed to be 64dc.w $ffff ;$ffff means mass eraseds.b 64 ;reserve for data arrayramstart:ldhx ramfilejsr erarnge ;mass erase the flash memoryreset:dc.b $32 ;perform illegal opcode reset复位后,由于复位向量是空的,lj12进入监控模式。通过在pta0(参考数据手册中的监控rom一节)衔接一个主机,可以把下列代码加载到l

11、j12 ram中实现闪存的编程。;reference upload coding for programming in monitor modemon_prgrnge equ $ff28org ramramfile:dc.b $14 ;indicates 4*bus (bus=4.9152mhz)dc.b $40 ;data size assumed to be 64dc.w $c000 ;start of flash memoryds.b 64 ;reserve for data arrayflashprg:ldhx ramfilejsr mon_prgrngeramfile存储器区被保留用于存储mon

温馨提示

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

评论

0/150

提交评论