32位精简指令集架构的AT91M42800A的设计与应用_指令集架构

32位精简指令集架构的AT91M42800A的设计与应用

32位精简指令集架构的AT91M42800A的设计与应用 关键词:精简指令集 AT91M42800A 单片机 1 引言 目前,嵌入式产品逐步占领了PC市场,而其核心部分——处理器的性能 则决定了产品的设计和性能。在32位嵌入式处理器中, 由ATMEL 公司生 产的AT91系列芯片之一AT91M42800A是基于ARM7TDMI 处理器内核的16/32位微控制器,它除具有ARM处理器的低功耗、低成本、 高性能等优点外,还具有非常丰富的片内资源,特别适合于嵌入式产品的设计开 发。

2 AT91M42800A 的基本特性 AT91M42800A采用32位精简指令集(RISC)架构,因此, 它既支持16位Thumb指令集,又支持32位的Arm指令集。它采用三级 流水线结构,可在同一时间内,一条指令在执行,第二条指令在译码,第三条指 令在取指,这样,在每个周期都有一条指令在执行,因此,指令执行速度很快。

AT91M42800A的基于先进微控制器总线结构(AMBA)的模块化设 计方法具有综合、快速、高性能价格比的特点。该微控制器的内部工作寄存器很 多,非常适合实时控制应用。其主要特点如下:
●内核电压和锁相环电压为2.7~3.6V, I/O口操作电压为2. 7~5.5V;

●内部带有8kB静态RAM;

●具有完全可编程外部总线接口(EBI),且多达8个片选,寻址空间 很大;

●内含8通道外设数据控制器(PDC);

●带有54个可编程I/O口;

●内含6通道16位定时/计数器;

●具有2个通用串行异步接收/发送器(USART)和2个主/从SPI接口;

●内含3个系统定时器;

●时钟可由32768 Hz 晶体和内部锁相环(PLL)电路产生,最 高可编程至33MHz,也可由外部时钟信号提供;

●内置嵌入式在线仿真电路(Embedded ICE)  可通过JTA G口对AT91M42800A进行测试。

3 基本组成系统 由AT91M42800A构成的最基本的系统至少应包括以下几个部 分:
(1)程序存储器(ROM) 由于AT91M42800A 内部没有ROM,因此,必须外扩一片程 序存储器。应当注意的是:AT91M42800A的8位总线和16位总线的 FLASH接法不同,具体接法如图1所示。

(2)数据存储器  RAM  如果设计的系统比较复杂,数据比较多,当单片机内部8kB SRAM 不能满足要求时,还要外扩一片数据存储器。AT91M42800A能够支持 两种“写”方式,但对8位数据总线和16位数据总线的操作也是不同的,因此, 对于不同的存储器,其接法不同。对于8位总线的存储器,只需接D0~D7, 将D8~D15悬空,并将其地址线对接,而单片机的NWE/NWR0接到存 储器的NWE上。对于16位总线的存储器,则将其数据线对接,A1~A17 接存储器的A0~A16,并将其NWE/NWR0接存储器的NWE,NUB /NWR1接存储器的NUB,NLB/A0接存储器的NLB。外扩的RAM 的接法与外扩FLASH的接法类似。

(3)时钟发生电路 AT91M42800A的时钟既可以外接晶体,也可外接时钟信号。当 外接晶体时,由于其内带振荡电路,因此,外接32.768 kHz 的晶体后, 可产生慢时钟(SLCK)。由于SLCK频率低,所以系统的功耗也很低。若想提高系统的工作频率,则可通过PLLA或PLLB对其倍频,以达到所要求 的工作频率。如果所需频率不能通过PLL倍频得到,则可由外接时钟信号来提 供。当外接时钟信号时,可直接把时钟信号接到XIN引脚上,XOUT引脚悬 空。

(4)显示电路 显示电路可采用数码管显示或液晶显示,由于液晶显示的功耗低,故常采 用这种显示方式。该设计选用的液晶显示模块为LCM103。

(5)电源及复位电路 AT91M42800A内部带有看门狗(WatchDog)电路,也 可以外加WatchDog电路。本文中的例子采用的就是外加WatchDo g电路的接法,所选用的器件是MAXIM公司生产的MAX6316LUK2 9CY。

4 典型应用 由于单片机AT91M42800A具有低功耗、高性能、片内资源丰富、 寻址空间大等优点,所以适合现场总线产品的开发,其简要硬件原理图如图2所 示。图中只给出主要器件的主要引脚接法,电源电路及其它引脚限于篇幅图中未 画,读者在实际的设计过程中可自行设定。

图2 现场总线开发实例 5 存储器空间分配 在本设计中,由于ARM7TDMI处理器的地址空间非常大(可达4G 字节)。因此,在重映射前,可将地址最低的4MB分配给内部存储器,最高的 4M 分配给内部外设,其余中间的地址空间(从0x00400000到0x FFFCFFFF)留给外部扩展的设备,这部分设备可由AT91M4280 0A 的八个片选来选择。笔者选择的AT91M42800A开发环境为AD S1.1,由于在实际的嵌入式系统中,ADS1.1提供的缺省存储器映射不 能满足要求,而用户的目标硬件有多个存储器设备,且位于不同的位置,如上例 中,AT91M42800A的四个片选分别给了外扩FLASH、外扩的RA M、以及FB3050的内部寄存器片选和存储器片选,因此需要通过Scat-ter 文本文件来指定一段代码或数据在加载和运行时在存储器的不同位置, 这个文本文件在命令行中由-scatter开关指定。在arm linke r菜单的output 子菜单下有link type一项。link typ e 选项中,只要选择 scatter,并指定scatter.scf 文件 的存储位置就可以了。在下面的例子中,FLASH中的代码和数据存储在0x 04000000起始的、长度为32kB的地址空间中。

由于Start. s:汇编引导程序代码在执行重映射后,中断向量表 将存放在内部RAM中,其地址范围为0x00000000到0x00000 018,因此,用于存放数据的实际地址是从0x00000020开始的。存 放在外扩RAM中的代码放在ext_ram.c中,以下类似。上例的sca tter 文本文件代码如下:
FLASH 0x04000000 0x8000 { FLASH 0x04000000 0x8000 { Start.o (Reset, +First) * (+RO) } RAM ON CHIP 0x0020 0x2000 { *(+RW,+ZI) } RAM OFF CHIP 0x8000000 0x40000 { ext ram.o(+RW,+ZI)} FB3050 SEND 0x30000000 0x00ff { sendbuf.o(+RW,+ZI) } FB3050 RECEIVE 0x30004000 0x00ff { receive buf.o  +RW  +ZI  } } 6 调试要点 在设计调试过程中,AT91M42800A还有几个特殊的引脚需要特 别注意。

BMS:此引脚用来选择引导存储器的数据宽度,如果引导存储器是8位 的,应将其上拉,而如果为16位则要下拉。

NTRI:此引脚用来选择三态模式。如果要进入三态模式,应使NTR I引脚在NRST上升沿到来之前保持10个慢时钟周期的低电平,否则,则应 将NTRI上拉。

NWAIT:此引脚在调试AT91M42800A时,应将其上拉,否 则,系统将进入等待状态。

MODE0、MODE1:这两个引脚用来选择AT91M42800A 的4种操作模式,当模式改变时,必须进行复位才能有效。其设置方法如表1所 列。

表1 操作模式设置7 结束语 AT91M42800A是一款处理能力非常强、性能价格比非常高的嵌 入式微控制器,它具有32位处理器的处理能力,但却只有16位处理器的价格。

它丰富的片上资源和强大的扩展能力为嵌入式系统的开发设计提供了很大灵活 性。