ARM的学习笔记

 

下面就是我学习ARM的第一阶段的记录,这段时间的学习基本上是使用Proteus配合KEIL做简单的实验(最后有实验的目录以及下载地址)。通过该阶段的学习,算是对ARM的基本结构有了了解。

该阶段主要学习资料是《基于PROTEUS的ARM虚拟开发技术》,以及另外一本ARM体系结构的书籍,感觉这类书都差不多。

学习ARM前需要的基础

 

前辈学习ARM的经验!(我是在嵌入式开发联盟的新人区看的帖子。)

掌握C语言编程。

了解简单的微机算计原理知识,例如二进制,计算机程序的执行过程,总线(数据、地址、控制),软件系统(系统软件与应用软件)。

听说过RISC与CISC,高级语言与低级语言的区别。

最好听说过串行传输与并行传输。

普林斯顿(ARM7)和哈佛结构(ARM9、10、11—)。

什么是ARM

 

学ARM,自然要理解ARM是什么,也好明确学习目标。网上的资料很多,“ARM是一家公司,也是一个处理器体系”……我将学ARM分为以下几类:

做ARM的核心研发。也就是进ARM公司做IP核,应该是学电子之类的东西吧。

买ARM的IP核,做具体的嵌入式处理器、核心板,例如三星和NXP。

买ARM核心板,连接外围电路制作教育用或开发用的开发板,或者直接开发其它中断产品。

买ARM开发板做产品,要做系统软件和应用软件。

3和4基本并列了。

ARM基础

 

任何一本介绍ARM体系结构书籍都应该有这些内容。

处理器模式

 

用户模式、特权模式又分为系统模式、管理模式、快中断模式、中断模式、终止模式、未定义指令终止模式。

2. 寄存器

 

R0-R7、R15和CPSR是所有模式共享的。

R8-R12出快中断模式有RX-fiq外所有模式共享。

R13、R14和SPSR只有用户模式和系统模式共享,其它都有似有SPSR。

R15(PC)程序计数器

R16(CPSR)程序转台寄存器

R13(SP)堆栈指针

P14(LR)链接寄存器

ARM指令集汇编程序设计

 

略了,我看了,但是做Proteus仿真实验没用上,两天就忘了。

LPC2000

 

我买的3本ARM入门书籍中有两本都是以LPC2000系列为例的,其实从网上可以下载到具体LPC2XXX处理器的datasheet,上面的资料是最权威和详尽的。

引脚选择

 

PINSEL0、PINSEL1设置各个引脚的功能。

中断

 

中断的寄存器太多了,没记。

GPIO

 

做输入输出。以P0口为例,寄存器有IO0PIN、IO0SET、IO0DIR、IO0CLR。

存储器

 

LPC2000可用地址为4GB,内部2GB(0~0x7FFFFFFF),外部2GB(0x80000000~0xDFFFFFFF),高0.5GB是I/O设备地址空间(0xE0000000~0xFFFFFFFF)。

内部最低128KB或256KB为Flash。

高1GB(0x40000000~0x7FFFFFFF)为SRAM。其中0x40000000~0x40001FFF为片内SRAM。

I/O部分,低2MB(0xE0000000~0xE001FFFFF)为VPB外设空间,高2MB(0xFFE00000~0xFFFFFFFF)为AHB外设空间。

FLASH加速模块。

MAMCR设置是否允许加速、MAMTIM设置预取处理器时钟。

时钟

 

cclk、pclk

分振荡器模式和从属模式,振荡器Fosc经PLL升频为cclk,cclk经过VPB分频后为pclk。

设置cclk

PLLCFG  设置PLL倍频M,PLL分频器值P

PLLCON  PLL的允许与连接

PLLSTAT 读取PLL状态

PLLFEED 使PLL设置生效

例Fosc=12MHz,cclk=60MHz,则M=60/12-1=4,因为Fcco=P*cclk*2(要求156M~320MHz)。

设置pclk

由VPBDIV设置00为4分频、01为不分频、10为二分频。

定时器

 

pclk定时,定时器为32位,从0计数到0xFFFFFFFF。以T0为例

T0TC,计数器初值

T0PR,定时计数器分频,pclk/(PR+1)

T0MR0~3,匹配值,当计数带到时候,按照T0MCR的设置触发不同动作。

T0MCR,计数器到达匹配值的动作(复位、中断、停止)

T0EMR,外部匹配寄存器,到达匹配值时候外部引脚的操作(MAT0.0~3)

T0CCR,外部引脚有特定动作时候,计数值存入T0CR0~3,设置是否触发中断

T0CR0~3,在T0CCR控制下存TC值。

T0TCR,复位与使能

T0IR,对应MR与CR中断

PWM

 

看门狗

 

Pclk四分频后控看门狗的32为计数器减一。

WDTC,看门狗计数器初值。

WDMOD,看门狗工作模式,可以开启和复位看门狗。

WDFEED,喂狗寄存器。

WDTV,看门狗计数器当前值。

UART

 

引脚RxD0,TxD0

U0RBR,暂存接受数据。

U0THR,暂存发送数据。访问它时,U0LCR的DLAB位为0。

U0IER,串口个状态的中断允许。

U0IIR,中断标志。

U0FCR,控制UART的FIFO(暂时没明白)。

U0LCR,传输模式。

U0LSR,当前状态(错误指示)。

U0DLL、U0DLM,pclk/( U0DLL U0DLM),访问时UOLCR的DLAB位为1。

SPI

 

全双工同步串行接口

引脚:

SCK0,串行时钟。

SSEL0,从机选择。

MISO,主机输入,从机输出。

MOSI,主机输出,从机输入。

寄存器:

S0SPCR,SPI控制。

S0SPSR,SPI状态。

S0SPDR,SPI数据。

S0SPCCR,控制SCK的频率。必须为偶数且大于等于8。(指示一个SCK周期中的pclk周期)

S0SPINT,SPI中断。

I2C

 

引脚:SDA,SCL

寄存器:

I2CONSET

I2CONCLR

I2CON

上面三个寄存器控制应答标志位,中断标志、停止和起始以及I2C使能。

I2STAT,I2C状态。

I2DAT,I2C数据。

I2ADR,I2C从模式地址。

I2STAT,I2C状态。

I2SCLH,高电平占空比占pclk周期个数。

I2SCLL,低电平占空比占pclk周期个数。

分频fpclk/( I2SCLH+I2SCLL)。

AD转换

 

引脚:AIN0~3

寄存器:

ADCR,工作模式选择。

ADDR,转换数据以及标志的暂存。

 

电子园_ 发表于12-28 10:12 浏览65215次
分享到:

已有1条评论

  • 3w之王少
    3w之王少 08-04 23:54

    厉害

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

电子园_
电子园_(元帅)
金币:1569个|学分:34245个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号