您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 第五章 AVR单片机原理及应 - 复件
第五章:AVR嵌入式系统原理与应用实践•第一节AVR单片机的基本结构•第二节通用I/O接口基本结构与输出应用•第三节中断系统与基本应用•第四节定时计数器的结构与应用•第五节异步串行通信接口•第六节串行SPI接口应用•第七节串行I2C接口应用第一节AVR单片机的基本结构AVR单片机简介•AVR的性价比远高于51:•高速、RISC:主频最高达20MHz•低功耗,宽电压:1.8V~5.5V,最低全速运行功耗300uA•IO口驱动能力强:推拉电流能力均达30mA,可以直接驱动蜂鸣器、继电器等•片内资源丰富:外部中断、定时/计数器、UART、SPI、I2C、ADC、模拟比较器•型号齐全,而且40脚以下的AVR均具有DIP的封装形式精彩的AVR世界•8脚系列:ATtiny13、25、45、85;•14脚系列:ATtiny24•20脚系列:AtTiny26,2313;•28脚系列:ATmega8,48,88,168;•32脚系列:AT90PWM3;•40脚系列:ATmega16,32,162,163,169,8515,8535;•以上几个系列均有DIP双列直插封装•64脚系列:ATmega64,128;•100脚系列:ATmega1280,2560;1.1ATmega16简介•高速(16MHz)、RISCAVR内核•1KBSRAM,16KBFlashROM•512字节EEPROM,方便数据存储•4个8位并行IO口,驱动能力强•具有Jtag仿真接口与ISP下载接口•低功耗、宽电压(2.7V~5.5V)•丰富的片上外设:3个外部中断,3个定时器,USART,SPI,I2C,ADC•片内上电复位电路•片内RC振荡器,可以省去外部晶振1.2ATmega16单片机的组成程序存储器和数据存储器使用不同的存储空间和存取总线的Harvard结构如图所示算术逻辑单元(ALU)使用单级流水线操作方式对程序存储器进行访问,执行一条同时取一条。32个8位通用“快速访问寄存器组”,其中,有6个寄存器可以合并成为3个16位的。AVR的算术逻辑单元(ALU)支持寄存器之间,立即数与寄存器之间的算术与逻辑运算功能,以及单一寄存器操作。每一次运算操作的结果将影响和改变状态寄存器(SREG)的值。•1.2.1AVR单片机的内核结构1.2ATmega16单片机的组成AVR的中断控制由I/O寄存器空间的中断控制寄存器和状态寄存器中的全局中断允许位组成。中断的中断向量地址越小,其中断的优先级越高。I/O空间为连续的64个I/O寄存器空间,它们分别对应MCU各个外围功能的控制和数据寄存器地址,I/O寄存器空间在数据存储器空间的映射地址为$020~$05F。•1.2.1AVR单片机的内核结构1.2ATmega16单片机的组成•1.2.2典型AVR芯片ATmega16特点1、采用先进RISC结构的AVR内核(如图所示)131条机器指令大多数指令的执行时间为单个系统时钟周期2、片内含有较大容量的非易失性的程序和数据存储器,16K字节在线可编程(ISP)Flash程序存储器,1K字节的片内SRAM数据存储器,512个字节片内在线可编程EEPROM数据存储器。3、片内含JTAG接口支持符合JTAG标准的边界扫描功能用于芯片检测;支持扩展的片内在线调试功能可通过JTAG口对片内的Flash、EEPROM、配置熔丝位和锁定加密位实施下载编程1.2ATmega16单片机的组成•1.2.2典型AVR芯片ATmega16特点4、外围接口(如图所示)2个带有分别独立、可设置预分频器的8位定时器/计数器;1个带有可设置预分频器、具有比较、捕捉功能的16位定时器/计数器;片内含独立振荡器的实时时钟RTC;4路PWM通道;8路10位ADC;面向字节的两线接口TWI(兼容I2C硬件接口);1个可编程的增强型全双工的,支持同步/异步通信的串行接口USART;1个可工作于主机/从机模式的SPI串行接口(支持ISP程序下载);片内模拟比较器;内含可编程的,具有独立片内振荡器的看门狗定时器WDT;1.2ATmega16单片机的组成•1.2.2典型AVR芯片ATmega16特点5、其它的特点(如图所示)片内含上电复位电路以及可编程的掉电检测复位电路BOD;片内含有1M/2M/4M/8M,经过标定的、可校正的RC振荡器,可作为系统时钟使用;多达21个各种类型的内外部中断源;有6种休眠模式支持省电方式工作;6、宽电压、高速度、低功耗工作电压范围宽:ATmega16L2.7—5.5v,ATmega164.5—5.5v;运行速度:ATmega16L0—8M,ATmega160—16M;低功耗:ATmega16L工作在1MHz、3v、25度时的典型功耗为,正常工作模式1.1mA,空闲工作模式0.35mA,掉电工作模式1uA;7、芯片引脚和封装形式ATmega16共有32个可编程的I/O口(脚),芯片封装形式有40引脚的PDIP、44引脚的TQFP和44引脚的MLF封装。1.2ATmega16单片机的组成•1.2.3外部引脚与封装ATmega16单片机有三种形式的封装:40脚双列直插PDIP、44脚方形的TQFP和MLF形式(贴片形式)。其外部引脚封装如图所示。1.3ATmega16内部结构•1.3.1AVR中央处理器CPU1、运算逻辑单元ALU(如图所示)8位和1位的运算单元2、程序计数器PC、指令寄存器和指令译码器AVR一条指令的长度大多数为16位,还有少部分为32位,ATmega16的程序计数器为13位,正好满足了对片内8K字的寻址,不支持外部扩展。3、通用工作寄存器组在AVR中,由命名为R0~R31的32个8位通用工作寄存器构成一个“通用快速工作寄存器组”,如图所示1.3ATmega16内部结构•1.3.2系统时钟部件1、系统时钟(如图所示)ATmega16的片内含有4种频率(1/2/4/8M)的RC振荡源,片内还设有一个由反向放大器所构成的OSC(Oscillator)振荡电路,用于外接石英晶体等,构成高精度的或其它标称频率的系统时钟系统,通过配置熔丝位选择。2、内部看门狗时钟AVR片内的WDT是独立硬件形式的看门狗,独立的1MHz时钟源。1.3ATmega16内部结构•1.3.3CPU的工作时序1.3ATmega16内部结构•1.3.4存储器(如图所示)AVR单片机在片内集成了Flash程序存储器、SRAM数据存储器和EEPROM数据存储器。三个存储器空间互相独立,物理结构也不同。程序存储器为闪存存储器Flash,以16位(字)为一个存储单元,作为数据读取时,以字节为单位,而擦除、写入则是以页为单位的(不同型号AVR单片机一页的大小也不同)。SRAM数据存储器是以8位(字节)为一个存储单元,编址方式采用与工作寄存器组、I/O寄存器和SRAM统一寻址的方式。EEPROM数据存储器也是以8位(字节)为一个存储单元,对其的读写操作都以字节为单位1.3ATmega16内部结构•1.3.5I/O端口(如图所示)ATmega16有四个8位的双向I/O端口PA、PB、PC、PD,它们对外对应32个I/O引脚,每一位都可以独立地用于逻辑信号的输入和输出。在5伏工作电压下,输出时每个引脚可供出达20mA的驱动电流。而输入时,每个引脚可吸纳最大为40mA的电流,可直接驱动发光二极管LED(一般LED的驱动电流为10mA左右)和小型继电器。AVR大部分的I/O端口都具备双重功能,分别同片内的各种不同功能的外围接口电路组合成一些可以完成特殊功能的I/O口,如定时器、计数器、串行接口、模拟比较器、捕捉器等。1.4存储器结构和地址空间•1.4.1支持ISP的Flash程序存储器ATmega16单片机的程序存储器为8Kx16(16Kx8),程序计数器PC宽为13位,以此来对8K字程序存储器地址进行寻址。如图所示程序存储器的地址空间与数据存储器的地址空间是分开的,地址空间从$000开始。如要在程序存储器中使用常量表,则常量表可以被设定在整个Flash地址空间中。1.4存储器结构和地址空间•1.4.2数据存储器SRAM空间全部共1120个数据存储器地址为线性编址,前96个地址为寄存器组(32个8位通用寄存器),I/O寄存器(64个8位I/O寄存器),分配在SRAM数据地址空间的$0000~$001F,$0020~$005F。接下来的1024个地址是片内数据SRAM,地址空间占用$0060~$045F。如图所示CPU对SRAM数据存储器的寻址方式分为5种:直接寻址、带偏移量的间接寻址、间接寻址、带预减量的间接寻址和带后增量的间接寻址。32个通用工作寄存器,64个I/O寄存器,以及ATmega16单片机中1024个字节的数据SRAM,都可通过上述的寻址方式进行访问操作。1.4存储器结构和地址空间•1.4.3内部EEPROM存储器AVR系列单片机还包括64B~4K字节的EEPROM数据存储器。它们被组织在一个独立的数据空间中。这个数据空间采用单字节读写方式。EEPROM的使用寿命至少为10万次写/擦循环。ATmega16的EEPROM容量是512字节,地址范围为$0000~$01FF。EEPROM数据存储器可用于存放一些需要掉电保护,而且比较固定的系统参数、表格等。如图所示1.5通用寄存器组与I/O寄存器•1.5.1通用寄存器组全面熟练地理解、掌握AVR的通用寄存器组与I/O寄存器的性能、特点、功能、设置和使用,是精通和熟练使用AVR单片机的关键。由于AVR有32个通用寄存器和64个I/O寄存器,其功能、特点及使用方法涉及到整个AVR单片机的全部功能和特性,因此相对复杂。如图所示为AVR单片机中32个通用寄存器的结构图。在AVR指令集中,所有的通用寄存器操作指令均带有方向的,并能在单一时钟周期中访问所有的寄存器。AVR寄存器组最后的6个寄存器R26~R31具有特殊的功能,这些寄存器每两个合并成一个16位的寄存器,作为对数据存储器空间(使用X、Y、Z)以及程序存储器空间(仅使用Z寄存器)间接寻址的地址指针寄存器。如图所示1.5通用寄存器组与I/O寄存器•1.5.2I/O寄存器下表列出了ATmega16单片机的I/O寄存器的地址空间分配、名称和功能。如表所示AVR系列单片机所有I/O口及外围接口的功能和配置均通过I/O寄存器的进行设置和使用。CPU访问I/O寄存器可以使用两种不同的方法,使用对I/O寄存器访问的IN、OUT专用指令,指令周期为1个时钟周期。以及使用对SRAM访问的指令。I/O寄存器地址范围在$00-$1F之间的寄存器(前32个)还可通过指令实现bit位操作和bit位判断跳转。在I/O寄存器专用指令IN、OUT、SBI、CBI、SBIS和SBIC中使用I/O寄存器地址$OO~$3F。1.5通用寄存器组与I/O寄存器•1.5.3状态寄存器和堆栈指针寄存器1、状态寄存器—SREG状态寄存器SREG是一个8位标志寄存器,用来存放指令执行后的有关状态和结果的标志。SREG中各位状态通常是在指令的执行过程中自动形成,但也可以由用户根据需要用专用指令加以改变。1.5通用寄存器组与I/O寄存器•1.5.3状态寄存器和堆栈指针寄存器位7—I:全局中断使能位位6—T:位复制存储(类似51的位累加器)位5—H:半进位标志位位4—S:符号标志位,S=N⊕V位3—V:2补码溢出标志位位2—N:负数标志位位1—Z:零值标志位位0-C:进/借位标志1.5通用寄存器组与I/O寄存器•1.5.3状态寄存器和堆栈指针寄存器2、堆栈指针寄存器—SP堆栈指针寄存器SP中保存着堆栈指针,即堆栈顶部的地址,AVR单片机复位后堆栈寄存器的初始值为SPH=$00、SPL=$00,。ATmega16单片机为避开$0060之前的寄存器区,堆栈指针寄存器SP的初始值应设在SRAM的最高端$045F处。1.6ATmega16单片机的工作状态•1.6.1AVR单片机最小系统AVR单片机的工作状态通常包括:复位状态、正常程序执行工作状态、休眠节电工作状态、程序运行代码下载的编程,以及熔丝
本文标题:第五章 AVR单片机原理及应 - 复件
链接地址:https://www.777doc.com/doc-3358156 .html