1、第第5 5章章 ARMARM嵌入式处理器及其应用编程嵌入式处理器及其应用编程5.1 典型典型ARM嵌入式处理器结构概述嵌入式处理器结构概述5.2 ARM处理器芯片的应用选择处理器芯片的应用选择5.3 ARM处理器中的控制寄存器处理器中的控制寄存器5.4 S3C44B0X内部存储控制类内部存储控制类5.5 S3C44B0X内部输入输出类内部输入输出类5.6 S3C44B0X内部中断控制可编程组件及应用编程内部中断控制可编程组件及应用编程5.7 S3C44B0X内部计数内部计数/定时类可编程组件及应用编程定时类可编程组件及应用编程5.8 S3C44B0X内部通信控制类可编程组件及应用编程内部通信控
2、制类可编程组件及应用编程5.9 S3C44B0X内部总线接口类可编程组件及应用编程内部总线接口类可编程组件及应用编程5.10 S3C44B0X内部内部ADC可编程组件及应用编程可编程组件及应用编程5.11 S3C44B0X嵌入式微处理器外部接口电路设计嵌入式微处理器外部接口电路设计 5.1 典型典型ARM嵌入式处理器结构概述嵌入式处理器结构概述5.1.1 S3C44B0X嵌入式微处理器的体系结构嵌入式微处理器的体系结构 S3C44B0X微处理器的内部体系结构如图5.1所示。它采用ARM7TDMI核,为32位嵌入式微处理器。S3C44B0X内部集成了8KB的Cache(指令和数据共用)、写缓冲器
3、、存储器控制器、LCD控制器、中断控制器、总线仲裁器、电源管理单元、时钟发生器、通用并行口GPIO、异步通信串行口UART、I2C总线控制器、I2S总线控制器、同步串行口SIO、5路16位PWM定时器、16位看门狗定时器、8路10位A/D转换器、实时钟电路以及JTAG接口。图5.1 S3C44B0X微处理器内部体系结构S3C44B0X采用两种封装形式,一种是160个引脚的LQFP封装,其引脚分布如图5.2(a)所示;另一种是160个引脚的FBGA封装,如图5.2(b)所示。它的160个引脚包括总线控制信号、DRAM/SDRAM/SRAM信号、LCD控制信号、中断控制信号、PWM控制信号、DMA
4、控制信号、UART控制信号、I2C总线控制信号、I2S总线控制信号、通用串行口SIO控制信号、ADC控制信号、GPIO控制信号、时钟和复位信号、JTAG测试逻辑控制信号以及电源等信号引脚。S3C44B0X的许多引脚是分时复用的,以节省引脚数。S3C44B0X中各引脚信号的含义见表5.1。图5.2 S3C44B0X的外部引脚 表 5.1 S3C44B0X 微处理器外部引脚定义 信号 类型 信号名称 含 义 状 态 说 明 ADDR23ADDR0 地址总线 输出 24 条地址线接存储器 DATA31DATA0 数据总线 双向三态 可编程为 8/16/32 位宽度 nGCS7nGCS0 芯片选择 输
5、出 每个选择信号选择 8 个 8 位存储器 Bank之一,每当访问相应地址的存储区域时,相应 nGCS 变低电平 nOE 读控制信号 输出 读允许,指示当前的总线周期为读周期,低电平有效 nWE 写控制信号 输出 写允许,指示当前的总线周期为写周期,低电平有效 nWBE3nWBE0 写字节信号 输出 写字节允许,低电平有效 nWAIT 等待 输入 低电平有效,表示请求总线延时 nXBREQ 总线请求 输入 低 电平 表示 外部 总线 控 制器 请求 总线 操作 总 线 控 制 类 nXBACK 总线应答 输出 低 电平 表示 外部 总线 控 制器 的请 求被 响应 信号 类型 信号名称 含 义
6、 状 态 说 明 ADDR23ADDR0 地址总线 输出 24 条地址线接存储器 DATA31DATA0 数据总线 双向三态 可编程为8/16/32 位宽度 nGCS7nGCS0 芯片选择 输出 每个选择信号选择 8 个 8 位存储器 Bank之一,每当访问相应地址的存储区域时,相应 nGCS 变低电平 nOE 读控制信号 输出 读允许,指示当前的总线周期为读周期,低电平有效 nWE 写控制信号 输出 写允许,指示当前的总线周期为写周期,低电平有效 nWBE3nWBE0 写字节信号 输出 写字节允许,低电平有效 nWAIT 等待 输入 低电平有效,表示请求总线延时 nXBREQ 总线请求 输入
7、 低 电平 表示 外部 总线 控 制器 请求 总线 操作 nXBACK 总线应答 输出 低 电平 表示 外部 总线 控 制器 的请 求被 响应 OM1,OM0 总线宽度控制 输入 OM1、OM0 的编码决定 nGCS,从而决定总线的宽度,00=8位;01=16 位;10=32 位;11=测试模式 总 线 控 制 类 ENDIAN 数据格式控制 输入 ENDIAN=0 表示小端格式;ENDIAN=1表示大端格式 SCLK SDRAM 时钟 输出 供 SDRAM 储存器的时钟 SCKE SDRAM 时钟允许 输出 允许 SDRAM 时钟输出 nRAS 行选通 输出 DRAM 行地址选通控制信号,低
8、电平 有效 nCAS 列选通 输出 DRAM 列地址选通控制信号,低电平有效 nSRAS SDRAM 行选通 输出 SDRAM 储存器行地址选通控制信号,低电平有效 nSCAS SDRAM 列选通 输出 SDRAM 储存器列地址选通控制信号,低电平有效 nSCS SDRAM 芯片选择 输出 选择 SDRAM 芯片的控制信号,低电平 有效 DQM3DQM0 SDRAM 数据屏蔽 输出 屏蔽 SDRAM 数据信号,低电平有效 存 储 器 控 制 类 nBE3nBE0 高低字节使能 输出 使用 16 位 SRAM 时,高字节允许 信号 类型 信号名称 含 义 状 态 说 明 VCLK LCD 时钟
9、输出 LCD 电视中,数据在 VCLK 上升沿发送,下降沿采样 VD7VD0 LCD 数据线 输出 驱动 4 位双扫描 LCD 时,VD3VD0 为上部显示区域,VD7VD4 为下部显 示 区域 VFRAME LCD 场信号 输出 指示一帧的开始,在开始的第一行有效 VM 极性变换 输出 变换 LCD 行场扫描极性 LCD 控 制 器 VLINE LCD 行信号 输出 在一行数据左移进 LCD 驱动器后有效 TCLK 外时钟 输入 外部时钟信号的输入端 定时器 TOUT4TOUT0 定时器输出 输出 定时器输出信号,包括 PWM、内部定 时器 中断 EINT7EINT0 中断请求 输入 外部中
10、断请求输入,通过 EXTINT 寄存器可设置成高/低电平(上/下沿)触发 nXDREQ1,nXDREQ0 DMA 请求 输入 外部向处理器 DMA 请求信号 DMA 控制器 nXDACk1,nXDACk0 DMA 应答 输出 处理器 DMA 向外部应答信号 RXD1,RXD0 UART接收 输入 串行口的数据输入端 TXD1,TXD0 UART发送 输出 串行口的数据输出端 nRTS1,nRTS0 请求发送 输出 串 行口 向外 部发 出的 请 求发 送的 输出 信号 UART 串行口 nCTS1,nCTS0 清除发送 输入 外部向串行口发出的清除发送的输入信号 IICSCL I2C 时钟 输
11、入/输出 I2C 时钟的信号 I2C 总线 IICSDA I2C 数据 输入/输出 I2C 数据的信号 IISCLK I2S 时钟 输入/输出 I2S 串行总线的时钟信号 IISDI I2S 数据输入 输入 I2S 串行总线的数据输入信号 IISDO I2S 数据输出 输出 I2S 串行总线的数据输出信号 IISLRCK I2S 通道时钟 输入/输出 I2S 串行总线的通道时钟信号 I2S 总线 CODECLK CODEC 系统时钟 输出 CODEC 系统时钟信号 SIOCK SIO 时钟 输入/输出 SIO 时钟信号 SIORXD SIO 接收 输入 SIO 接收数据信号 SIOTXD SI
12、O 发送 输出 SIO 发送数据信号 SIO 接 口 SIORDY SIO 装备好 输入/输出 当 SIO 的 DMA 完成 SIO 操作时的握手 信号 信号 类型 信号名称 含 义 状 态 说 明 AIN7AIN0 ADC 输入 模拟输入 8 路 A/D转换器的输入信号 AREFT ADC 参考电压+模拟输入 A/D 转换器的参考电压(+)输入信号 AREFB ADC 参考电压-模拟输入 A/D 转换器的参考电压(-)输入信号 A/D 转 换 器 AVCOM ADC 公共参考电压 模拟输入 A/D 转换器的公共参考电压输入信号 I/O P70P0 通用 I/O 输入/输出 有些口只能作为输出
13、 复位 nRESET 复位 低电平有效,至少保持 4 个 MCLK 时钟周期的低电平 OM3,OM2 时钟模式 输入 编码决定时钟的模式为锁相环(PLL),00表示系统由锁相环 PLL控制,01 表示系统由32 kHz TRC 时钟加 PLL 控制;10、11 表示芯片测试模式 EXTCLK 外部时钟控制 输入 低电平表示通过 OM3、OM2 选择外部时钟源,不用接高电平 XTAL0 系统时钟入 模拟输入 系统时钟内部振荡线路的输入引脚 EXTAL0 系统时钟出 模拟输出 系统时钟内部振荡线路的输出引脚,不用时接高电平 PLLCAP 滤波电容入 模拟输出 系统锁相环环路滤波电容的接入引脚 XT
14、AL1 RTC 时钟入 模拟输入 RTC 始终内部振荡线路的输入引脚 EXTAL1 RTC 时钟出 模拟输出 RTC 始终内部振荡线路的输出引脚 时 钟 部 分 引 脚 CLKout 时钟输出 输出 主时钟输出或锁相环时钟输出 TCK TAP 时钟 输入 为 JTAG 提供时钟源 nTRST TAP 复位 输入 TAP 控制器复位信号,若使用调试器,则必须接 10 k 以上的电阻 TMS TAP 模式选择 输入 TAP 控制器复位信号,若使用调试器,必须接 10 k 上拉电阻 TDI TAP 数据输入 输入 TAP 控制器的数据端,是测试指令和数据的串行输入端,必须接 10 k 的上拉电阻 J
15、TAG 接口 TDO TAP 数据输出 输出 TAP 控制器的数据端,是测试指令和数据的串行输出端 VDD 内核电源 电源 S3C44B0X 内核逻辑电源,2.5 V VSS 内核地 电源 S3C44B0X 内核逻辑地 VDDIO I/O 电源 电源 S3C44B0X 的 I/O端口电源,3.3 V VSSIO I/O 地 电源 S3C44B0X 的 I/O端口地 RTCVDD 实时钟电源 电源 RTC 时钟电源(2.5 V 或 3 V)VDDADC ADC 电源 电源 S3C44B0X 的 ADC 电源,2.5 V 电 源 引 脚 AVSSADC ADC 地 电源 S3C44B0X 的 AD
16、C 地 5.1.2 S3C2410X/S3C2440X嵌入式微处理器的体系结构嵌入式微处理器的体系结构S3C2410X微处理器的内部体系结构如图5.3所示。S3C2410X/S3C2440X采用ARM920T核,而ARM920T又集成了ARM9TDMI,所以是中高档32位嵌入式微处理器。由于采用ARM920T体系结构,因此内部具有分离的16KB大小的指令缓存和数据缓存。同时,它采用哈佛体系结构将程序存储器与数据存储器分开,加入了存储器部件(MMU),采用5级指令流水线。它使用ARM公司特有的AMBA总线,对于高速设备采用AHB总线,而对于低速内部外设则采用APB总线。AHB通过桥接器转换成AP
17、B。图5.3 S3C2410X微处理器内部体系结构 S3C2410X/S3C2440X内部集成了许多外设接口,除了S3C44B0X所有内部外设,还增加了许多工作新外设接口,主要的内部外设包括与AHB总线相连的高速接口,如LCD接口、USB接口、中断控制接口、电源管理接口、存储器接口、Boot Loader接口,与APB总线相连的低速接口,如3个通用异步通信接口(UART0、UART1、UART2)、SDI/MMC接口、看门狗定时器、总线控制器、2个SPI接口、4个PWM定时器、实时钟、通用并行端口、I2C总线接口及I2S总线接口。S3C2410X/S3C2440X采用272脚的FBGA封装,其
18、外部引脚示意如图5.4所示。详细引脚定义可参见S3C2410X及S3C2440X用户手册。图5.4 S3C2410X/S3C2440X微处理器外部引脚示意 5.1.3 LPC2000嵌入式微控制器的体系结构嵌入式微控制器的体系结构LPC2000系列微控制器的内部结构如图5.5所示,它们均采用ARM7TDMI-S内核,外围配制了若干实用组件。ARM7TDMI-S配制为小端模式。AHB外设分配了2 MB的地址范围,它位于4 GB ARM寻址空间的最顶端,每个AHB外设都分配了16KB的地址空间。LPC2000系列微控制器的外设功能(除中断控制器)都连接到VPB总线(VLSI外设总线),AHB到VP
19、B的桥将VPB总线与AHB总线相接。VPB外设也分配了2 MB的地址范围,从3.5 GB地址点开始,每个VPB外设都分配了16KB的地址空间。图5.5 LPC2000系列微控制器的内部结构 内部存储器包括无等待SRAM和Flash(型号不同时,容量大小不一样,详见表3.1)。系统功能包括:维持芯片工作的一些基本功能,如系统时钟、复位等;向量中断控制器(VIC)可以减少中断的影响时间,最多可以管理32个中断请求;外部存储控制器(EMC)支持4个Bank的外部SRAM或Flash,每个Bank最多16MB;I2C串行接口为标准的I2C总线接口,支持最高速度400 kb/s;具有两个完全独立的SPI
20、控制器,遵循SPI规范,可配置为SPI主机或从机;具有两个UART接口,均包含16字节的接收/发送FIFO,内置波特率发生器。其中,UARTI具有调制解调器接口功能;在LPC2119/2129/2290/2292/2294等芯片中包含CAN(Controller Area Network)总线接口。LPC2000系列大部分内部集成了FLASH和SRAM,通常应用于外部无需扩展的程序存储器和数据存储器。其所构成的嵌入式系统结构紧凑、体积小、价格低、可靠性高,而且大部分产品为工业级,被广泛应用于工业控制领域。5.1.4 AT91FR40162嵌入式微控制器的体系结构嵌入式微控制器的体系结构 图5.
21、6 AT91FR40162微控制器结构框图 AT91R40008体系结构包括两条主要总线,即先进的系统总线(ASB)和先进的外围总线(APB)。ASB被设计为最佳性能,由存储控制器控制。ARM7TDMI通过ASB与片内32位存储器、外部总线接口EBI和AMBA桥进行接口。AMBA桥驱动APB,APB被设计用于访问片内外围,并且进行了低功耗优化。AT91FR40162将ARM7TDMI处理器的ICE端口接到一些专用的引脚上,从而为目标调试提供了完整、低价且易用的调试解决方案。AT91FR40162除了采用ARM7TDMI处理器核外,其内部还集成了256 KB的片内SRAM和1024 K字(Wor
22、d)的16位Flash存储器,还有完全可编程的外部总线接口(EBI)、8个优先级且可以独立屏蔽的向量中断控制器、32个可编程的I/O接口线、3通道的16位定时器/计数器、2个通用同步/异步收发器(USART)及可编程的看门狗定时器,能实现完全静态的操作,具有先进的省电特性。AT91FR40612集成了多个内部外设,它们被分成系统外设和用户外设两类。所有的片内外设都可以通过AMBA桥接受32位访问。外围存储器由控制寄存器、模式寄存器、数据寄存器、状态寄存器和使能/禁止/状态寄存器组成。外围数据控制器PDC在片内USART和片内或片外的存储器之间传输数据,并且无须处理器的介入。最重要的一点就是,P
23、DC消除了数据传输中断的额外开销,在不需要重设编程起始地址的情况下可以连续传输高达64KB的数据。这样不仅增加了微控制器的性能,而且降低了功耗。外部总线接口(EBI)通过一条8位或16位数据总线控制外部存储器或外部设备,它通 过APB被编程。每一条芯片选择口线有它自己的编程寄存器。5.1.5 XScale嵌入式微处理器嵌入式微处理器PXA250的体系结构的体系结构Intel XScale PXA250嵌入式微处理器的结构如图5.7所示。PXA250的主要特点有高性能、低功耗、I/O扩展、外围控制模块丰富及时钟控制多样(有5种时钟源)等。其中高性能主要指PXA250采用XScale处理器核、采用
24、7级超级指令流水线、支持多媒体处理技术等。PXA250的外围控制模块主要包括16通道可配置DMA控制器、LCD控制器、920 kb/s蓝牙(Bluetooth)接口、串行端口(IrDA、I2C、I2S、AC97、3个UARTS、SPI、SSP)及USB接口等。图5.7 PXA250微处理器结构框图 Intel XScale内核采用带有一个增强型存储器管道的超级流水线RISC处理器架构的体系结构。这款新型、高性能、低功耗的微构架兼容ARMv5TE ISA指令集(不支持浮点指令集)。超级流水线结构由整型管道、存储器管道和MAC管道构成。整型管道包括7级流水线结构,即取指令1(分支目标缓冲器)取指令
25、2译码寄存/移位ALU实现状态执行回复;存储器管道除包括整型管道的前5级外,后接3个高速缓存,即数据缓存1、数据缓存2和数据回复缓存,为8级流水线结构;MAC管道是69级的流水线结构,包括整型管道的前4级和4级MAC段,以及一个数据回复缓存,其中MAC2MAC4的选通由数据决定。流水线结构级数越多,越能提高指令的执行速度,使用分支目标缓冲器的目的在于成功地预知分支指令的结果。128个入口的分支目标缓冲器的每个入口都包含了分支指令的地址、与分支指令相联系的目标地址以及该分支的执行情况,它由协处理器15使能。分支目标缓冲器的使用旨在避免超级流水线结构中的分支延迟。PXA250 CPU的MM(IMM
26、U和DMMU)均提供了一个32项的转换旁路缓存器(ITLB和DTLB),它们的每一项均可映射存储器中的段、大页和小页。为了保证内核周期存取指令和数据,PXA250包含了一个32KB的指令缓存和数据缓存。另外,为了避免数据缓存内数据流存取的频繁变化,还提供了一个2 KB的微小数据缓存。指令和数据缓存都是具有32个入口和32路相连的缓存,每路均包含一个标志地址、32字节的高速缓存队列和一个有效位,并且采用循环方式进行刷新存储。微小数据续存是一个具有32个入口和两路相连的缓存,同样采用循环方式进行刷新存储。PXA250内核提供了具有四个入口的全缓冲和挂起缓冲,用于提升内核性能,与数据缓存和小数据缓存
27、协同工作。此外还有一个8入口的写缓冲,每个入口可保存16字节,它从内核、数据缓存或微小数据缓存中得到数据,在系统总线选通前用于暂存数据。5.1.6 STR710F系列嵌入式处理器的体系结构系列嵌入式处理器的体系结构STR710F系列嵌入式处理器内部集成了ARM7TMDI内核,其内部体系结构如图5.8所示。1存储器存储器STR710F系列嵌入式处理器包括272KB的Flash以及64 KB的SRAM,并配有外部存储器接口(EMI),可以外接大容量外部程序或数据存储器。其内部的SRAM可通过外接备用电池来长期保存信息,且而消耗的功率极小,可用于手持设备。2通信接口通信接口STR710F系列嵌入式处
28、理器内置的通信接口十分丰富,是至今为止通信接口最全的系列嵌入式处理器,包括两个I2C总线接口(一个与SPI复用)、四个UART异步通信接口、两个带缓冲功能的同步串行接口(BSPI0、BSPI1)、一个CAN2.0通信接口、一个USB2.0接口以及一个高级数据链路控制(HDLC)同步通信接口。3时钟与定时器接口时钟与定时器接口STR710F系列嵌入式处理器的RTC模块(实时钟)具有日历功能及后备振荡器;此外还有五个定时器,包括一个16位WDT及四个16位定时器。4多个通用多个通用I/OSTR710F系列嵌入式处理器具有30/32/48个多功能双向I/O,其中有14个具有中断功能,在许多应用场合具
29、有很大应用优势。54通道通道12位位ADC与众不同的是STR710F系列嵌入式处理器具有4通道的12位ADC,解决了多数嵌入式处理器因为只有10位ADC而不能满足测量精度要求的问题。6锁相环分频器锁相环分频器STR710F系列嵌入式处理器与其他嵌入式处理器一样具有锁相环分频器,用于给ARM7TMDI内核提供工作频率及给JTAG调试接口提供调试手段。图5.8 STR710F系列内部结构 5.2 ARM处理器芯片的应用选择处理器芯片的应用选择 5.2.1 ARM处理器芯片的选择原则处理器芯片的选择原则1ARM内核内核任何一款基于ARM技术的微处理器都是以某个ARM内核为基础设计的,即ARM内核的基
30、本功能决定了嵌入式系统最终实现目标的性能。因此,ARM处理器芯片的选择的首要任务是考虑选择基于什么架构的ARM内核。根据前面介绍的ARM内核的基本特性,就可以有的放矢地选择ARM内核的型号。单从嵌入式操作系统角度考虑,如果设计的目的是使用需要MMU支持的操作系统,如WindowsCE、Linux等,那么就必须选择内部带有MMU的ARM内核,如ARM720T、ARM920T、ARM922T、ARM946T及StrongARM等;而对于ARM7TDMI等没有MMU的ARM处理器,则可以使用不需要MMU支持的操作系统,如CLinux、C/OS2等。从存储体系结构角度考虑,如果要高效工作,那么最好选用
31、基于哈佛体系结构的ARM内核,因为这种架构的指令总线和数据总线是分开的,即程序存储器与数据存储器是相互独立的,这样,取指令的同时可以存储或加载数据;如果对工作效率的要求比较低,那么采用冯诺依曼结构的ARM内核也是可以的。实质上,ARM内核的选择还需要考虑许多性能要求,如对指令流水线的要求、是否支持Thumb指令集的要求、是否支持AMBA的要求及最高时钟频率的限制要求等。2系统时钟频率系统时钟频率系统时钟频率决定了ARM芯片的处理速度,时钟频率越高,处理速度越快。通常,ARM的速度和ARM内核之间有下列约定俗成的关系。(1)基于ARM7系列内核的ARM芯片的处理速度为处理速度(MIPS)=时钟频
32、率(MHz)0.9如50MHz的S3C44B0X(基于ARM7)芯片,其处理速度为500.9=45(MIPS),其中MIPS表示每秒百万条指令。(2)基于ARM9系列内核的ARM芯片的处理速度为 处理速度(MIPS)=时钟频率(MHz)1.1 如100 MHz的S3C2410X(基于ARM9)芯片,其处理速度为1001.1=110(MIPS)。常用的ARM7系列处理器芯片的主时钟为20-133MHz,其处理速度为18110.7MIPS;ARM9系列处理器芯片的主时钟为100233MHz,其处理速度为110256.3MIPS;而ARM10的主时钟最高可以达到700MHz,处理速度更快。3芯片内部
33、存储器的容量芯片内部存储器的容量大多数ARM微处理器芯片的内部存储器的容量都不太大,需要用户在设计系统时外扩存储器,但也有部分芯片具有相对较大的片内存储空间。(1)内部程序存储器容量。有些ARM芯片内部内置了一定容量的程序存储器。对于数据处理量不大、功能不复杂、要求不太高的工业控制领域的应用场合,内置程序存储器的ARM微处理器芯片非常适用。这类芯片以LPC2100及LPC2200系列为典型代表,如LPC2104内部集成了128KB的Flash存储器,LPC2124内部集成了256KB的Flash存储器 LPC2138和LPC2148内部集成了512KB的Flash存储器等。AT91FR4042
34、内部也集成了512KB的Flash存储器,而AT91F40162更是具有高达2MB的内部程序存储器。用户在设计时可考虑选用这种类型的ARM芯片,这样可省去外部程序存储器,以简化系统的设计。(2)内部数据存储器容量。有些ARM芯片内部没有配置SRAM,有些则配置了一定数量的SRAM作为内部数据存储器。没有配置SRAM的ARM芯片在构成嵌入式系统时必须扩展外部数据存储器;而配置了SRAM的ARM芯片在构成嵌入式系统时,如果容量满足要求,就不必外扩数据存储器,这样能降低成本,使系统更加小型化。具有内部数据存储器的ARM芯片以LPC2100系列及LPC2200系列为典型代表,如LPC2101/02/0
35、3/04/05/06内部分别具有大小为2KB/4KB/8KB/16KB/32KB/64KB的SRAM。AT91FR4042和AT91FR40162也具有256KB的SRAM。4片内外围电路片内外围电路除ARM微处理器内核以外,几乎所有的ARM芯片均根据各自不同的应用领域扩展了相关功能,并集成在芯片之中,如USB接口、IIS接口、LCD控制器、键盘接口、RTC、ADC、DAC、DSP协处理器等,称为片内外围电路。设计者应分析系统的需求,尽可能采用片内外围电路完成所需的功能,这样既可简化系统的设计,也可提高系统的可靠性。片内外围电路的选择可从以下几个方面考虑。(1)通用并行端口数量。某些芯片供应商
36、提供的说明书中提供的往往都是最大可能的通用并行端口(GPIO)数量,但这其中有许多引脚是和地址线、数据线、串行接口等引脚复用的。因此,在系统设计时必须计算实际可以使用的GPIO数量,然后选择那些至少能满足系统要求并留有一定余量引脚的ARM处理器芯片。(2)定时计数器。实际应用中的嵌入式系统需要若干定时或计数功能,所以必须考虑ARM微处理器芯片中定时器的个数。对定时器的要求是任何一个嵌入式系统必须考虑的问题。多数系统需要一个准确的时钟和日历,因此还要考虑ARM处理器是否集成了RTC模块(实时钟)。不同ARM芯片内置的实时钟的实现方式不同。如Cirrus Logic公司的EP7312的RTC只是一
37、个32位计数器,需要通过软件计算出年、月、日、时、分、秒;而 SAA7750和S3C44B0X、S3C2410、LPC2100/2200系列以及AT91FR系列等芯片的RTC模块直接提供年、月、日、时、分、秒格式。如果需要脉冲宽度调制以控制电机等对象,则还要考虑PWM定时器。(3)通信接口。嵌入式系统外部通常需要连接许多设备,因此要求内部具有相应的不同通信接口标准。I2C和SPI是常用的与外部连接的串行同步通信接口标准,多数ARM处理器具有这两种接口,便于与相应总线标准的器件相连以扩展系统功能。其中,UART是必需的串行异步通信接口标准,它用来构成多机系统或与其他系统通信,选择时,要考虑选择包
38、含几个UART的ARM处理器。有的系统要求远红外通信,就要考虑选择具有IrDA接口的ARM处理器芯片。STR系列ARM处理器的通信接口最丰富,有多达4个UART。许多ARM芯片内置有USB控制器,有些芯片甚至同时有USB Host和USB Slave控制器。如果使用USB进行数据传输,最好是选用内置有USB控制器的芯片,这样对将来电路的设计非常有利。对于工业控制场合,通常还要考虑是否具有CAN总线接口,因为CAN总线在工业控制领域是最重要的现场总线接口标准之一,便于实现联网。如LPC2119、LPC2129等内部均配置了双通道的CAN总线接口,2294具有四通道的CAN接口等。事实上,如果仅限
39、于工业控制领域,无论从哪个方面考虑,最为经济、实用、性价比最高的当属LPC系列以及STR系列ARM处理器,因为它们的设计思路就是针对工业控制领域的。如果设计音频应用产品,则I2S总线接口是必需的。(4)LCD液晶显示控制器。对于掌上电脑等需要人机界面的设备,选择ARM微处理器芯片时,应优先考虑具有LCD(Liquid Crystal Display)控制器的ARM芯片,因为这些系统需要LCD显示屏。有些 ARM芯片内置LCD控制器,有的甚至内置64K彩色TFT LCD控制器,如Samsung公司的S3C2410芯片等。(5)多处理器。对于需要特定处理功能的嵌入式系统,可根据其功能特征选用不同搭
40、配关系的多处理器ARM芯片。对于各种常见多处理器的简单归纳如下:ARM+DSP多处理器可以加强数学运算功能和多媒体处理功能;ARM+FPGA多处理器的结合可以提高系统硬件的在线升级能力;ARM+ARM多处理器的结合可以增强系统多任务处理能力和多媒体处理能力。(6)模拟/数字转换器。应用于工业控制或自动化领域的嵌入式系统,必然涉及模拟量的输入,因此要考虑内部具有模拟/数字转换器(ADC)的ARM微处理器芯片,选择时还要考虑ADC的通道数和分辨率,根据需求选择相关ARM芯片。5其他因素其他因素除以上需要考虑的内部因素外,在某些有特殊需要的场合,应选择符合这些特殊要求的ARM微处理器芯片,如工作环境
41、要求(尤其是温度范围,如工业级为-4085)、工作电压要求、功耗要求(特别是移动产品及手持设备等需要电池供电的产品)、体积要求及成本要求等。一般来说,应用于工业控制领域、要求高性能及高抗干扰能力时,应尽量考虑ST的STR系列处理器及Atmel的AT91系列处理器;如果应用于普通领域、对性能要求不是太高时,则应首先考虑LPC2000系列处理器;如果应用于手持设计、移动设备等领域,对工作环境要求不高,又需要处理器具有高性能时,则可考虑S3C44B0X处理器或S3C2410X等处理器。总之,在选择ARM微处理器芯片时,应综合考虑各个因素,选择最适合的ARM芯片。另外厂家的技术支持也是一个关键因素,如
42、果选择的开发器件能得到有力的支持,则可以说已经完成了一半的开发。5.2.2 ARM处理器芯片主要供应商处理器芯片主要供应商第1章中图1.4所示的仅仅是基于ARM技术的部分常用处理器及厂家,实际上目前可以提供ARM芯片的著名欧美半导体公司有英特尔、德州仪器、三星半导体、摩托罗拉、飞利浦半导体、意法半导体、亿恒半导体、科胜讯、ADI公司、安捷伦、高通公司、Atmel、Intersil、Alcatel、Altera、Cirrus Logic、Linkup、Parthus、LSI Logic、Micronas、Silicon Wave、Virata、Portalplayer inc、NetSilico
43、n等。5.2.3 ARM处理器芯片的选择实例处理器芯片的选择实例下面给出实际应用中在不同应用领域情况下经常遇到的ARM芯片的选择实例,以加深对ARM芯片选择要素的理解,提高选择技能,为系统设计打好基础。【例5.1】某自来水集中远传抄表系统中的集中器具有远程通信功能,其主要技术参数和功能要求如下:(1)集中器采用无线通信方式与下位机采集器构成多机系统,连接2000个采集器(一个采集器连接多个水表)。(2)集中器与上位机采用无线、有线以及RS-232、红外或IC卡方式进行数据传输。(3)集中器可以移动、手持,也可以固定。(4)集中器有LCD显示和操作键盘。(5)集中器内部应该有实时钟。其他要求略。
44、解:由第(1)项要求可知,该集中器数据量较大,应采用无线方式通信,所以要有UART串行口。第(2)项说明与上位机的通信方式确定要有另一个UART串行口;IC卡方式要求内部要有I2C总线接口。第(3)项决定移动、手持,因此最好能使用嵌入式操作系统,可以确定采用三星的S3C系列处理器为宜。第(4)项要求有LCD控制器,这样使用液晶屏比较可靠。第(5)项要求内部要有实时钟。结论:综上所述,该处理器必须有2个或2个以上UART串行接口、I2C总线接口、LCD 控制器,且低功耗工作(提供带电方式的手持设备),因此基于ARM7TDMI的S3C44B0X就可满足系统的要求(当然还要配备外部相关电路)。如果选
45、择带MMU的S3C2410X就有些浪费,也没有必要。5.3 ARM处理器中的控制寄存器处理器中的控制寄存器 5.3.1 微处理器中控制寄存器的定义举例微处理器中控制寄存器的定义举例为了说明微处理器中控制寄存器的定义及使用,下面以S3C44B0X中的看门狗定时器WDT(Watch-Dog Timer)组件来进行说明。WDT组件用于监视程序的运行状态。当系统出现错误,如受到噪声干扰时,S3C44B0X的WDT组件能够继续操作控制器。WDT组件可用作一个普通的16位定时器去请求中断服务,并在每128个MCLK脉冲后产生一个长达128个MCLK时钟周期的复位信号。1WDT组件的组成组件的组成WDT组件
46、采用唯一的时钟源MCLK,由WDT组件内部的8位预分频器(由WTCON15WTCON8选择,最大值为255,即28-1)对MCLK进行首次分频,通过预分频器分频的值称为预分频值;然后按照16、32、64及128的系数通过多路选择开关(MUX)进行第二次分频,这次分频的值称为分频系数;在WDT组件的控制寄存器的作用下由WTCON4、WTCON3选择得到WDT组件计数所需时钟;通过16位内部递减计数器(WTCNT)减法计数,当没有加以干预计数到0时,产生中断输出并产生复位信号(RESET)来使系统复位。WDT组件的构成如图5.9所示。图5.9 WDT组件的构成 2WDT组件的特殊功能寄存器组件的特
47、殊功能寄存器WDT组件的特殊功能寄存器包括WDT组件控制寄存器(WTCON)、WDT组件数据寄存器(WTDAT)及WDT组件计数寄存器等(WTCNT),这些特殊功能寄存器均可读/写。(1)WDT组件控制寄存器WTCON。WTCON用于控制预分频系数、确定是否允许WDT、是否允许输出复位信号等,其地址为0 x01D30000。WTCON各位含义见表5.2,它的初始值为0 x8021。表 5.2 看门狗定时器控制寄存器(WTCON)各位含义 WTCON 位名称 位 描 述 初始值 PREVALUE 158 预分频值:0255(28-1)0 x80 保留 7,6 保留,正常操作必须是 00 00 W
48、DTEN 5 WDT 组件允许:0=禁止;1=允许 1 CLKSEL 4,3 时 钟 因 子 选择(分 频 系 数的 倒 数):00=1/6;01=1/32;10=1/64;11=1/128 00 INTEN 2 中断允许:0=禁止;1=允许 0 保留 1 保留,正常操作必须为 0 0 RESETEN 0 复位允许:0=禁止;1=允许 1 (2)WDT组件数据寄存器WTDAT。WTDAT用于存放计数值,其地址为0 x01D30004。WTDAT各位含义见表5.3,初始值为0 x8000。初始化时WTDAT的值不能自动装入计数寄存器中,只有当第1个计数周期结束后,它的值才自动重新装入WTCNT中
49、。表 5.3 看门狗定时器数据寄存器(WTDAT)各位含义 WTDAT位名称 位 描 述 初始值 计数器重载值 150 看门狗定时器重载的计数值 0X8000 (3)WDT组件计数寄存器WTCNT。WTCNT用于存放看门狗定时器在正常操作下的当前计数值,其地址为0 x01D30008,WTCNT各位含义见表5.4,初始值为0 x8000。在计数时采用减法计数,如果没有干预,则当计数到0时自动产生中断输出并产生复位信号(RESET)。表5.4 看门狗定时器计数寄存器(WTCNT)各位含义 WTCNT 位名称 位 描 述 计数值 150 看门狗定时器当前的计数值 0X8000 根据以上结构图及各特
50、殊功能寄存器的定义可知WDT组件的工作过程是:先根据设定的WTCON中的WTCON6、WTCON5的值选择对主频时钟MCLK的分频值和根据WTCON4 WTCON3的值选择计数所需的时钟,再根据设定的WDTAT的值通过16位内部递减计数器来进行减法计数,最后根据WTCNT的计数结果及输出控制信号WTCON2、WTCON0输出有关结果,当没有加以干预而计数到0时,产生中断输出并产生复位信号(RESET)来使系统复位。5.3.2 微处理器中控制寄存器的含义及作用微处理器中控制寄存器的含义及作用ARM处理器内部包括CPU和各种功能组件,那么ARM处理器的CPU怎样实现对各种功能组件的控制呢?其主要通