68hc08系列单片机片内flash的在线写入方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
文章编号:!""#$%&’#((""%)"%$"&))$")** &+!""+系列单片机片内#$%&’的在线写入方法!
徐洋,程安宇,向敏
(重庆邮电学院,重庆#"""&%)
摘*要:&+,-"+系列单片机在运行程序时往往需要保存某些参数使其掉电不丢失,为节约成本提高可靠性,可以
将这些参数保存在片内./012中。
片内./012主要是用来保存用户程序的,为避免在程序运行时往./012中写入数
据所导致的单片机复位,因此采用了调用芯片内部监控345中自带的./012操作子程序的方法。
该方法适用于所
有&+,-"+系列片内含./012芯片的单片机,具有很高的实用性和应用前景。
关键词:&+,-"+;./012存储器;在线写入
中图分类号:67)&+8!**文献标识码:9
()引)言
&+,-"+系列单片机是.:;;1<0/;公司(原5=$ >=:=/0半导体部)目前主推的+位单片机,是正处于迅速发展期的./012型单片机,片上集成了看门狗模块,!&位定时器具有输入捕捉输出比较和脉宽调制功能,在工业控制、汽车电子等领域得到广泛的应用。
&+,-"+系列单片机另外一个特点是各种不同型号的芯片内具有不同大小的./012存储器用于存放用户的程序,单片机工作时直接从./012中取指令执行程序。
在用户程序运行过程中常常需要保存一些数据到非易失存储器中,以便单片机在掉电后能读出继续运行,例如实时时钟的保存与显示等。
通常的设计方法是在片外加一个串行的??7345,但这样做既增加了成本又降低了系统的可靠性。
考虑到芯片内部的./012除了保存的程序外通常都还有剩余空间,可以用来保存数据。
*)#$%&’存储器的操作
./012存储器在片内是以页和行为单位来组织的。
页和行的存储容量随整个./012存储器模块的大小而异,但页的大小始终为行的整数倍。
对./012的擦除操作都是以页为单位的,而写入操作则是以行或页为单位的,且不能单字节擦写。
擦除操作是将存储单元的"变成!,而写入操作恰好相反,是将存储单元的!变成"[!]。
./012存储器的编程操作由./012控制器(.@$ -3)和./012块保护寄存器(.@A73)实施管理。
./012控制寄存器(.@-3)实现对./012存储器擦写方式的控制,其结构与各位的控制功能见表!。
表!*.@-3寄存器的结构与功能
60B8!9:<2C>;<>D:;0EF GDE<>C=E=G.@-3位标识功能
H"保留
&"保留
%"保留
#"保留
),I?J高压允许,擦写时置!
(59KK整体或页,整体擦除置!,页擦除置"
!?39K?擦写时置!
"7L5编程写入时置!
**./012存储器的擦除只能以页为单位,因而在进行擦除操作时必须事先规定擦除哪些页,余下的所有页都不被擦除而受到保护,./012块保护寄存器即为此目的设计,它用于设定被保护的./012区域。
当./012存储器处于保护状态时,擦除和写入操作在用户方式下都是受限制的,控制寄存器的,I?J 位将无法置位[(]。
对于目前的&+,-"+系列微控制器而言,一旦./012控制寄存器的,I?J位置为!,整个./012都会被加上高于普通工作电压的编程电压,此时对./012内任何字节的读取都是不稳定的,这也包括对程序执行代码的读取。
也就是说,微控制器此时执
第*+卷第,期重庆邮电学院学报(自然科学版)-.$/*+)0./, 1((,年*(月 2.345%$.6"’.578957:59;<4&9=>.6?.&=&%5@A<$<359B%=9.5&(0%=34%$DB9<5B<)EB=/1((,
!收稿日期:(""%$"#$!!**修订日期:(""%$"&$"’
基金项目:国家“+&)”项目子课题“汽车电子控制单元软硬件开发平台”((""#99!M()+))
作者简介:徐洋(!’HH$),男,重庆人,硕士,主要从事嵌入式系统开发以及汽车电子研究。
?$N0C/:=<;0EOP!&)8<=N
行的代码可能不是我们所希望的。
而一旦微控制器执行了错误的指令就会导致“死机”,看门狗等内部保护功能模块将立即复位系统。
由此可见,我们需要特别注意的是:!"#$%编程的子程序不能放在!"#$%存储器中执行,而必须在&’(或者监控&)(中执行。
因此,应将!"#$%编程子程序预先从!"#$%存储器中复制到&’(中后再跳转到&’(中执行,但是这种方法用*语言实现起来十分不便,并且使用汇编语言也有一定的难度。
考虑到监控&)(是!+,,$-#",公司固化在芯片内部&)(中的代码程序,其中主要包括了系统自检、!"#$%编程与串行通信等基本功能,我们可以直接调用监控&)(中现成的子程序来实现!"#$%的写入[.]。
!"监控#$%中的&’()*操作子程序监控&)(中总共有/个专门针对片内!"#$%存储器操作的子程序,我们需要使用其中的0个:1&2&324和4&’&324,分别对应!"#$%的写入和擦除。
这些&)(中的子程序都可以被用户程序直接调用,需要向其传递的参数必须连续地存放在&’(中,而且第一个参数的地址必须作为一个指针放在变址寄存器(567,8&,9:$;,+)中,最后再使用<=&命令去调用该子程序。
1&2&324使用的是“<=&">!*>?”;4&’&324使用的是“<=&" >!*@4”[A]。
下面介绍一下在&’(存放参数的格式[B],如图C所示。
图C&’(中存放参数的格式
!:9D C E#;#F"G-H IG+J#;:6&’(IG+&)(K+,$:7,6;+GL;:6,$图C中@M==144E指定了单片机的总线时钟频率,该参数的值是总线时钟频率值的A倍,例如总线时钟频率为A(NO,则@M==144E P C?(NO。
E’Q’=5R4是需要进行操作的数据个数(以@S;,为单位),最大为0BB。
=Q’&Q’EE&4==N52N和=Q’&Q’EE&4== T)U是数据存取的目标地址。
?/N*>/系列/位单片机可寻址范围是>>>>V N。
E’Q’’&&W是需要操作的数据。
!"#$%编程子程序1&2&324介绍[B]如表0所示。
!"#$%擦除子程序4&’&324介绍[B]如表.所示。
表0X1&2&324子程序
Q#FD01&2&324+GL;:6,
&GL;:6,3#J,1&2&324
&GL;:6,E,$-+:Y;:G61+G9+#J#+#69,GI"G-#;:G6$
*#"":69’77+,$$"!*>?
=;#-H M$,7CA FS;,$
E#;#@"G-H!G+J#;
@L$$Y,,7(@M=Z=1E);E#;#$:O,
(E’Q’=5R4);=;#+;#77+,$$%:9%
(’EE&N);=;#+;#77+,$$"G[(’EK
E&T);E#;#C(E’Q’C)……E#;#
3(E’Q’3)
表.X4&’&324子程序
Q#FD.4&’&324+GL;:6,
&GL;:6,3#J,4&’&324
&GL;:6,E,$-+:Y;:G64+#$,#Y#9,G+;%,,6;:+,#++#S
*#"":69’77+,$$"!*@4
=;#-H M$,7\FS;,$
E#;#@"G-H!G+J#;
@L$$Y,,7(@M=Z=1E);E#;#$:O,
(E’Q’=5R4);=;#+;:69#77+,$$%:9%
(’EE&N);=;#+;:69#77+,$$"G[
(’EE&T)
+"例"程
下面以一个*语言例程来说明片内!"#$%存储器的具体操作过程。
使用的单片机型号是/N*\>/T<C0,总线时钟为A(NO,存放参数的&’(块从地址0>>N处开始,参数的目的地址是*>>>N,总共存放A@S;,。
!T@1&P>8>0;]!写!"#$%块保护寄存器!]
!FL$Z$Y,,7P C?;
!7#;#Z$:O,P A;
!$;#+;Z#77+,$$%P>8*>;
!$;#+;Z#77+,$$"P>8>>;
#$J
{
1=NN
1=N^
TEN^_">0>>
<=&">!*@4
1MT^
·
A
.
?
·X X X X X X X重庆邮电学院学报(自然科学版)X X X X X X X X X X X X X X X第C‘卷
!"#$
}%!擦除&’’’$(&’’)$的*+,-.!%
,-/
{
!0$$
!0$1
#2$13"’4’’
506"’*&’7
!"#1
!"#$
}%!写入&’’’$(&’’)$的*+,-.!%
!"总"结
调用芯片内部监控689中自带的*+,-.操作子程序的方法已经在四联仪器仪表集团某汽车仪表上得以实现,程序运行稳定,经过长时间的测试均能成功地保存和读取参数,并且通过了国家上车实验。
采用该方法既可以减少成本又可以增加*+,-.存储器的写入可靠性。
另外对7:$&’:系列单片机片内*+,-.存储器进行在线写入时必须注意以下;点:!首先应设置*+,-.块保护寄存器,使目标地址的
*+,-.可写;"必须以先擦除再写入的顺序对*+,-.进行操作;#在调用监控689中的子程序之前应先将标志寄存器的值写入堆栈中,最后程序结束再出栈;$对片内*+,-.过于频繁的擦写操作可能会损坏单片机芯片。
参考文献:
[<]=李晶皎>液晶显示器的&语言程序设计?
*@AA-B,+A:位微控制器[9]>北京:科学出版
社,4’’C,4’D47>
[4]=邵贝贝>单片机嵌入式应用的在线开发方法[9]>北京:清华大学出版社,4’’;,<47D<4E>[)]=谢瑞和>9FGF@F+,7:$&’:微控制器与嵌入式系统基础[9]>北京:清华大学出版社,
4’’),4<)D44)>
[;]=沃尔瓦诺>嵌入式微计算机系统:实时接口技术[9]>北京:机械工业出版社,4’’),<)D<7>[C]=9&7:$&H’:#5<4IAB.JKB,+2,G,[LM%8#]> .GGN:%%OOO>P@AA-B,+A>BF/,4’’4D’4D’4%4’’CD
’<D<’>(责任编辑:田海江)
#$%$&’()*+,-.7:/0’:102+()*3456&%)3’-,’&77*+,
1"Q,JR,&$LST UJDVW,1XUST9KJ
(!"#$%&’$%($’)*+,’-.#/0#,-,1$23*4*5#667$’51-’#$,,!"#$%&’$%;’’’7C,0898!"’$1)
89%:’&(::7:$&’:9&"(9KB@F&FJG@F++A@"JKG),KJ-F/A,NN+KB,GKFJ-,JAAY-GF@A-F/A N,@,/AGA@-KJ G.A KJZF+,GK+A/A/F@K[A@O.AJ G.A N@FR@,/KJ G.A9&"K-@WJJKJR>XJ F@YA@GF K/N@FZA G.A@A+K,\K+KGV FP-V-GA/ ,JY@AYWBA G.A BF-G FP-V-GA/,OA B,J W-A FP G.A9&"]-FJDB.KN P+,-.O.KB.K-JF@/,++V W-AY GF-GF@A G.A N@FR@,/>IF AJ-W@A G.A9&"]-N@FNA@OF@^KJR,@FWGKJA--GF@AY KJ G.A/FJKGF@689,@A,(G.W-689D@A-KD YAJG),@A W-AY PF@*+,-./A/F@V/,JKNW+,GKFJ>I.A/AG.FY B,J\A,NN+KAY KJ,+/F-G7:$&’:-A@KA-9&">
;$<=-’>%:7:$&’:;*+,-.-GF@,RA;FJB.KNDN@FR@,//KJR
·C
)
7
·
第C期===========徐洋,等:7:$&’:系列单片机片内*+,-.的在线写入方法
68HC08系列单片机片内Flash的在线写入方法
作者:徐洋, 程安宇, 向敏, XU Yang, CHENG An-yu, XIANG Min
作者单位:重庆邮电学院,重庆,400065
刊名:
重庆邮电学院学报(自然科学版)
英文刊名:JOURNAL OF CHONGQING UNIVERSITY OF POSTS AND TELECOMMUNICATIONS(NATURAL SCIENCE)年,卷(期):2005,17(5)
引用次数:0次
1.李晶皎液晶显示器的C语言程序设计-Freescale 8位微控制器 2005
2.邵贝贝单片机嵌入式应用的在线开发方法 2004
3.谢瑞和Motorola 68HC08微控制器与嵌入式系统基础 2003
4.沃尔瓦诺嵌入式微计算机系统:实时接口技术 2003
5.MC68HC908LJ12 Technical Data 2005
本文链接:/Periodical_cqydxyxb-zrkx200505027.aspx
下载时间:2010年5月25日。