MC68HC908LJ12单片机FLASH在线编程

嵌入式设计应用

132人已加入

描述

引言
MC68HC908LJ12是Motorola即将推出的一款八位单片机,主要特点是片内有LCD驱动模块和FLASH存储器,拟代替今后会逐渐停产的MC68HC05L1、L5、L16等型号的单片机。MC68HC908LJ12表面贴封装的芯片具有SCI、SPI、内置实时时钟模块RTC、512B RAM以及12KB片内FLASH等特点,其内置LCD驱动模块具有3×27或4×26段LCD驱动能力。
MC68HC908LJ12单片机片内集成电荷泵,使用+5V工作电压即可产生所需FLASH编程电压;另外,片内FLASH擦写速度快,可靠性高,可擦写至少10万次以上,所以在需频繁修改存储的数据和代码的场合,都是理想的选择。
笔者在试用MC68HC908LJ12开发产品的过程中,总结了FLASH在线编程技术,并提供了一种廉价灵活的带片内FLASH的单片机的开发办法。

在线编程
FLASH在线编程模式
所谓FLASH在线编程,即芯片无需从目标系统上取下即可对FLASH进行擦除和写入的操作。MC68HC908LJ12单片机片内有12KB的FLASH,对FLASH的编程有两种模式:监控模式(Monitor Mode)和用户模式(User Mode)。
当单片机上电复位时,若检测到复位向量($FFFE~$FFFF)为空($FFFF),或特定引脚加上特定的电平,就可使单片机在复位后进入监控模式。在监控模式下,可以利用固化在监控ROM中的代码并通过主机下载程序到RAM中完成对FLASH的一系列的操作。监控模式适合对刚出厂的芯片进行编程写入,或者对芯片的整体擦除或写入。仿真器和编程器就是使用的监控模式。
在单片机正常工作的过程中,程序也可以在用户模式下对FLASH进行编程操作。此时FLASH写入和擦除程序是必须的,但无需外部硬件条件的支持。所以用户模式可以在程序运行中对部分的FLASH进行修改,适合于目标系统的程序和数据的动态更新和存储。
基于MC68HC908LJ12单片机FLASH在线编程以上特性,笔者设计了一套集编程功能和开发功能于一身的MC68HC908LJ12开发工具,电路原理图如图1所示。
通过跳线的方式,可以选择编程功能(图中开关至A的位置)或开发功能(图中开关于B的位置)。当选择编程功能时,单片机工作在监控模式下,主机通过串行通信口可以向片内FLASH执行擦写操作;当选择开发功能时,单片机工作在用户模式下,并可以通过引出的插座连接到目标系统上进行产品开发。笔者在使用MC68HC908LJ12单片机的过程中,为该单片机编写了一套大约3.5KB的在线编程开发系统程序。将此程序写入芯片,开发者在此程序的基础上,能在用户模式下实现对片内另外8.5KB的FLASH擦写,调试用户自己的程序。用户程序定型后,可以选择编程功能擦除在线编程开发系统程序,并将所需的用户程序写入FLASH中。如果使用过程中发现程序有错误之处,仍可选择编程功能,将修改后的程序重新写回FLASH中。这样会给开发带来许多方便。
用户也可将此工具设计为分离形式的,即编程功能和开发功能分别在一块PCB板上。图中虚线框内即为编程器的电路原理图,LJ12芯片安置在开发板上。编程器和开发板之间只需6条连线,即DSC1、IRQ、RST、PTA0、电源线VDD和GND地线。将编程器与开发板连接即可在监控模式下对FLASH进行擦写操作,单独使用开发板即可开发目标系统。

FLASH监控编程模式
在监控模式下, MC68HC908LJ12单片机运行固化在ROM中的代码,监控代码包括使用半双工口的通讯子程。监控模式使用PTA0引脚,通过串行通信口与主机建立连接。建立连接后,单片机的控制权即交给了主机完成对FLASH的擦写操作。MC68HC908LJ12单片机在监控模式下的总线频率是2.4576MHz,进入监控模式有两种方式:高电平进入方式和空向量进入方式。
当单片机上电复位时,若在IRQ引脚上加上高电平VTST(VDD+2.5V),就可使单片机进入监控模式。使用此方式进入监控,在OSC1引脚输入的时钟频率必须是4.9152MHz或者9.8304MHz,PTC1引脚上的高低电平控制分频因子,低电平时分频因子为2,高电平时分频因子为4。
单片机上电复位时,若检测到复位向量($FFFE~$FFFF)为空($FFFF),单片机也将在复位后进入监控模式。使用此方式进入监控,若IRQ引脚为低电平,PLL允许,可由外部32768Hz的晶振产生所需要的总线频率2.4576MHz。若IRQ引脚为高电平,单片机将不管PTC1引脚上的电平而直接使用9.8304MHz的外部晶振产生总线频率2.4576MHz,即分频因子恒为4。

FLASH用户编程模式
在用户模式下,ICP程序代码是用户程序代码的一个部分,需将此代码存储在无冲突的FLASH存储器中以便被用户程序调用。对FLASH进行擦写的时候,FLASH编程操作例程应复制到RAM中运行。MC68HC908LJ12单片机在对FLASH进行擦写的过程中,一旦FLASH控制寄存器(FLCR)的高压允许位HVEN置1,整个FLASH阵列会被加上一个高于普通工作电压的编程电压,此时对FLASH内任意字节的读取都是不稳定的,执行的代码也可能是完全错误的。所以,开发者在调用FLASH擦写子例程前,需将子例程复制到RAM中,然后跳转到RAM中执行。
在用户模式下另一种在线编程的方法是利用固化在监控ROM中监控代码,这样,既可以减少有限的RAM空间的使用,也可以免去用户编写ICP代码的麻烦。Motorola提供了监控代码的入口地址,用户只需提供总线频率、目标FLASH的起始地址、数据队列大小以及数据队列等参数,然后调用“JSR 入口地址”命令即可使用。

结语
FLASH给开发者提供了快速的方便的编程和开发方法,同时也给单片机的应用开拓了更大的空间。合理地利用片内集成FLASH的单片机可以降低开发成本,缩短产品的开发周期。本文就MC68HC908LJ12单片机的FLASH的编程技术展开了一些探讨,FLASH的编程的其他功能有待于大家去挖掘。
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分