您的位置 首页 观点

使用串口与并口完成51内核单片机的在线编程

详细说明利用并口模拟I2C总线协议,实现Myson MTV230芯片的在线编程(ISP)过程,以及利用PC机的串口通信实现

摘要:详细阐明运用并口模仿I2C总线协议,完结Myson MTV230芯片的在线编程(ISP)进程,以及运用PC机的串口通讯完结Winbond W78E516B的在线编程(ISP)进程;论述PC机的串口并口在单片机开发中的运用。


要害词:并口编程 串口通讯 在线编程 ISP MTV230 W78E516B

引 言

1 在线编程简介

  51内核的单片机在线编程方式一般分为两大类。一类是运用JTAG协议的在线编程方式。这类方式一般由厂家供给在线编程东西,运用便利。运用这一类方式的单片机价格往往较高,运用的厂商也不多,故不在本文的评论之列。另一类在线编程方式是运用一条特别的指令,使单片机进入在线编程方式。在进入在线编程方式后,要自己操控对单片机的擦除写入逻辑。这一类方式又可细分为两种不同的方式:一是进入在线编程方式后,单片机仅仅供给一个接口,不再运转用户的程序,擦写逻辑全由上位机(PC)供给,如以下要评论的MTV230就归于这种方式;另一类是进入在线编程方式今后,芯片会运转在某一区域的用户编写的程序,芯片的编程逻辑都由芯片中这段程序操控,上位机(PC)仅仅作为单片机的一个数据源,向单片机传输要擦写的数据,如以下要评论的W78E516B。

2 运用并口对MTV230在线编程的完结

2.1 MTV230简介

  MTV230是由Myson公司出品的一块集成OSD功用的根据51内核的芯片。它运用12MHz晶振时能够设置为倍频作业,一起还集成了4路A/D和4路PWM DAC。其间最具竞争力的就是它运用了Flash OSD字库。与一般的OSD芯片不同,它的字库不是掩膜在芯片中,用户能够自己定制。该款芯片能够满意视频运用中的操控需求,因此被广泛运用于视频类产品中。

2.2 MTV230在线编程方式的进入

  要使MTV230具有在线编程的功用,能够添加一段程序在主运用程序中。该程序用来呼应特定的单片机状况,如某一特定引脚的电平改动,或是串口接纳到特定的字符以确认是否要进入在线编程方式。在履行以下程序后,MTV230能够进入在线编程方式[1]:

① 清看门狗,以防止在编程期间单片机被复位;

② 单片机的在线编程方式是在闲暇状况(idle)下进行的,所以要封闭一切中止,防止单片机被唤醒;

③ 因为MTV230在线编程时是作为I2C的从设备,因此要装备单片机的I2C从地址;

④ 向ISPEN写入0x93,使能在线编程功用;

⑤ 进入51的闲暇方式,在线编程开端。

详细程序如下:
WDT=0; //1
IE=0; //2
ISPSLV=0x7C; //3
ISPEN=0x93; //4
PCON=0x01; //5

   以上程序中1~5与上述阐明对应。以大将I2C地址设置为0x7C。值得留意的是,设置I2C从地址时,最低两位无效[1]。履行完以上程序,单片机现已变为一个I2C从设备,将I2C中SCL与芯片的15脚相连,SDA与芯片的16脚相连,就能够用I2C协议,按必定的指令格局对芯片进行在线编程。指令格局详见参考文献[1],在此不再赘述。

2.3 PC机I2C接口的完结

  对MTV230进行在线编程,就要完结I2C通讯协议。作为对MTV230进行编程的上位机PC来说,完结I2C有三种办法:

① 运用串口与单片机通讯,再由单片机模仿I2C协议,本钱高,I2C速度视运用的单片机而定;

② 对计算机的并口编程,模仿I2C协议,本钱低,I2C速度一般;

③ 运用USB接口完结I2C协议,本钱高,I2C速度快市场上能够买到。

  因为MTV230进行编程时,I2C时钟速度最高为140kHz,速度要求不高,一起考虑到本钱,决议运用计划②。

2.4 并口I2C硬件的完结

  因为并口的每个引脚都是单向的,只能单向输出或许单向输入;而I2C又是一个双向协议,SDA与SCL都要求既能输入又能输出(有时要获取SCL当时状况),所以,SDA与SCL要别离各由一个输出引脚与一个输入引脚构成。为了添加并口的驱动才能与可靠性,规划电路如图1所示。其间并口的2、12引脚构成SDA脚,并口的3、10引脚构成SCL脚。
       
2.5 并口I2C软件的完结

  在Win98中对并口的编程非常简略,通过在VC中内嵌汇编,运用IN与OUT指令拜访与并口相对应的端口,设置相对应端口的值中的位就能够操控相应并口引脚的凹凸电平值。

例如:要将计算机并口1的第2引脚先置高再置低,汇编语言能够这样写:
MOV DX , 0x378 ;设置端口地址
MOV AL , 1 ;将待写入的位0的值写入AL中
OUT DX , AL ;将值送到相应端口
MOV AL , 0
OUT DX , AL

  但在Win2000/XP中,因为体系加强了对硬件设备的保护,假如在程序中直接用IN与OUT指令拜访并口,则会引发体系的非法操作;而并口拜访又不像串口,直接能够运用Windows API函数,因此就必须运用驱动程序。能够到www.sstnet.com网站上去下载DriverLINX Port I/O Driver并口驱动程序。该程序能够免费仿制与分发。有了这个驱动程序,在Win2000/XP下编写并口程序就非常便利。装置该驱动程序后,在程序中包括相应的dlportio.h与dlportio.lib后就能够用DlPortReadPortUchar(IN ULONG Port)来读取端口的值(相当于汇编中的IN指令),用DlPortWritePortUchar(IN ULONG Port,IN UCHAR Value)来向一个端口写一个特定的值(相当于汇编中的OUT指令)。运用改动端口值中的一个位的值,能够使相应并口引脚输出凹凸电平,然后能够用其来模仿I2C协议,完结并口与单片机间的I2C通讯。关于I2C协议,网上有许多材料,在此不再赘述。

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; //转入闲暇方式
}

(2)硬件进入方式

  如表2所列,将相应引脚设置为相应电平,在进行复位今后也可进入在线编程方式。值的留意的是,在芯片正常作业时应防止误入在线编程方式,不然后果不堪设想。表2中L代表低电平,X代表恣意电平。
              
3.3 W78E516B在线编程的完结

(1)单片机引导区程序

  W78E516B在线编程逻辑首要在这部分程序中完结。在参考文献[2]中的最终有一个示例程序,它是从外部的SRAM中读取数据对64KB程序区进行编程。将其改写一下,变为从串口读入数据。对程序区进行更新,大致流程与示例程序相同,代码也大致相同。有爱好的朋友能够自行阅览文献[2]中的程序源文件,在此只列出要害的更改处:
;运用24MHz晶振
;运用WAVE编译程序
;其间R3存有待写入数据字节数-1的高16位
;其间R4存有待写入数据字节数-1的低16位
JMP PROG_D_64K
PADJUEST:
INC R2 ;将低位地址添加1
CJNE R2,#00H,PROG_D_64K
INC R1 ;低位进位时将高位添加1
MOV SFRAH,R1 ;改动高位地址
PROG_D_64K:
MOV SFRAL,R2 ;将低位地址放入
JNB RI,$ ;从串口接纳一个待写入的字节
MOV A,SBUF
CLR RI
MOV SFRFD,A ;将待写入的值放入
MOV TCON,#10H ;敞开定时器
MOV PCON,#01H ;CPU进入IDLE状况(进行编程)
CLR C ; 比较R3、R4,看是否写入完结
MOV A,R4
SUBB A,R2
JNZ PADJUEST
CLR C
MOV A,R3
SUBB A,R1
JNZ PADJUEST

(2)PC机程序

  PC机程序为单片机供给一个数据源。该数据是通过PC机的串口进行数据传输的。程序由VC6.0编写,串口通讯运用的是VC自带的串口控件MSCOMM。因为MSCOMM的接纳数据是以音讯方式,一起在该程序中接纳的数据量很小,而发送数据为堵塞方式,所以新开一个作业线程用于发送数据,而接纳数据与主线程兼并。程序全体选用状况机方式。单片机进行擦除、编程、校验等各个状况时,都通过串口向PC机发送状况字,PC机通过接纳状况字来决议单片机现在的作业状况,并决议要向单片机供给的数据。一起主线程中有必定时器,假如在特定时间内单片机无应对,或应对有误,则报错,中止单片机的编程进程。值得留意的是,因为运用了MSCOMM控件,在未装VC6.0的机器上运转该程序要将源文件SYSTEM目录中的三个文件拷贝到system32体系目录下。程序主界面如图4所示。PC机与单片机通讯的作业流程如图5所示。
             
         
程序特征:
① 能够设定运用的串口与通讯的波特率。(与其相应的4KB引导区中的程序也要相应修正)。
② 能够设定使单片机进入在线编程方式的字符指令。
③ 进行烧写的文件支撑二进制文件格局(*.bin)与Intel的Hex文件格局(*.hex)。

4 结 论

  运用并口模仿I2C程序能够便利地对板上的MTV230芯片进行在线编程,运用串口为W78E516B供给数据源也可便利地对其进行编程,两者均通过实践查验,程序彻底到达预期意图。运用芯片的在线编程技术,便利了芯片程序的更新,降低了产品的保护本钱。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/guandian/285022.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部