490 likes | 653 Views
第 1 章 认识 AVR 单片机. 一. 二. 概 述. AVR 内核结构. 一、概述. 1 、 AVR 单片机主要特点. 8051 结构的单片机采用复杂指令系统 CISC(Complex Instruction Set Computer) 体系。
E N D
第1章 认识AVR单片机 一 二 概 述 AVR内核结构
一、概述 1、AVR单片机主要特点 8051结构的单片机采用复杂指令系统CISC(Complex Instruction Set Computer)体系。 由于CISC结构存在指令系统不等长,指令数多,CPU利用效率低,执行速度慢等缺陷,已不能满足和适应设计中高档电子产品和嵌入式系统应用的需要。ATMEL公司发挥其Flash存储器技术的特长,于1997年研发和推出了全新配置采用精简指令集RISC(Reduced Instruction Set CPU)结构的新型单片机,简称AVR单片机。
一、概述 1、AVR单片机主要特点 • RISC结构是为了提高CPU运行的速度而设计的芯片体系。它的关键技术在于采用流水线操作(Pipelining),和等长指令体系结构,使一条指令可以在一个单独操作中完成,从而实现在一个时钟周期里完成一条或多条指令。 • 精简指令总数 • 精简指令寻址方式 • 精简指令执行周期
一、概述 1、AVR单片机主要特点 ATMEL公司的AVR是8位单片机中第一个真正的RISC结构的单片机。它采用了大型快速存取寄存器组、快速的单周期指令系统以及单级流水线等先进技术,使得AVR单片机具有高达1MIPS/MHz的高速运行处理能力。 AVR采用流水线技术,在前一条指令执行的时候,就取出现行的指令,然后以一个周期执行指令。大大提高了CPU的运行速度。而在其它的CISC以及类似的RISC结构的单片机中,外部振荡器的时钟被分频降低到传统的内部指令执行周期,这种分频最大达12倍(8051)。
一、概述 1、AVR单片机主要特点 简言之: 8051:CISC,多周期,速度慢 AVR: RISC,单周期,流水线,速度快
一、概述 2、AVR单片机选型 表1:AVR型号分类
一、概述 2、AVR单片机选型 表2:ATmage内核选型
一、概述 2、AVR单片机选型 表2:ATmage内核选型
一、概述 2、AVR单片机选型 表2:ATmage内核选型
二、AVR内核结构 1、AVR CPU内核 (1)ATmage16 特点 1)采用先进RISC结构的AVR内核(哈弗结构) 131条机器指令,且大多数指令的执行时间为单个系统时钟周期; 32个8位通用工作寄存器; 工作在16MHz时具有16MIPS的性能。 配备只需要2个时钟周期的硬件乘法器 2)片内含有较大容量的非易失性的程序和数据存储器 16K字节在线可编程(ISP)Flash程序存储器采用Boot Load技术支持IAP功能;1K字节的片内SRAM数据存储器,可实现3级锁定的程序加密; 512个字节片内在线可编程EEPROM数据存储器(寿命>10万次);
二、AVR内核结构 1、AVR CPU内核 (1)ATmage16 特点 3)片内含JTAG接口 可通过JTAG口对片内的Flash、EEPROM、配置熔丝位和锁定加密位实施下载编程;
二、AVR内核结构 1、AVR CPU内核 (1)ATmage16 特点 4)集成丰富的外围资源 ●1个可编程的增强型全双工的,支持同步/异步通信的串行接口USART; ●1个可工作于主机/从机模式的SPI串行接口(支持ISP程序下载); ●片内模拟比较器; ●内含可编程的,具有独立片内振荡器的看门狗定时器WDT;
二、AVR内核结构 1、AVR CPU内核 (1)ATmage16 特点 4)集成丰富的外围资源 ●2个带有分别独立、可设置预分频器的8位定时器/计数器; ●1个带有可设置预分频器、具有比较、捕捉功能的16位定时器/计数器; ●片内含独立振荡器的实时时钟RTC; ●4路PWM通道; 8路10位ADC; ●面向字节的两线接口TWI(兼容I2C硬件接口);
二、AVR内核结构 1、AVR CPU内核 (1)ATmage16 特点 5)其他特点 ●片内含上电复位电路以及可编程的掉电检测复位电路BOD; ●片内含有1M/2M/4M/8M,经过标定的、可校正的RC振荡器,可作为系统时钟使用; ●多达21个各种类型的内外部中断源; ●有6种休眠模式支持省电方式工作;
二、AVR内核结构 1、AVR CPU内核 (1)ATmage16 特点 6)宽电压、低功耗 ●工作电压范围宽:ATmega16L 2.7—5.5v,ATmega16 4.5—5.5v; ●运行速度:ATmega16L 0—8M,ATmega16 0—16M; ●低功耗:ATmega16L工作在1MHz、3v、25度时的典型功耗为,正常工作模式 1.1mA,空闲工作模式 0.35mA,掉电工作模式 <1uA;
二、AVR内核结构 (2)ATmage16 内核结构 ATmage16 CPU包括: ● ALU运算逻辑单元、32个8位快速访问通用寄存器组(寄存器文件)、程序计数器PC、指令寄存器、指令译码器。 ● 程序存储器Flash。 ● 数据存储器RAM和EEPROM。 ● 各种功能的外围接口、I/O,以及与它们相关的数据、控制、状态寄存器等。
二、AVR内核结构 (3)系统时钟 ATmega16的片内含有4种频率(1/2/4/8M)的RC振荡源,可直接作为系统的工作时钟使用。同时片内还设有一个由反向放大器所构成的OSC(Oscillator)振荡电路,外围引脚XTAL1和XTAL2分别为OSC振荡电路的输入端和输出端,用于外接石英晶体等,构成高精度的或其它标称频率的系统时钟系统。 ATmega16最高的工作频率为16M(16MIPS)。时钟频率越高,其耗电量也越大,也容易受到干扰(或干扰别人)。在具体设计时,应根据实际产品的需要,尽量采用较低的系统时钟频率,这样不仅能降低了功耗,同时也提高了系统的可靠性和稳定性。
二、AVR内核结构 (3)系统时钟 三种时钟源: 1)使用片内1/2/4/8MRC振荡源; 2)使用外部晶振。在XTAL1、XTAL2上外接晶体及电容 使用片内的OSC(Oscillator)振荡电路; 3)使用外部有源晶振。 方式2和方式3的电路连接见图 (a)和(b)。
二、AVR内核结构 (3)系统时钟 方式2是比较常用的方法,晶体可在0-16MHz之间选择,电容值在20pF-30pF之间(最好与所选用的晶体相匹配)。 当对系统时钟电路的精度要求不高的话,可以使用第1种方式——内部晶振,此时XTAL1和XTAL2引脚悬空。 第3种在AVR系统不常用。
二、AVR内核结构 (5)封装及引脚功能 DIP封装 TQFP封装
二、AVR内核结构 (5)封装及引脚功能 TQFP封装 DIP封装
二、AVR内核结构 (5)封装及引脚功能 1)电源及复位 VCC: 芯片供电(片内数字电路电源)输入引脚,使用时连接到电源正极。 AVCC:为端口A和片内ADC模拟电路电源输入引脚。不使用ADC时,直接连接到电源正极;使用ADC时,应通过一个低通电源滤波器与Vcc连接。 AREF:使用ADC时,可作为外部ADC参考源的输入引脚。 GND: 芯片接地引脚,使用时接地。 XTAL2:片内反相振荡放大器的输出端。 XTAL1:片内反相振荡放大器和内部时钟操作电路的输入端。
二、AVR内核结构 (5)封装及引脚功能 2)32条I/O口 分成PA、PB、PC和PD四组端口,每组8个,全部是可编程控制、多功能复用I/O引脚。 四组端口的第一功能是通用的双向数字输入/输出(I/O)口,每一位都可以由指令设置为独立的输入口,或输出口。 当I/O设置为输入时,引脚内部还配置有上拉电阻,可通过编程使上拉有效或无效。
二、AVR内核结构 (5)封装及引脚功能 2)32条I/O口 I/O口输出方式: 高电平能够输出20mA的电流; 而当其输出低电平时,可以吸收40mA的电流。 因此AVR的I/O口驱动能力非常强,能够直接驱动LED发光二极管、数码管等。 芯片Reset复位后,所有I/O口的缺省状态为输入方式,上拉电阻无效,即I/O为输入高阻的三态状态。
二、AVR内核结构 2 存储器地址 (1)数据存储器SRAM
二、AVR内核结构 (1)数据存储器SRAM 全部共1120个数据存储器地址为线性编址,前96个地址为寄存器组(32个8位通用寄存器),I/O寄存器(64个8位I/O寄存器),分配在SRAM数据地址空间的$0000~$001F,$0020~$005F。 5种寻址方式: Ю直接寻址; Ю带偏移量的间接寻址; Ю间接寻址; Ю带预减量的间接寻址; Ю带后增量的间接寻址。
二、AVR内核结构 (2)内部EEPROM存储器 AVR系列单片机还包括64B~4K字节的EEPROM数据存储器。它们被组织在一个独立的数据空间中。这个数据空间采用单字节读写方式。 EEPROM 的使用寿命至少为 10万次写/擦循环。ATmega16的EEPROM容量是512字节,地址范围为$0000~$01FF。 EEPROM数据存储器可用于存放一些需要掉电保护,而且比较固定的系统参数、表格等。
二、AVR内核结构 3、寄存器 (1)通用寄存器组 32个通用寄存器的,所有的通用寄存器操作指令均带有方向的,并能在单一时钟周期中访问。
二、AVR内核结构 3、寄存器 (1)通用寄存器组 每个通用寄存器还被分配在AVR的数据存储器空间中,他们直接映射到数据空间的前32个地址,因此也可以使用访问SRAM的指令对这些寄存器进行访问。
二、AVR内核结构 3、寄存器 (1)通用寄存器组 AVR寄存器组最后的6个寄存器R26~R31具有特殊的功能,这些寄存器每两个合并成一个16位的寄存器,作为对数据存储器空间(使用X、Y、Z)以及程序存储器空间(仅使用Z寄存器)间接寻址的地址指针寄存器。在不同指令的寻址模式下,利用地址寄存器可实现地址指针的偏移、自动增量和减量(参考不同的指令)等不同形式的间址寻址操作。
二、AVR内核结构 (2)I/O口寄存器
二、AVR内核结构 (2)I/O口寄存器
二、AVR内核结构 (2)I/O口寄存器
二、AVR内核结构 (2)I/O口寄存器
二、AVR内核结构 (2)I/O口寄存器 AVR系列单片机所有I/O口及外围接口的功能和配置均通过I/O寄存器的进行设置和使 CPU访问I/O寄存器。
二、AVR内核结构 (3)状态寄存器及堆栈指针 1)状态寄存器SREG SREG是一个8位标志寄存器,用来存放指令执行后的有关状态和结果的标志。可硬件或软件修改。 SREG的位反映了CPU运算、操作结果的状态。 SREG在I/O空间的地址为$3F($005F),其各标志位的意义如下:
二、AVR内核结构 (3)状态寄存器及堆栈指针 1)状态寄存器SREG ●位7—I: 全局中断使能位 中断总控制开关。置“1”时,打开总中断,清 “0”所有中断被禁止,CPU不响应任何的中断请求。 除了该标志位用于AVR中断的总控制,各中断源受其独立中断屏蔽寄存器(GIMSK、TIMSK)控制。 如果全局中断触发寄存器被清另(“0”),则全局中断被禁止,但单独的中断触发控制在GIMSK和TIMSK中的值保持不变。在中断发生后,I位由硬件清除,并由RETI(中断返回)指令置位,从而允许子序列的中断响应。
二、AVR内核结构 (3)状态寄存器及堆栈指针 1)状态寄存器SREG ●位6—T: 位复制存储 位复制指令BLD和BST使用T标志位作为源和目标。通用寄存器组中任何一个寄存器中的一位可以通过BST指令被复制到T中,而用BLD指令则可将T中的位值复制到通用寄存器组中的任何一个寄存器的一位中。 ●位5—H: 半进位标志位 ● 位4—S: 符号标志位。S = N⊕V 是负数标志位N和2的补码溢出标志位V两者异或值。在正常运算条件下(V=0,不溢出)S=N,即运算结果最高位作为符号是正确的。而当产生溢出时V=1,此时N失效,但S=N⊕V还是正确的。对于有符号数据而言,执行减法或比较操作后,S标志能正确指示两个数的大小。
二、AVR内核结构 1)状态寄存器SREG ●位3—V: 2补码溢出标志位 2的补码溢出标志位V,支持2的补码运算,为模2补码加、减运算溢出标志。溢出表示运算结果超过了正数(或负数)所能表示的范围。 加法溢出表现为正+正=负,或负+负=正; 减法溢出表现为正-负=负,或负-正=正。 溢出时,运算结果最高位(N)取反才是真正的结果符号。 ●位2—N: 负数标志位 负数标志位直接取自运算结果的最高位,N=1时表示运算结果为负,否则为正。但发生溢出时不能表示真实的结果
二、AVR内核结构 1)状态寄存器SREG ● 位1—Z: 零值标志位 零值标志位表明在CPU运算和逻辑操作之后,其结果是否为零,当Z=1表示结果为零。 ● 位0-C:进/借位标志 进位标志位表明在CPU的运算和逻辑操作过程中有无发生进/借位。
二、AVR内核结构 2)SP堆栈指针 堆栈是数据结构中所使用的专用名词,它是由一块连续的SRAM空间和一个堆栈指针寄存器组成,主要应用于快速便捷的保存临时数据、局部变量和中断调用或子程序调用的返回地址。 堆栈在系统程序的设计和运行中起者非常重要的作用,只要程序中使用了中断和子程序调用,就必须正确的设置堆栈指针寄存器SP,在SRAM空间建立堆栈区。 堆栈是一种特殊的线性数据结构,数据的进出在堆栈的顶部进行,并遵循后进先出(LIFO)的原则。 堆栈指针实际上就是堆栈顶部的地址,它随着堆栈中数据的进出而变化。堆栈指针寄存器SP中保存着堆栈指针,即堆栈顶部的地址。
二、AVR内核结构 2)SP堆栈指针 AVR的堆栈是向下增长的,即新数据进入堆栈时栈顶指针的数据将减小(注意:这里与51不同,51的堆栈是向上增长的,即进栈操作时栈顶指针的数据将增加),所以尽管原则上堆栈可以在SRAM的任何区域中,但通常初始化时将SP的指针设在SRAM最高处。 对于具体的ATmega16芯片,堆栈指针必须指向高于$0060的SRAM 地址空间,因为低于$0060的区域为寄存器空间。ATmega16片内集成有1K的SRAM,不支持外部扩展SRAM,所以堆栈指针寄存器SP的初始值应设在SRAM的最高端:$045F处。
二、AVR内核结构 2)编程 将“bin”(二进制)或“HEX”(16进制)格式的文件,烧入芯片。 完成如下操作: ●对片内的Flash、EEPROM进行擦除、数据的写入(包括运行代码)、和数据的读出。 ●实现对AVR配置溶丝位的设置;芯片型号的读取;加密位的锁定等。 a.编程器编程(并口) 最传统的编程方式,速度快,需要占用芯片众多的引脚和12V的电压,所以必须采用专用的编程器单独对芯片操作。芯片必须从PCB板上取下来,不可以实现芯片在线(板)的编程操作,不适合系统调试以及产品的批量生产需要。
二、AVR内核结构 2)编程 b.ISP编程(串口) 占用比较少的外围引脚,所以可以实现芯片的在线编程(In System Programmable),不需要将芯片从PCB板上取下来,是最方便和最常用的编程方式。而采用SPI方式编程,只需要一跟简单的编程电缆,同时可以方便的实现I/O口的共用,因此是最常使用的方式。其不足之处是不能实现系统的在片实时仿真调试。 c.JTAG编程(串口,仿真) 使用JTAG方式编程的优点是,通过JTAG口还可以实现系统的在片实时仿真调试(On Chip Debug),缺点是需要占用AVR的4个I/O引脚。
二、AVR内核结构 2)编程 d.IAP编程(Boot Load) IAP(In Application Programmable)在运行编程方式。是采用了ATMEL称为自引导加载(Boot Load)技术实现。用在一些需要进行远程修改更新系统程序,或动态改变系统程序的应用中才采用。 ATmega16片内集成了16K字节的支持系统在线可编程(ISP)和在应用可编程(IAP)的Flash程序存储器,以及512个字节的EEPROM数据存储器。 另外还有一些专用的可编程单元-熔丝位,用于加密锁定和对芯片的配置等。 由于ATmega16片内含有SPI和JTAG口,使用3种编程的方式:高压并行编程、串行SPI编程、串行JTAG编程。
二、AVR内核结构 5、熔丝设置(勿轻易设置!!!) ATmega16单片机在售出时,片内的Flash 存储器和EEPROM 存储器阵列是处在擦除的状态(即内容 = $FF),且可被编程。同时其器件配置熔丝位的缺省值为使用内部1M的RC振荡源作为系统时钟!使用已编程(Prog- rammed)和未编程(Unprogrammed)定义加密位和熔丝位的状态。 “Unprogrammed”表示熔丝状态为“1”(禁止),“Programmed”表示熔丝状态为“0”(允许), 即 1:未编程 0:编程 在没把握前提下不要轻易设置熔丝位,否则会导致芯片报废!建议使用专用软件“集成”烧写熔丝位。 具体参考相关手册。
二、AVR内核结构 6、最小系统