DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2881|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-16 16:21:10 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
摘 要:
介绍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编程器的工作原理及其程序设计。
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接口的编程器价格较高,而一些商用笔记本电脑中取消了并口但保留着串口,并口编程器又不能用。而多数台式机上一般仍配置有串口。
                           
                        
                           
                                
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-11-23 13:22 , 耗时 0.095068 秒, 22 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表