nRF51822芯片详解解读.docx
《nRF51822芯片详解解读.docx》由会员分享,可在线阅读,更多相关《nRF51822芯片详解解读.docx(42页珍藏版)》请在冰豆网上搜索。
nRF51822芯片详解解读
0、功能简介
IC功能包括:
256kB片上闪存和16kBRAM;
数字和混合信号周边,包括SPI、2-wire、ADC以及正交解码器;
16PPI通道;
撘配片上LDO时电源范围为1.8-3.6V,LDO旁路模式为1.75-1.95V ;
片上下拉DC/DC转换器用于3V电池(例如,纽扣电池);
片上+/-250ppm32kHZRC振荡器,在蓝牙 低功耗应用,不需外部32kHz晶体,可节省成本和电路板空间;
6x6mm48脚QFN封装,提供最多可达32个GPIO;
完整的蓝牙协议堆栈(到配置文件的链接层)。
nRF51822的S110是可下载、免版税、预编译二进制蓝牙低功耗堆栈,可独立编程和更新。
功能包括:
异步和事件驱动SVC的API;
运行时保护;
GATT、GAP和L2CAP级别API;
周边和广播器角色;
GATT客户端和服务器;
和2.4GHzRF专用协议的非并行多协议操作;
少于128kB的代码和6kB的RAM,为应用程序留有超过128kB的闪存和10kB的RAM;
与使用上一代nRF8001的双芯片应用相比,运行S110堆栈的nRF51822削减了高达50%的功耗。
S110堆栈和nRF51822加上nRF518SDK相互配合,nRF518包含全面的蓝牙低功耗配置文件、服务以及示例应用集合。
1、架构
围绕两条内部总线展开:
AHB,APB
AHB(AdvancedHighPerformanceBUS):
CPU:
(Cortex-m0,NVIC,BBB,DAP)
Memory:
(RAM,Flash)
GPIO:
P0(P0.0~P0.31)
AHBtoAPBBridge
APB(AdvancedPeripheralBUS):
左半边:
Power:
电源控制
WDT:
看门狗
SPI0,SPI1
TIMER0(32位),
TIMER1(16位),
TIMER2(16位)
QDEC:
正交译码器,
CLOCK:
提供两个时钟:
HFCLK(16MHZ),
LFCLK(32.768KHZ)
TWI0,TWI1:
两线接口,兼容I2C
右半边:
NVMC:
非易失性存储控制器
RADIO:
2.4GHZ无线广播的数据率:
250KBPS,1MBPS,2MBPS
ECB:
加密功能(AES),产生HASH序列,数字签名,生成密钥流等
RNG:
产生随机数用于加密(基于内部热噪声),无需种子值。
TEMP:
温度传感器
ADC:
10位增量ADC
PPI:
可编程外设互联
UART:
串口
GPIOTE:
GPIO监测外部电平或由其他外设触发GPIO翻转。
RTC0:
4个捕获/比较寄存器
RTC1:
3个捕获/比较寄存器
2、时钟管理
系统依赖两种时钟(可以由内部产生):
1、HFCLK:
16MHZ
2、LFCLK:
32.768kHz
LFCLK有3种时钟源:
1、32.768kHz外部晶振
2、32.768kHz内部RC振荡器
3、32.768kHz合成时钟(synthesizedclock)
当系统从OFF模式切换到ON模式时,LFCLK时钟默认的会关闭。
启动:
通过低频时钟源寄存器(LFCLKSRCregister)选择优先的低频时钟源,使其起振,并执行一个低频起振任务(LFCLKSTARTtask),若外部晶振无法直接起振,则会自动切换到内部低频RC振荡器,直到外部晶振能够起振为止。
停止:
通过执行LFCLKSTOPtask.可以停止低频时钟,低频时钟源选择寄存器(LFCLKSRCregister)在LFCLK处于running状态时,不能被修改。
HFCLK有2个时钟源:
1、16/32MHz外部晶振(crystaloscillator)
2、16MHz内部RC振荡器(RCoscillator)
当用到32M晶振时,XTALFREQregister必须做相应的配置。
启动:
当系统进入ON模式时,会自动的启动内部16MRC振荡器,为CPU或系统的其他部件提供HFCLK。
执行HFCLKSTARTtask能使外部高频晶振启动
停止:
通过执行HFCLKSTOPtask使外部高频晶振停止。
当外部高频晶振启动时,内部16MRC振荡器会自动关闭,当外部高频晶振停止时,内部16MRC振荡器又会自动打开。
校准32.768RC振荡器:
当32.768RC振荡器启动并运行时,可以通过触发CALtask对其进行校准,此时需临时借用HFCLK,使用外部16/32M晶振进行校准时精度最高,校准完成后产生一个DONEevent.
当一个应用程序使能某个模块并需要时钟做参考,但是又不需要晶振运行时,时钟管理系统会自动使能RC振荡器选项,并提供时钟,当该模块回到IDLE状态时,RC振荡器也回到IDLE状态。
当然,为了避免启动延时,应用程序可以不顾时钟管理系统,而使晶振始终处于激活状态。
外部高频晶振可以是16M或32M但是系统时钟始终是16M。
32.768K的时钟可以由16M的时钟得到,减少了资源,但是会增加功耗
电气特性:
3、电源管理
1、3种供电方式:
1、internalDC/DCconvertersetup;(降压型)
2、internalLDOsetup;(内部LDO)
3、LowVoltagemodesetup
1:
DC/DC转换器用来给VDD降压,降压后输出给LDO,为系统体统电力。
为了省电,一般在VDD低于最低电压或FDCDC>1时,应该关闭DC/DC
2、不通过DC/DC转换器,而直接把VDD与LDO相连,
3、不通过DC/DC及LDO,而直接用外部VDD为系统供电
2、两种系统模式
SystemONmode、SystemOFFmode.
◆SystemOFFmode:
系统可进入的终极省电模式。
系统核心功能将被关闭,并停止所有正在执行的任务。
唯一还在工作并且可产生回应的机制是复位。
SystemOFFisthedeepestpowersavingmodethesystemcanenter.Inthismode,thesystem’scorefunctionalityispowereddownandallongoingtasksareterminated.Theonlymechanismthatisfunctionalandresponsiveinthismodeistheresetmechanism.
通过设置RAMON寄存器,可以在SystemOFF模式下保留RAM块中的内容。
从SystemOFF唤醒(wakeup)到SystemON模式:
1,由GPIO产生的检测信号(DETECTsignal)唤醒
2,由Reset唤醒
当系统从SystemOFF模式唤醒时,会执行Reset操作
WhenthesystemwakesupfromOFFmode,asystemresetisperformed.
RAM被分块,可以单独的上电和关闭。
在SystemOFF模式,RAM中的数据可以被保留,
◆SystemONmode:
所有功能模块会根据需要处于IDEL或RUN模式
在该模式下,CPU可以被激活(active)或者睡眠(sleeping).
CPU进入睡眠的方式:
1、执行WFI指令
2、执行WFE指令
1通过WFI睡眠的CPU,能够被中断请求唤醒,前提是在NVIC中把相应的中断开关打开。
2通过WFE睡眠的CPU,无论NVIC中是否打开了相应的中断开关,都能够被中断请求唤醒。
InWFIsleeptheCPUwillwakeupasaresultofaninterruptrequestiftheassociatedinterruptisenabledintheNVIC
InWFEsleeptheCPUwillwakeupasaresultofaninterruptrequestregardlessoftheassociatedinterruptbeingenabledintheNVICornot.
◆子电源模式(Subpowermodes)
在SystemON模式下,CPU睡眠期间,系统可以处于下列两种子电源模式中的一种
•固定延时(ConstantLatency)
•低功耗(LowPower)
1、固定延时模式:
CPU的唤醒潜伏期和PPI的响应时间是一个不变量,代价是功耗较高。
2、低功耗模式:
在此模式下,电源管理系统会被最高效的利用,节省最多的电能,代价是CPU的唤醒潜伏期和PPI的响应时间就会多种多样。
当系统进入SystemON模式,会默认进入低功耗(LowPower)子模式。
3、复位方式
nRF51系列提供多种复位方式,当复位发生的时候,CPU会查询复位原因寄存器RESETREAS(resetreasonregister),以判断复位产生的原因。
1、上电复位(Power-onreset)
2、引脚复位(Pinreset)
3、从SystemOFF模式醒来复位(WakeupfromOFFmodereset)
4、软件复位(Softreset)
5、看门狗复位(Watchdogreset)
6、欠压复位(Brown-outreset)
Note:
除了全局电源系统开关(SystemONandOFFmode),CPU,RadioTransceiver等外设,都有独立的电源状态控制。
4、电气特性
5、CPU功耗:
4、存储
所有存储块(memoryblocks)和寄存器(registers)映射在同一个地址空间。
AllmemoryandregistersarefoundinthesameaddressspaceasshownintheDeviceMemoryMap.DevicesinthenRF51seriesuseflashbasedmemoryintheCode,FICR,andUICRregions.TheRAMregionisSRAM.
主要的存储类别:
•Codememory
•RandomAccessMemory(RAM)
•Peripheralregisters(PER)
另外,还有两个信息块(FICR,UICR),FICR包含设备的详细配置(只读),UICR是用户可配置.
存储方式:
•Volatilememory(VM)
•Non-volatilememory(NVM)
Codememory:
非易失性,通常用来存放CPU运行的程序,和芯片掉电之后保留的数据常量(dataconstants)
RAM:
CPU程序的临时数据存储,也可以从RAM运行CPU程序。
易失性,掉电丢数。
Peripheralregisters:
外设的入口,TIMER,Radio,ADC等。
Note:
NVMC、外设的内存映射将在六中详解。
5外设接口
Peripheralinterface
所有外设可通过AHB和APB总线寄存器被访问,就如同通过task,event,interrupt寄存器进行访问一样.
1、外设ID:
每个外设都分配了0X1000bytes的空间,也就是说每个外设在APB总线上一共有1024个4bytes的寄存器(0X1000=4096),第一个外设的基地址是0x40000000,ID号为0.基地址为0x40001000的外设ID号为1,依次类推基地址为0x4001F000的外设ID号为31.
2、TASK:
作用:
用来触发外设的动作(actions),例如开始某个特定的行为。
外设都能实现不同的Task,每个Task在该外设任务寄存器组(peripheral’staskregistergroup)中都有一个单独的寄存器
触发条件:
可以通过软件写“1”到任务寄存器(taskregister)或者由外设本身或其他外设触发相应的任务信号来触发某个TASK
2、Event:
作用:
用来通知外设或CPU某个事件发生了,例如某个外设的状态改变了。
一个外设能够产生多个Event,每个Event在事件寄存器组(peripheral’seventregistergroup)中都有一个单独的寄存器。
产生条件:
外设本身触发了某个事件信号(eventsignal),于是事件寄存器(eventregister)会更新用以反映该事件的发生。
事件寄存器只有在软件向其写0的时候,才会被清零。
3、Shortcuts:
链接同一个外设的事件(event)和任务(task)的快捷方式,当事件发生的时候可以通过Shortcuts直接触发任务。
与PPI的功能类似,但是传播时间比PPI更短。
快捷方式是被预先定义了的,用户不可以通过软件配置,用户只能对其进行使能和关闭。
一个快捷方式占1位,每个外设最多32个快捷方式。
4、Interrupts:
中断由事件(event)产生,可以打断CPU程序流。
所有APB总线上的外设都支持中断,一个外设只占一个中断,中断号与外设的ID号相同,例如ID号为4的外设,在向量嵌套中断控制器(NVIC)对应的中断号为4.
所有的外设遵循表10中的寄存器组模式,除了SHORTS和INTEN有固定的位置,其他的寄存器都分了组,并且是紧挨着的。
INTEN可实现“setandclear”模式,即可以直接对位进行操作。
也就是说可以单独选择打开或关闭中断源。
6、各外设功能介绍
1、GPIO
一共有31个GPIO管脚(P0.0—P0.30),可以通过管脚配置寄存器PIN_CNF[n]registers(n=0..30),对每个管脚进行单独的配置,配置的参数包括:
●Direction
●Drivestrength
●Enablingofpull-upandpull-downresistors
●Pinsensing
●Inputbufferdisconnect
●Analoginput(forselectedpins)
2、GPIOTE(GPIOtasksandevents)
功能:
利用任务(task)和事件(event)对GPIO口进行访问。
可以通过CONFIG[n]registers对task和event进行配置。
Task可以用来执行以下对管脚的写操作:
●Set置1
●Clear清0
●Toggle翻转
利用输入引脚的检测信号(DETECTsignal)可以产生以下event:
●Risingedge上升沿
●Fallingedge下降沿
●Anychange任何改变
3、PPI
功能:
PPI可以实现不同的外设之间通过tasks和events进行自主互动,而不需要用到CPU。
TheProgrammablePeripheralInterconnect(PPI)enablesdifferentperipheralstointeractautonomouslywitheachotherusingtasksandeventsandwithouthavingtousetheCPU.
一个外设的event可以触发另外一个外设的task。
ThePPIprovidesamechanismtoautomaticallytriggerataskinoneperipheralasaresultofaneventoccurringinanotherperipheral.
PPI通道的作用是使一个event链接着一个task,每个PPI通道由两个端点寄存器(end-pointregisters)组成:
event端(EEP)和task端(TEP)。
AtaskisconnectedtoaneventthroughaPPIchannel.ThePPIchanneliscomposedoftwoend-pointregisters,theEventEnd-Point(EEP)andtheTaskEnd-Point(TEP).
一个外设的task是通过该task的任务寄存器地址(theaddressofthetaskregister)与TEP相连的。
同理event…。
当应用程序存在实时要求(real-timeconstraintsexist),又不需要CPU参与时,PPI可以实现外设之间的精确同步。
4、Radio(2.4GHzradio)
Radio可实现EasyDMA,即无需CPU的参与而直接访问RAM。
EasyDMA不能访问除RAM之外的其他地址空间。
(Para16.)
PACKETPTR数据包接收/发送指示器,每当Radio在接收和发送模式之间进行切换的时候,CPU需对其进行重新配置。
MAXLENregister用来配置同一个数据包接收和发送时的最大字节数。
用来确保不会写得过多(overwrite)或读超出(readbeyond)
RSSI接收信号强度指示器
数据白化(数据加噪):
白化处理主要是为了避免在传输过程中出现过长的连续0或1的位流。
基带处理器需要从接收到的模拟数据信号中判断数据是0还是1,但过长的连续0或1位流就会造成问题。
因为在接收到的模拟数据信号中并不存在象直流信号中那样的参考点,因此必须依靠接收到的最后几个传输信号进行校正。
任何连续的0或1的长序列位流串都可能导致校正失败。
因此需要采用数据白化技术对信号进行扰码处理,以大大降低出现长序列0或1位流串的可能性。
worldwideISMfrequencybandat2.400to2.4835GHz
◆Generalmodulationfeatures
⏹GFSKmodulation
•Datawhitening
•7bitlinearfeedbackshiftregister(programmableIV)
•On-airdatarates
•250kbps
•1Mbps
•2Mbps
◆Transmitterwithprogrammableoutputpowerof+4dBmto-20dBm,in4dBsteps
◆Transmitterwhispermode:
-30dBm
◆RSSIfunction(1dBresolution,±6dBaccuracy)
◆Receiverwithintegratedchannelfiltersachievingmaximumsensitivity
•-96dBm@250kbps
•-93dBm@1MbpsBLE
•-90dBm@1Mbps
•-85dBm@2Mbps
◆RFSynthesizer
•1MHzfrequencyprogrammingresolution
•1MHznon-overlappingchannelspacingat1Mbpsand250kbps
•2MHznon-overlappingchannelspacingat2Mbps
•Workswithlow-cost±60ppm16MHzcrystaloscillators
◆Basebandcontroller
•EasyDMA3RXandTXpackettransferdirectlytoandfromRAM
•Dynamicpayloadlength
•On-the-flypacketassembly/disassemblyandAESCCMpayload
encryption
•8bit,16bit,and24bitCRCcheck(programmablepolynomialand
initialvalu
5、TIMER(Timer/counters)
大量的TIMERtask/event及中断,可以使各种系统外设(包括GPIO)通过PPI系统执行定时或记数任务(timing/counttasks).
PPI系统也可以使能定时器(TIMERtask/eventfeatures)来产生周期性输出(periodicoutput)或PWM信号到任意的GPIO口。
ThePPIsystemalsoenablestheTIMERtask/eventfeaturestogenerateperiodicoutputandPWMsignalstoanyGPIO.
定时计数器的时钟源是HFCLK,并可以通过一个4bit(1/2X)分配器对HFCLK进行分频.
TIMER可以处于两种模式:
1定时模式(Timermode)
2计数模式(Countermode)
两种模式都可以通过触发启动或停止任务(STARTtaskorSTOPtask)来启动或停止TIMER。
TIMER是count-uptimer:
Timermode:
每个定时器周期(FTIMER),内部计数寄存器(Counterregister)+1.
Countermode:
每次COUNTtask被触发的时候,Counterregister+1.
此模式下,FTIMER和分频系数就不起作用了。
TIMER可以通过位宽寄存器(BITMODEregister)设置计数最大值(maximumvalue).
分频和位宽寄存器(PRESCALERregisterandtheBITMODEregister)
只能在TIMER停止运行的时候对其进行修改,否则结果难以预料。
当计数超过了最大值时,计数寄存器会溢出,并自动从0重新开始计数。
可通过执行CLEARtask使TIMER清0。
比较和捕获(Compare/Capture):
比较:
每个捕获比较寄存器(CC[0..3])都可以产生一个COMPAREevent.当某个计数值计到与capturecompareregisterCC[n]中的值相等时,就会产生一个COMPARE[n]event,这两个n是对应着的。
捕获:
每个capt