位置:51电子网 » 技术资料 » 单 片 机

利用串口与并口实现51内核单片机在线编程

发布时间:2008/5/28 0:00:00 访问次数:613

摘要:详细说明利用并口模拟i2c总线协议,实现mysonmtv230芯片的在线编程(isp)过程,以及利用pc机的串口通信实现winbondw78e516b的在线编程(isp)过程;阐述pc机的串口与并口在单片机开发中的应用。

关键词:并口编程串口通信在线编程ispmtv230w78e516b

引言

1在线编程简介

  51内核的单片机在线编程模式一般分为两大类。一类是使用jtag协议的在线编程模式。这类模式一般由厂家提供在线编程工具,使用方便。使用这一类模式的单片机价格往往较高,使用的厂商也不多,故不在本文的讨论之列。另一类在线编程模式是使用一条特殊的指令,使单片机进入在线编程模式。在进入在线编程模式后,要自己控制对单片机的擦除写入逻辑。这一类模式又可细分为两种不同的模式:一是进入在线编程模式后,单片机只是提供一个接口,不再运行用户的程序,擦写逻辑全由上位机(pc)提供,如以下要讨论的mtv230就属于这种模式;另一类是进入在线编程模式以后,芯片会运行在某一区域的用户编写的程序,芯片的编程逻辑都由芯片中这段程序控制,上位机(pc)只是作为单片机的一个数据源,向单片机传输要擦写的数据,如以下要讨论的w78e516b。

2利用并口对mtv230在线编程的实现

2.1mtv230简介

  mtv230是由myson公司出品的一块集成osd功能的基于51内核的芯片。它使用12mhz晶振时可以设置为倍频工作,同时还集成了4路a/d和4路pwmdac。其中最具竞争力的便是它使用了flashosd字库。与一般的osd芯片不同,它的字库不是掩膜在芯片中,用户可以自己定制。该款芯片可以满足视频应用中的控制需求,因而被广泛应用于视频类产品中。
2.2mtv230在线编程模式的进入

  要使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.3pc机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引脚先置高再置低,汇编语言可以这样写:
movdx,0x378;设置端口地址
moval,1;将待写入的位0的值写入al中
outdx,al;将值送到相应端口
moval,0
outdx,al

  但在win2000/xp中,由于系统加强了对硬件设备的保护,假如在程序中直接用in与out指令访问并口,则会引发系统的非法操作;而并口访问又不像串口,直接可以使用windowsapi函数,因而就必须使用驱动程序。可以www.sstnet.com网站上去下载driverlinxporti/odriver并口驱动程序。该程序可以免费复制与分发。有了这个驱动程序,在win2000/xp下编写并口程序就十分方便。安装该驱动程序后,在程序中

摘要:详细说明利用并口模拟i2c总线协议,实现mysonmtv230芯片的在线编程(isp)过程,以及利用pc机的串口通信实现winbondw78e516b的在线编程(isp)过程;阐述pc机的串口与并口在单片机开发中的应用。

关键词:并口编程串口通信在线编程ispmtv230w78e516b

引言

1在线编程简介

  51内核的单片机在线编程模式一般分为两大类。一类是使用jtag协议的在线编程模式。这类模式一般由厂家提供在线编程工具,使用方便。使用这一类模式的单片机价格往往较高,使用的厂商也不多,故不在本文的讨论之列。另一类在线编程模式是使用一条特殊的指令,使单片机进入在线编程模式。在进入在线编程模式后,要自己控制对单片机的擦除写入逻辑。这一类模式又可细分为两种不同的模式:一是进入在线编程模式后,单片机只是提供一个接口,不再运行用户的程序,擦写逻辑全由上位机(pc)提供,如以下要讨论的mtv230就属于这种模式;另一类是进入在线编程模式以后,芯片会运行在某一区域的用户编写的程序,芯片的编程逻辑都由芯片中这段程序控制,上位机(pc)只是作为单片机的一个数据源,向单片机传输要擦写的数据,如以下要讨论的w78e516b。

2利用并口对mtv230在线编程的实现

2.1mtv230简介

  mtv230是由myson公司出品的一块集成osd功能的基于51内核的芯片。它使用12mhz晶振时可以设置为倍频工作,同时还集成了4路a/d和4路pwmdac。其中最具竞争力的便是它使用了flashosd字库。与一般的osd芯片不同,它的字库不是掩膜在芯片中,用户可以自己定制。该款芯片可以满足视频应用中的控制需求,因而被广泛应用于视频类产品中。
2.2mtv230在线编程模式的进入

  要使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.3pc机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引脚先置高再置低,汇编语言可以这样写:
movdx,0x378;设置端口地址
moval,1;将待写入的位0的值写入al中
outdx,al;将值送到相应端口
moval,0
outdx,al

  但在win2000/xp中,由于系统加强了对硬件设备的保护,假如在程序中直接用in与out指令访问并口,则会引发系统的非法操作;而并口访问又不像串口,直接可以使用windowsapi函数,因而就必须使用驱动程序。可以www.sstnet.com网站上去下载driverlinxporti/odriver并口驱动程序。该程序可以免费复制与分发。有了这个驱动程序,在win2000/xp下编写并口程序就十分方便。安装该驱动程序后,在程序中

相关IC型号

热门点击

 

推荐技术资料

硬盘式MP3播放器终级改
    一次偶然的机会我结识了NE0 2511,那是一个远方的... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!