当前位置:文档之家› SI-PROG编程器的工作原理及其程序设计

SI-PROG编程器的工作原理及其程序设计

SI-PROG编程器的工作原理及其程序设计时间:2009-06-16 13:03:06 来源:现代电子技术作者:安郁宽1,李宏2,闫鹏1 1.滨州医学院物理教研室2摘要:介绍SI-PROG编程器的工作原理,利用PC机串口UART芯片实现单片机的ISP下载。

PC机串口8250芯片中SOUT,DTR,RTS,CTS四个引脚的电平可通过其内部的几个寄存器分别进行控制或读取,利用引脚可实现单片机的ISP下栽。

介绍了8250与单片机之间通信信号的逻辑关系以及电平转换,分析了接收器的阈值电压的特点,给出了使用SI-PROG编程器的条件。

最后,以AVR单片机为例介绍了下载程序设计。

结果表明,利用PC机串口UART芯片可以实现对AVR单片机的ISP下载,其硬件电路和软件设计都很简单。

关键词:S1-PROG编程器;程序设计;UART;AVR单片机SI-PROG编程器为PonyProg 2000软件中使用的一种ISP编程器,该编程器利用PC机串口电路的异步通信控制器UART实现AVR,PIC,AT89等单片机的ISP编程。

虽然该编程器不为Atmel的AVRStudio 所支持,但是其硬件电路简单,成本低,便于制作,适于初学者进行学习和简单开发。

下面以AVR单片机为例,介绍SI-PROG编程器的工作原理及其程序设计。

l SI-PROG编程器的工作原理1.1 电路组成图1为SI-PROG串口编程器的工作原理图。

电路分为PC机串口电路、SI-PROG编程器和目标机3部分。

编程器通过9针D型连接器DB9与PC机串口连接,通过10针连接器J1与目标机连接,电路在文献[4]的基础上做了适当的简化。

J1引脚定义与Atmel的STK200下载线相同。

1.1.1 PC机串口电路及SI-PROG编程器PC机串口电路由U1~U4组成。

8250(U1)为异步通信控制器UART,SN75150(U2,U3)为驱动器,SN75154为线接收器。

U2,U3,U4实现8250引脚上TTL电平与串口DB9上RS 232电平转换。

SI-PROG 编程器则完成DB9上RS 232电平与目标机上TTL电平的转换。

1.1.2 串行SPI接口编程器通过目标机的SPI接口对其片内的FLASH程序存储器进行下载编程。

SPI接口由SCK,MOSI 和MISO等几条信号线组成。

下载编程的过程实际上是PC机与AVR的通信过程。

两者的关系是一种主从关系,PC机为主机,AVR为从机。

主机经MOSI引脚将串行数据发给从机,从机经MISO引脚将数据返回给主机。

SCK为串行时钟脉冲,由主机发往从机。

主机通过SCK脉冲控制与从机的数据传输。

图2为串行下载编程时序图。

单片机在SCK上升沿读取MOSI上的数据位,在SCK下降沿输出数据位到MISO。

1.2 信号的逻辑关系由图1可见,8250的11,33,32,36四个引脚分别通过编程器与AVR的RESET,MOSI,SCK,MISO 相连进行通信。

这4个引脚的电平可通过8250内部的3个寄存器进行设置或读取,如图3所示。

3个寄存器依次为线路控制寄存器(LCR)、Modem控制寄存器(MCR)和Modem状态寄存器(MSR)。

对于串口1,3个寄存器的端口地址一般为3FBH,3FCH和3FEH。

LCR的SB位、MCR的DTR位和RTS位分别控制11,33,32三脚的电平。

MSR的CTS位则反映了36脚的电平。

下面分析8250与AVR通信信号间的逻辑关系。

为了避免引起混乱,这里全部采用正逻辑描述。

1.2.1 RESET与SB位的逻辑关系线路控制寄存器LCR的D6位SB决定了8250的11脚的电平。

当SB=1时,11脚被强制拉到低电平,DB9的3脚为高电平。

当SB=O时,DB9的3脚为低电平。

逻辑关系在Q1上又反相一次。

因此,RESET 信号与SB位的逻辑关系为:RESET=SB (1)编程时只要通过OUT指令改变SB位的值,就可以控制RESET端的电平。

当8250复位后,SB=0,RESET=SB=1,RESET引脚为高电平。

1.2.2 MOSI,SCK信号与DTR,RTS位的逻辑关系MODEM控制寄存器MCR的D0位DTR控制着33脚的电平。

置DTR=1,则33脚DTR为低电平,是逻辑非关系。

U3相当于非门,故MOSI信号与DTR位的逻辑关系为:MOSI=DTR (2)类似的,SCK信号与MCR的D1位RTS的逻辑关系为:SCK=RTS (3)1.2.3 CTS位与MISO信号的逻辑关系MODEM状态寄存器(MSR)的D4位CTS反映了8250的36脚的电平,当CTS端为高电平时,CTS=O;反之CTS=1。

CTS位与CTS端是逻辑非关系。

因此,CTS位与MISO信号的的逻辑关系为:CTS=MISO (4)根据式(1)~式(4),下载编程时,设置或读取AVR的RESET,MOSI,SCK,MISO脚的电平问题就变成通过I/O指令设置或读取8250内部寄存器的SB,DTR,RTS,CTS位的问题。

1.3 SI-PROG编程器的电平转换根据RS 232标准,串口DB9上的两种电平分别为5~15 V和-5~-15 V。

编程器电路采用分立元件实现DB9上的RS 232电平与AVR的TTL电平间的转换。

1.3.1 RS 232到TTL电平的转换图1中,用限流电阻R3和4.7 V的稳压二极管Z2完成DB9的4脚上RS 232电平到J1的1脚上TTL 电平的转换。

5~15 V与-5~-15 V高低两种电平通过R3后将分别变成4.7 V和O V(实际为-O.7 V),符合TTL电平的要求。

类似的,限流电阻R4和4.7 V的稳压二极管Z1完成DB9的7脚上RS 232电平到J1的7脚上的TTL 电平的转换。

Q1,R1,R2接成反相器,DB9的3脚上的5~15 V与-5~-15 V两种电平分别使Q1处于饱和导通和截至状态,实现了RESET信号的电平转换。

1.3.2 TTL到RS 232电平的转换TTL到RS 232电平的转换由SN75154线接收器实现。

图4为SN75154的施密特电压传输特性曲线。

当阈值电压控制端T3接Vcc时,它工作在图4中曲线a状态,两个阈值电压分别为VIT-=-1.1 V和VIT+=2.2 V;当T3悬空时,它工作于图中曲线b状态,VIT-=-1.4 V,VIT+=2.2 V。

显然,对于后一状态,MISO引脚上的TTL电平信号可以通过U4到达8250,而前一状态则无法通过U4。

根据文献[2],长城0520 PC-XT机上SN75154的阈值电压控制端T3接到+5 V。

这样,SI-PROG编程器就不能工作。

计算机硬件发展到今天,UART-般均升级为16550,它与打印机并口、键盘控制器等电路一起集成于LPC芯片内,16550仍与8250相兼容。

驱动器和接收器也都集成到一个芯片内,如75232,75185。

这些芯片的接收器不再采用图4中曲线a那样的阈值电压,而改为与曲线b相接近的情况。

表1为3台PC 机阈值电压的实验测量结果。

表中,典型值为芯片数据手册中的数据,实验值为实验测量结果。

显然,3台PC机上,SI-PROG编程器都能正常工作。

2 下载程序设计根据式(1),用输出指令向3FBH端口写入40H,将使RESET端置低电平,写入00H,使RESET端置高电平;根据式(2),式(3)。

向3FCH端口写入数据,改变其D1位的数值,就可改变SCK端的电平,改变D0位的数值,即改变MOSI的电平;根据式(4),用输入指令读取3FEH端口,读取字节的D4位为MISO返回的数据位。

根据AVR单片机的串行下载算法,发送串行编程指令的操作步骤为:进入串行下载模式;发送编程使能指令;执行所需的读、写等操作指令,可执行一条,也可执行多条;退出串行编程模式。

(1)进入串行下载模式。

保持SCK端为低电平,给RESET端发送一个大于两个时钟周期的正脉冲,AVR 单片机便进入串行下载模式。

(2)发送串行编程指令。

根据图2,一个SCK时钟周期可分4个步骤:输出位数据到MOSI线,延时;令SCK由0变1,延时;读取MISO线上的数据位;令SCK由1变0,延时。

前两个步骤写一位数据到AVR,后两个步骤则从AVR读取1位数据。

8个SCK时钟周期写1个字节,同时读一个字节。

AVR单片机每条编程指令均由4个字节组成。

根据上述过程,将4个字节的编程指令依次写入到AVR,同时读取返回的4个字节数据。

(3)退出串行编程模式。

将RESET端置高电平,AVR单片机退出编程模式。

3 结语根据上述分析,采用VC++6.O编程成功地对ATtinyl3和ATmegal6两种芯片的FLASH进行了芯片擦除、读、写以及对熔丝位的读、写等操作。

注意编程时需要解决Windows NT/2000,/XP操作系统下访问I/O端口的技术问题。

使用SI-PROG编程器,必须满足两个条件:(1)串口的UART芯片要与8250兼容;(2)电平转换芯片接收器的阈值电压要介于TTL高、低两种电平之间。

多数PC机所配置的串口都能满足上述两个条件。

某些早期的PC机有可能与PC/XT机类似,不满足条件(1)。

目前,家用笔记本电脑上一般不再配置串口。

这样,SI-PROG编程器在某些PC机上不能使用。

然而,SI-PROG编程器仍有一定的使用空间。

毕竟LISB接口的编程器价格较高,而一些商用笔记本电脑中取消了并口但保留着串口,并口编程器又不能用。

而多数台式机上一般仍配置有串口。

相关主题