原创 ARM初学宝典

2010-6-9 12:36 1840 4 4 分类: MCU/ 嵌入式
一直都在听说ARM有多么好,有多神奇,有多难学。故学它时都兴奋加恐惧。呵呵,我刚好用ARM也有一段时间了。写点东西给ARM的初学者,希望能起到帮助作用。
1,记住:ARM很简单,就如从51转换到PIC或者转换到AVR一样简单。ARM的一个功能就如同掌握一个其他IC的使用一样,如时钟芯片,存在芯片,等等,甚至更简单。所以ARM的那些功能就可以忽略了。
2,和51系列相比,arm的寄存器不在存储空间之内,而且不分数据、程序空间。记住它的分配图.
3,ARM有多种处理器模式,每个模式都有自己的独立
   记住表格
   记住寄存器的使用
4,ARM的中断加强了,增加了软件中断,掌握swi
   可以把处理器模式及异常看成都是中断的扩张,从这些方面去理解也许快些。
   swi是嵌入式系统中任务切换的一个关键指令。故先有个心里准备。用法:swi 立即数。执行该执行时,程序会跑到swi中断处。立即数包含在该指令代码中,如果要根据立即数执行程序必须找出立即数。
5,ARM的启动程序及引导地址
   你编写的代码启动时:ARM都是从0x00000000开始运行。
   实际芯片运行时:ARM启动时,先根据硬件判断是否进入ISP还是经入程序运行。如进行程序运行,又会根据硬件判断会从0x00000000内部flash空间,还是外部flash空间0x80000000处运行(此时芯片会自动改变映射,也就是将0x80000000映射到0x00000000)
   在ADS软件上:ADS软件会把ARM Linker-Layout-Place at beginning of image-Objiect/symbol中指明开始代码的文件。
Section中指明代码开始的程序块。一般习惯Objiect/symbol中填写的时Startup.o。Section中填写Start。因为大家一般会将开始程序放在Startup文件中的Start段。
   ADS软件知道了我们程序的开始地方,还不知道这个程序的开始地方放到实际芯片的那个地址,所以我们还要为ADS软件指明开始地址,ARM Linker-Option-Image entry point中指明就行了。
   这样我们自己编写的代码、实际芯片、仿真器程序起始的关系就差不多明白了,然后记住下面中断向量表的代码。
6,地址重新映射
   这是个新概念,但记住它的功能是存储器映射用于改变从0x00000000开始的中断向量的映射。记住1:是0x00000000开始的中断向量的映射;记住2:为什么要这样做是为了不管你这段程序放在芯片实际的那个可以开始放的地方,ARM内部都可以从0x00000000开始运行。
7,汇编语言与c语言的混合编程
   如果你不会这个先最好了解一点概念
   汇编与c的参数传递是靠R0,R1这些寄存器传递的。
   函数的返回值也是靠R0。
   汇编中的标号与函数名相当
   c语言函数结束时实际上是汇编子程序的返回指令,故用汇编语言中用BL调用c的函数。否则就会返回出错。
8,汇编指令的记忆
   多了几种寻址方式
   先记住基本指令然后进行扩展,在记指令的执行条件,在搞懂特性符合的意义,如!,^等
我先是记住了以下几个指令:B,BX,BL,LDR,STR,LDM,STM,MOV,MRS,MSR,DCD,SWI,ADD,AND,CMP,MUL这些指令后,以后就边用边记。
9,ARM初始化要干些什么
   ARM初始化灵活方式,很多功能都可以方便设置。故开始初始化的事情也是蛮的多,主要做那些呢
   开始的中断向量表要做好吧。
   每个处理器模式都有自己的SP,你要指明每个SP的开始地址,进行堆栈的初始化。
   初始化外部总线控制
   设置存储器加速模块
   初始化时钟,初始化VIC等等,当然有很多你不必管,先拷贝
   在网上找资料就行了。中断向量表与初始化堆栈一般如下
;中断向量表
Reset
        LDR     PC, ResetAddr
        LDR     PC, UndefinedAddr
        LDR     PC, SWI_Addr
        LDR     PC, PrefetchAddr
        LDR     PC, DataAbortAddr
        DCD     0xb9205f80           ;ARM保留位,使向量表所有数据32位累加和为0,才能脱机运行。
        LDR     PC, [PC, #-0xff0]    ;
        LDR     PC, FIQ_Addr

ResetAddr           DCD     ResetInit
UndefinedAddr       DCD     Undefined
SWI_Addr            DCD     SoftwareInterrupt
PrefetchAddr        DCD     PrefetchAbort
DataAbortAddr       DCD     DataAbort
Nouse               DCD     0  ;
IRQ_Addr            DCD     0  ;
FIQ_Addr            DCD     FIQ_Handler


;未定义指令
Undefined
        B       Undefined


;软中断
SoftwareInterrupt
        B       SoftwareInterrupt


;取指令中止
PrefetchAbort
        B       PrefetchAbort


;取数据中止
DataAbort
        B       DataAbort


;快速中断
FIQ_Handler
        STMFD   SP!, {R0-R3, LR}
        BL      FIQ_Exception
        LDMFD   SP!, {R0-R3, LR}
        SUBS    PC,  LR,  #4


;初始化堆栈


InitStack   
        MOV     R0, LR


;设置管理模式堆栈
        MSR     CPSR_c, #0xd3
        LDR     SP, StackSvc
;设置中断模式堆栈
        MSR     CPSR_c, #0xd2
        LDR     SP, StackIrq
;设置快速中断模式堆栈
        MSR     CPSR_c, #0xd1
        LDR     SP, StackFiq
;设置中止模式堆栈
        MSR     CPSR_c, #0xd7
        LDR     SP, StackAbt
;设置未定义模式堆栈
        MSR     CPSR_c, #0xdb
        LDR     SP, StackUnd
;设置系统模式堆栈
        MSR     CPSR_c, #0xdf
        LDR     SP, =StackUsr


        MOV     PC, R0


StackSvc           DCD     SvcStackSpace + (SVC_STACK_LEGTH - 1)* 4  ;
StackIrq           DCD     IrqStackSpace + (IRQ_STACK_LEGTH - 1)* 4
StackFiq           DCD     FiqStackSpace + (FIQ_STACK_LEGTH - 1)* 4
StackAbt           DCD     AbtStackSpace + (ABT_STACK_LEGTH - 1)* 4
StackUnd           DCD     UndtStackSpace + (UND_STACK_LEGTH - 1)* 4


        AREA    MyStacks, DATA, NOINIT, ALIGN="2"
SvcStackSpace      SPACE   SVC_STACK_LEGTH * 4  ;管理模式堆栈空间
IrqStackSpace      SPACE   IRQ_STACK_LEGTH * 4  ;中断模式堆栈空间
FiqStackSpace      SPACE   FIQ_STACK_LEGTH * 4  ;快速中断模式堆栈空间
AbtStackSpace      SPACE   ABT_STACK_LEGTH * 4  ;中止义模式堆栈空间
UndtStackSpace     SPACE   UND_STACK_LEGTH * 4  ;未定义模式堆栈
10,边看书边实践,不断培养自己对ARM的兴趣,不断取得点成绩,别奢望一口吃成一个胖子,不断的给自己带来成功得快乐,我们都需要短期成绩的刺激才能长久的坚持。
11,做一个项目吧。否则永远也不能说你学会了。
12,本文给初学者指路用,背下本文,然后去看学习ARM的书籍,现在网上到处都有的ARM指令集,ARM的芯片资料,ARM应用系统开发详解,ADS-EasyJTAG,本篇宝典将是你学习ARM的加速器。


石英晶体振荡器是高精度和高稳定度的振荡器,被广泛应用于彩电、计算机、遥控器等各类振荡电路中,以及通信系统中用于频率发生器、为数据处理设备产生时钟信号和为特定系统提供基准信号。 </P>
<P 2em">一、石英晶体振荡器的基本原理 </P>
<P 2em">1、石英晶体振荡器的结构 </P>
<P 2em">石英晶体振荡器是利用石英晶体(二氧化硅的结晶体)的压电效应制成的一种谐振器件,它的基本构成大致是:从一块石英晶体上按一定方位角切下薄片(简称为晶片,它可以是正方形、矩形或圆形等),在它的两个对应面上涂敷银层作为电极,在每个电极上各焊一根引线接到管脚 上,再加上封装外壳就构成了石英晶体谐振器,简称为石英晶体或晶体、晶振。其产品一般用金属外壳封装,也有用玻璃壳、陶瓷或塑料封装的。下图是一种金属外壳封装的石英晶体结构示意图。 </P>
<P 2em">2、压电效应 </P>
<P 2em">若在石英晶体的两个电极上加一电场,晶片就会产生机械变形。反之,若在晶片的两侧施加机械压力,则在晶片相应的方向上将产生电场,这种物理现象称为压电效应。如果在晶片的两极上加交变电压,晶片就会产生机械振动,同时晶片的机械振动又会产生交变电场。在一般情况下,晶片机械振动的振幅和交变电场的振幅非常微小,但当外加交变电压的频率为某一特定值时,振幅明显加大,比其他频率下的振幅大得多,这种现象称为压电谐振,它与LC回路的谐振现象十分相似。它的谐振频率与晶片的切割方式、几何形状、尺寸等有关。 </P>
<P 2em">3、符号和等效电路 </P>
<P 2em">石英晶体谐振器的符号和等效电路如图2所示。当晶体不振动时,可把它看成一个平板电容器称为静电电容C,它的大小与晶片的几何尺寸、电极面积有关,一般约几个PF到几十PF。当晶体振荡时,机械振动的惯性可用电感L来等效。一般L的值为几十mH 到几百mH。晶片的弹性可用电容C来等效,C的值很小,一般只有0.0002~0.1pF。晶片振动时因摩擦而造成的损耗用R来等效,它的数值约为100Ω。由于晶片的等效电感很大,而C很小,R也小,因此回路的品质因数Q很大,可达1000~10000。加上晶片本身的谐振频率基本上只与晶片的切割方式、几何形状、尺寸有关,而且可以做得精确,因此利用石英谐振器组成的振荡电路可获得很高的频率稳定度。 </P>
<P 2em">4、谐振频率 </P>
<P 2em">从石英晶体谐振器的等效电路可知,它有两个谐振频率,即(1)当L、C、R支路发生串联谐振时,它的等效阻抗最小(等于R)。串联揩振频率用fs表示,石英晶体对于串联揩振频率fs呈纯阻性,(2)当频率高于fs时L、C、R支路呈感性,可与电容C。发生并联谐振,其并联频率用fd表示。 </P>
<P 2em">根据石英晶体的等效电路,可定性画出它的电抗—频率特性曲线如图2e所示。可见当频率低于串联谐振频率fs或者频率高于并联揩振频率fd时,石英晶体呈容性。仅在fs<f<fd极窄的范围内,石英晶体呈感性。 </P>
<P 2em">二、石英晶体振荡器类型特点 </P>
<P 2em">石英晶体振荡器是由品质因素极高的石英晶体振子(即谐振器和振荡电路组成。晶体的品质、切割取向、晶体振子的结构及电路形式等,共同决定振荡器的性能。国际电工委员会(IEC)将石英晶体振荡器分为4类:普通晶体振荡(TCXO),电压控制式晶体振荡器(VCXO),温度补偿式晶体振荡(TCXO),恒温控制式晶体振荡(OCXO)。目前发展中的还有数字补偿式晶体损振荡(DCXO)等。 </P>
<P 2em">普通晶体振荡器(SPXO)可产生10^(-5)~10^(-4)量级的频率精度,标准频率1—100MHZ,频率稳定度是±100ppm。SPXO没有采用任何温度频率补偿措施,价格低廉,通常用作微处理器的时钟器件。封装尺寸范围从21×14×6mm及5×3.2×1.5mm。 </P>
<P 2em">电压控制式晶体振荡器(VCXO)的精度是10^(-6)~10^(-5)量级,频率范围1~30MHz。低容差振荡器的频率稳定度是±50ppm。通常用于锁相环路。封装尺寸14×10×3mm。 </P>
<P 2em">温度补偿式晶体振荡器(TCXO)采用温度敏感器件进行温度频率补偿,频率精度达到10^(-7)~10^(-6)量级,频率范围1—60MHz,频率稳定度为±1~±2.5ppm,封装尺寸从30×30×15mm至11.4×9.6×3.9mm。通常用于手持电话、蜂窝电话、双向无线通信设备等。 </P>
<P 2em">恒温控制式晶体振荡器(OCXO)将晶体和振荡电路置于恒温箱中,以消除环境温度变化对频率的影响。OCXO频率精度是10^(-10)至10^(-8)量级,对某些特殊应用甚至达到更高。频率稳定度在四种类型振荡器中最高。 </P>
<P 2em">三、石英晶体振荡器的主要参数 </P>
<P 2em">晶振的主要参数有标称频率,负载电容、频率精度、频率稳定度等。不同的晶振标称频率不同,标称频率大都标明在晶振外壳上。如常用普通晶振标称频率有:48kHz、500 kHz、503.5 kHz、1MHz~40.50 MHz等,对于特殊要求的晶振频率可达到1000 MHz以上,也有的没有标称频率,如CRB、ZTB、Ja等系列。负载电容是指晶振的两条引线连接IC块内部及外部所有有效电容之和,可看作晶振片在电路中串接电容。负载频率不同决定振荡器的振荡频率不同。标称频率相同的晶振,负载电容不一定相同。因为石英晶体振荡器有两个谐振频率,一个是串联揩振晶振的低负载电容晶振:另一个为并联揩振晶振的高负载电容晶振。所以,标称频率相同的晶振互换时还必须要求负载电容一至,不能冒然互换,否则会造成电器工作不正常。频率精度和频率稳定度:由于普通晶振的性能基本都能达到一般电器的要求,对于高档设备还需要有一定的频率精度和频率稳定度。频率精度从10^(-4)量级到10^(-10)量级不等。稳定度从±1到±100ppm不等。这要根据具体的设备需要而选择合适的晶振,如通信网络,无线数据传输等系统就需要更高要求的石英晶体振荡器。因此,晶振的参数决定了晶振的品质和性能。在实际应用中要根据具体要求选择适当的晶振,因不同性能的晶振其价格不同,要求越高价格也越贵,一般选择只要满足要求即可。 </P>
<P 2em">四、石英晶体振荡器的发展趋势 </P>
<P 2em">1、小型化、薄片化和片式化:为满足移动电话为代表的便携式产品轻、薄、短小的要求,石英晶体振荡器的封装由传统的裸金属外壳覆塑料金属向陶瓷封装转变。例如TCXO这类器件的体积缩小了30~100倍。采用SMD封装的TCXO厚度不足2mm,目前5×3mm尺寸的器件已经上市。 </P>
<P 2em">2、高精度与高稳定度,目前无补偿式晶体振荡器总精度也能达到±25ppm,VCXO的频率稳定度在10~7℃范围内一般可达±20~100ppm,而OCXO在同一温度范围内频率稳定度一般为±0.0001~5ppm,VCXO控制在±25ppm以下。 </P>
<P 2em">3、低噪声,高频化,在GPS通信系统中是不允许频率颤抖的,相位噪声是表征振荡器频率颤抖的一个重要参数。目前OCXO主流产品的相位噪声性能有很大改善。除VCXO外,其它类型的晶体振荡器最高输出频率不超过200MHz。例如用于GSM等移动电话的UCV4系列压控振荡器,其频率为650~1700 MHz,电源电压2.2~3.3V,工作电流8~10mA。 </P>
<P 2em">4、低功能,快速启动,低电压工作,低电平驱动和低电流消耗已成为一个趋势。电源电压一般为3.3V。目前许多TCXO和VCXO产品,电流损耗不超过2 mA。石英晶体振荡器的快速启动技术也取得突破性进展。例如日本精工生产的VG—2320SC型VCXO,在±0.1ppm规定值范围条件下,频率稳定时间小于4ms。日本东京陶瓷公司生产的SMD TCXO,在振荡启动4ms后则可达到额定值的90%。OAK公司的10~25 MHz的OCXO产品,在预热5分钟后,则能达到±0.01 ppm的稳定度。 </P>
<P 2em">五、石英晶体振荡器的应用 </P>
<P 2em">1、石英钟走时准、耗电省、经久耐用为其最大优点。不论是老式石英钟或是新式多功能石英钟都是以石英晶体振荡器为核心电路,其频率精度决定了电子钟表的走时精度。石英晶体振荡器原理的示意如图3所示,其中V1和V2构成CMOS反相器石英晶体Q与振荡电容C1及微调电容C2构成振荡系统,这里石英晶体相当于电感。振荡系统的元件参数确定了振频率。一般Q、C1及C2均为外接元件。另外R1为反馈电阻,R2为振荡的稳定电阻,它们都集成在电路内部。故无法通过改变C1或C2的数值来调整走时精度。但此时我们仍可用加接一只电容C有方法,来改变振荡系统参数,以调整走时精度。根据电子钟表走时的快慢,调整电容有两种接法:若走时偏快,则可在石英晶体两端并接电容C,如图4所示。此时系统总电容加大,振荡频率变低,走时减慢。若走时偏慢,则可在晶体支路中串接电容C。如图5所示。此时系统的总电容减小,振荡频率变高,走时增快。只要经过耐心的反复试验,就可以调整走时精度。因此,晶振可用于时钟信号发生器。 </P>
<P 2em">2、随着电视技术的发展,近来彩电多采用500kHz或503 kHz的晶体振荡器作为行、场电路的振荡源,经1/3的分频得到 15625Hz的行频,其稳定性和可靠性大为提高。面且晶振价格便宜,更换容易。 </P>
<P 2em">3、在通信系统产品中,石英晶体振荡器的价值得到了更广泛的体现,同时也得到了更快的发展。许多高性能的石英晶振主要应用于通信网络、无线数据传输、高速数字数据传输等.


原文地址:http://zhpmcu.blog.163.com/blog/static/150775872007281067292/

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
4
关闭 站长推荐上一条 /3 下一条