×
嵌入式开发 > 详情

用ATmega8单片机设计串行编程器

发布时间:2020-06-13 发布时间:
|

通常进行单片机实验和开发,编程器是必不可少的。仿真、调试完的程序要借助编程器写入单片机的存储器中,随着单片机技术的发展出现了MTP(可多次编程)存储器技术和ISP(在系统可编程)技术,这样就可以省去昂贵的仿真器,只要通过计算机接口和一条串行下载线就可直接在目标芯片上编程。ATmega8就是一种具有MTP与ISP功能的单片机,他也是AVR单片机中价格性能比最高的单片机,因此研究他的串行编程特性对利用他的上述功能来开发应用单片机有很高的实用价值。

1ATmega8的体系结构与主要性能特点

ATmega8是ATMEL公司在2002年推出的一款新型的AVR高档单片机,他的芯片内部集成了较大容量的存储器和丰富强大的硬件接口电路,具备 AVR高档单片机MEGE系列的全部性能和特点。但由于采用了小引脚封装(为 DIP28和TQFP/MLF32),所以价格仅和低档单片机相当,再加上AVR单片机的系统内在可编程特性,使得无需购买昂贵的仿真器,只需要一条具有编程器功能的串行下载线就可以进行单片机嵌入式系统的设计和开发。

ATmega8是一款采用低功耗CMOS工艺生产的基于AVR RISC(精简指令集)结构的8 b单片机。AVR单片机的核心是将32个工作寄存器和丰富的指令集连接在一起,所有的工作寄存器都与ALU(算术逻辑单元)直接相连,实现了在一个时钟周期内执行的一条指令同时访问(读写)2个独立寄存器的操作。这种结构提高了代码效率,使得大部分指令的执行时间仅为一个时钟周期。因此,ATmega8可以达到将近1 MIPS/MHz的性能,运行速度比普通的单片机高出10倍。

ATmega8的主要性能特点如下:

(1)高性能、低功耗的8 b AVR微控制器,先进的RISC精简指令集结构,130条功能强大的指令,大多数为单周期指令,32个8 b的通用工作寄存器,工作在16 MHz时具有16 MIPS的性能。

(2)片内集成了较大容量的非易失性程序和数据存储器

8 kB的Flash程序存储器,可擦写次数大于10 000次;512 B的E2RROM,擦写次数至少100 000次;支持可在线编程(ISP)和可应用自编程(IAP);可编程的程序加密位。

(3)丰富强大的外部接口性能

3个PWM通道,可实现任意16 b以内的、相位和频率可调的PWM脉宽调制输出;6通道A/D转换;一个I2C的串行接口,一个可编程的USART接口;一个支持主/从、收/发的SPI同步串行接口;2个带预分频的8 b定时/计数器,1个带预分频的16 b定时/计数

(4)特殊的微控制器性能

可控制的上电复位延时电路和可编程的欠电压检测电路;内部和外部共18个中断源;5种休眠模式(空闲,ADC噪声抑制,省电,掉电,待命)。

2串行编程器的设计

从上面的描述我们就对ATmega8有了一个总体的认识,ATmega8的在线可编程功能为单片机的设计和开发提供了极大的方便,工程人员可以编译完程序后直接通过编程器将程序写入Flash存储器(而无需昂贵的仿真器)。并且可以自己来设计编程器,下面就以ATmega8作为处理芯片来设计一个串行编程器,也通过这个应用的例子来介绍一下ATmega8的具体应用。

(1)硬件电路,串行编程器的电路原理图如图1所示。

从PC机的串行口通过RS232引出3条线:RXD,TXD,GND用于PC机与ATmega8的通信。最右端的5条线分别与要写入程序的芯片相连。

(2)串行编程器的工作原理

ATmega8的同步串行接口SPI允许在几个AVR单片机之间,以与SPI接口协议兼容的方式进行高速的同步数据传输。因此可以把串行编程器的处理芯片设计为主机,目标芯片就作为从机,这样就可以实现2个单片机的数据传输,从而实现程序的烧写过程。数据由主机发送从机接收。向主机的SPI数据寄存器 SPDR装入待发送数据的写操作,自动启动SPI时钟发生器,于是该数据便在时钟脉冲的控制下开始逐位左移或右移。若设定最高位MSB先传送,主机的 MSB将自MOSI(PB3)引脚输出,经从机的MOSI引脚进入其8 b移位寄存器中,占据最低位LSB的位置。同时,从机的MSB由MISO(PB4)引脚移出,通过主机的MISO引脚进入到主机移位寄存器中,作为他的 LSB位。这样8个时钟脉冲后,主机SPI移位寄存器中的内容就完全送给了从机。图2为主从机通信流程图。

(3)具体的工作过程

把图2的ATmega8设为主机,PB3(MOSI),PB4(MISO),PB6(SCK),PB1管脚用于控制对目标芯片的写入。PB1引脚控制单片机的Reset,只有当 Reset被拉为低时单片机才进入串行编程模式。从机的所有I/O引脚都处于输入状态且上拉电阻被禁止。PB6(SCK)引脚用于提供串行编程的时钟,他在上电期间必须为低电平,这样才能保证主机芯片和从机芯片的87时钟同步,因此上电期间给Reset一个正脉冲(至少2个 XTAL1时钟周期)以保证SCK的低电平,这可以通过软件来实现。PB3(MOSI)引脚用于将程序送入从机中。数据在SCK的上升沿被输入,从机的 Reset被拉低后,总是将他的MOSI设为上拉禁止的输入状态,用于从主机接收数据。当从从机中读取数据时,数据在SCK的下降沿输出。设计硬件时要保证从机的Reset,SCK,MOSI,MISO这4根线能被编程器自由地置高置低,否则不可能进行在片编程。具体的命令字格格式可参照ATmega8 manual中所给出的串行编程命令表。



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
单片机控制220VAC开断