中国·芯片交易在线
首页 | 供应信息 | 求购信息 | 库存查询 | 新闻中心 | 展会资讯 | IC厂商 | 技术资料 | 自由区域
   新闻首页 |  行业动态 | 新品发布 | 政策法规 | 科技成果 | 模拟技术 | 嵌入系统 | 传感控制 | 存储设计  
当前位置:IC72首页>> IC新闻中心>> 嵌入系统 >>电子行业新闻正文

ATmega128的外部并行接口器件扩展应用

时间:2008/8/22 9:00:00  作者:  来源:IC72  浏览人数:1235
 
 

      ATmega128片内的RAM有4K字节,这在8位单片机中算佼佼者。因此,设计一般的应用系统,应尽量不采用外部扩展并行器件的设计。这样不仅方便PCB板的设计,减少PCB板的面积,同时也提高了系统的抗干扰性。

      对于必须采用外部并行器件扩展的设计,ATmega128的PORTA(低8位地址线和8位数据线复用)、PORAC(高8位地址线)口提供了并行扩展接口。尽管并行接口的基本使用原理同一般的单片机相同,但由于ATmega128的结构上的特点,以及其使用了增强型的并行接口,因此在使用并行扩展接口时还需要仔细的设计。其主要特性有:

      *外部并行扩展的地址从0x1100开始;

      *使用外部并行扩展时,应将MCUCR寄存器中的SRE位置“1”,允许外部并行扩展;

      *可将PORTC口高位不用的地址线释放,作为普通的I/O口使用;

      *可设置对不同区域采用不同的读写操作时序(加等待),用于配合扩展使用不同时序操作的外部并行器件。

      1外部扩展RAM存储器的设计

      下图给出一个外部扩展32K的RAM(6264)的译码参考电路。

ic72新闻中心

      图中使用了一片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空间。

      2外部扩展并行I/O接口设计

      下图给出一个简单的外部扩展32位数字输入接口的参考电路。ATmega128外部并行扩展4片74HC373芯片(图中只画出1片),每选通一片74HC373,读入8位数字信号。

ic72新闻中心

      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环境下的应用例程。

      #defineext_PORT1(*(volatileunsignedchar*)0x2100)

      #defineext_PORT2(*(volatileunsignedchar*)0x2200)

      #defineext_PORT3(*(volatileunsignedchar*)0x2400)

      #defineext_PORT4(*(volatileunsignedchar*)0x2800)

      voidmain(void)

      {

      unsignedcharDATA;

      MCUCR=0x80;//允许外部并行扩展接口

      XMCRA=0x00;//externalmemory

      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的专用变量定义语句:

unsignedcharext_PORT1@0x2100,ext_PORT1@0x2100,ext_PORT1@0x2100,ext_PORT1@0x2100;

      在编译程序前,也要注意正确设置芯片的编译选项,告诉编译器不使用外部RAM,防止编译器将其它的变量分配到外部RAM空间中。

ic72新闻中心

      atmega128学习开发板

 
【相关文章】
·ATmega128的外部并行接口器件扩展应用
 
 
IC新闻搜索
 
热点新闻
基于红外超声光电编码器的室内移动小车定位系
基于闪烁存储器的TMS320VC5409DSP并行引导装载方法
非移动市场需求飙升,ARM预计2010年出货量超50亿片
一种快速响应的电容式湿度传感器感湿薄膜设计
利用特殊应用模拟开关改进便携式设计
无线传感器网络跨层通信协议的设计
基于ARM9内核Processor对外部NAND FLASH的控制实现
基于GSM技术的汽车防盗系统的设计
热电阻在烟叶初烤炕房温度控制中的应用
高速数据转换系统对时钟和数据传输的性能要求
友情连接
 关于我们  IC论坛  意见反馈  设置首页  广告服务  用户帮助  联系我们
copyright:(1998-2005) IC72 中国·芯片交易在线
(北京)联系电话:(010)82614113、82614123 传真:(010)82614123 客户服务:service@IC72.com 库存上载:IC72@IC72.com
在线MSN咨询:ic72sale8@hotmail.com 通信地址:北京市西城区西直门内大街2号大厦15层 邮政编码:100013
(深圳)联系方式: 在线MSN咨询:ic72sale6@hotmail.com 在线QQ咨询:191232636 通信地址:深圳市福田区振华路
注 册 号: 1101081318959(1-1)

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9