1 引言
随着单片机技术的不断发展和更新,支持ISP 或IAP 的单片机芯片日益增加,这类单片机芯片的程序下载采用了下载线的方式。这种串行程序下载方式所用的电平为TTL 电平,对单片机接口来说非常安全。单片机生产厂商推荐使用ISP 程序下载方式,如AT89S5X 芯片支持ISP 功能,并用AT89S5X 芯片取代了AT89C5X 芯片。
另一方面,单片机的程序的写入也从使用烧写器写入演化为使用下载线从计算机中将程序直接写入。下载线就是将计算机中的单片机程序写入单片机芯片的连接线。下载线与计算机的连接接口可分为串口下载线、并口下载线和USB 接口的下载线。这种串行程序下载方式所用的电平为TTL 电平,对单片机接口和单片机芯片来说更加安全。同时,采用下载线的程序写入方式不需要每次将单片机从应用电路中取下,既节省了时间,又完全可靠。
从计算机角度来看,今天计算机技术日新月异,计算机的外部接口也在不断的改变,其中主要作为计算机外部设备的外部接口有串行接口、并行接口和USB(Universal SerialBus, USB)接口。而通用串行总线(USB)具有高速、使用灵活方便等特点,成为了计算机的标准配置,并在计算机外部接口不断增多的趋势。为了适应现代计算机的发展,采用USB 接口的下载线是势在必行。
但是,不同的单片机有不同的下载线,一般来说,对应有不同的下载软件和硬件驱动程序。这些软件和程序随着功能的完善和操作等原因还有不同的版本。这造成下载线的使用者需要不断的更新软件,也让使用者在更换单片机时不仅更换下载线,还要熟悉新的下载软件。为此,如果能设计一种不需要下载软件的下载线或统一操作的下载软件,则能大大提高单片机程序下载的操作效率。研究和开发一种通用而不需下载软件的USB 接口的单片机的下载线更为必要。
2 硬件设计
2.1 设计思想
为了能够使用和兼容传统的下载线,一种方式是在计算机中连接一个USB 转并口(或串口)的连接线,然后再连接一根传统的下载线。在市场上,很多USB 转并口的线是给打印机专用的,它并不是一个模拟并口,而是模拟了一个USB 打印机,是不能用来连接并口下载线进行程序下载的。USB 转串口则不一样,因为它是真正的在电脑上模拟了一个串口,一般的编程软件都可以对这个串口进行读写操作。
另一种方式是单独开发的USB 编程器,其功能包含了USB 接口和下载线(也有一部分还带有编程器等功能),一些USB 编程器内部结构是一个USB 转串口的芯片转成串口后再接后续编程电路,这样的方式与单独的USB 转串口加下载线的原理和连接是相同的。
不管是哪一种下载线,都需要对应的驱动程序和下载程序,当然,这些下载线也支持在线仿真等功能。
为了实现计算机中不需要安装下载线驱动程序,在对下载线控制系统调试完成后,计算机系统就可使用系统中自有的USB 驱动程序实现程序对下载线进行读写,这样既能保证了在所有计算机上都可以通用,又实现了在计算机中不需要专用的下载程序,只需要如磁盘操作一样进行复制、粘贴或其他文件复制操作即可将程序写入单片机。
2.2 选用接口器件
在考虑了若干USB 接口芯片后,选用Philips 公司的PDIUSBD12 作为系统的USB 接口芯片,该芯片仅是一块USB转并行接口的系统芯片,所有的应答数据都由单片机提供,能够满足设计需要。
PDIUSBD12 是一款性价比很高的USB 器件,完全符合USB1.1 版的规范,PDIUSBD12 通常用作微控制器系统中实现与微控制器进行通信的高速通用并行接口。PDIUSBD12 引脚功能如图1 所示。

图1 PDIUSBD12 引脚图
2.3 PDIUSBD12 与单片机连接
在Philips 的PDIUSBD12 文档中,发布了一个与80C51的典型应用电路,如图2 所示。

在图2 中,ALE 接为低电平,表示一个独立的地址和数据总线配置。PDIUSBD12 的A0 脚与80C51 的任意一个I/O 口相连。该端口控制PDIUSBD12 的命令和数据状态。80C51 的多位地址和数据总线可直接与PDIUSBD12 的数据总线相连。
80C51 的频率输入可由PDIUSBD12 的CLKOUT 提供。
2.4 下载线接口电路
下载线的电路由三个部分组成,分别是单片机控制部分、USB 接口处理电路和下载线接口电路。
其中USB 接口处理电路是采用D12 芯片与系统控制单片机芯片的连接方式采用了模拟总线的方式进行连接,数据端口连接到单片机的P0 端口,并在P0 端口上接了一个上拉排阻实现了端口输出高电平。将D12 的读写控制分别接到P3.6 和P3.7 引脚,地址端A0 接到P1.1 引脚上。其时钟信号从CLKOUT 输出,连接到单片机AT89S52 的XTAL1 上,作为单片机的时钟信号,电路如图3 所示。

下载线接口采用P2 的部分引脚进行控制,分别是P2.0接OE 端控制输出端口是否有效,P2.1 接SCLK、P2.3 接MOSI、P2.5 接MISO 构成模拟SPI 接口,P2.7 控制目标芯片的RESET 引脚使其进入串行下载模式。另外,保留了P30 和P31 作为异步串行通信端口,作为系统调试端口,P15、P16、P17 和RESET 与VCC、GND 连接到系统控制芯片的程序下载接口。
为了保证在没有写程序时不影响单片机的工作,所有与单片机连接的下载线接口都应保持高阻状态,在需要编程时又能够将对应的电平影响单片机引脚,所以在设计中,参考了原altera 并口下载线的接口电路,采用三态的总线驱动芯片74HC244 作为下载线接口驱动电路。具体的接口电路如图4 所示。

图4 下载线接口电路。
下载线接口从1 脚至6 脚,依次是:地、复位、MOSI、MISO、SCK、VCC。
3 PCB 设计
3.1 调试端口
考虑到在具体调试时,下载线采用了串口作为调试端口,将从USB 端口接收到的数据通过串口线重新发回计算机,在计算机中使用串口调试助手显示内容。故将其振荡脉冲由外部D12 送过来的信号改为由单片机外接11.0592MHz 晶振与振荡电容产生的频率,以满足硬件调试需要。
3.2 PCB 制作
在完成了电路原理图的情况下,根据下载线电路原理图设计了PCB 电路图,如图5 所示。图5 是一双面的PCB,图5(a)顶层线路,图5(b)底层线路。

图5(a) 顶层线路

图5(b) 底层线路
在完成软件设计后,用此下载线将单片机与计算机连接,很好的实现了程序下载。
4 结束语
本文所设计的下载线能够实现与计算机的USB 端口连接,通过在单片机向计算机声明为程序下载设备,成为计算机的一个常规设备,通过安装对应的驱动程序后,下载线的硬件就能够正常工作。
同时,对目标单片机来说,采用了74HC244 作为驱动器件,符合常规单片机的驱动要求。在单片机中只要按照目标单片机的下载时序,编写对应的单片机下载程序,即可将从计算机来的代码转发到目标单片机,从而实现单片机的程序下载。