2503F–AVR–12/03产品特性•高性能、低功耗的8位AVR®微处理器•先进的RISC结构–131条指令–大多数指令执行时间为单个时钟周期–32个8位通用工作寄存器–全静态工作–工作于16MHz时性能高达16MIPS–只需两个时钟周期的硬件乘法器•非易失性程序和数据存储器–32K字节的系统内可编程Flash擦写寿命:10,000次–具有独立锁定位的可选Boot代码区通过片上Boot程序实现系统内编程真正的同时读写操作–1024字节的EEPROM擦写寿命:100,000次–2K字节片内SRAM–可以对锁定位进行编程以实现用户程序的加密•JTAG接口(与IEEE1149.1标准兼容)–符合JTAG标准的边界扫描功能–支持扩展的片内调试功能–通过JTAG接口实现对Flash、EEPROM、熔丝位和锁定位的编程•外设特点–两个具有独立预分频器和比较器功能的8位定时器/计数器–一个具有预分频器、比较功能和捕捉功能的16位定时器/计数器–具有独立振荡器的实时计数器RTC–四通道PWM–8路10位ADC8个单端通道TQFP封装的7个差分通道2个具有可编程增益(1x,10x,或200x)的差分通道–面向字节的两线接口–可编程的串行USART–可工作于主机/从机模式的SPI串行接口–具有独立片内振荡器的可编程看门狗定时器–片内模拟比较器•特殊的处理器特点–上电复位以及可编程的掉电检测–片内经过标定的RC振荡器–片内/片外中断源–6种睡眠模式:空闲模式、ADC噪声抑制模式、省电模式、掉电模式、Standby模式以及扩展的Standby模式•I/O和封装–32个可编程的I/O口–40引脚PDIP封装,44引脚TQFP封装,与44引脚MLF封装•工作电压–ATmega32L:2.7-5.5V–ATmega32:4.5-5.5V•速度等级–ATmega32L:0-8MHz–ATmega32:0-16MHz•ATmega32L在1MHz,3V,25°C时的功耗–正常模式:1.1mA–空闲模式:0.35mA–掉电模式:1µA具有32KB系统内可编程Flash的8位微控制器ATmega32ATmega32L初稿本文是英文数据手册的中文翻译,其目的是方便中国用户的阅读。它无法自动跟随原稿的更新,同时也可能存在翻译上的错误。读者应该以英文原稿为参考以获得更准确的信息。2ATmega32(L)2503F–AVR–12/03引脚配置Figure1.ATmega32的引脚声明本数据手册的典型值来源于对器件的仿真,以及其他基于相同产生工艺的AVR微控制器的标定特性。本器件经过特性化之后将给出实际的昀大值和昀小值。(XCK/T0)PB0(T1)PB1(INT2/AIN0)PB2(OC0/AIN1)PB3(SS)PB4(MOSI)PB5(MISO)PB6(SCK)PB7RESETVCCGNDXTAL2XTAL1(RXD)PD0(TXD)PD1(INT0)PD2(INT1)PD3(OC1B)PD4(OC1A)PD5(ICP)PD6PA0(ADC0)PA1(ADC1)PA2(ADC2)PA3(ADC3)PA4(ADC4)PA5(ADC5)PA6(ADC6)PA7(ADC7)AREFGNDAVCCPC7(TOSC2)PC6(TOSC1)PC5(TDI)PC4(TDO)PC3(TMS)PC2(TCK)PC1(SDA)PC0(SCL)PD7(OC2)PA4(ADC4)PA5(ADC5)PA6(ADC6)PA7(ADC7)AREFGNDAVCCPC7(TOSC2)PC6(TOSC1)PC5(TDI)PC4(TDO)(MOSI)PB5(MISO)PB6(SCK)PB7RESETVCCGNDXTAL2XTAL1(RXD)PD0(TXD)PD1(INT0)PD2(INT1)PD3(OC1B)PD4(OC1A)PD5(ICP)PD6(OC2)PD7VCCGND(SCL)PC0(SDA)PC1(TCK)PC2(TMS)PC3PB4(SS)PB3(AIN1/OC0)PB2(AIN0/INT2)PB1(T1)PB0(XCK/T0)GNDVCCPA0(ADC0)PA1(ADC1)PA2(ADC2)PA3(ADC3)PDIPTQFP/MLF3ATmega32(L)2503F–AVR–12/03综述ATmega32是基于增强的AVRRISC结构的低功耗8位CMOS微控制器。由于其先进的指令集以及单时钟周期指令执行时间,ATmega32的数据吞吐率高达1MIPS/MHz,从而可以缓减系统在功耗和处理速度之间的矛盾。方框图Figure2.结构框图INTERNALOSCILLATOROSCILLATORWATCHDOGTIMERMCUCTRL.&TIMINGOSCILLATORTIMERS/COUNTERSINTERRUPTUNITSTACKPOINTEREEPROMSRAMSTATUSREGISTERUSARTPROGRAMCOUNTERPROGRAMFLASHINSTRUCTIONREGISTERINSTRUCTIONDECODERPROGRAMMINGLOGICSPIADCINTERFACECOMP.INTERFACEPORTADRIVERS/BUFFERSPORTADIGITALINTERFACEGENERALPURPOSEREGISTERSXYZALU+-PORTCDRIVERS/BUFFERSPORTCDIGITALINTERFACEPORTBDIGITALINTERFACEPORTBDRIVERS/BUFFERSPORTDDIGITALINTERFACEPORTDDRIVERS/BUFFERSXTAL1XTAL2RESETCONTROLLINESVCCGNDMUX&ADCAREFPA0-PA7PC0-PC7PD0-PD7PB0-PB7AVRCPUTWIAVCCINTERNALCALIBRATEDOSCILLATOR4ATmega32(L)2503F–AVR–12/03AVR内核具有丰富的指令集和32个通用工作寄存器。所有的寄存器都直接与算逻单元(ALU)相连接,使得一条指令可以在一个时钟周期内同时访问两个独立的寄存器。这种结构大大提高了代码效率,并且具有比普通的CISC微控制器昀高至10倍的数据吞吐率。ATmega32有如下特点:32K字节的系统内可编程Flash(具有同时读写的能力,即RWW),1024字节EEPROM,2K字节SRAM,32个通用I/O口线,32个通用工作寄存器,用于边界扫描的JTAG接口,支持片内调试与编程,三个具有比较模式的灵活的定时器/计数器(T/C),片内/外中断,可编程串行USART,面向字节的两线串行接口,8路10位具有可选差分输入级可编程增益(TQFP封装)的ADC,具有片内振荡器的可编程看门狗定时器,一个SPI串行端口,以及六个可以通过软件进行选择的省电模式。工作于空闲模式时CPU停止工作,而USART、两线接口、A/D转换器、SRAM、T/C、SPI端口以及中断系统继续工作;掉电模式时晶体振荡器停止振荡,所有功能除了中断和硬件复位之外都停止工作;在省电模式下,异步定时器继续运行,允许用户保持一个时间基准,而其余功能模块处于休眠状态;ADC噪声抑制模式时终止CPU和除了异步定时器与ADC以外所有I/O模块的工作,以降低ADC转换时的开关噪声;Standby模式下只有晶体或谐振振荡器运行,其余功能模块处于休眠状态,使得器件只消耗极少的电流,同时具有快速启动能力;扩展Standby模式下则允许振荡器和异步定时器继续工作。本芯片是以Atmel高密度非易失性存储器技术生产的。片内ISPFlash允许程序存储器通过ISP串行接口,或者通用编程器进行编程,也可以通过运行于AVR内核之中的引导程序进行编程。引导程序可以使用任意接口将应用程序下载到应用Flash存储区(ApplicationFlashMemory)。在更新应用Flash存储区时引导Flash区(BootFlashMemory)的程序继续运行,实现了RWW操作。通过将8位RISCCPU与系统内可编程的Flash集成在一个芯片内,ATmega32成为一个功能强大的单片机,为许多嵌入式控制应用提供了灵活而低成本的解决方案。ATmega32具有一整套的编程与系统开发工具,包括:C语言编译器、宏汇编、程序调试器/软件仿真器、仿真器及评估板。引脚说明VCC数字电路的电源GND地端口A(PA7..PA0)端口A做为A/D转换器的模拟输入端。端口A为8位双向I/O口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口A处于高阻状态。端口B(PB7..PB0)端口B为8位双向I/O口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口B处于高阻状态。端口B也可以用做其他不同的特殊功能,请参见P55。端口C(PC7..PC0)端口C为8位双向I/O口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口C处于高阻状态。如果JTAG接口使能,即使复位出现引脚PC5(TDI)、PC3(TMS)与PC2(TCK)的上拉电阻被激活。除去移出数据的TAP态外,TD0引脚为高阻态。端口C也可以用做其他不同的特殊功能,请参见P58。5ATmega32(L)2503F–AVR–12/03端口D(PD7..PD0)端口D为8位双向I/O口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口D处于高阻状态。端口D也可以用做其他不同的特殊功能,请参见P60。RESET复位输入引脚。持续时间超过昀小门限时间的低电平将引起系统复位。门限时间见P35Table15。持续时间小于门限间的脉冲不能保证可靠复位。XTAL1反向振荡放大器与片内时钟操作电路的输入端。XTAL2反向振荡放大器的输出端。AVCCAVCC是端口A与A/D转换器的电源。不使用ADC时,该引脚应直接与VCC连接。使用ADC时应通过一个低通滤波器与VCC连接。AREFA/D的模拟基准输入引脚。代码例子本数据手册包含了一些简单的代码例子以说明如何使用芯片各个不同的功能模块。这些例子都假定在编译之前已经包含了正确的头文件。有些C编译器在头文件里并没有包含位定义,而且各个C编译器对中断处理有自己不同的处理方式。请注意查阅相关文档以获取具体的信息。6ATmega32(L)2503F–AVR–12/03AVRCPU内核介绍本节从总体上讨论AVR内核的结构。CPU的主要任务是保证程序的正确执行。因此它必须能够访问存储器、执行运算、控制外设以及处理中断。结构综述Figure3.AVR结构的方框图为了获得昀高的性能以及并行性,AVR采用了Harvard结构,具有独立的数据和程序总线。程序存储器里的指令通过一级流水线运行。CPU在执行一条指令的同时读取下一条指令(在本文称为预取)。这个概念实现了指令的单时钟周期运行。程序存储器是可以在线编程的Flash。快速访问寄存器文件包括32个8位通用工作寄存器,访问时间为一个时钟周期。从而实现了单时钟周期的ALU操作。在典型的ALU操作中,两个位于寄存器文件中的操作数同时被访问,然后执行运算,结果再被送回到寄存器文件。整个过程仅需一个时钟周期。寄存器文件里有6个寄存器可以用作3个16位的间接寻址寄存器指针以寻址数据空间,实现高效的地址运算。其中一个指针还可以作为程序存储器查询表的地址指针。这些附加的功能寄存