




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
苏州大学实验报告院、系年级专业姓名学号课程名称成绩指导教师同组实验者实验日期实验名称: Flash在线编程实验 一实验目的通过该实验,进一步熟悉MT-IDE嵌入式开发系统环境、汇编和C语言以及调试方式;进一步学习串口的相关内容;掌握Flash存储器在线编程的基本概念;熟悉GP32芯片Flash存储器在线编程擦除和写入的步骤;理解课本中的程序代码。二实验内容通过PC机的串口发送数据到MCU方,然后将接受到的数据写入到flash中以0x8000地址开始的一页中。最后将写入的数据读出发送到PC端校验。三实验过程(一)基本过程(1)页擦除操作下面过程可以擦除GP32的Flash存储器的一页(128字节): $2FLCR(1ERASE位,0MASS位):进行页面擦除; 读Flash块保护寄存器FLBPR; 向被擦除的Flash页内任意一个地址写入任意值,为方便起见,一般向待擦除页首地址写入0; 延时tnvs(10s); $AFLCR(1HVEN位); 延时terase(1ms); $8FLCR(0ERASE位); 延时tnvh(5s); $0FLCR(0HVEN位); 延时trcv(1s),完成一页的擦除操作。(2)整体擦除操作下面过程擦除GP32的整个Flash区域,以便把新的程序装入Flash存储器,这是应用系统研制过程中开发工具对GP32编程的准备工作。 6FLCR(1ERASE位,1MASS位):进行整体擦除; Flash块保护寄存器FLBPR; 向被擦除的Flash任意一个地址写入任意值,为方便起见,一般向首地址写入0; 延时tnvs(10s); $EFLCR(1HVEN位、MASS位、ERASE位); 延时tMerase(4ms); $CFLCR(0ERASE位); 延时tnvhl(100s); $0FLCR(0HVEN位、MASS位); 延时trcv(1s),完成整体擦除操作。(3)编程操作MC68HC908GP32的Flash编程操作以行(64字节)为单位进行的。当然,一次写入可以小于一行,但不能大于一行。对于已经写过的部分未经擦除不能重新写入变更其数据,否则将引起数据出错。写入过程如下:a. $1FLCR(1PGM位);b. 读Flash块保护寄存器FLBPR;c. 向将要写入的Flash行内任意一个地址写入任意值,为方便起见,一般向行首地址写入0,这一步选定了所要编程的行,以下的目标地址必需在这一行中;d. 延时tnvs(10s);e. $9FLCR(1HVEN位);f. 延时tpgs(5s);g. 待写数据写入对应的Flash地址;h. 延时tprog(30s),完成一个字节的写入(编程)工作;i. 重复g、h,直至同一行内各字节写入完毕;j. $8FLCR(0PGM位);k. 延时tnvh(5s);l. $0FLCR(0HVEN位);m. 延时trcv(1s)以后,完成本行写入工作,可以读出校验。四编程(一)流程图开始头文件和声明MCU、SCI初始化复位1 ?结束图1 Flash存储器流程图(二)所用寄存器名称及其所用的位Flas控制寄存器(Flash Control Register,FLCR)数据位 D7 D6 D5 D4 D3 D2 D1 D0定义 x x x x HVEN MASS ERASE PGM复位 0 0 1 0 0 0 0 0Flash块保护寄存器(Flash Block Protect Register,FLBPR)Flash块保护寄存器设定的只是保护区域的起始地址,保护区域的结束地址始终为Flash存储区的结束地址($FFFF)。对MC68HC908GP32而言,FLBPR设定的是16位起始地址的第147位(第15位恒为1)。(三)主要代码段1汇编方式:主程序部分代码MainInit: /复位后程序从此开始执行 /系统初始化 SEI LDHX #$023F /堆栈初始化 TXS JSR MCUInit /调系统初始化子程序GP32Init /串行口初始化 JSR SCIInit /程序总循环入口MainLoop: /发送1个握手信号86 LDA #86 /发送握手信号86 JSR SCISend1 /等待接收1的握手信号56 JSR SCIRe1 CMP #56 /是否是56? BNE MainLoop /否,继续握手 /等待接收1个字节=要写入的字符个数(RAMandFlash0-1 STHX RAMandFlash LDHX #Fdata /Flash首地址-RAMandFlash2-3 STHX RAMandFlash+2 LDA N /写入FLASH的数据个数 JSR WriteSub /向PC机发送写入Flash区的N个数据,供PC机接收并比较 LDHX #Fdata LDA N JSR SCISendN /转程序总循环入口 JMP MainLoop 2C语言方式:主程序部分代码void main() INT8U *p; MCUInit(); /MCU初始化 SCIInit(); /串口初始化 /主循环开始 while(1) SCISend1(86); /发送握手信号86 /等待接收一个字节的握手信号 if(SCIRe1(p)!=56) /是否是56? continue; /否,继续握手 /等待接收写入的数据个数(N=128)并存放到N中 SCIReN(1,data); N=data0; /等待接收N个字节的数据并存放到以data数组中 SCIReN(N,data); /调用EarseFlash()程序之前要保护后一页之后的区域 /如:EarseFlash(0x8000),则要保护的为$8100后的区域 FLBPR=0b00000010; /保护$8100$FFFF的FLASH区域 EraseFlash(0x8000);/擦除0x8000为始址的一个页 /调用WriteFlash()程序之前要保护后一页之后的区域 /如:WriteFlash(0x8000),则要保护的为$8100后的区域 FLBPR=0b00000010; /保护$8100$FFFF的FLASH区域 WriteFlash(0x8000);/将数据写入flash /读出flash中的数据发给pc机比较 SCISendN(N,(INT8U *)0x8000); 五实验问答(根据实验指导书所列举的问题)1flash在线编程的过程中有哪些注意点?在进行flash在线编程过程中,有如下几点需要注意:一、严格按照芯片手册上的步骤和时序编程,进行恰当的延时,以避免延时过长或过短。二、由于flash在线编程时需要对其加高压,导致对flash存储器的存储区读取不稳定。可能导致程序不能正常执行。因而擦除、写入子程序要转入RAM区执行。三、由于擦写子程序要在移到RAM区所以在调用子程序时要注意使用BSR指令。2当用flash区存储一些需要变动的参数时,应如何注意哪些问题?当用flash区存储一些需要变动的参数时,要注意flash擦除后才能写入的特性、并且一次擦除至少为一页。所
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 IEC 60335-2-31:2024 EXV-CMV EN Household and similar electrical appliances - Safety - Part 2-31: Particular requirements for range hoods and other cooking fume extractors
- 电视节目制作流程及质量控制标准
- 仪表专业考试试题及答案
- 六一互动活动方案
- 六一儿童超市节活动方案
- 六一化妆观摩活动方案
- 六一幼儿园健康活动方案
- 六一摊位活动方案
- 六一未成年人活动方案
- 六一活动古筝活动方案
- 2025-2030中国食物病原体检测行业市场发展趋势与前景展望战略分析研究报告
- 托里县铁厂沟镇工业固废垃圾填埋场项目环境影响报告书
- 中草药种植技术课件
- T/CHES 63-2022活塞式调流调压阀技术导则
- T/CCMA 0048-2017二手工程机械评估师
- 传染病防治法试题(答案)
- 家居建材联盟协议书
- 2024北京海淀区六年级(下)期末语文试题及答案
- 无人机航线规划与飞行策略试题及答案
- 2025年全国保密教育线上培训考试试题库带答案(典型题)含答案详解
- 亚历山大大帝传
评论
0/150
提交评论