2.6 程序说明
如前文所述,MTV230在进入在线编程模式后,就相当于一个I2C从设备,编程逻辑全都由在PC上运行的程序来实现。该程序采用VC6.0编写。编程程序的主界面如图2所示,主要模块如表1所列。由于用并口模拟I2C对单片机编程,会使该线程暂时处在阻塞状态,假如在主线程(UI)中实现该过程,则在对芯片编程时,程序的主界面就无法响应用户退出命令,所以采用了多线程程序结构,在一个工作线程实现该过程,使用户可以随时退出编程过程。

表1所列的头三个类采用了层次设计结构:上层类调用下层类,下层类为上层类提供接口,这样设计保证了代码的最大可重用性。举例来说,假如有另一芯片同样是使用I2C接口进行在线编程,则只要重写MTVISP这个芯片的在线编程协议类就可以了;如果使用前面所述的并口实现方案1或3,只要重写最底层的Parallel类便可。

程序工作线程的大致流程如图3所示。

程序的特色:
① 可以自己设置I2C速度的高低,模拟I2C的并口地址,以及使用并口的引脚。
② 可以选择简单校验和完全校验,即对编程后的芯片是进行内部校验寄存器值的简单校验,还是将
芯片中的内容全部读出与编程文件进行比较的完全校验。
③ 可以对芯片内的程序区、OSD区进行编程,还可以读出这两区的数据(只有对可以设定进入在线编 程模式的程序才可以)。
④ 进行烧写的文件支持二进制文件格式(*.bin)与Intel的Hex文件格式(*.hex)。
3 利用串口对W78E516B在线编程的实现
3.1 W78E516B简介
W78E516B是由Winbound公司出品的基于52内核的高性能芯片,外部晶振可以达到40MHz,内部具有64KB的程序区与4KB的引导程序区,以及256B的RAM区和256B的AUX-RAM区。AUX-RAM区相当于外部存储区,进行寄存器设置后,用MOVX指令进行访问。在Keil编译器中,进行相应的设置便可使用pdata类型变量访问。
3.2 W78E516B在线编程模式的进入
W78E516B在线编程模式的进入可以分为两种模式:一种为软件模式,另一种为硬件模式。当芯片进入在线编程模式后,芯片会从现在的64KB程序区跳转到4KB的引导区的0x00地址处去执行程序。如前文所述,该类型芯片的在线编程逻辑都是由在这4KB引导区中的程序决定的,而上位机(PC)只是为在线编程提供一个数据源。
(1)软件进入模式
① 向CHPERN寄存器依此写入0x87,0x59开启CHPCON寄存器的写模式。
② 关闭中断。
③ 向CHPCON写入0x03表示进行程序区编程。
④ 向CHPCRN写入0x00关闭CHPCON寄存器写模式。
⑤ 设置好定时器为延时12μs引发中断。
⑥ 将单片机转入空闲模式,开启中断。
例如:将以下程序嵌入主循环中,当串口收到字符“A”时便进入在线编程模式:
if(B_Temp==‘A’{//B_Temp中存放从串口接收到的数
TR0=0; //停止定时器
TH0=TL0=256-250; //设置定时器定时值
CHPENR = 0x87; //开启CHPCON写模式
CHPENR = 0x59;
CHPCON|=0x03; //开启编程功能
CHPENR=0x00; //关闭CHPCON写模式
TR0=1; //开启定时器
PCON=0x01; //转入空闲模式
}
顶一下 0
踩一下
相关文章
用户评论
已有0位网友发表了看法
400-810-1218
热点技术




发表评论