nrf51822基础知识整理

来源:互联网 发布:单例模式 js 编辑:程序博客网 时间:2024/06/15 09:56
Cotex-M0内核,128K/256K flash,16K/32K RAM,不同的型号存储器大小不同。

片上+/- 250 ppm 32kHZ RC振荡器,在蓝牙 低功耗应用,不需外部32kHz晶体,可节省成本和电路板空间

6x6mm 48脚QFN封装,提供最多可达31个GPIO;
值得说明的是,nrf51822的大多数引脚都可以指定为你想要的功能,除非是极个别的功能。比如说你可以将任意一个gpio引定为uart,spi,IIC,gpiote……,但是有少数功能除外,比如ADC需要相应硬件电路的支持的这种。

发射功率-40dbm~+4dbm,步长为4dbm
发射电流峰值10.5mA,接收电流峰值13mA

关机电低电流0.6uA


启动:通过低频时钟源寄存器(LFCLKSRC register)选择优先的低频时钟源,使其起振,并执行一个低频起振任务(LFCLKSTART task),若外部晶振无法直接起振,则会自动切换到内部低频RC振荡器,直到外部晶振能够起振为止
停止:通过执行LFCLKSTOP task .可以停止低频时钟,低频时钟源选择寄存器(LFCLKSRC register)在LFCLK处于running状态时,不能被修改。

HFCLK有2个时钟源: 
1、16/32 MHz 外部晶振 (crystal oscillator) 
2、16MHz内部RC振荡器(RC oscillator) 
当用到32M晶振时, XTALFREQ register 必须做相应的配置。
启动:当系统进入ON模式时,会自动的启动内部16M RC振荡器,为CPU或系统的其他部件提供HFCLK。 
   执行HFCLKSTART task 能使外部高频晶振启动 
停止:通过执行 HFCLKSTOP task使外部高频晶振停止。 
当外部高频晶振启动时,内部16M RC振荡器会自动关闭,当外部高频晶振停止时,内部16M RC振荡器又会自动打开。

校准32.768 RC振荡器: 
当32.768 RC振荡器启动并运行时,可以通过触发CAL task 对其进行校准,此时需临时借用HFCLK,使用外部16/32M 晶振进行校准时精度最高,校准完成后产生一个 DONE event.

当一个应用程序使能某个模块并需要时钟做参考,但是又不需要晶振运行时,时钟管理系统会自动使能RC振荡器选项,并提供时钟,当该模块回到IDLE状态时,RC振荡器也回到IDLE状态。当然,为了避免启动延时,应用程序可以不顾时钟管理系统,而使晶振始终处于激活状态。外部高频晶振可以是16M或32M 但是系统时钟始终是16M。32.768K的时钟可以由16M的时钟得到,减少了资源,但是会增加功耗 

3种供电方式: 
1 、internal DC/DC converter setup;(降压型) 
2 、internal LDO setup;(内部LDO) 
3 、Low Voltage mode setup 


System OFF mode : 
系统可进入的终极省电模式。系统核心功能将被关闭,并停止所有正在执行的任务。唯一还在工作并且可产生回应的机制是复位。 
System OFF is the deepest power saving mode the system can enter. In this mode,the system’s core functionality is powered down and all ongoing tasks are terminated. The only mechanism that is functional and responsive in this mode is the reset mechanism.  
通过设置RAMON 寄存器,可以在System OFF 模式下保留RAM块中的内容。 
从System OFF唤醒(wake up)到System ON模式: 
 1,由GPIO产生的检测信号(DETECT signal) 唤醒       
2,由Reset 唤醒
当系统从System OFF模式唤醒时,会执行Reset操作 
When the system wakes up from OFF mode, a system reset is performed. 
RAM 被分块,可以单独的上电和关闭。在System OFF 模式,RAM中的数据可以被保留, 

System ON mode : 
所有功能模块会根据需要处于IDEL或RUN 模式 
在该模式下,CPU可以被激活(active)或者睡眠(sleeping). CPU进入睡眠的方式: 
1、执行WFI指令 
2、执行WFE指令  
1通过WFI睡眠的CPU,能够被中断请求唤醒,前提是在NVIC中把相应的中断开关打开。 
2通过WFE睡眠的CPU,无论NVIC中是否打开了相应的中断开关,都能够被中断请求唤醒



复位方式 
nRF51系列提供多种复位方式,当复位发生的时候,CPU会查询复位原因寄存器RESETREAS (reset reason register),以判断复位产生的原因。 
1、上电复位(Power-on reset)
2、引脚复位(Pin reset) 
3、从System OFF模式醒来复位(Wakeup from OFF mode reset) 
4、软件复位(Soft reset) 
5、看门狗复位(Watchdog reset) 
6、欠压复位(Brown-out reset)


主要的存储类别: 
• Code memory 
• Random Access Memory (RAM) 
• Peripheral registers (PER) 

另外,还有两个信息块(FICR,UICR),FICR包含设备的详细配置(只读),UICR是用户可配置

Peripheral registers: 
外设的入口,TIMER,Radio,ADC 等

1、外设ID: 
每个外设都分配了0X1000 bytes 的空间,也就是说每个外设在APB总线上一共有1024个4 bytes的寄存器(0X1000=4096),第一个外设的基地址是0x4000 0000, ID号为0. 基地址为0x4000 1000的外设ID号为1,依次类推基地址为0x4001 F000的外设ID号为31. 
2、TASK :  
 作用: 用来触发外设的动作(actions),例如开始某个特定的行为。外设都能实现不同的Task,每个Task在该外设任务寄存器组(peripheral’s task register group) 中都有一个单独的寄存器  
 触发条件:可以通过软件写“1”到任务寄存器(task register)或者由外设本身或其他外设触发相应的任务信号来触发某个TASK 
2、Event: 
作用:用来通知外设或CPU某个事件发生了,例如某个外设的状态改变了。一个外设能够产生多个Event,每个Event在事件寄存器组(peripheral’s event register group)中都有一个单独的寄存器。 
产生条件: 外设本身触发了某个事件信号(event signal),于是事件寄存器(event register)会更新用以反映该事件的发生。事件寄存器只有在软件向其写0的时候,才会被清零。

3、Shortcuts: 
链接同一个外设的事件(event)和任务(task)的快捷方式,当事件发生的时候可以通过Shortcuts直接触发任务。与PPI的功能类似,但是传播时间比PPI更短。 
快捷方式是被预先定义了的,用户不可以通过软件配置,用户只能对其进行使能和关闭。一个快捷方式占1位,每个外设最多32个快捷方式。

4、Interrupts: 
中断由事件(event)产生,可以打断CPU程序流。所有APB总线上的外设都支持中断,一个外设只占一个中断,中断号与外设的ID号相同,例如ID号为4的外设,在向量嵌套中断控制器(NVIC)对应的中断号为4.

PPI
功能:PPI 可以实现不同的外设之间通过tasks和events进行自主互动,而不需要用到CPU。
一个外设的event可以触发另外一个外设的task。
PPI通道的作用是使一个event链接 着一个task,每个PPI通道由两个端点寄存器(end-point registers)组成:event端(EEP)和task端(TEP)。
一个外设的task 是通过该task的任务寄存器地址(the address of the task register)与TEP相连的。同理event…


Radio 可实现 EasyDMA ,即无需CPU的参与而直接访问RAM。EasyDMA不能访问除RAM之外的其他地址空间。通过无线的方式,不经CPU直接访问RAM



当看门狗定时器打开的时候,会强制打开 32.768KHz RC 振荡器, 

RNG(Random Number Generator) 
功能:基于内部热噪声,产生完全随机的数,用来加密。
通过START task.启动RNG. 
一旦RNG被启动,就会源源不断的产生新的随机数,当数据准备好了,就会被写入到VALUE register。没当向VALUE register写入了一个数,就会产生一个VALRDY event.

TEMP (Temperature sensor) 
功能:用来测量硅片温度(the silicon die temperature) 
只能通过START task.启动,当测量结束后,会产生一个DATARDY event.并可以通过读TEMP register的值来得到测量结果。 
测量结束后,会关闭模拟电源以节省电能。 测量精度0.25 0C。

ECB (AES-ECB encryption) 
功能:  ECB加密块支持128bit AES加密

QDEC(Quadrature Decoder) 
功能:对正交编码的传感器信号(quadrature-encoded sensor signals)进行解码。适用于机械和光传感器,采样率根据应用自行配置。

NVMC(Non-Volatile Memory Controller) 
非易失性存储控制器

MPU(Memory Protection Unit) 
功能:用来保护整个存储器以防止回读,也可用来保护存储器的某些部分