当前位置:首页 > 智能硬件 > 智能硬件
[导读]详细说明利用并口模拟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提供数据源也可方便地对其进行编程,两者均经过实践检验,程序完全达到预期目的。使用芯片的在线编程技术,方便了芯片程序的更新,降低了产品的维护成本。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

Holtek隆重推出全新一代32-bit Arm® Cortex®-M0+ 5V CAN MCU - HT32F53231/HT32F53241/HT32F53242/HT32F53252。这一系列单片机带有来自Bosc...

关键字: MCU 工业自动化 单片机

Holtek精益求精,宣布推出全新5V宽电压Arm® Cortex®-M0+ 32-bit MCU系列HT32F50431/HT32F50441/HT32F50442/HT32F50452。此系列MCU经多方位升级能满...

关键字: 单片机 智能家居 工业控制

单片机小精灵是一款针对单片机开发者的辅助工具,它集成了代码编辑、编译、调试等多项功能,旨在帮助开发者更加高效地进行单片机项目的开发。本文将详细介绍单片机小精灵的使用方法,帮助读者快速掌握这款工具,提高开发效率。

关键字: 单片机 代码编辑 辅助工具

单片机和PLC将是下述内容的主要介绍对象,通过这篇文章,小编希望大家可以对二者的相关情况以及信息有所认识和了解,详细内容如下。

关键字: PLC 单片机

在这篇文章中,小编将对单片机的相关内容和情况加以介绍以帮助大家增进对单片机的了解程度,和小编一起来阅读以下内容吧。

关键字: 单片机 芯片 集成电路

一直以来,单片机都是大家的关注焦点之一。因此针对大家的兴趣点所在,小编将为大家带来单片机的相关介绍,详细内容请看下文。

关键字: 单片机 控制器

今天,小编将在这篇文章中为大家带来STM32单片机最小系统的有关报道,通过阅读这篇文章,大家可以对它具备清晰的认识,主要内容如下。

关键字: 单片机 单片机最小系统 STM32

51单片机将是下述内容的主要介绍对象,通过这篇文章,小编希望大家可以对51单片机的相关情况以及信息有所认识和了解,详细内容如下。

关键字: 单片机 51单片机

在这篇文章中,小编将对单片机最小系统的相关内容和情况加以介绍以帮助大家增进对它的了解程度,和小编一起来阅读以下内容吧。

关键字: 单片机 单片机最小系统

一直以来,单片机都是大家的关注焦点之一。因此针对大家的兴趣点所在,小编将为大家带来单片机的相关介绍,详细内容请看下文。

关键字: 单片机 芯片
关闭
关闭