摘 要 主要介绍Analog Devices公司基于ARM7TDMI体系结构的新型AD,μC702x系列Micro Converter的特点;讨论基于ADμC702x芯片的应用电路设计及在不同模式下A/D转换单元的工作特性,并说明ADμuC702x评估板所提供开发工具的使用方法。旨在帮助读者尽快熟悉使用ADμC702x系列Micro Converter。
关键词 ADμC702x Micro Converter ARM7TDMI KEIL
引 言
ADI(Analog Devices Inc)公司是美国著名的半导体生产厂商,其生产的模拟器件、AD"C800系列(51内核)单片机和ADSP系列处理器在国内已有广泛应用。近来,ADI公司采用新型的ARM7TDMI内核设计了全新的ADμC702x系列MicroConverter,其运算速度可达45MIPS,12位A/D转换速率高达1000 ksps,是MicroConverter系列中功能最强的成员。本文简要介绍ADμC702x系列MicroConverter的特点及其软、硬件的设计。
1 ADpC702x系列的特点及硬件设计
ADμC702x系列MicroConverter采用ARM7TDMI体系结构,支持16/32位精简指令集(RISC),具有最多16通道、高达1000 ksps采样速率的12位A/D。ADμC702x系列整合了片内参考电平与温度传感器,支持JTAG方式调试与下载,外接32 kHz晶振,通过锁相环可工作在45MHz下。该系列产品集成有62 KB的Flash与8 KB的SRAM,片上外设资源包含有UAR了、SPI,双I2C串行接口、4个定时器、看门狗、电源监测模块、3相16位PWM输出和可编程逻辑阵列(PLA)等。ADμC702x系列采用3V供电,在1 MHz系统时钟下耗电为3 mA,45 MHz时钟频率下耗电为50 mA。图1为以ADμC7026为例的系统功能框图。下面简要介绍AD#C702x系列的硬件特点与相关设计。
1.1ADuC702x系列A/D转换器的配置与应用
ADμC702x系列MicroConverter包含有快速多通12位A/D转换器,可工作在2.7"3.6V电电压下;在系统时钟为45 MHz时,可提供1000 ksps的采样率。A/D模块还具有多路选择开关、差动采样保持和片上A/D转换参考电平(2.5 V)。
ADμC702x系列的A/D转换器可配置为差分、伪差分和单端模式。在伪差分与单端模式下,A/D转换的输入范围是0 V"VREF(参考电平)。在差分模式下,输入信号的共模电平为VCM,输入信号范围必须在0 V—AVDD(模拟电源电子)之间,输入信号的差模幅值最大可达2VREF,如图2所示。当A/D工作在差分方式时,每两路A/D转换引脚作为一路A/D转换通道,所以在该方式下可用的A/D通道较少;但差分方式对每一路模拟信号都能提供很好的共模抑制,并且拥有更宽的输入范围。采用单端与伪差分方式时,每个A/D引脚可作为独立通道工作,所以会拥有更多的A/D通道与更高的分辨率(为差分方式下2倍)。在设计时,可根据信号的特点选择A/D转换方式。
1.2 ADμC702x系列存储系统的特点与设计
ADμC702x系列MicroConverter具有64 KB的片上Flash。其中顶端的2 KB存储区包含有永久的固件,主要用于工厂校准、上电时内部引导和串口程序加载等,对用户是不可见的。其余62 KB可用于用户程序的写入。Flash组织方式为32K%26;#215;16位。当执行ARM(32位)指令集时,单周期不能完成取指,而且从Hash中读取数据需要插入更多的额外时钟周期,所以对于关键的代码段或中断服务程序可以映射到SRAM中进行。ADμC702x系列的SRAM组织方式为2K%26;#215;32位,访问速度为2 ns,可全速执行ARM代码。
在系统复位后,内核首先执行2KB的内部设置程序,然后默认从Flash中取指。可通过REMAP寄存器(ADμC702x系列的寄存器除标准的37个ARM7TDMI寄存器外都为存储器映射寄存器一一MMR)映射为从SRAM中取指,也可从SRAM取指方式通过REMAP寄存器返回为Flash取指方式。
ADμC702x系列中只有多引脚封装的ADμC7026与ADμC7027支持外部存储器扩展,其外部存储器总线可工作在8位或16位带宽模式下,分为4个存储区,通过MS[3:O]进行选择。典型外部总线设置如图3所示。
1.3 ADμC702x系列的PLA介绍
ADμC702x系列整合了可编程逻辑阵列(PLA),包含有2个相互独立但内部连接的PLA模块。每个模块包含8个PLA单元,共含有16个PLA单元。每个PLA单元包含1个双输入的查表结构,可用于产生基于输入的任伺逻辑输出函数并包含有1个触发器。PLA单元的结构如图4所示。
ADμC702x系列共有30个可用于PLA的GPIO口,其中有16个输入口,14个输出口。可通过配置GPxCON寄存器使它们成为PLA的外部引脚。通过配置相关寄存器可使PLA成为中断源,启动A/D转换或在输出引脚得到所需信号等。在AD公司的开发工具中还含有专门的设计软件用来设计PLA寄存器配置。
1.4 ADμC702x电源与其他硬件相关设计
由于ADμC702x系列内部整合有模拟与数字两部分电路。为了防止数字部分对模拟部分的干扰,保证A/D精度,在电源部分设计时要特别注意两部分电源的隔离。可采用双电源供电或单电源供电磁珠隔离方式。典型电路分别如图5、6所示。
ADμC702x系列其他片上外设资源,如LIART、SPI、PWM、watchdog等,在嵌入式系统中已有广泛应用,在ADμC702x系列使用中并无明显差异,在此不再赘述。
2 ADμC702x系列的软件设计
ADμC702x系列MicroConverter采用了ARM7TDMI内核,支持ARM(32位)与Thumb(16位)指令集,包含长乘法指令,有5种中断模式(未定义指令、软件中断、IRQ中断、FIQ中断和存储器访问终止),24个中断源(包括看门狗中断、定时器中断、SPI中断、PLA中断、A/D中断、外部中断等)。其中5种中断模式是ARM7TDMI内核共有的。24个中断源是根据ADμC702x系列特性可配置的,可分别配置为IRQ中断或FIQ快速中断模式。配置为FIQ模式时,将会有更快的响应时间。对应不同的工作模式,ADμC702x系列遵循ARM7TDMI内核规范,使用不同模式下的寄存器。有关ARM7TDMI内核特性可参考ARM体系结构相关资料。
2.1 适用于ADμC702x系列的编译器
ADμC702x系列为ARM7TDMI内核,所以原则上可以编译为ARM7TDMI指令集的编译器都可以选择。ARM7TDMI为RISC指令核,适用于使用C语言开发。现在常用的ARM编译环境有ARM Developer Suite(ADS)、RealView Developer Suite、IAR Embedded Work bench、KEILToolKit、GCC等。其中ADS与RealView是ARM公司开发的编译环境,RealView为ADS的换代产品。这两种编译器都具有很高编译效率与代码密度。IAR是一家瑞典嵌入式系统开发工具和服务的供应商,其不同MCU的编译器(如MSP430)在国内也有广泛应用。KEIL的C5l编译器对805l核C语言具有很好的编译效果,是国内使用最广的C5l编译器,其ARM编译器是该公司的新产品。而GCC是GNU组织设计的开源编译器,针对不同MCU有不同的开发工具集,并且可以免费使用,但它的编译效率不高且缺少可视化开发环境。
2.2 基于KEIL的ADμC702x系列程序设计简介
由于ADS在国内使用较早,现已有很多参考书籍。现简要介绍ADμC702x开发套件中KEIL编译器的开发流程。KEII.ARM集成开发环境为μVision3,具有友好的交互界面,编译、连接可在集成环境中一次完成,并可进行软件仿真或通过开发套件中的UuNKJTAG调试器进行下载、调试。在KEIL环境下,还可以配置编译器为ADS、REALVIEW、GCC或KEIL公司的ARMC编译器,所以KEIL环境极大地提高了开发的灵活性。以下简述在KEIL环境下,基于GCC与KEIL编译器的程序开发(GCC ARM编译器可从KEIL官方网站免费下载)。
在使用KEIL环境开发程序时,用户需要提供汇编语言起始代码startup.s、用户程序和连接器配置文件。其中startup.s程序主要用于安装中断入口程序、初始化不同模式下堆栈指针和当前MCU的初始化工作(包含PLL配置等),在初始化完成后,staltup.s还负责引导程序至C语言入口main()处。若使用GCC与KEIL编译器,一些常用MCU(包括ADμC702x系列)的startup.s代码已由KEIL提供,用户可根据需要进行少量修改。采用KEIL自带的编译器可在图形化界面下完成大部分连接器的配置工作,无需编写专门的文件。若使用GCC编译器还需提供连接配置文件。针对常用的MCU,KEIL也提供了基本的连接代码,可从相关目录中拷贝,根据需要修改配置。连接文件主要用于各代码和数据在存储器中的定位与变量的初始化。
用户程序可采用C语言编写。针对ARM7TDMI内核的特点,KEIL公司的ARMC编译器CA与GCCARM编译器arm-uclibc-gcc都对ANSI C进行了扩展,增加了关键字(如CA的中断服务关键字_irq、绝对存储地址关键字_at、GCC的_attribute_关键字等),以方便用户使用C语言对嵌入式系统编程。在程序设计时,扩展关键字可通过KEIL与GCC的用户手册进行查找,也可参考KEIL官方网站上的例程。
2.3 ADμC702x系列程序的下载与调试
ADμC702x系列上的JTAG接口可通过开发工具中的ULINK连接至PC的USB口,在KEIL环境下进行非侵入式(non intrusive)的调试和对Flash进行编程。与其他MicroConveiter系列芯片相同,ADμC702x系列也可通过串口进行程序的写入与升级,即SERIAL DOWN-LOADER方式。该方式提供了廉价的系统升级方案,通过在系统复位或上电时,把P0.O口置低,使系统进入SE-RIAL DOWNLOADER模式,通过UART口下载程序至片上F1atsh。