ATmega128的外部并行接口器件扩展应用
- 格式:doc
- 大小:199.00 KB
- 文档页数:5
ATmega128的外部并行接口器件扩展应用ATmega128片内的RAM有4K字节,这在8位单片机中算佼佼者。
因此,设计一般的应用系统,应尽量不采用外部扩展并行器件的设计。
这样不仅方便PCB板的设计,减少PCB板的面积,同时也提高了系统的抗干扰性。
对于必须采用外部并行器件扩展的设计,ATmega128的PORTA(低8位地址线和8位数据线复用)、PORAC(高8位地址线)口提供了并行扩展接口。
尽管并行接口的基本使用原理同一般的单片机相同,但由于ATmega128的结构上的特点,以及其使用了增强型的并行接口,因此在使用并行扩展接口时还需要仔细的设计。
其主要特性有:*外部并行扩展的地址从0x1100开始;*使用外部并行扩展时,应将MCUCR寄存器中的SRE位置“1”,允许外部并行扩展;*可将PORTC口高位不用的地址线释放,作为普通的I/O口使用;*可设置对不同区域采用不同的读写操作时序(加等待),用于配合扩展使用不同时序操作的外部并行器件。
5.5.1 外部扩展RAM存储器的设计下图给出一个外部扩展32K的RAM(6264)的译码参考电路。
图中使用了一片74HC138和与门,与门的输出作为6264的片选信号,其地址空间为0x0000 –0x8FFF。
74HC138其它7个引脚输出用于在地址大于0x9000以上空间扩展其它更多的并行接口器件,每根线选通的地址空间为4K。
由于ATmega128的RAM空间前4352个字节分配给芯片内部的通用寄存器、I/O寄存器和4K 字节的内部SRAM,所以外部并行扩展器件的起始地址是从0x1100开始的(见第二章内容)。
当MCU在对0X0000-0X10FF范围的SRAM地址空间操作时,实际是对芯片内部的SRAM或寄存器操作,尽管会影响地址总线、数据总线和ALE,但此时和不受影响,因此对相应的处在这段地址范围的外部扩展的存储器没有影响。
在图5.6的设计中,实际上已经把6264中地址范围在0x0000-0x0FFF的一段存储单元“移”到ATmega128的RAM地址空间高端0x8000-0x8FFF处。
收稿日期:2008-05-26基金项目:国家863项目 天然气和垃圾填埋气燃烧发电在热气机的应用研究 (2006AA05Z245)作者简介:范伟成(1979 ),男,主要从事嵌入式控制系统的设计;王文良(1981 ),男,主要从事嵌入式控制系统的设计;沈孟良(1971 ),男,研究员,硕士生导师,主要研究方向为自动控制技术。
基于ATm ega128单片机的CAN 总线接口设计及应用范伟成,王文良,沈孟良(上海齐耀动力技术有限公司,上海 201203)摘要:从CAN 总线的工作原理出发,简要阐述了CAN 独立控制器S J A 1000、CAN 收发器T J A 1050和AVR 单片机AT-m eg a128的特点,着重介绍了一种基于该单片机的CAN 总线的硬件接口电路及软件驱动方法。
通过国家863计划项目 天然气和垃圾填埋气燃烧发电在热气机上的应用研究 的实际应用验证了此方案的可行性。
关键词:CAN 总线;ATm ega128单片机;SJ A 1000中图分类号:TP336 文献标识码:A 文章编号:1000-8829(2008)10-0048-03CAN Port Desi gn and Application Based on EmbeddedM icrocontroller ATm ega 128FAN W e-i cheng ,WANG W en -liang ,S HEN M eng -liang(Shangha iM i cropo w er L t d.,Shanghai 201203,Ch i na)Abstrac t :Based on t he pri nc i p l e o f CAN,the feature o f CAN con tro ll er SJ A1000,CAN transce i ver T J A 1050and M C U ATm ega128are i n troduced .Then the CAN hard w are i n terface and the C AN dr i ver so ft w are desi gn me t hod a re focused on .F ina lly t he va li d ity i s proved t hrough t he practical applica tion i n N ati onal 863Schem e Pro j ec t The research on stirli ng eng i ne generator us i ng natura l gas and landfill gas .K ey word s :C AN;ATm ega128;SJ A 10001 CAN 简介CAN,全称为 contro ller area net w ork ,即控制器局域网,最早由德国BOSCH 公司在20世纪80年代末提出,是国际上使用最广泛的现场总线之一。
Atmega128开发板使用说明书概要介绍Atmega128开发板上硬件资源丰富,接口齐全,基本上涵盖了Atmega128单片机所能涉及到的所有功能,可以满足单片机开发工程师和电子爱好者的开发实验的需求,或者高校电子、计算机专业学生的学习实验的需要。
按照正规产品的要求设计,不纯粹是实验样品,器件选型、原理图、PCB设计的时候都充分考虑了可靠稳定性。
Atmega128的IO口资源丰富,板上所以接口都是独立使用的,不需要任何跳线进行设置, IO口外围扩展使用了2片锁存器74HC574,既可以使实验变得更加简单方便,又能让实验者掌握更多的单片机设计知识。
提供配套软件源代码,学习板的每个实验都有与其相对应的软件代码,是版主从多年的工作经验中提取出来的,并经过优化,具有较高的参考价值。
编程简单,学习板编程不需要专用烧录器,利用计算机的并口即可进行编程,速度快、操作简单。
1.产品清单Atmega128开发板的配件清单如下,当您第一次拿到产品的时候,请参照下图认真核对包装内配件是否齐全,以及各配件是否完好无损。
请按照下图安装122*32 LCD,lCD的一脚对准122*32 LCD插座的一脚,切记不要插反2.硬件布局说明步进电机接口直流电机接口数字温度传感器SD卡插座光敏电阻ADC输入电位器NTC热敏电阻JTAG接口继电器接口9V电源输入接口DAC输出接口RS485接口RS232接口红外发射管ISP编程接口LCD对比度调节电位器122 * 32点阵LCD接口16 * 2字符LCD接口红外接收管433M射频模块接口3 *4 矩阵键盘3.接口说明接口管脚顺序的确认方法●对于有卡口的接口,应对着卡口的方向看,最左边为第一个管脚,如下图所示:●对于用螺丝压线的接口,应对着入线的方向看,最左边为第一个管脚,如下图所示:特别提示:ISP下载接口与JTAG接口封装相同,下载程序时使用ISP接口,不要插到JTAG 接口上4.硬件开发环境的建立本站出售的AVR单片机学习板就是一套完整的硬件环境,它由学习板、电源、并口ISP 下载线等组成。
Atmega128开发板使用说明书概要介绍Atmega128开发板上硬件资源丰富,接口齐全,基本上涵盖了Atmega128单片机所能涉及到的所有功能,可以满足单片机开发工程师和电子爱好者的开发实验的需求,或者高校电子、计算机专业学生的学习实验的需要。
按照正规产品的要求设计,不纯粹是实验样品,器件选型、原理图、PCB设计的时候都充分考虑了可靠稳定性。
Atmega128的IO口资源丰富,板上所以接口都是独立使用的,不需要任何跳线进行设置, IO口外围扩展使用了2片锁存器74HC574,既可以使实验变得更加简单方便,又能让实验者掌握更多的单片机设计知识。
提供配套软件源代码,学习板的每个实验都有与其相对应的软件代码,是版主从多年的工作经验中提取出来的,并经过优化,具有较高的参考价值。
编程简单,学习板编程不需要专用烧录器,利用计算机的并口即可进行编程,速度快、操作简单。
1.产品清单Atmega128开发板的配件清单如下,当您第一次拿到产品的时候,请参照下图认真核对包装内配件是否齐全,以及各配件是否完好无损。
请按照下图安装122*32 LCD,lCD的一脚对准122*32 LCD插座的一脚,切记不要插反2.硬件布局说明步进电机接口直流电机接口数字温度传感器SD卡插座光敏电阻ADC输入电位器NTC热敏电阻JTAG接口继电器接口9V电源输入接口DAC输出接口RS485接口RS232接口红外发射管ISP编程接口LCD对比度调节电位器122 * 32点阵LCD接口16 * 2字符LCD接口红外接收管433M射频模块接口3 *4 矩阵键盘3.接口说明接口管脚顺序的确认方法●对于有卡口的接口,应对着卡口的方向看,最左边为第一个管脚,如下图所示:●对于用螺丝压线的接口,应对着入线的方向看,最左边为第一个管脚,如下图所示:特别提示:ISP下载接口与JTAG接口封装相同,下载程序时使用ISP接口,不要插到JTAG 接口上4.硬件开发环境的建立本站出售的AVR单片机学习板就是一套完整的硬件环境,它由学习板、电源、并口ISP 下载线等组成。
AVR单片机Atmega128外扩RAM关键字:AVR单片机Atmega128 外扩RAM由于AVR系列单片机采用的是内部外部RAM统一编址,ATmega128工作在非ATmega 103模式时具有4k+256B的包括寄存器文件(通用工作寄存器)、I/O寄存器、扩展I/O寄存器和内部SRAM的连续内部存储空间。
所以在扩展外部RAM时,和内部SRAM地址重叠的外部RAM地址是不能直接访问的。
也就是说扩展的外部RAM每64k要浪费掉内部SRAM那么大的空间(AT90系列如此)。
所幸的是mega系列解决了这一缺点,专门有一个寄存器XMCRB用来解决对与内部SRAM地址空间相同地址的外部RAM访问。
其低三位XMM2 、XMM1 、XMM0三位的设置,决定高位地址线PC口的哪些口线被释放为普通I/O,而不是作为高位地址。
这样就可以巧妙地屏蔽高位,就ATmega128而言,要避开内部的4k+245B空间,注意到,只要所访问的地址范围大于0X1100(且MCUCR,XMCRA设置正确),那么所访问的就是外部RAM空间。
所以在访问小于4k+245B的外部地址时,只要使地址大于0X10FF就可以访问了。
0X1100用二进制表示为:0001,0001,0000,0000,高位地址线PC5、PC6、PC7没有使用到。
在访问的时候就可设置XMCRB的XMM1、XMM0位为1,释放该三根地址线为普通I/O,将其设为输出。
并且输出0;并在外部地址加上一个虚地址以使地址超过0X1100,如此设置,就可以访问外部0X0000~0X10FF空间了。
超出这个空间,CPU就自动将其识别为外部相应的地址了,不用设置XMCRB寄存器(即不需释放任何总线),也不需加虚地址,按照正常外部RAM访问即可。
在此约定所加的虚地址为0X2000,XMCRB寄存器设置为****,*011,所释放的地址线输出0。
表10-0X10FF范围的寄存器状态和寻址范围(略)表2各寻址范围地址线和寄存器状态表(略)表3各寻址范围地址线和寄存器状态表(略)比如要访问外部0X0200地址,用二进制表示为0000,0010,0000,0000。
产品特点•高性能、低功耗的 AVR® 8位微处理器•先进的 RISC 结构–133条指令 – 大多数可以在一个时钟周期内完成–32 x 8 通用工作寄存器 + 外设控制寄存器–全静态工作–工作于16 MHz时性能高达16 MIPS–只需两个时钟周期的硬件乘法器•非易失性的程序和数据存储器–128K 字节的系统内可编程Flash寿命: 10,000次写/擦除周期–具有独立锁定位、可选择的启动代码区通过片内的启动程序实现系统内编程真正的读-修改-写操作–4K字节的EEPROM寿命: 100,000次写/擦除周期–4K 字节的内部SRAM–多达64K字节的优化的外部存储器空间–可以对锁定位进行编程以实现软件加密–可以通过SPI实现系统内编程•JTAG接口(与IEEE 1149.1标准兼容)–遵循JTAG标准的边界扫描功能–支持扩展的片内调试–通过JTAG接口实现对Flash, EEPROM, 熔丝位和锁定位的编程•外设特点–两个具有独立的预分频器和比较器功能的8位定时器/计数器–两个具有预分频器、比较功能和捕捉功能的16位定时器/计数器–具有独立预分频器的实时时钟计数器–两路8位PWM–6路分辨率可编程(2到16位)的PWM–输出比较调制器–8路10位ADC8个单端通道7个差分通道2个具有可编程增益(1x, 10x, 或200x)的差分通道–面向字节的两线接口–两个可编程的串行USART–可工作于主机/从机模式的SPI串行接口–具有独立片内振荡器的可编程看门狗定时器–片内模拟比较器•特殊的处理器特点–上电复位以及可编程的掉电检测–片内经过标定的RC振荡器–片内/片外中断源–6种睡眠模式: 空闲模式、ADC噪声抑制模式、省电模式、掉电模式、Standby模式以及扩展的Standby模式–可以通过软件进行选择的时钟频率–通过熔丝位可以选择ATmega103兼容模式–全局上拉禁止功能•I/O和封装–53个可编程I/O口线–64引脚TQFP与 64引脚 MLF封装•工作电压–2.7 - 5.5V ATmega128L–4.5 - 5.5V ATmega128•速度等级–0 - 8 MHz ATmega128L–0 - 16 MHz ATmega128微处理器,具有128K字节的系统BDTIC /ATMEL2ATmega1282467L–AVR–05/04引脚配置Figure 1. ATmega128的引脚综述ATmega128为基于AVR RISC 结构的8位低功耗CMOS 微处理器。
ATmega128的外部并行接口器件扩展应用
ATmega128片内的RAM有4K字节,这在8位单片机中算佼佼者。
因此,设计一般的应用系统,应尽量不采用外部扩展并行器件的设计。
这样不仅方便PCB板的设计,减少PCB板的面积,同时也提高了系统的抗干扰性。
对于必须采用外部并行器件扩展的设计,ATmega128的PORTA(低8位地址线和8位数据线复用)、PORAC(高8位地址线)口提供了并行扩展接口。
尽管并行接口的基本使用原理同一般的单片机相同,但由于ATmega128的结构上的特点,以及其使用了增强型的并行接口,因此在使用并行扩展接口时还需要仔细的设计。
其主要特性有:
*外部并行扩展的地址从0x1100开始;
*使用外部并行扩展时,应将MCUCR寄存器中的SRE位置“1”,允许外部并行扩展;
*可将PORTC口高位不用的地址线释放,作为普通的I/O口使用;
*可设置对不同区域采用不同的读写操作时序(加等待),用于配合扩展使用不同时序操作的外部并行器件。
5.5.1 外部扩展RAM存储器的设计
下图给出一个外部扩展32K的RAM(6264)的译码参考电路。
图中使用了一片74HC138和与门,与门的输出作为6264的片选信号,其地址空间为0x0000 –0x8FFF。
74HC138其它7个引脚输出用于在地址大于0x9000以上空间扩展其它更多的并行接口器件,每根线选通的地址空间为4K。
由于ATmega128的RAM空间前4352个字节分配给芯片内部的通用寄存器、I/O寄存器和4K 字节的内部SRAM,所以外部并行扩展器件的起始地址是从0x1100开始的(见第二章内容)。
当MCU在对0X0000-0X10FF范围的SRAM地址空间操作时,实际是对芯片内部的SRAM或寄存器操作,尽管会影响地址总线、数据总线和ALE,但此时和不受影响,因此对相应的处在这段地址范围的外部扩展的存储器没有影响。
在图5.6的设计中,实际上已经把6264中地址范围在
0x0000-0x0FFF的一段存储单元“移”到ATmega128的RAM地址空间高端0x8000-0x8FFF处。
当用户程序对0x8000-0x8FFF寻址操作时,实际是对外部存储器RAM芯片6264的0x0000-0x0FFF 操作,即将外部RAM芯片的前4K个单元“移”到ATmega128的32K地址空间后面了,因此系统总共有36KB可以使用的线形连续RAM。
当外部扩展RAM的起始地址是从0x1100开始的,即与内部RAM空间连续时,使用ICCAVR 或CVAVR编写系统程序前,建议先使用程序生成器来生成一个使用外部扩展RAM的初始化程序作为参考。
在程序生成器生成的初始化程序中,会将MCUCR寄存器中的SRE位置“1”(允许使用
外部并行接口),还能帮助你正确的选择和设定并产生对不同区域使用不同操作时序的设置语句,以及如何将变量定义在特定的地址空间等。
此外,在编译程序前,还要正确设置芯片的编译选项,告诉编译器使用外部RAM,以及大小等,这样编译器会自动的将变量分配到外部RAM空间。
5.5.2 外部扩展并行I/O接口设计
下图给出一个简单的外部扩展32位数字输入接口的参考电路。
ATmega128外部并行扩展4片74HC373芯片(图中只画出1片),每选通一片74HC373,读入8位数字信号。
4片74HC373的选通信号由一片74HC00产生,选通地址分别为:0x2100、0x2200、0x2400、0x2800(或0x3100、0x3200、0x3400、0x3800)。
注意,系统没有扩展外部的RAM,因此地址空间0x0000-0x10FF为片内SRAM,而空间范围在0x1100-0x20FF的一段为空地址,4个74HC373
的选通地址也是不连续的。
在这个设计中,ATmega128的高位地址线A6、A7没有使用,可以释放作为普通的I/O线使用。
下面是在ICCAVR环境下的应用例程。
#define ext_PORT1 (*(volatile unsigned char *)0x2100)
#define ext_PORT2 (*(volatile unsigned char *)0x2200)
#define ext_PORT3 (*(volatile unsigned char *)0x2400)
#define ext_PORT4 (*(volatile unsigned char *)0x2800)
void main(void)
{
unsigned char DATA;
MCUCR = 0x80; // 允许外部并行扩展接口
XMCRA = 0x00; // external memory
XMCRB = 0x02; // 释放PC7,PC6,作为通用I/O引脚使用
DDRC = 0xff; // PC7,PC6用于输出,(不影响PC0-PC5地址线)
PORTC = 0x00; // PC7,PC6输出0,(不影响PC0-PC5地址线)
DATA = ext_PORT1; //读取外部抗战接口1的数据到变量DATA中
If (ext_PORT3) PORTC |= 0x80; //外部接口3不为0时,PC7输出1
………
}
程序中的4句#define使用了ICCAVR的强制指针变量的方式,在RAM绝对地址空间0x2100、0x2200、0x24000、x2800处定义了变量ext_PORT1~extPORT4,在程序中就可以方便的使用这4
个变量对外部4个扩展口操作了。
由于没有用到高位地址线PC7、PC6寻址和译码,程序中将起释放,作为普通的I/O口使用,也充分利用了ATmega128的特点。
在这个设计中,由于实际上并没有外部的扩展RAM,所以在编译程序前,要注意正确设置芯片的编译选项,告诉编译器不使用外部RAM,防止编译器将其它的变量分配到外部RAM空间中。
在CVAVR环境中,在RAM绝对地址空间0x2100、0x2200、0x24000、x2800处定义变量
ext_PORT1~extPORT4应使用CVAVR的专用变量定义语句:
unsigned char ext_PORT1 @0x2100,ext_PORT1 @0x2100,ext_PORT1 @0x2100,ext_PORT1 @0x2100;
在编译程序前,也要注意正确设置芯片的编译选项,告诉编译器不使用外部RAM,防止编译器将其它的变量分配到外部RAM空间中。