AVR单片机很简单:C语言快速入门及开发实例
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.3 ATmega128系列单片机

ATmega128位微控制器是ATMEL推出的AVR单片机中的高档产品,具有高速低功耗、超强功能、精简指令的特点,能够同时读、写。在执行指令的同时,通过SPI、UART或两线接口对快闪存储器进行编程或重新编程。ATmega128在实际应用中有着非常强大的功能,本书将以AVR单片机中的高档产品——ATmega128单片机为主线进行介绍,使读者通过本书的学习,能够熟练掌握ATmega128单片机的应用。

1.3.1 ATmega128单片机的特点

ATmega128单片机具有133条指令,大多数指令可以在一个时钟周期内完成,而且有32个8位通用工作寄存器及外设控制寄存器,克服了一般单片机单一累加器数据处理带来的瓶颈现象,从而使得指令代码更加灵活,编码更容易。ATmega128单片机除具有先进的RISC结构外,还具有以下优点。

①非易失性的程序和数据存储器。ATmega128单片机具有128KB的系统内可编程Flash,寿命为10000次写/擦除周期。具有独立锁定位和可选择的启动代码区。可通过片内的启动程序实现系统内编程真正的读-修改-写操作,而且包括寿命为100000次写/擦除周期的4KB E2PROM及4KB的内部SRAM,有多达64KB的优化的外部存储器空间。ATmega128单片机可以对锁定位进行编程以实现软件加密,并可以通过SPI实现系统内编程。

②JTAG接口(与IEEE1149.1标准兼容)。ATmega128单片机遵循JTAG标准的边界扫描功能,支持扩展的片内调试,可以通过JTAG接口实现对Flash、E2PROM、熔丝位和锁定位的编程。

③外设特点。ATmega128单片机具有两个包含独立的预分频器和比较器功能的8位定时/计数器,两个具有预分频器、比较功能和捕捉功能的16位定时/计数器,并且具有独立预分频器的实时时钟计数器,同时含有两路8位PWM,6路分辨率可编程(2~16位)的PWM,8路10位转换器,面向字节的两线接口,两个可编程的串行USART,可工作于主机/从机模式的SPI串行接口,具有独立片内振荡器的可编程看门狗定时器,输出比较调制器,片内模拟比较器等外设。

④特殊的处理器特点。ATmega128单片机具有上电复位以及可编程的掉电检测,片内经过标定的RC振荡器,片内/片外中断源可以通过软件进行选择的时钟频率,通过熔丝位可以选择ATmega103兼容模式和全局上拉禁止功能及6种睡眠模式。6种睡眠模式分别为空闲模式、ADC噪声抑制模式,省电模式、掉电模式、Standby模式以及扩展的Standby模式。

⑤ATmega128L工作电压范围为2.7~5.5V,系统时钟为0~8MHz,ATmega128工作电压范围为4.5~5.5V,系统时钟为0~16MHz,而且ATmega128具有整套的开发工具,包括C编译器、宏汇编、程序调试器/仿真器和评估板。

1.3.2 ATmega128与ATmega103的兼容性

ATmega128是一个高度复杂的微处理器,它的I/O数目为AVR指令集所保留的64个I/O的超集。为了保持其与ATmega103的兼容性,所有ATmega103的I/O位置与ATmega128的相同。多数添加的I/O位于$60~$FF扩展的I/O空间(也就是位于AT-mega103的内容RAM空间)。这些地址可以通过指令LD/LDS/LDD和ST/STS/STD来访问,而不是IN/OUT指令。内部RAM空间的变换对ATmega103用户来说仍然是个问题。此外,当程序代码使用了绝对地址时,逐渐增多的中断向量也可能是个问题。为了解决这些问题,ATmega128设置了一个熔丝位M103C。通过对熔丝位进行编程就可以使ATmega128工作于ATmega103兼容模式。此时扩展I/O空间将无法使用,而内部RAM正好与ATmega103的一致。同时扩展的中断向量也被取消了。

熔丝位M103C的配置将设定ATmega128是否以与ATmega103兼容的方式工作,兼容性主要表现在RAM、I/O引脚和中断向量上。ATmega128在出厂时M103C默认状态为“0”,即默认与ATmega103兼容方式工作。但是,在这种兼容模式下,ATmega128的以下一些新特点将起作用。

ATmega128新特点如下:

①只剩下一个USART,支持异步模式。只有低8位的波特率寄存器可用。

②一个16位的定时/计数器有两个比较器寄存器,而不是两个16位定时/计数器有三个比较寄存器。

③不支持两线串行接口。

④端口C只能用作输出。

⑤端口G只能用作第二功能,而不能作通用I/O端口。

⑥端口F只能作为输入引脚,而不能作ADC的模拟输入引脚。

⑦不支持引导程序功能。

⑧不能够校准片内RC振荡器的频率。

⑨在外部存储器接口不能释放任何地址引脚作为通用I/O,也不能够为不同的外部存储器地址区配置不同的等待周期。

此外,下面的特性使ATmega128更兼容ATmega103。

①只有EXTRF和PORF存在于状态寄存器MCUCSR里。

②改变看门狗溢出时间没有时序要求。

③外部中断引脚3~0只能作为电平中断。

④USART没有FIFO缓冲器。

在写操作中,ATmega103没有使用I/O应该写。

1.3.3 ATmega128单片机的引脚配置

ATmega128单片机有64个引脚,其中包含53个可编程I/O端口线,且多数端口都含有第二功能。共封装有TQFP与MLF两种,这两种封装的64引脚布局均相同,如图1-2所示,但是引脚的位置及引脚的同间距有所差别,在绘制电路板时要加以注意。

图1-2 ATmega128单片机的引脚

ATmega128单片机各引脚说明如下。

(1)VCC 数字电路的电源。

(2)GND 地。

(3)端口A(PA7~PA0) 端口A为8位双向I/O,并具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。复位发生时端口A为三态。

(4)端口B(PB7~PB0) 端口B为8位双向I/O,并具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。复位发生时端口B为三态。

(5)端口C(PC7~PC0) 端口C为8位双向I/O,并具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。复位发生时端口C为三态。

(6)端口D(PD7~PD0) 端口D为8位双向I/O,并具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。复位发生时端口D为三态。

(7)端口E(PE7~PE0) 端口E为8位双向I/O,并具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。复位发生时端口E为三态。

(8)端口F(PF7~PF0) 端口F为8位双向I/O,并具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。复位发生时端口F为三态。

(9)端口G(PG7~PG0) 端口G为8位双向I/O,并具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。复位发生时端口G为三态。

(10)RESET 复位输入引脚。超过最小门限时间的低电平将引起系统复位。低于此时间的脉冲不能保证可靠复位。

(11)XTAL1 反向振荡器放大器及片内时钟操作电路的输入。

(12)XTAL2 反向振荡器放大器的输出。

(13)AVCC 端口F以及ADC转换器的电源。需要与VCC相连接,即使没有使用ADC也应如此。使用ADC时应该通过一个低通滤波器与VCC连接。

(14)AREF ADC的模拟基准输入引脚。

(15)PEN SPI串行下载的使能引脚。在上电复位时保持PEN为低电平将使器件进入SPI串行下载模式。在正常工作过程中PEN引脚没有其他功能。

1.3.4 ATmega128单片机的结构

ATmega128单片机为基于AVR RISC结构的8位低功耗CMOS微处理器。由于其先进的指令集以及单周期指令执行时间。ATmega128的数据吞吐率高达1MIPS/MHz,从而缓减了系统在功耗和处理速度之间的矛盾。

ATmega128单片机的内核具有丰富的指令集和32个通用工作寄存器,所有的寄存器直接与算术逻辑单元(ALU)相连接,使得一条指令可以在一个时钟周期内同时访问两个独立的寄存器。这种结构大大提高了代码效率,并且具有比普通的复杂指令集微处理器高10倍的数据吞吐率。ATmega128单片机的总体结构框图如图1-3所示。

图1-3 ATmega128单片机的总体结构框图

ATmega128单片机具有Flash程序存储器、看门狗、E2PROM、同/异步串行口、TWI、SPI、A/D模数转换器、定时/计数器等多种器件和增强可靠性的复位系统。同时有降低功耗抗干扰的休眠模式、中断系统、输入捕获/输出比较、多样化功能的定时/计数器以及具有替换功能的I/O端口。

ATmega128单片机性能十分强大,内部结构相对比较复杂,其总体结构包括以下几个部分,分别介绍如下。

(1)快速存取RISC寄存器 快速存取RISC寄存器是由AVR的内核中的32个通用工作寄存器构成的,在一个时钟周期内可执行一个完整的ALU操作。

(2)32个通用工作寄存器 在32个通用工作寄存器中,有6个可以用作3个16位的间接地址寄存器指针,以寻址数据空间,实现高效的地址运算,它们分别为X寄存器、Y寄存器、Z寄存器。

(3)Harvard结构 AVR单片机采用CMOS技术,具有高速度、低功耗的特点,同时还具有休眠(SLEEP)功能。为了最大限度地提高并行处理的运行效率,它采用了Harvard结构,即程序存储器和数据存储器使用不同的存储空间和总线,可直接访问全部的数据存储器和程序存储器,寄存器文件被双向映射并能被访问。算术逻辑单元(ALU)在执行某一指令时,下一个指令被预先从程序存储器中被提取处理,提高了MCU的运行效率。

(4)算术逻辑单元(ALU) 算术逻辑单元(ALU)支持寄存器之间以及寄存器和常数之间的算术和逻辑运算,以及单一寄存器操作,每一次的运算结果都通过状态寄存器(SREG)反映出来。

程序流程通过有/无条件的跳转指令和调用指令来控制,从而直接寻址整个地址空间。大多数指令长度为16位,即每个程度存储器地址都包含一条16位或32位指令。

(5)程序存储器 AVR的程序存储器空间由引导程序区和应用程序区组成。它们的读和读/写保护由对应的锁定位来实现。

(6)I/O存储器 I/O存储器空间包含64个I/O寄存器空间,它们用来控制MCU的各个外围功能。

(7)多种独立的时钟分频器 多种独立的时钟分频器为串行步通信(URAT)、SPI提供传输。8/16位定时/计数器可用作比较器、计数器外部中断和PWM的控制输出。AVR单片机定时/计数器(单)双向计数形成三角波与输出比较匹配寄存器配合,可以生成占空比、频率、相位可变的方波信号。

(8)其他电路 AVR单片机有自动上电复位电路(POR)、独立的看门狗电路(WDT)、低电压检测电路BOD,多个复位源,只需在复位端接一个上拉电阻即可实现复位,不需要另加外部复位器件。