AVR单片机的主要特性及基本结构
- 格式:pdf
- 大小:1.52 MB
- 文档页数:12
本资料节选自手把手单片机系列教程,受版权保护,任何人不得肆意篡改发布,如需完整资料,请到周兴华培训中心官方网站查看,或者购买相关的手把手书籍AVR单片机的主要特性及基本结构AVR为采用RISC精简指令集单片机,从而使单片机运行速度更快,其绝大部分的指令可以在一个处理器时钟周期内完成。
如果使用MIPS(Millions of Instructions per Second,每秒执行百万条指令数)来衡量计算速度,一个16MHz时钟频率的AVR单片机可以在一秒钟内执行一千六百万条左右的指令,也就是将近16个MIPS的速度。
AVR单片机的结构主要分为三部分:CPU(Central Processing Unit)、存储器和I/O口。
4.1ATMEGA16(L)单片机的产品特性4.1.1高性能、低功耗的8位微处理器1.先进的RISC结构2.131条指令中大多数指令执行时间为单个时钟周期3.32个8位通用工作寄存器4.全静态工作5.工作于16MHz时性能高达16MIPS6.只需两个时钟周期的硬件乘法器4.1.2非易失性程序和数据存储器1.16K字节的系统内可编程FLASH:1).擦写寿命达10000次2).具有独立锁定位的可选Boot代码区3).通过片上Boot程序实现系统内编程,真正的同时读写操作2.512字节的EEPROM,擦写寿命达100000次3.1K字节的片内SRAM4.可以对锁定位进行编程以实现用户程序的加密4.1.3JTAG接口(与IEEE1149.1标准兼容)1.符合JTAG标准的边界扫描功能2.支持扩展的片内调试功能3.通过JTAG接口实现对FLASH、EEPROM、熔丝位和锁定位的编程4.1.4片上丰富的外设1.两个具有独立预分频器和比较器功能的8位定时器/计数器2.一个具有预分频器、比较功能和捕捉功能的16位定时器/计数器3.具有独立振荡器的实时计数器RTC4.四通道PWM5.8路10位ADC:1).8个单端通道2).TQFP封装的7个差分通道3).2个具有可编程增益(1X,10X,或200X)的差分通道6.面向字节的两线接口7.两个可编程的串行USART8.可工作于主机/从机模式的SPI串行接口9.具有独立片内振荡器的可编程看门狗定时器10.片内模拟比较器4.1.5处理器的特殊点1.上电复位以及可编程的掉电检测2.片内经过标定的RC振荡器3.片内/片外中断源4.6种睡眠模式:空闲模式、ADC噪声抑制模式、省电模式、掉电模式、待机模式以及扩展的待机模式4.1.6I/O和封装1.32个可编程的I/O口2.40引脚PDIP封装,44引脚TQFP封装,以及44引脚MLF封装4.1.7工作电压1.ATMEGA16L:2.7-5.5V2.ATMEGA16:4.5-5.5V4.1.8速度等级1.0-8MHz ATMEGA16L2.0-16MHz ATMEGA164.1.9ATMEGA16L的功耗(1MHz,3V,25°C)1.正常模式:1.1mA2.空闲模式:0.35mA3.掉电模式:<1µA4.2ATMEGA16(L)单片机的基本组成及引脚配置4.2.1ATMEGA16(L)单片机的基本组成图4-1为ATMEGA16(L)的内部组成方框图。
图4-2为ATMEGA16(L)的引脚配置。
图4-1ATMEGA16(L)的内部组成方框图图4-2ATMEGA16(L)的引脚配置ATMEGA16(L)是基于增强的AVR RISC结构的低功耗8位CMOS微控制器。
由于其先进的指令集以及单时钟周期指令执行时间,ATMEGA16(L)的数据吞吐率高达1MIPS/MHz,从而可以缓减系统在功耗和处理速度之间的矛盾。
AVR内核具有丰富的指令集和32个通用工作寄存器。
所有的寄存器都直接与运算单元(ALU)相连接,使得一条指令可以在一个时钟周期内同时访问两个独立的寄存器。
这种结构大大提高了代码效率,并且具有比普通的CISC微控制器最快至10倍的数据吞吐率。
ATMEGA16(L)的16K字节的系统内可编程FLASH具有同时读写的能力(即RWW),片上的SRAM高达1K字节,还有512字节的EEPROM可用于断电时的数据记忆,其通用的I/O口线达32个。
ATMEGA16(L)具有32个通用工作寄存器(相当于80C51的32个累加器),有效避免了工作时的瓶颈效应,大大提升了工作速度与效率。
ATMEGA16(L)还配置有用于边界扫描的JTAG接口,支持片内调试与编程。
片上还有三个具有比较模式的灵活的定时器/计数器(T/C),片内/外中断,可编程串行USART,有起始条件检测器的通用串行接口,8路10位具有可选差分输入级可编程增益(TQFP封装)的ADC。
具有片内振荡器的可编程看门狗定时器,一个SPI串行端口,以及六个可以通过软件进行选择的省电模式。
ATMEGA16(L)工作于空闲模式时CPU停止工作,而USART、两线接口、A/D转换器、SRAM、T/C、SPI端口以及中断系统继续工作。
工作于掉电模式时晶体振荡器停止振荡,所有功能除了中断和硬件复位之外都停止工作。
在省电模式下,异步定时器继续运行,允许用户保持一个时间基准,而其余功能模块处于休眠状态。
工作于ADC噪声抑制模式时将终止CPU和所有I/O模块的工作(除了异步定时器与ADC以外),以降低ADC转换时的开关噪声。
在Standby(待机)模式下只有晶体或谐振振荡器运行,其余功能模块处于休眠状态,使得器件只消耗极少的电流,同时具有快速启动能力。
扩展Standby模式下则允许振荡器和异步定时器继续工作。
ATMEGA16(L)是以ATMEL高密度非易失性存储器技术生产的。
片内ISP FLASH允许程序存储器通过ISP串行接口,或者通用编程器进行编程,也可以通过运行于AVR内核之中的引导程序进行编程。
引导程序可以使用任意接口将应用程序下载到应用FLASH存储区(Application Flash Memory)。
在更新应用FLASH存储区时引导FLASH区(Boot Flash Memory)的程序继续运行,实现了RWW(Read-While-Write)操作(支持引导装入程序:在写的同时可以读的自我编程能力)。
通过将8位RISC CPU与系统内可编程的FLASH集成在一个芯片内,ATMEGA16(L)成为一个功能强大的单片机,为许多嵌入式控制应用提供了灵活而低成本的解决方案。
4.2.2ATMEGA16(L)单片机的引脚功能1.VCC数字电路的电源。
2.GND地。
3.端口A(PA0-PA7)端口A为8位双向I/O口,具有可编程的内部上拉电阻。
其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。
作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。
在复位过程中,即使系统时钟还未起振,端口A也处于高阻状态。
端口A的第2功能是作为A/D转换器的模拟输入端。
4.端口B(PB0-PB7)端口B为8位双向I/O口,具有可编程的内部上拉电阻。
其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。
作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。
在复位过程中,即使系统时钟还未起振,端口B也处于高阻状态。
端口B也可以用做其他不同的特殊用途。
5.端口C(PC0-PC7)端口C为8位双向I/O口,具有可编程的内部上拉电阻。
其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。
作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。
在复位过程中,即使系统时钟还未起振,端口C也处于高阻状态。
如果JTAG接口使能,即使复位出现,引脚PC5(TDI)、PC3(TMS)与PC2(TCK)的上拉电阻还是被激活。
端口C也可以用做其他不同的特殊用途。
6.端口D(PD0-PD7)端口D为8位双向I/O口,具有可编程的内部上拉电阻。
其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。
作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。
在复位过程中,即使系统时钟还未起振,端口D也处于高阻状态。
端口D也可以用做其他不同的特殊用途。
7./RESET复位输入引脚。
持续时间超过最小门限时间的低电平将引起系统复位。
持续时间小于门限间的脉冲不能保证可靠复位。
8.XTAL1反向振荡放大器与片内时钟操作电路的输入端。
9.XTAL2反向振荡放大器的输出端。
10.AVCCAVCC是端口A与A/D转换器的电源。
不使用ADC时,该引脚应直接与VCC连接。
使用ADC时应通过一个低通滤波器与VCC连接。
11.AREFA/D的模拟基准输入引脚。
4.3AVR单片机的CPU内核4.3.1AVR单片机结构综述图4-3为AVR单片机结构的方框图。
图4-3AVR单片机结构的方框图为了获得并行处理的最高性能,AVR单片机采用了Harvard结构,具有独立的数据和程序总线。
程序存储器里的指令通过一级流水线运行,CPU在执行一条指令的同时读取下一条指令(称为预取指令),这个概念实现了指令的单时钟周期运行。
程序存储器是可以在线编程的FLASH。
当快速访问寄存器时(包括32个8位通用工作寄存器),访问时间仅为一个时钟周期,从而实现了单时钟周期的ALU操作。
在典型的ALU操作中,两个位于寄存器中的操作数同时被访问,然后执行运算,结果再被送回到寄存器,整个过程仅需一个时钟周期。
寄存器里有6个寄存器可以用作3个16位的间接寻址寄存器指针以寻址数据空间,实现高效的地址运算,其中一个指针还可以作为程序存储器查询表的地址指针,这些附加的功能寄存器即为16位的X、Y、Z寄存器。
ALU支持寄存器之间以及寄存器和常数之间的算术和逻辑运算,ALU也可以执行单寄存器操作,运算完成之后状态寄存器的内容得到更新以反映操作结果。
程序流程通过有/无条件的跳转指令和调用指令来控制,从而直接寻址整个地址空间,大多数指令长度为16位,亦即每个程序存储器地址都包含一条16位或32位的指令。
程序存储器空间分为两个区:引导程序区(Boot区)和应用程序区,这两个区都有专门的锁定位以实现读和读/写保护,用于写应用程序区的SPM指令必须位于引导程序区。
在中断和调用子程序时返回地址的程序计数器(PC)保存于堆栈之中,堆栈位于通用数据SRAM,因此其深度仅受限于SRAM的大小。
在复位时用户首先要初始化堆栈指针SP,这个指针位于I/O空间,可以进行读写访问。
数据SRAM可以通过5种不同的寻址模式进行访问。
AVR有一个灵活的中断模块。
控制寄存器位于I/O空间。
状态寄存器里有全局中断使能位。
每个中断在中断向量表里都有独立的中断向量。
各个中断的优先级与其在中断向量表的位置有关,中断向量地址越低,优先级越高。