Nordic nRF52系列/nRF5340硬件设计(一)选型及原理图设计
Nordic 的BLE系列芯片从第一代的nRF51系列,到第二代的nRF52系列,发展到目前最新的第三代的nRF5340。目前市场中使用最多的nRF52系列一共有七款芯片,它们是:nRF52805、nRF52810、nRF52811、nRF52820、nRF52832、nRF52833、nRF52840。其硬件(主要是RAM、FLASH、PHY及支持协议)的不同,满足了不同领域的需求。本系列文章将着重介绍Nordic的nRF52系列和nRF5340从前期选型、原理图设计、Layout、天线匹配及RF频偏调试的过程。希望能对广大使用Nordic芯片的开发者有所帮助。
一、芯片选型
1、粗略选型
Nordic官网中有一个产品比较页:https://www.nordicsemi.com/products/bluetooth-low-energy。打开此页面,我们可以看到Nordic目前一些主流型号的芯片的配置情况。在这个页面中详细列出了芯片 CPU的主频、Flash、RAM、供电范围、支持的硬件通讯接口(UART、I2C、I2S、SPI、HSPI、QSPI、USB、ADC)等信息。根据这些信息,开发者可以粗略筛选出2-3颗符合自己需求的芯片。
3、Flash和RAM资源选择。
确定大致的选型后,可以根据实际应用的具体需求再去进一步评估所需的Flash和RAM。Nordic的SDK中有丰富的例程,基本涵盖了市面上一些常见的应用,这些例程实际上已经帮开发者搭好了框架,开发者可以在这些例程的基础上开发,去增加相应的功能即可,而不是从零开始。所以我们可以借助SDK中的例程大小大致来评估实际应用所需的flash和RAM大小。
Nordic目前有两套SDK,老的nRF5 SDK现在已经进入维护阶段,Nordic不会在其中增加新的功能。未来新的功能都是放在NRF CONNECT SDK(简称NCS)中更新。nRF52系列的芯片支持两套SDK,但nRF5340只支持NCS。
关于环境的搭建,可以参考Nordic 中国区的FAE写的博客:https://www.cnblogs.com/iini/p/9043565.html、https://www.cnblogs.com/iini/p/14174427.html,这两篇文章分别介绍了nRF5 SDK和NCS的环境搭建方法。
搭建好环境后,我们可以到SDK中找到相应的例程,例如需要开发一个手环应用,我们可以打开ble_app_hrs例程,可以看到HRS下有5名为PCA100XX的文件夹,这对应这此例程支持的DK板型号,PCA10040为NRF52840DK、PCA10040e为NRF52810DK、PCA10056为NRF52840DK、PCA10056e为NRF52811DK,有些例程下还有PCA10010和PCA10010e两个文件夹,分别对应NRF52833和NRF52820。PCA10059为NRF52840 Dongle。
查看例程所用的Flash和RAM的使用情况,需要借助SES编译例程。编译完成后,我们可以看到HRS例程几乎用掉了NRF52810的全部Flash和RAM(SES编译计算的Flash和RAM是包括了MBR、协议栈、application三部分的),这说明nRF52810不太适合做心率手环的应用,需要另选其他芯片。
再次编译nRF52840的工程,可以看到NRF52840的Flash和RAM使用情况,再结合其他要增加的功能(DFU、驱屏外设等)来做判断。
4、 封装选择
nRF52系列和nRF5340芯片都有多个封装可以选择,开发者可以根据实际产品对体积的要求及成本角度出发,选择封装。每款芯片的手册中都有此芯片的不同封装信息。如下图是nRF52840不同封装信息,此内容可在该芯片的 Product Specification 中查到。
二、原理图设计
1、参考设计资料
选定适合的芯片后,就可以开始设计原理图了,Nordic官方提供了丰富的硬件参考设计资料:
在Nordic官网上可以除了有芯片的设计参考之外,Nordic的官方DK(Development Kit)的设计资料也是全开源的,可以在官网上找到。
我们以nRF52840为例,首先进入Nordic官网:https://www.nordicsemi.com。
点击右上角搜索芯片,在这里可以搜到芯片和对应DK的相关页面。我们搜索nRF52840,可以看到在这里搜到了nRF52840 Dongle、DK以及芯片的相关信息。
在搜索页面打开nRF52840,在nRF52840介绍页面中点击 Compatible downloads 可以看到芯片的参考设计下载链接,如果你选择的是其他封装的,可以在左侧Reference layout and BOM Resources中切换。
芯片的参考设计是一个Zip压缩包,将其下载并解压后,可以看到一共有四个文件夹
Altium Designer files 文件夹中是可以用Altium打开的文件,芯片的封装可以直接从其中拷贝出来。如果你使用的是其他设计软件,如PADS,需要将此文件夹中的.PcbDoc文件导入到你使用的设计软件中,具体方法请上网搜索。如果导入不成功或者你觉得比较麻烦的话也在网上搜索其他人画好的库,或者根据芯片手册中的引脚相对位置关系直接自己画封装。
Bill of Materials 文件夹中是参考设计对应的BOM表,在BOM表中可以清楚看到Nordic推荐使用的阻容感器件及高低频晶体的类型和精度及参数。
Production files文件夹中则主要是板子的Gerber文件,方便设计者查看官方参考设计中每一层的走线。
Schematic and Layout pdf files文件夹中是原理图的PDF和Layout分层导出的PDF。
看到这里,你可能会有一个疑问,为什么每一个文件夹中,都有很多个config,比如nRF52840的参考设计中,每个文件夹中都有7个config。实际上每个config都是一种参考设计,四个文件夹中每个config名称相同的文件是同一个参考设计,是一一对应的关系,即Altium Designer files中的nrf52840_qiaa_config1.PcbDoc对应的Altium 原理图是nrf52840_qiaa_config1.SchDoc,对应的BOM是Bill of Materials 中的nrf52840_qiaa_config1_bom,对应的Gerber文件是nrf52840_qiaa_config1为名称的一系列文件,对应的PDF原理图和Layout分层图是nrf52840_qiaa_config1_schematic.pdf和nrf52840_qiaa_config1_pcb.pdf。这些参考设计的区别在与有的使用芯片的DC/DC模式,有的直接使用USB供电。这些区别会放在第二部分 2、芯片电源模式选择 部分详细叙述。
介绍完芯片的参考设计资料,前面我们还提到官方DK的设计资料也是开源的,进入DK的页面,滑动到下方选择Downloads,可以看到官方DK的设计资料的下载链接。
DK的设计资料包也是一个Zip压缩包,下载并解压后,可以看到两个文件夹,PCA10056是nRF52840 DK的设计资料,PCA641100是DK附带的NFC天线的设计资料。
打开PCS10056文件夹,其子文件夹结构和芯片的参考设计类似。
2、芯片电源选择
上一章节我们讲了同一个芯片有好多种参考设计,它们的区别在于不同芯片选择的主供电电源不同和是否有使用芯片的DCDC模式,我们继续以nRF52840 QIAA的参考设计包为例。
从nrf52840_qiaa_config1、nrf52840_qiaa_config2、nrf52840_qiaa_config3、nrf52840_qiaa_config6中可以看到,这四个参考设计使用了不同的电源做为芯片的主供电,nrf52840_qiaa_config1、nrf52840_qiaa_config2、nrf52840_qiaa_config3用到了芯片的USB,所以给芯片的VBUS引脚供电,其中nrf52840_qiaa_config1参考设计直接用VBUS当作芯片主电源给VDDH引脚供电。
nrf52840_qiaa_config2则使用了单独的VDDH做为芯片主电源给VDDH引脚供电。这两个参考设计的相同点在于,没有为VDD引脚供电,而是将VDD当作Output,即所谓的High Voltage mode,在High Voltage mode下可以把VDD当做电源输出来为其他设备例如传感器供电。
而nrf52840_qiaa_config3和nrf52840_qiaa_config6使用了VDD_nRF当作芯片主电源给VDD和VDDH引脚供电,这种方式被称作Normal Voltage mode。
nRF52840芯片规格书中对于High Voltage mode和Normal Voltage mode的描述如下:
这里需要注意的是QFN48封装的nRF52840,即nRF52840 QFAx中是没有高电压模式的。
从规格书里可以看到NRF52840在高压模式下是支持将VDD当作Output来给其他设备供电,可以通过配置REGOUT0寄存器来配置特定电压
VDD支持的输出电压范围取决于VDDH引脚提供的电源电压。从规格书中可以看到VDDH与VDD的最小差值为0.3V,即当VDDH供电为3.6V时,VDD最大输出电压为3.3V。从下面这个表我们还可以看出,VDD最大的输出电流为25ma(发射功率小于4dBm时)。所以开发者在设计NRF52840的硬件时,如果是较简单的系统,如系统只有NRF52840和一个传感器,且系统由锂电池或USB供电,直接由NRF52840的VDD给传感器供电,但是需要注意传感器的峰值功耗不应大于下表。
最后是电源脚供电电压的值的问题,如下表是NRF52840的VDD、VDDH、VBUS三个脚所支持的电压范围,此内容可以在规格书的Power and clock management一章中找到。
小结:此章节仅以nRF52840为例,不是所有Nordic芯片都支持高压模式与VDD External circuitry supply,切勿生搬硬套到其他型号的Nordic芯片。开发者在开发过程中需要阅读所选择芯片的规格书去做设计。此章节只是提供一个如何根据官方参考设计结合规格书做硬件设计的思路。
3、晶振选择
Nordic的芯片一般外围需要两颗晶振,一颗低频的32.768K,一颗高频的32M。低频晶振负载提供时钟源,高频晶振负载提供射频运行时的频率基准源。
nRF52832有两频率的时钟,64MHz高速时钟和32.768kHz的低速时钟。这两个时钟可由以下电路产生,可通过配置config.h文件来软件选择各自的时钟源。
产生64MHz高速时钟的途径有两个:
(1)64MHz 片上时钟;
(2)用外部32MHz晶振产生64MHz时钟;
产生32.768kHz低速时钟的途径有三个:
(1)32.768MHz片上RC振荡器,精度为+/-250ppm.
(2)用外部32.768kHz晶振产生的32.768kHz的时钟;
(3)由64MHz的时钟综合而成的32.768kHz的时钟;
一般而言,内部的64MHz片上时钟的抖动较大不建议使用,无法满足2.4GHz BLE频率的PLL要求。所以在BLE中,高速时钟必须由外部32MHz晶振产生。
对于低速时钟,如果对时钟精度没有很高的要求,对于PCB面积受限的应用,可以选择使用内部RC,从而省掉外部的32.768K和负载电容。
两颗晶振的参数要求如下:
可以直接按照Nordic官方DK用的晶振参数去选型
4、LDO与DCDC供电模式选择
如下图是nrf52840_qiaa_config2和nrf52840_qiaa_config4参考设计的原理图,这两个参考设计都是用了高电压模式供电,但两者的区别是nrf52840_qiaa_config4的DCC脚和DCCH上接了电感。这里就要引入nRF51/52/53系列芯片的一个重要硬件概念:LDO和DCDC
如下是规格书中芯片的LDO和DCDC模式的介绍,简单的概括就是DCDC模式的功耗会比LDO模式的功耗低
我们可以从Nordic官方给出的在线功耗评估工具来直观的看二者在功耗上的差距:https://devzone.nordicsemi.com/power/w/opp/2/online-power-profiler-for-bluetooth-le
从下面两张图可以看出,同样使用nRF52840,3.3V供电,发射功率为0dBm,使用外部低频晶振,设置广播周期为100ms的情况下,DCDC模式的平均功耗为90uA,而LDO模式的平均功耗为140uA。
5、GPIO的选择
NRF51/52/53系列芯片的外设(除ADC、QSPI、HSPI)是可以在GPIO上自由映射的,没有限定特定的脚位,我们可以从芯片规格书中看到,以NRF52840 QIAA为例。可以从下表中看到部分GPIO的Description中标注了Analog input,这就是可以用做ADC的GPIO。
同样的QSPI脚在Recommended usage中也有标注出来
这里需要注意标注有 low frequency I/O only的GPIO。
关于此类GPIO,Noridc官方的描述是此类GPIO可以用做外设,但是在射频开启时不建议用做10KHz以上的外设,如UART、SPI、I2C、I2S等,射频开启的情况下用这些GPIO做高速外设会影响射频性能。
看到这里可能部分初学者会对芯片DEC脚的作用产生疑问。芯片带有DEC的脚位是芯片的退耦脚,需要外接退耦电容。退耦电容的接法和值在芯片的参考设计中已经给出,直接照搬参考设计即可。关于退耦电容的作用,感兴趣的读者可以自行搜索,简单来说,退耦电容是用来消除输入的电流在芯片中产生的震荡和自激电流用的。
关于外设的类型和数量,可以在芯片规格书的首页看到,以NRF52840为例:
如果你对选择外设和GPIO有困难,也可以直接选择Nordic官方DK使用的外设接口,可以在SDK的PCA100xx.h文件夹中找到,继续以NRF52840为例,NRF52840对应的外设头文件为PCA10056.h
如果你选择的是其他的芯片,如NRF52832,去对应的PCA10040.h即可,下面是Nordic系列芯片对应的开发板名称
PCA10040对应NRF52832
PCA10010对应NRF52810
PCA10056对应NRF52840
PCA10056e对应NRF52811
PCA10010对应NRF52833
PCA10010e对应NRF52820
PCA10028对应NRF51422/51822/51802
6、天线与匹配电路
按照Nordic给出参考设计,设计完最小系统,并选定外设的GPIO和供电电源之后,就剩下天线和匹配电路了。天线可以选择现成的2.4G陶瓷天线或是PCB天线,也可以以IPEX座的形式将天线引出到板外,使用体积更大的外接天线获得更好的信号。具体关于天线和匹配电路的问题,我会放在下一篇文章里面去详细讲。这里需要注意的是,Nordic给出的参考设计并没有预留天线的匹配电路,所以建议开发者在设计硬件原理图的时候,预留一个Π型匹配电路,方便后期调试天线。参考电路如下,R1、C25、C26共同组成了Π型匹配网络,初始值可以预留为R1=0R、C25=C25=N.C.。
总结:本文提供的是使用Nordic芯片做硬件设计的基本思路,按照上述步骤完成Nordic芯片的硬件设计之后,就可以进行下一步的Layout了。
Nordic nRF52系列/nRF5340硬件设计(一)选型及原理图设计的更多相关文章
- nordic——nrf52系列SWD设置回读保护
在开发时可能需要回读保护功能,在产品出厂后这个功能可以让你的代码更加安全,无法用SEGGER或者其余方式读取你的代码HEX文件,也就是禁用SWD下载接口.但是SWD锁住了,还想使用(从新下载代码)也是 ...
- nRF52系列来袭,Nordic的低功耗蓝牙方案大有可为
坐落在北欧的挪威不像他的邻居芬兰那样,可以先后依靠NOKIA和愤怒的小鸟在世界科技界享有盛名.在一般人看来,挪威除了一个逐渐式微的Opera浏览器以外,并没有更多拿得出手的科技企业.而事实证明这只 ...
- NRF52840相对于之前的NRF52系列、NRF51系列增加了什么功能
现在广大客户的蓝牙采用NORDIC越来越多了,NORDIC一直在不断进行技术改进更好的满足市场需求 推出了新款NRF52840.NRF52840更为先进些,支持的功能也多点,比如IEEE802.15. ...
- nRF52系列——nRF52832来袭
nRF52系列——nRF52832来袭 Nordic凭借着在无线技术的数十年深耕,推出第一个μBlue芯片-- nRF8001.其低功耗等特性在当时吸引了无数厂商的目光,并将这产品应用到多个领域,再之 ...
- SLAM+语音机器人DIY系列:(四)差分底盘设计——2.stm32主控软件设计
摘要 运动底盘是移动机器人的重要组成部分,不像激光雷达.IMU.麦克风.音响.摄像头这些通用部件可以直接买到,很难买到通用的底盘.一方面是因为底盘的尺寸结构和参数是要与具体机器人匹配的:另一方面是因为 ...
- Android系统编程入门系列之硬件交互——通信硬件USB
在硬件交互的首篇对设备硬件的分类中,互联通信系列硬件主要用来与其他设备进行数据交互.从本文开始,将重点介绍该系列相关硬件. 互联通信系列硬件 根据硬件的可通信距离,由近及远分为USB.NFC.蓝牙.W ...
- 【转】App架构设计经验谈:接口的设计
App架构设计经验谈:接口的设计 App与服务器的通信接口如何设计得好,需要考虑的地方挺多的,在此根据我的一些经验做一些总结分享,旨在抛砖引玉. 安全机制的设计 现在,大部分App的接口都采用REST ...
- GPS部标平台的架构设计(九)-GPS监控客户端设计
交通部的部标过检,所有的测试都是从客户端发起的,也是在客户端体现的,在客户端承载了部标标准所要求的所有的功能,是整个部标平台当中工作量最大的部分,也是最繁琐的部分. 客户端设计面临两个问题: 1.基于 ...
- Modelsim-altera 仿真 顶层原理图设计的FPGA
我的原理图采用的是bdf的顶层原理图的设计,仿真工具用的是modelsim-altera,调用仿真后的错误提示: # ** Error: (vsim-3033) C:/Users/lenovo/Des ...
- 如何去设计一个自适应的网页设计或HTMl5
如何去设计一个自适应的网页设计或HTMl5 如今移动互联网随着3G的普及,越来越火爆,更多需求跟随而来!APP应用市场和APP应用数量成倍成倍的增长!从而给移动互联网带来新的挑战! 移动设备正超过桌面 ...
随机推荐
- OO课程第二阶段(实验和期中试题)总结Blog2
OO课程第二阶段(实验和期中试题)总结Blog2 前言:学习OOP课程的第二阶段已经结束了,在此进行对于知识点,题量,难度的个人看法. 学习OOP课程的第二阶段已经结束了,较第一次阶段学习难度加大,学 ...
- docker临时指定时区
如果制作镜像时,未配置时区,默认指向了 UTC ,可使用类似如下方式临时指向北京时间,或上海时间 docker exec -it --user=root gitlab-ce_12.2.4 ln -sf ...
- python——pkl文件
pkl文件是python里面保存文件的一种格式,如果直接打开会显示一堆序列化的东西. cPickle在python3中更名为pickle 使用方式如下: import pickle as p shop ...
- 游戏内存优化之使用16位纹理/NPOT
转自:https://blog.csdn.net/oqqQuZi1234567/article/details/41749599 图片文件大小和纹理内存占用是两码事.假设他们是帐篷.图片文件就相当于帐 ...
- MMDetection中模型的Checkpoints下载
mmdetection中的模型checkpoints是需要自己手动下载的,下载步骤如下: 打开mmdetection, 进入configs目录,可以看到这里面有很多以目标检测模型命名的文件夹,选择你想 ...
- MySql 在 Linux 下的安装与基础配置
使用版本:Mysql (5.7) Linux(CentOS 7.2) 1.安装 1)下载MySQL官方的 Yum Repository wget -i -c http://dev.mysql.com/ ...
- 10.14 2020 实验 7:OpenDaylight 实验——Python 中的 REST API 调用
一.实验目的 对 Python 调用 OpenDaylight 的 REST API 方法有初步了解. 二.实验任务 本实验需要用另一种方法完成上一个实验相同的功能,即通过 Python 程序 ...
- 深入理解css 笔记(9)
模块化 CSS 是指把页面分割成不同的组成部分,这些组成部分可以在多种上下文中重复使用,并且互相之间没有依赖关系.最终目的是,当我们修改其中一部分 css 时,不会对其他部分产生意料之外的影响. ...
- 深入理解css 笔记(7)
前面讲了几种控制网页布局的方式,flex,gird 和 float.这下我们初略讲下 position.这个我日常中用到的已经挺多了.定位和其他控制文档流的行为不同.它将元素彻底从文档流中移走,它 ...
- 背景图片 css写法
background: url('../../assets/sj-my.png') no-repeat; background-size: 100% 100%;