0 引言
随着单片机技术的不断发展,支持ISP(In-SystemProgramming)或IAP(In-Application Programming)的单片机芯片日益增加,这类单片机芯片的应用程序写入采用了在线下载的方式。单片机与计算机的连接端口也从串口或并口逐步过渡到USB(Universal SerialBus)口。由于USB口具有高速、使用灵活方便等特点,单片机程序下载连接口也更加广泛地应用USB口。但是,USB口与单片机连接的下载线在设计和应用上还是与串、并口连接一样,不同的单片机采用不同的下载线,也对应有不同的下载软件和硬件驱动程序。这些软件和程序随着功能的完善和操作改进等原因具有不同的版本。这就造成下载线的使用者需要不断更新软件,也让使用者在更换单片机时不仅更换下载线,还要熟悉新的下载软件及使用方法。为此,如果能设计一种不需要下载软件的下载线或统一操作的下载软件,则能大大提高单片机程序下载线的通用性及操作效率。设计一种通用而不需下载软件的USB接口的单片机的下载线就显得尤其必要。
1.硬件设计
1.1 设计分析
单片机USB接口下载线对于计算机而言,就是一个USB外部设备。为了实现在计算机中不需要安装额外的下载线驱动程序和操作软件,尽可能使用操作系统已有的USB设备的驱动程序、操作系统命令或软件作为下载线的驱动程序及操作软件。在对计算机操作系统进行分析和比较下,目前计算机操作系统中都带有U盘的驱动程序,资源管理器就是一个现有的磁盘操作软件。若将下载线虚拟为一个U盘,即从计算机角度将下载线和目标单片机视为一个虚拟磁盘,计算机对目标单片机的程序下载变为计算机对磁盘的写操作。
当下载线系统接收到计算机写入该磁盘的文件时,通过下载线系统程序对数据进行处理后把数据写入目标单片机,实现单片机程序下载。下载线系统完成对计算机的磁盘响应和程序的控制和传输,这样既能保证在所有计算机上都可以通用,又实现了在计算机中不需要专用的下载程序,只需要如磁盘操作一样进行复制、粘贴或其他文件复制操作即可将程序写入单片机。
下载线硬件系统如图1所示。
1.2 硬件设计
在分析各种USB接口芯片后,选用Philips公司的PDIUSBDl2作为系统的USB接口芯片,实现与微控制器进行通信的高速通用并行接口。该芯片采用了USB 1.1标准,现有的计算机采用USB 1.1及USB 2.O接口标准,采用PDIUSBDl2作为下载线与计算机的接口芯片能够满足设计需要。
为了实现可靠的程序下载,对目标单片机的接口电路选用原Altra的并口驱动芯片74HC244作为下载线与目标单片机的接口驱动芯片。该芯片是三态的总线驱动芯片,在写入和读出目标单片机数据时有足够的驱动能力和较小的延时,能够实现正常的程序下载,在程序下载完成后,该芯片工作于高阻态,使下载线不影响目标单片机的正常工作。系统电路原理如图2所示。
在图2中,PDIUSBDl2的数据端口连接到单片机的P0端口,实现单片机与PDIUSBDl2的数据交换通道。将PDIUSBDl2的读写控制分别接到P3.6和P3.7引脚,实现单片机写入和读出PDIUSBDl2的数据。地址端A0接到P2.O引脚上,用于实现对PDIUSBDl2的数据和地址选择。PDIUSB Dl2从CLKOUT输出时钟信号,连接到单片机AT89S52的XTAL1上,作为单片机的时钟信号。
下载线接口驱动电路74HC244采用P2的部分引脚进行控制。其中,P2.1接74HC244的门控端,输出低电平时电路工作,在平时输出高电平时使74HC244工作在高阻状态,使下载线与目标单片机脱离连接。P2.2接2Y4通过下载线接口作为SCK,实现ISP接口的同步脉冲。P2.3通过74HC244后接到下载线接口作为MOSI,实现对目标芯片的串行数据读出。下载线接口的MISO通过74HC244驱动后接到P2.5,实现对目标芯片的串行数据的读出。P2.5通过74HC244控制目标芯片的RESET引脚,使其进入和退出串行程序下载模式。
另外,在系统中保留了P3.O和P3.1作为异步串行通信端口,作为系统调试端口。P1.5,P1.6,P1.7和RESET与VCC,GND连接到系统控制芯片,作为系统控制芯片自身的程序写入接口。
2 软件系统设计
2.1 系统架构
基于虚拟内存的USB下载线,就是从计算机角度看,下载线与目标单片机是计算机的一个通用的USB存储器,在对目标单片机程序进行写操作时,就像对磁盘(U盘)进行写操作一样。
在PC机端主要完成的任务是USB设备驱动程序,即将USB设备(下载线)识别为U盘,实现文件的写入和读出操作。在Windows 2000及以后的操作系统中,将USB磁盘驱动作为标准驱动程序,直接利用操作系统磁盘驱动程序。文件的写入和读出,由操作系统完成相关功能,在本系统中不需要编写程序。
下载线与计算机连接采用PDIUSBD12作为接口芯片,要与计算机交换数据,就需要对PDIUSBDl2芯片进行操作,下载线系统需要PDIUSBDl2驱动程序。要向计算机说明下载线是一个U盘,下载线系统需要在计算机硬件询问时要按USB Disk应答,下载线系统还需要构建一个文件系统,由于下载线系统是面向单片机的程序下载,数据量小,采用FAT12作为下载线的文件系统。
当下载线接收到计算机传送过来的一个程序文件时,需要将程序文件中的内容分离出来。设计本系统主要支持bin和HEX两种格式,其中bin文件就是机器指令的数据,直接写入单片机的程序存储器中即可完成程序下载;Hex文件的INTEL格式是Intel公司提出的按地址排列的数据信息,并不是直接的机器指令代码,因此还需要将HEX格式转换为bin格式。
在对目标单片机进行程序下载时,需要按照目标单片机的程序下载时序,逐次将数据写入目标单片机的程序存储器中,下载系统需要控制下载接口电路实现程序时序。整个硬件电路结构与软件关系如图3所示。
2.2 程序设计
下载线是连接计算机与目标单片机的中间设备,仅在计算机发出操作要求时才产生对应的操作响应,因而下载线系统程序设计过程中以处理计算机端数据为主要目标,根据计算机的数据对单片机进行相应的操作。为了程序编写简洁和易于调试,设计系统主程序采用查询方式对USB接口数据进行处理。对目标单片机的程序下载写入时,将其设为整个程序的一个功能模块,仅当需要下载写入时调用该功能模块,在程序编写中将其定义为一个系统函数。
与PC的接口芯片采用了PDIUSBD12作为USB接口芯片,下载线为了处理来自USB接口的数据,必须完成对PDIUSBD12的处理。在设计中利用Philips提供的PDIUSBD12驱动程序进行修改加以实现。
数据处理过程的系统主函数如下:
3 系统调试
首先对下载线系统进行程序写入和程序调试,然后再进行综合调试。按下面步骤进行。
3.1 调试下载线系统
首先将下载系统控制程序写入系统单片机,然后进行ISP下载调试。
将BIN文件代码写进下载线控制单片机程序内部,采用程序直接将二进制代码写进目标单片机,观察目标单片机的运行情况来判断程序是否写入。
将HEX文件内的数据写在下载线控制单片机的源程序内部,通过单片机程序对HEX格式进行解释并写入目标单片机,观察目标单片机的运行情况来判断程序是否解释并写入正确。
3.2 硬件识别调试
通过将下载线插入PC,在PC上发现USB设备,验证下载线硬件是否工作。通过对USB器件的应答,能够在计算机中出现一个USB盘符。
通过对下载线内部的磁盘启动扇区、FAT表和根目录等信息的写入,在PC上出现一个具体的磁盘,并能在磁盘上创建文件。
3.3 综合调试
在下载线所对应的磁盘上写入HEX文件,由下载线系统单片机对HEX文件进行解释,并写入目标单片机,在目标单片机实验板上观察结果以判断下载线是否完成功能。
4 结语
通过下载系统的硬件和软件设计,在计算机中不需要安装驱动程序,利用计算机系统中自带的USB磁盘的驱动程序,只需要复制、粘贴或其他文件复制操作即可将单片机应用程序写入单片机,实现计算机通用的USB下载线的设计。