0837嵌入式体系结构课程总结Word格式文档下载.docx
《0837嵌入式体系结构课程总结Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《0837嵌入式体系结构课程总结Word格式文档下载.docx(16页珍藏版)》请在冰点文库上搜索。
一个ARM芯片中通常有很多功能部件,有一些部件是全局性的,它们状态的改变可能引起整个系统运行状态的改变,这些部件我们统一称之为系统控制模块。
在这些系统控制模块中,有些部件需要外部引脚的配合,如晶体振荡器、外部复位输入。
模块包括:
晶体振荡器,复位,存储器映射控制,锁相环(PLL),VPB分频器,功率控制,唤醒定时器.
部件名称
功能简介
晶体振荡器
通过外接晶振或时钟源为系统提供时钟信号
复位
复位使ARM内核与外设部件进入一个确定的初始状态
存储器映射控制
控制异常向量表的重新设方式
锁相环(PLL)
将晶体振荡器输入的时钟倍频到一个合适的时钟频率
VPB分频器
将内核时钟与外设时钟分开的部件
功率控制
使处理器空闲或者掉电,还能关闭指定的功能部件,以降低芯片功耗
唤醒定时器
系统上电或掉电唤醒后,保证晶体振荡器能输出稳定的时钟信号
在系统控制模块中,有些部件需要在进行寄存器配置后才能正常工作,如存储器映射控制、锁相环、功率控制、VPB分频器。
名称
描述
访问
MEMMAP
R/W
锁相环
PLLCON
PLL控制寄存器
PLLCFG
PLL配置寄存器
PLLSTAT
PLL状态寄存器
RO
PLLFEED
PLL馈送寄存器
WO
PCON
功率控制寄存器
PCONP
外设功率控制
VPBDIV
VPB分频器控制
ARM微处理器在上电或复位后首先运行BootBlock中的一段代码,这段代码称为“引导代码”,由芯片厂商固化在芯片中。
此后,在正式运行用户main函数之前,还需要运行一段“启动代码”,由用户添加。
GPIO
LPC2114/2124微控制器具有两个端口——P0和P1,可以作为GPIO使用的引脚数为46个。
LPC2210/2212/2214微控制器还包含另外两个端口——P2和P3,这个两个端口与外部存储器总线复用,当它们全部作为GPIO使用时,GPIO引脚数多达112个。
▪引脚设置为输出方式时,输出状态由IOxSET和IOxCLR中最后操作的寄存器决定;
▪大部分GPIO输出为推挽方式(个别引脚为开漏输出),正常拉出/灌入电流均为4mA(短时间极限值40mA);
▪复位后默认所有GPIO为输入模式。
设置P0.0输出高电平
读取P0.0引脚状态
输出多位数据至IO口
向量中断及外部中断输入
ARM7TDMI内核具有两个中断输入,分别为IRQ中断和FIQ中断。
向量中断控制器(VIC)负责管理芯片的中断源,最多可以管理32个中断输入请求。
•程序状态寄存器CPSR与VIC的关系
ARM内核通过CPSR来监视和控制内部的操作,CPSR中的“I”位和“F”位分别用来控制IRQ模式和FIQ模式的使能。
Ø
当I=1时,禁止IRQ中断
当I=0时,使能IRQ中断
•中断分类
中断输入请求可以在VIC中被设置为以下三类:
▪FIQ中断:
具有最高优先级;
▪向量IRQ中断:
具有中等优先级;
▪非向量IRQ中断:
具有最低优先级;
FIQ中断硬件处理流程:
IRQ中断相应流程:
寄存器描述-控制寄存器
控制寄存器功能描述
寄存器描述-参数设置寄存器
IRQ中断相关寄存器
产生中断后的服务程序地址
寄存器描述-状态寄存器
注意:
读取VICRawIntr寄存器将得到所有32个中断请求和软件中断的状态,它不管中断是否使能或分类。
保护使能寄存器
FIQ中断处理
IRQ中断处理
IRQ中断的设计实例
将定时器0中断分配为向量IRQ通道0,中断服务程序地址设置为Timer0_ISR。
代码:
VICIntSelect=0x00000000;
VICVectAddr0=(int)Timer0_ISR;
VICVectCntl0=(0x20|4);
VICIntEnable=(1<
<
4);
使用VIC的注意要点
如果在片内RAM中调试程序,并使用了中断,那么必须将存储器映射控制设置为内部RAM模式;
将多个中断源设置为FIQ,将增加中断响应延时,所以建议FIQ中断只有一个中断源;
ADS1.2规定在定义中断服务函数时必须加入关键字“__irq”,保证函数返回时会切换处理器模式;
在退出中断服务程序时要清零相应外设的中断标志,以及VICVectAddr寄存器,为响应下次中断作好准备。
LPC2000系列ARM具有4路外部中断,可以设置为2种类型:
•边沿触发:
上升沿触发
下降沿触发
•电平触发:
高电平触发
低电平触发
1.边沿触发中断.
下降沿触发类型中断的请求和清除时序。
2.电平触发中断.
低电平触发类型中断的请求和清除时序。
外部中断源
LPC2000系列微控制器几乎所有的外设部件都可以产生中断。
其中外部中断含有4个独立的中断输入。
寄存器
中断信号波形与设置方式
外部中断与VIC的关系
外部中断0位于VIC通道14,中断选择寄存器VICIntSelect[14]用来选择通道14的中断类型:
当VICIntSelect[14]=0时,通道14分配为IRQ中断
当VICIntSelect[14]=1时,通道14分配为FIQ中断
外部中断应用示例
//初始化EINT0为电平中断
PINSEL1=(PINSEL1&
0xFFFFFFFC)|0x01;
EXTMODE=EXTMODE&
0x0E;
//初始化EINT0为下降沿中断
EXTMODE=EXTMODE|0x01;
EXTPOLAR=EXTPOLAR&
//清除所有外部中断标志
EXTINT=0x0F;
定时器
特性如下:
▪32位可编程预分频器;
▪4路捕获通道;
▪4个匹配寄存器;
▪4个匹配输出通道。
定时器主要功能:
1.预分屏器.
2.匹配功能
3.捕获功能
分频器寄存器描述
匹配功能
捕获功能
控制寄存器-TCR
定时器控制寄存器TCR用于控制定时器计数器的操作。
中断标志寄存器-IR
定时器中断——定时器与VIC的关系
TIMER0、TIMER1分别位于VIC的通道4和通道5。
中断使能寄存器VICIntEnable的Bit4和Bit5分别用来控制通道4和通道5的使能。
匹配中断
LPC2000系列ARM定时器计数溢出时不会产生中断,但是匹配时可以产生中断。
每个定时器都具有4个匹配寄存器(MR0~MR3),可以用来存放匹配值。
当计数值=匹配值时,产生匹配中断。
捕获中断
当定时器的捕获引脚CAP上出现特定的捕获信号时,可以产生中断。
使用定时器的注意要点
▪定时计数器(TC)本身不能产生中断,只有与匹配寄存器发生匹配后才能引起中断事件;
▪在定时器匹配发生后,可以不停止定时器工作,而动态修改匹配寄存器的值;
▪定时器使用匹配功能的同时,还可以使用捕获功能,而不必分时使用;
▪定时器计数时钟频率=Fpclk/(PR+1)
定时器操作示例-定时器0初始化
VoidTime0Init(void)
{
T0TC=0;
//定时器设置为0
T0PR=0;
//设置预分频值
T0MCR=0x03;
//设置匹配模式,复位并中断
T0MR0=Fpclk/10;
//设置匹配值,0.1S
T0TCR=0x01;
//启动定时器0
}
定时器操作示例-匹配输出
VoidMATOut(void)
PINSEL0=0x00000800;
//设置引脚连接模块
T0MCR=0x02;
//设置匹配后复位TC
T0EMR=0xC0;
//设置匹配后MAT0.1输出翻转
T0MR1=5000;
//输出频率周期控制
SPI
引脚描述
•SPI数据传输
•时钟极性控制位——CPOL
该位决定了SPI总线空闲时,SCK时钟线的电平状态。
CPOL=0,当SPI总线空闲时,SCK时钟线为低电平;
CPOL=1,当SPI总线空闲时,SCK时钟线为高电平。
•时钟相位控制位——CPHA
该位决定SPI总线上数据的采样位置。
CPHA=0:
SPI总线在时钟线的第1个跳变沿处采样数据;
CPHA=1:
SPI总线在时钟线的第2个跳变沿处采样数据。
SPI接口工作模式
寄存器描述
•SPI寄存器描述——SPI控制寄存器
SPCR寄存器包含一些可编程位来控制SPI功能模块的功能,该寄存器必须在数据传输之前进行设定。
CPHA:
时钟相位控制。
该位决定SPI传输时数据和时钟的关系,并控制从机传输的起始和结束。
当该位为:
1:
时钟前沿数据输出,后沿数据采样;
0:
时钟前沿数据采样,后沿数据输出;
CPOL:
时钟极性控制。
1:
SCK为低电平有效;
0:
SCK为高电平有效;
LSBF:
字节移动方向控制。
每字节数据从低位(LSB)开始传输;
每字节数据从高位(MSB)开始传输;
SPIE:
SPI中断使能。
每次SPIF或MODF置位时都会产生硬件中断;
SPI中断被禁止;
SPI应用示例——作为主机
#defineMSTR(1<
5)
#defineCPOL(1<
4)
#defineCPHA(1<
3)
#defineLSBF(1<
6)
#defineSPI_MODE(MSTR|CPOL)
voidMSpiIni(uint8fdiv)
if(fdiv<
8)
fdiv=8;
S0PCCR=fdiv&
0xFE;
S0PCR=SPI_MODE;