ADuC系列ARM器件应用技术pdf/doc/txt格式电子书下载
本站仅展示书籍部分内容
如有任何咨询
请加微信10090337咨询
书名:ADuC系列ARM器件应用技术pdf/doc/txt格式电子书下载
推荐语:
作者:孙来军,魏莹,李桂英、
出版社:电子工业出版社
出版时间:2013-11-01
书籍编号:30467598
ISBN:9787121217548
正文语种:中文
字数:100677
版次:1
所属分类:教材教辅-大学
版权信息
书名:ADuC系列ARM器件应用技术
作者:孙来军 魏莹 李桂英 等
ISBN:9787121217548
版权所有 · 侵权必究
前言
随着技术的进步和人们生活水平的提高,嵌入式系统对CPU处理能力的要求也在稳步提高,许多与MCS-51体系结构兼容的8位微控制器受限于体系结构,处理能力始终没有大幅度提高;而16位系统在性能上与8位机相比没有太大优势,成本上也与32位系统相差不多。因此,可以预见在未来32位系统必然会在嵌入式微控制器领域中占据重要的一席之地。
32位嵌入式系统大多是基于ARM体系结构,但长期以来,基于ARM体系结构的32位系统仅用于嵌入式系统的中高端领域,并没有出现性价比高的通用微控制器。美国模拟器件公司(ADI)敏锐地发现了这一市场商机,推出了性价比很高的ADuC70xx系列微控制器,让更多的嵌入式系统具有了32位的处理能力,这也标志着一个新的32位处理器时代的到来。
ADuC70xx系列微控制器是一种具有双总线结构的RISC微处理器,与传统的CISC微处理器相比较,其指令代码可以在ARM模式或Thumb模式下执行,代码执行效率更高,性能损失更小。此外,ADuC70xx系列微控制器还集成有片内高速Flash存储器、片内同步/异步串行接口、片内定时器/计数器以及片内高精度ADC/DAC等多种内部资源。上述这些特点使得采用ADuC70xx作为处理器的应用系统不仅具有运行速度快、结构简单、功能强大的特点,而且具有高可靠性和良好的经济性。
本书介绍的ADuC70xx系列嵌入式系统主要包括ADuC7019/20/21/22/24/25/26/27/28/29,以及ADuC7060/61,重点讲解这一系列微处理器的原理及应用,是一本非常适用于大学本科和研究生教学的理论实践课教材。全书共分9章。第1章介绍ARM处理器;第2章介绍ADuC70xx系列嵌入式系统硬件结构与存储器组织;第3章介绍模拟外设与接口;第4章介绍数字外设与接口;第5章介绍中断系统与定时器/计数器;第6章介绍系统控制模块及硬件系统设计参考;第7章介绍ADuC70xx系列嵌入式系统开发工具;第8章ADuC70xx相关C语言基础;第9章介绍ADuC70xx系列嵌入式系统应用实例。
本书第1、2、4章由魏莹撰写,第3、5、8章由于志刚撰写,第6、7、9章由李桂英撰写,附录(实验)由乔常明撰写,全书规划、内容安排、定稿与修改由孙来军负责,由乔常明校对。非常感谢ADI公司的魏科、高威对本书及课题组一如既往的支持和关心。
由于作者水平有限,书中难免有疏忽、不恰当甚至错误之处,恳请各位老师及同行批评指正,并请您将阅读中发现的错误发送到slaijun@126.com。
第1章 ARM处理器简介
1.1 ARM概述
ARM即AdvancedRISC Machines的缩写。ARM公司在1990年成立于英国,是微处理器行业的一家知名企业。该公司不但自己设计了大量廉价、高性能、低功耗的RISC处理器、相关技术及软件,而且转让其设计许可,让合作伙伴公司来生产各具特色的芯片。这使得ARM公司在世界范围的合作伙伴超过100个,其中包括许多半导体工业的著名公司。正是这些大量的开发工具和丰富的第三方资源,共同保证了ARM处理器核在全球的领先地位。
1.1.1 ARM处理器特性
ARM公司的处理器具有性能高、成本低和功耗小的特点,适用于多种领域,包括嵌入式控制、教育/消费类多媒体、DSP和移动式应用等。
ARM是精简指令集计算机,其外型较小但性能很高。它集成了非常典型的RISC结构特性:
● 大而统一的寄存器文件;
● 装载/保存结构,数据处理的操作只针对寄存器的内容,而不直接对存储器进行操作;
● 寻址模式简单,所有装载/保存的地址都只由寄存器内容和指令域决定;
● 统一和固定长度的指令域,简化了指令的译码。
此外,ARM体系结构还提供以下一些特性:
● 每一条数据处理指令都对算术逻辑单元(ALU)和移位器控制,以实现对ALU和移位器的最大利用;
● 自动增址和自动减址的寻址模式实现了程序循环的优化;
● 多寄存器装载和存储指令实现最大数据吞吐量;
● 所有指令都能以最快速的代码执行。
这些在基本RISC结构上增强的特性使ARM处理器在高性能、低代码规模、低功耗和小硅片尺寸方面取得了良好的平衡。
1.1.2 ARM系列产品简介
ARM公司开发了很多系列的ARM处理器核,目前最新的系列已经是ARM11了,ARM6以及较早的版本几乎不再使用,现在应用比较多的是ARM7系列、ARM9系列、ARM9E系列、ARM10系列、SecurCore系列和Intel的StrongARM、XScale系列。由于本书所主要介绍的ADI公司研发的ADuC70xx系列微处理器使用的是ARM7TDMI内核,因此下面着重介绍一下ARM7系列。
ARM7系列包括ARM7TDMI、ARM7TDMI-S、带有高速缓存处理器宏单元的ARM720T和扩充了Jazelle的ARM7EJ-S。该系列处理器提供Thumb 16位压缩指令集和Embedded ICE JTAG软件调试方式,适合应用于更大规模的SoC设计中。其中ARM720T高速缓存处理宏单元还提供8KB缓存、读缓冲和具有内存管理功能的高性能处理器,支持Linux、Symbian OS以及Windows CE等操作系统。
ARM7系列广泛应用于多媒体和嵌入式设备,包括Internet设备、网络和调制解调器设备以及移动电话、PDA等无线设备。目前,无线信息设备领域的应用前景非常广阔,因此ARM7系列也瞄准了下一代智能化多媒体无线设备领域的应用。
1.2 ARM7TDMI内核概述
ARM7TDMI内核基于ARM体系结构V4版本,是从ARM6核发展而来的。ARM7不但弥补了ARM6很难在低于5V的电源电压下稳定工作的不足,而且还具有额外的以下4个特点:
● 支持高密度16位的Thumb指令集扩展(T);
● 支持片上调试(D);
● 支持64位乘法指令(M);
● 支持嵌入式系统调试的Embedded ICE模块(I)。
1.2.1 指令操作
ARM7TDMI处理器每执行一条指令,都需要通过取指令、指令译码和指令执行等流水线阶段。ARM7TDMI处理器的这种三阶段流水线结构,在程序运行过程中是重叠的。如图1.1所示,在执行第一条指令的同时,还依次完成了后续两条指令的读取指令、指令译码。ARM7TDMI处理器通过使用这种流水线结构来增加处理器指令流的速度,指令执行速度达到0.9MIPS/MHz。如此高的指令执行速度可以使几个操作同时高效进行,还可以使处理和存储器系统进行连续可靠操作。
图1.1 流水线操作
1.2.2 存储器访问及接口
ARM7TDMI处理器使用了冯·诺依曼结构,指令和数据共用一条32位总线。只有装载、存储和交换指令可以对存储器中的数据进行访问。
数据可以是8位字节、16位半字或者32位字。字必须分配为占用4字节,而半字必须分配为占用2字节。
ARM7TDMI处理器的存储器接口可以使潜在的性能得到实现,这样减少了存储器的使用。对速度有严格要求的控制信号使用流水线,这样可以使系统控制功能以标准的低功耗逻辑实现。这些控制信号使许多片内和片外存储器技术所支持的“快速突发访问模式”得到充分利用。
ARM7TDMI处理器的存储器周期有以下4种基本类型:
● 内部周期;
● 非连续的周期;
● 连续的周期;
● 协处理器寄存器传输周期。
1.3 ARM7TDMI相关结构框图
ARM7TDMI的模块框图如图1.2所示。
图1.2 ARM7TDMI模块框图
由图1.2可知,ARM7TDMI由处理器核、用于边界扫描的TAP控制器以及在线仿真器组成。双向数据总线D[31:0]为了与各种外部存储器兼容,分割成单向输入和输出总线。
ARM7TDMI的内核框图如图1.3所示。
图1.3 ARM7TDMI内核框图
由图1.3可知,ARM7TDMI处理器有31个通用32位寄存器、6个状态寄存器。它特有的整型32×8乘法器和32位筒形移位器,5个独立的内部总线使得指令的执行具有高度的并行性。
ARM7TDMI的功能框图如图1.4所示。
图1.4 ARM7TDMI功能框图
1.4 ARM7TDMI内核工作状态
ARM7TDMI处理器内核使用ARM v4T结构实现,该结构包含32位ARM指令集和16位Thumb指令集。因此,ARM7TDMI处理器有两种操作状态:
① ARM状态(32位):这种状态下执行的是字方式的ARM指令。
② Thumb状态(16位):这种状态下执行的是半字方式的Thumb指令。
ARM7TDMI处理器内核的操作状态可以在ARM状态和Thumb状态之间进行切换,而且这种切换并不影响处理器模式或寄存器内容。当有异常发生时,所有的异常处理都在ARM状态中执行。如果异常发生在Thumb状态中,处理器会切换到ARM状态,待异常处理完成后,自动切换回Thumb状态。
1.5 可处理的异常
ARM7TDMI处理器支持5种类型的异常,并且每一种异常模式有一种优先处理器模式。这5种异常分别为:
● 正常中断IRQ,用于内部和外部事件的通用中断处理;
● 快速中断FIQ,用于数据传输或低延迟时间通道处理,FIQ的优先级高于IRQ;
● 存储器中止;
● 未定义指令执行;
● 软件中断指令(SWI),它通常用于通知操作系统。
典型情况下,定义的中断为IR,但是为了得到更高优先级的中断,也就是说为了得到更为快速的响应时间,可以定义中断为FIQ。
1.6 ARM相关寄存器
ARM7TDMI内核总共有37个寄存器,包括31个通用寄存器和6个状态寄存器。每一种工作模式有专门的寄存器组。
当编写用户级程序时,15个通用32位寄存器(R0~R14)、程序计数器(R15)和当前程序状态寄存器(CPSR)是可用的。余下的寄存器只用于系统级编程和异常处理。
当一个异常发生时,一些标准的寄存器被替换成特定寄存器,从而进入异常模式。所有的异常模式有各自的堆栈指针寄存器(R13)和链接寄存器(R14),如图1.5所示。快速中断模式有更多的寄存器(R8~R12)用于快速中断处理。这意味着无需先保存这些寄存器,就可以进行中断处理,因此在中断处理中可以节省临界时间。
图1.5 ARM7TDMI寄存器组织
1.7 ARM支持的寻址方式
寻址方式是处理器执行指令时寻找真实操作数地址的方式,ARM支持9种寻址方式,下面分别介绍。
(1)寄存器寻址:所需要的操作数在寄存器中,即寄存器的内容为操作数。
(2)立即寻址:操作数包含在指令中,读取了指令就读取了操作数。
(3)寄存器移位寻址:ARM指令集特有的寻址方式。操作数在寄存器中,但寄存器中保存的数不是操作数本身。真实操作数由寄存器移动一定的位数得到(即乘以 2n或除以 2n,n为左移或右移的位数)。
(4)寄存器间接寻址:操作数在内存中,但指令中并没有操作数在内存中的地址,而是指定一个寄存器,这个寄存器的内容为操作数在内存中的地址(即用寄存器作为指针访问内存)。
(5)基址寻址:与寄存器间接寻址类似,但寄存器保存的不是操作数在内存中的地址,操作数在内存中的地址由寄存器中的值加上指令指定的一个偏移得到;
(6)多寄存器寻址:一次可把内存中的多个值传送到多个寄存器或是把多个寄存器中的值传递到内存中。这种寻址允许一条指令传递16个寄存器的任何子集(或所有16个寄存器);
(7)堆栈寻址:多寄存器寻址的特殊形式,是按照堆栈的约束条件工作的成对使用的多寄存器寻址。ARM处理器支持所有类型的堆栈;
(8)块复制寻址:多寄存器寻址的特殊形式,是按照一定的规则成对使用的多寄存器寻址,一般用于内存复制;
(9)相对寻址:基址寻址的特殊形式,这个基址必须由程序计数器PC(R15)提供。这样,操作数就以指令本身所在的内存地址+8为基础,而指令中的偏移量实质就是操作数与这条指令的相对位置(应该再加上8才是真正的偏移,但汇编程序会处理这些差异)。
1.8 ARM支持的指令集
ARM7TDMI处理器有两个指令集:32位ARM指令集和16位Thumb指令集。每种指令集都有各自的优缺点和使用范围。
1.8.1 ARM指令集
ARM指令集共包括5类指令:分支指令、数据处理指令、加载和存储指令、协处理器指令和杂项指令。
几乎所有的ARM指令都包括一个4位的条件域。如果条件代码标志在指令开始执行时指示条件为真,那么指令正常执行;否则,指令什么也不做。14个可用的条件允许做3件事情:
● 测试相等或不相等;
● 测试不相等条件<、<=、>、>=,包括有符号和无符号运算;
● 单独测试每个条件代码标志。
条件域的第16个值用于那些不允许条件执行的指令。
1.8.2 Thumb指令集
Thumb指令集可分为4大类指令:分支指令、数据处理指令、寄存器加载与存储指令和异常产生指令。
传统的微处理器结构对于指令和数据有相同的带宽。因此,和16位结构相比,32位结构具有更高的性能,并且在寻址更大的地址空间时要有效得多。
16位结构比32位结构具有更高的代码密度,并且超过32位结构50%的性能。Thumb在32位结构上实现了16位的指令集,这样可提供比16位结构更高的性能和比32位结构更高的代码密度。
Thumb指令集不是一个完整的指令集,它仅仅是通用的ARM指令集的子集,处理器不可能只支持Thumb指令而不支持ARM指令。Thumb指令长度为16位,每条指令都对应一条32位ARM指令,它对处理器模型有相同的效果。
Thumb指令使用标准的ARM寄存器配置进行操作,这样ARM和Thumb状态之间具有极好的互用性。在执行方面,Thumb具有32位内核所有的优点:
● 32位地址空间;
● 32位寄存器;
● 32位移位寄存器和算术逻辑单元(ALU);
● 32位存储器传输。
因此,Thumb提供了长的分支范围、强大的算术操作和巨大的地址空间。Thumb代码仅为ARM代码规模的65%,但其性能却相当于连接到16位存储器系统的ARM处理器性能的160%。因此,Thumb使ARM7TDMI处理器非常适用于那些只有有限的存储带宽并且代码密度很高的嵌入式应用。
16位Thumb和32位ARM指令集使设计者有极大的灵活性,使其可以根据各自应用的需求,在子程序一级上实现对性能或者代码规模的优化。
为了实现16位指令长度,Thumb指令丢弃了ARM指令集的一些特点:
● 大多数Thumb指令是无条件执行的(所有ARM指令都是条件执行的);
● 许多Thumb指令采用2地址格式(除了64位乘法外,ARM数据处理指令采取3地址格式);
● Thumb指令没有ARM指令规则。
1.9 ARM内核调试接口
1.9.1 调试系统的典型结构
ARM7TDMI处理器构成了调试系统的一个部件,它作为所执行的高级调试与ARM7TDMI所支持的低级调试之间的接口。典型的调试系统如图1.6所示。
由图1.6可知,一个调试系统通常包括3个部分:
(1)调试主机
调试主机是一台运行调试软件的计算机。在该主机上,用户可以使用设置断点或检查存储器内容这些高级命令。
(2)协议转换器
协议转换器是调试主机发出的高级命令与ARM7TDMI处理器JTAG接口的低级命令之间的转换接口。典型情况下,它通过一个接口与主机相连。
(3)调试目标
ARM7TDMI处理器具有便于进行底层调试的硬件扩展。这些扩展可以:
图1.6 典型调试系统
● 暂停程序的执行;
● 检查和修改内核的内部状态;
● 检查存储器系统的状态;
● 执行中止异常,允许实时监控内核;
● 恢复程序执行。
1.9.2 调试接口
ARM7TDMI处理器的调试接口是建立在IEEE 1149.1—1990标准,即JTAG标准基础之上的。
JTAG(Joint Test Action Group)是联合测试行动小组的简称,是一种国际标准测试协议,主要用于芯片内部测试。基本原理是在器件内部定义一个TAP(Test Access Port),通过专用的JTAG测试工具对器件内部节点进行测试。JTAG测试允许多个器件通过JTAG接口串联在一起,形成一个JTAG链,能实现对各个器件分别测试。现在,JTAG接口还常用于实现ISP(In-System reprogrammable)在线编程。这个功能使得可以先将芯片固定在板上,然后再用JTAG编程,大大简化了芯片的生产流程,加快了工程进度。
1.9.3 Embedded ICE-RT
ARM7TDMI处理器的Embedded ICE-RT模块为其内核提供集成的片内调试支持。Embedded ICE-RT通过ARM7TDMI处理器TAP控制器串行编程。内核、Embedded ICE-RT与TAP控制器之间的关系如图1.7所示,其中只显示了与Embedded ICE-RT有关的信号。Embedded ICE-RT逻辑包括三个部分:
(1)两个实时观察点单元。可以编程这两个观察点或其中一个使内核暂停指令的执行。当编程到Embedded ICE-RT的值与地址总线、数据总线和不同的控制信号上出现的值相匹配时,指令的执行会被暂停。可以屏蔽其中任何一位使它的值不影响比较。每个观察点单元都可配置为观察点(监视数据的访问)或断点(监视指令取指)。
(2)中止状态寄存器。该寄存器用于识别产生异常中止的原因。
(3)调试通信通道DCC。DCC在目标系统与主机调试程序之间传递信息。
图1.7 ARM7TDMI内核、Embedded ICE-RT与TAP控制器关系图
第2章 ADuC 70xx系列嵌入式系统硬件结构与存储器组织
2.1 ADuC70xx系列嵌入式系统简介
本书介绍的ADuC70xx系列嵌入式系统主要包括ADuC7019/20/21/22/24/25/26/27/28/29,以及ADuC7060/61微控制器。
ADuC7019/20/21/22/24/25/26/27/28/29 系列微控制器在单芯片内集成了1MSPS、12位、多通道高性能ADC的数据采集系统,以及16位/32位MCU和Flash/EE存储器,典型的结构框图如图2.1所示。ADC具有多达12个单端输入通道,另外还有4个ADC输入通道也可以和4个DAC的输出引脚复用。这4路DAC输出只有ADuC7020和ADuC7026提供。然而,在无DAC输出的情况下,这些引脚仍然可以用作ADC的输入引脚,这样ADC的输入最多可以达到16通道。ADC可以工作在单端模式或差分输入模式下,其输入电压为0 V至VREF。低漂移带隙基准电压源、温度传感器和电压比较器完善了ADC外设设置。
可以通过编程将DAC输出范围设置为三种电压范围之一。器件可以通过一个片内振荡器和一个锁相环产生一个41.78MHz的内部高频时钟信号。通过一个可编程时钟分频器进行中继,这个时钟可以用来产生MCU内核时钟工作频率。这些微控制器的内核都是ARM7TDMI,它是一个16位/32位RISC机器,其最高性能峰值高达41 MIPS。根据型号不同,片内最多集成有8KB的SRAM和62KB非易失性Flash/EE存储器。ARM7TDMI内核将所有的存储器和寄存器都按照一个线性阵列来组织。
片内出厂设置的固件支持通过UART接口或I2C接口进行在线串行下载,也可以通过JTAG接口进行非介入仿真。这些特性都集成在一个低成本的QuickStartTM开发系统中支持这一系列微控制器。它们的工作电压范围为2.7V~3.6V,可以在−40℃~+125℃的工业温度范围工作。当工作频率为41.78MHz时,典型的功耗为120mW。这一系列微控制器有多种内存类型和封装形式,结构设计非常优良,功耗极低,非常适用于工业控制、医疗诊断、交通指挥、移动互联等领域。
图2.1 ADuC702x系列微控制器结构框图
ADuC7060/61这两款微控制器的结构和性能与ADuC702x系列较为相似,但更多的时候被看做是一个小型的数据采集系统。因为其片内集成有高性能多通道Σ-Δ型8KSPS、24位ADC、并且同样提供16位/32位ARM7TDMI MCU和Flash/EE存储器。其内部ADC系统由两个内置差分对或4个单端通道的主ADC和7个通道的内置辅助ADC组成,可以工作在单端模式或差分输入模式下。同时片内集成有一个单通道缓冲电压输出DAC,通过编程可以将DAC输出范围设置为四种电压范围之一。ADuC7060/61的结构框图如图2.2所示。
图2.2 ADuC706x系列微控制器结构框图
2.2 ADuC70xx系列嵌入式系统封装与引脚配置
尽管ADuC70xx系列微控制器的性能较为相似,但不同型号之间还是存在一定的差异,下面分别介绍各个型号的封装结构(见图2.3~图2.11)和引脚功能配置(见表2.1~表2.7)。
图2.3 ADuC7019/20 40引脚FCSP_VQ封装
图2.4 ADuC7021 40引脚FCSP_VQ封装
图2.5 ADuC7022 40引脚FCSP_VQ封装
表2.1 ADuC7019/20/21/22引脚配置描述

续表

图2.6 ADuC7024/25 64引脚FCSP_VQ封装
表2.2 ADuC7024/25引脚配置描述

续表

续表

图2.7 ADuC7026/27 80引脚LQFP封装
表2.3 ADuC7026/27引脚功能描述

续表

续表

续表

图2.8 ADuC7028 64引脚BGA封装
图2.9 ADuC7029 49引脚BGA封装
表2.4 ADuC7028引脚功能描述

续表

续表

表2.5 ADuC7029引脚功能描述

续表

续表

图2.10 ADuC7060 48引脚LFCSP_VQ封装
表2.6 ADuC7060引脚功能描述

续表

1 I=输入,O=输出,I/O=输入/输出,S=电源。
图2.11 ADuC7061 32引脚LFCSP封装
表2.7 ADuC7061引脚功能描述

续表

1 I=输入,O=输出,I/O=输入/输出,S=电源。
2.3 ADuC70xx系列微控制器存储空间
ADuC7019/20/21/22/24/25/26/27/28/29系列微控制器共有两个独立的存储器模块:一个8KB的SRAM和一个64KB的片内Flash/EE存储器(型号不同,存储空间略有不同),其中Flash/EE中的62KB空间可供用户使用,其余2KB保留用于厂商配置引导(BOOT)页面。另外,可访问的外部空间分为4段,每段64KB,存储区域的最高64KB则留作内部寄存器区域。存储器的地址映射如图2.12所示。
图2.12 物理存储映射图
一般情况下在复位之后Flash/EE存储器被镜像到地址0x00000000,通过清空REMAP寄存器的第0位,可以重新把SRAM映射到0x00000000,该寄存器的详细信息将在本章后续介绍。
ADuC7060/61微控制器内部也集成有Flash/EE和SRAM存储器,不同的是其存储空间分别只有32KB和4KB,除此以外,在结构和功能上与ADuC702x系列完全相同。
2.4 非易失性Flash/EE存储器
2.4.1 Flash/EE存储器结构及访问
ADuC70xx系列微控制器的Flash/EE存储器最多可有64KB的存储空间,全部都为32K×16位存储格式。其中31K×16位(即前62KB)提供给用户存储程序代码或非易失性数据。而另外的1K×16位(即后2KB)保留为芯片内核,用于存放固件,不能被用户使用。这些固件包括支持在线串行下载的嵌入式固件,还包括上电配置程序,用于将出厂标定参数下载到不同的标准外设,如ADC、温度传感器、间隙参考源等。ARM内核数据和程序保存在同一空间,由于ADuC70xx的存储空间支持数据位数为16位,而ARM内核为32位指令系统,因此一般读取一条指令需要连续访问两次存储器。在执行Flash/EE存储器指令时一般建议使用Thumb模式,这样可以提高访问速度。在Thumb模式下,访问Flash/EE的最高速度为41.78MHz,而在ARM模式下为20.89MHz。
同EEPROM类似,Flash存储器也支持系统字节编程,只是它在写新的数据之前需要先擦除。擦除是按页进行的,每一页的大小为512个字节,因而Flash存储器也被称作Flash/EE存储器。Flash/EE存储器是比较理想的存储器件,它具有非易失性、可在线编程
....
本站仅展示书籍部分内容
如有任何咨询
请加微信10090337咨询