Nordic nRF52系列包括nRF52832/nRF52840/nRF52810/nRF52811等芯片,nRF51系列包括nRF51822/nRF51422/nRF51802等芯片,开发者可以按照如下流程去评估和开发nRF52/51应用解决方案
如果你英文比较好的话,建议直接阅读Nordic官方的“nRF5 Getting Started”:https://infocenter.nordicsemi.com/index.jsp?topic=%2Fug_getting_started%2FUG%2Fgs%2Fproduct_development.html&cp=1_0,介绍得非常详细,我下面的文章也是在该文基础上加工整理而得。
1. 第1步:芯片选型评估,选择适合你的芯片型号。
1.1 粗略选型
首先大家可以快速浏览如下网页内容:https://www.nordicsemi.com/Products/Low-power-short-range-wireless/Bluetooth-low-energy,以对Nordic每个芯片的最主要特性有个大致了解,下面为页面部分截图:
上面是Nordic低功耗蓝牙产品横向对比页面,如果你需要看Nordic其他解决方案,比如Zigbee或者蜂窝网IoT,请参考如下页面:
1.2仔细查看芯片具体参数
这个主要通过查阅nRF51/52 spec来实现的。nRF52系列芯片都只有一份spec,spec包含了芯片外设模块功能概述,电气特性参数,应用参考电路,封装和订购信息等内容,请注意电气特性放在每一个外设模块章节的最后面。nRF51系列芯片共用同一份参考手册,同时不同的型号还有各自的一份独立数据spec。参考手册主要描述各外设模块的功能及原理,spec则具体罗列本型号的电气特性参数,应用参考电路,封装和订购信息等。Nordic有一个Infocenter,你需要的任何文档都可以在这里找到,Infocenter链接为:https://infocenter.nordicsemi.com/index.jsp,界面如下所示。nRF52/51芯片spec就可以在infocenter下载。
2. 第2步:选择SDK版本号以及相应的协议栈类型和版本。
推荐使用最新版的SDK以及SDK自带的协议栈,nRF52系列产品开发推荐使用nRF5 SDK 15.3.0,nRF51系列产品开发推荐使用nRF5 SDK 12.3.0。SDK官网下载地址为:https://www.nordicsemi.com/Software-and-Tools/Software/nRF5-SDK/Download#infotabs。至于协议栈,一般推荐SDK安装目录里面自带的协议栈,这个兼容性好,开发最简单。不过有时在Nordic官网下载SDK的时候,比如SDK15.2.0,官网会自动绑定一个比SDK安装目录里面自带的协议栈版本更高版本的协议栈,那么这个时候推荐使用该绑定的高版本协议栈,原因如下:
再完美的协议栈难免也会有bug,此时Nordic会把bug修复的协议栈单独发布出来,比如nRF5 SDK 15.2.0自带的S140协议栈版本为6.1.0,一般来说,直接用这个版本的协议栈就可以了,但是这个版本的协议栈的主机模式有一个小bug,为此Nordic单独发布了6.1.1版S140协议栈,此时用户就需要去官网单独下载这个最新版的协议栈了。记住,大家只需要下载版本号数字最后一位有变化的即可,比如6.1.1相比6.1.0,最后一个数字有升级,那么推荐大家直接下载下来,然后覆盖原来老的协议栈即可。如果版本号第1个数字就有变化,意味着两个版本的协议栈是不兼容的,此时一般SDK也会跟着升级的,比如7.0.0相比6.1.0,这个就属于大升级了,此时建议直接使用与之配套的最新版本SDK来进行开发,而不是把协议栈进行简单覆盖。(当然,你也可以自己把7.0.0的协议栈移植到老SDK中,这个稍微麻烦一些,不过Nordic也有相关移植文档供大家参考)。如下列出了常用协议栈的发布页面:
- S140协议栈最新版本查询页面:https://www.nordicsemi.com/Software-and-Tools/Software/S140/Download#infotabs
- S132协议栈最新版本查询页面:https://www.nordicsemi.com/Software-and-Tools/Software/S132/Download#infotabs
- 其他类型协议栈,比如S130, S112,S110等,请按照上述方式自己去寻找相应下载页面。
大部分用户使用Nordic产品的时候都会使用Nordic协议栈,而协议栈是会占用一定的Flash,RAM以及某些外设模块的,大家评估的时候一定要把协议栈占用的资源扣除,然后再评估剩下的资源够不够用。而且开发Nordic产品的时候,经常需要跟协议栈打交道,因此强烈建议大家读一下协议栈spec,以大致了解Nordic协议栈的原理以及一些关键性能参数,如下为Nordic nRF52系列使用到的各种协议栈spec下载页面:
欲进一步了解SDK和softdevice请参考:Nordic nRF5 SDK和softdevice介绍
3. 第3步:申请Nordic nRF52/51官方开发板(Development Kit,DK)
Nordic绝大多数例子都是在nRF51/52官方开发板上开发和测试的,手上有nRF51/52开发板将大大方便软件工程师的开发。nRF51/52开发板也可以作为参考板来排查用户板问题。在生产测试的时候,nRF51/52开发板还可以作为gold sample去测试用户板的射频性能是否合格。最后,nRF51/52开发板还带一块正版Jlink芯片,也就是说nRF51/52开发板本身就是一个Jlink烧写器,不仅可以用来烧写板子上的nRF51/52芯片,还可以用来烧写其他用户板上的Jlink芯片。一个正版Jlink烧写器在淘宝上售价为1000人民币左右,而Nordic nRF51/52开发板官方售价才39美金,正可谓“价格厚道,感动人心”。(PS:如果你拿到Nordic nRF51/52官方DK的话,你会发现Nordic DK做工是业界最好的,没有之一!)
- nRF52832/nRF52810共用同一块开发板,编号为PCA10040,DK购买链接为:https://www.nordicsemi.com/About-us/BuyOnline?search_token=nRF52-DK。DK说明文档请参考Infocenter相关链接:https://infocenter.nordicsemi.com/index.jsp?topic=%2Fug_nrf52832_dk%2FUG%2Fnrf52_DK%2Fintro.html&cp=3_1_4,nRF52810额外开发说明文档链接:https://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.sdk5.v15.3.0%2Fnrf52810_user_guide.html。
- nRF52840开发板编号为PCA10056,DK购买链接为:https://www.nordicsemi.com/About-us/BuyOnline?search_token=nRF52840-DK,DK说明文档请参考:https://infocenter.nordicsemi.com/index.jsp?topic=%2Fug_nrf52840_dk%2FUG%2Fnrf52840_DK%2Fintro.html&cp=3_0_4。除了DK,nRF52840还有一个dongle也可以用来做开发,Dongle编号为PCA10059,购买链接为:https://www.nordicsemi.com/About-us/BuyOnline?search_token=nRF52840DONGLE。说明文档:https://infocenter.nordicsemi.com/index.jsp?topic=%2Fug_nrf52840_dongle%2FUG%2Fnrf52840_Dongle%2Fintro.html&cp=3_0_5。
- nRF51开发板编号为PCA10028,DK购买链接为: https://www.nordicsemi.com/About-us/BuyOnline?search_token=nRF51-DK,DK说明文档请参考:https://infocenter.nordicsemi.com/index.jsp?topic=%2Fstruct_nrf51%2Fstruct%2Fnrf51_development.html&cp=4_1
- Nordic官方DK是长下面这个样子的,不要弄错了
4. 第4步:电路设计
推荐直接按照nRF51/52 spec中的参考电路原理图和layout来设计自己的电路和布板,同时Nordic提供了实际的电路图和Gerber file,大家可以直接查看BOM清单,以及沿用里面的nRF5器件封装。
- nRF52832/52810 DK电路图:https://www.nordicsemi.com/Software-and-Tools/Development-Kits/nRF52-DK/Download#infotabs
- nRF52840 DK电路图:https://www.nordicsemi.com/Software-and-Tools/Development-Kits/nRF52840-DK/Download#infotabs
- nRF52840 Dongle电路图:https://www.nordicsemi.com/Software-and-Tools/Development-Kits/nRF52840-Dongle/Download#infotabs
- nRF51 DK电路图:https://www.nordicsemi.com/Software-and-Tools/Development-Kits/nRF51-DK/Download#infotabs
- nRF52832参考电路:https://www.nordicsemi.com/Products/Low-power-short-range-wireless/nRF52832
- nRF52840参考电路:https://www.nordicsemi.com/Products/Low-power-short-range-wireless/nRF52840
- nRF52810参考电路:https://www.nordicsemi.com/Products/Low-power-short-range-wireless/nRF52810
- nRF52811参考电路:https://www.nordicsemi.com/Products/Low-power-short-range-wireless/nRF52811
- nRF51参考电路:https://www.nordicsemi.com/Products/Low-power-short-range-wireless/nRF51822
如果大家想深入理解蓝牙应用电路设计和布板的一些知识,可以参考Nordic提供的这个教程:https://devzone.nordicsemi.com/tutorials/25/。
第5步:蓝牙射频性能调试
蓝牙射频性能最关键的三个影响因子:匹配电路调试,天线设计调试以及晶振选择,Nordic都有相应的指导文件。
5.1 匹配电路调试
请参考Nordic white paper 013:https://infocenter.nordicsemi.com/pdf/nwp_013.pdf?cp=12_14
5.2 天线设计
请参考Nordic white paper 017:https://infocenter.nordicsemi.com/pdf/nwp_017.pdf?cp=12_11
5.3 晶振选择
请参考Nordic white paper 015:https://infocenter.nordicsemi.com/pdf/nwp_015.pdf?cp=12_12
所有white paper和application note都放在Infocenter如下地方:https://infocenter.nordicsemi.com/index.jsp?topic=%2Fstruct_appnotes%2Fstruct%2Fappnotes.html&cp=11以及https://infocenter.nordicsemi.com/index.jsp?topic=%2Fstruct_whitepapers%2Fstruct%2Fwhitepapers.html&cp=12
第6步:电路图和layout review
Nordic或其代理商免费提供原理图和layout review服务,我们可以将原理图和layout提交给Nordic代理商或者Nordic Devzone进行审核。Devzone一般1到2个工作日就会给予你答复。电路图提交流程请参考文章:Nordic官方网络资源介绍(官网/devzone/GitHub)(第2节:Nordic Devzone(开发者论坛))。Devzone提交电路图review的界面是长下面这个样子的:
7. 第7步:打板
如何贴片,Nordic也有相应的指导文件,目前Nordic芯片只有QFN,WLCSP和aQFN三种封装,相关贴片指导说明都放在application note中:https://infocenter.nordicsemi.com/index.jsp?topic=%2Fstruct_appnotes%2Fstruct%2Fappnotes.html&cp=11
8. 第8步:射频性能测试
如果自己有专门的BLE测试设备,那么你可以自己来测试板子RF性能。如果你没有BLE测试设备,也没有关系,Nordic或其代理商免费提供BLE测试服务。只要把板子寄给Nordic代理商实验室,或者Nordic实验室,或者第三方实验室,比如R&S实验室,他们就能帮你完成BLE性能和符合性测试。你可以根据实验测试结果对板子进行二次整改。一般而言,专业的蓝牙测试设备都遵守DTM(Direct Test Mode)规范,所以设备端(nRF5端)只需下载DTM固件就可以与之通信并完成相关测试。Nordic每一版SDK都包含每颗芯片的DTM固件,建议大家使用SDK15.3.0里面的DTM程序,测试说明请参考:https://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.sdk5.v15.3.0%2Fble_sdk_app_dtm_serial.html&cp=5_1_4_5。
另外,在这里推荐一种简单RF测试方法,即跟Nordic官方 DK进行通信距离比对测试。可以把SDK中的HRS(Heart Rate application)程序分别下载到Nordic DK和你的用户板中,然后分别连上手机,看看手机跟DK的通信距离有多远?再看看你的用户板跟手机通信距离有多远?如果两者差不多,说明你的用户板RF性能不错。HRS程序放在SDK目录:<InstallFolder>examplesle_peripheralle_app_hrs,测试说明见:https://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.sdk5.v15.3.0%2Fble_sdk_app_hrs.html&cp=5_1_4_2_2_13。
第9步:功耗测试
低功耗蓝牙应用一般都是用电池供电的,所以对功耗要求非常高。如何有效快速的测试nRF5的功耗,尤其是BLE各种应用场景下的功耗,就显得尤为重要。Nordic提供了一个在线的理论功耗计算工具:https://devzone.nordicsemi.com/power/,你只需输入你的蓝牙应用场景,该在线工具就可以自动算出这种场景下nRF5芯片的功耗大概为多少,网页截图如下所示:
该工具的使用说明请参考:https://devzone.nordicsemi.com/b/blog/posts/nrf52-online-power-profiler。
除了这个在线的理论功耗计算工具,Nordic还提供了一块电流测试板:PPK(Power Profiler Kit),PPK可以用来实时测试用户板的VDD功耗,就像专业的电源测试工具或者示波器一样,PPK购买链接为:https://www.nordicsemi.com/About-us/BuyOnline?search_token=nRF6707, 使用说明请参考:https://www.nordicsemi.com/Software-and-Tools/Development-Kits/Power-Profiler-Kit/Download#infotabs。
如果对BLE功耗测试原理感兴趣的话,可以参考如下两篇贴子:https://devzone.nordicsemi.com/tutorials/b/hardware-and-layout/posts/current-measurement-guide-introduction和https://devzone.nordicsemi.com/tutorials/b/hardware-and-layout/posts/nrf51-current-consumption-guide
一般来说,测试BLE功耗时,nRF5可以下载HRS程序(关掉UART日志功能)或者power profiling程序,这2个程序都可以准确反应nRF5芯片的蓝牙功耗情况。Power profiling程序放在SDK目录:<InstallFolder>examplesle_peripheralle_app_pwr_profiling,测试说明见:https://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.sdk5.v15.3.0%2Fble_sdk_app_pwr_mgmt.html&cp=5_1_4_2_2_20。HRS程序放在SDK目录:<InstallFolder>examplesle_peripheralle_app_hrs,测试说明见:https://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.sdk5.v15.3.0%2Fble_sdk_app_hrs.html&cp=5_1_4_2_2_13。
10. 第10步:勘误表自查
勘误表(Errata或者PAN)内容一般都是关于软件开发注意事项的,软件出问题的时候或者正式量产之前,建议自查一下勘误表,以防踩到“坑”。请注意,虽然勘误表里面的条目很多,但真正跟你有关系的其实很少,原因有二:一勘误表里面的workaround已经集成到SDK里面,二错误出现的条件非常极端,你的应用不会有这种情况,所以不要被勘误表长长的列表给吓倒了。如果你使用的是最新版本的SDK和最新版本的芯片,一般而言,勘误表跟你无关,但如果你使用的是老版本SDK或者老版本芯片,那么就一定要自查勘误表了。
- nRF52840勘误表:https://infocenter.nordicsemi.com/index.jsp?topic=%2Fstruct_nrf52%2Fstruct%2Fnrf52840_errata.html&cp=3_0_1
- nRF52832勘误表:https://infocenter.nordicsemi.com/index.jsp?topic=%2Fstruct_nrf52%2Fstruct%2Fnrf52832_errata.html&cp=3_1_1
- nRF52810勘误表:https://infocenter.nordicsemi.com/index.jsp?topic=%2Fstruct_nrf52%2Fstruct%2Fnrf52810_errata.html&cp=3_3_1
- nRF52811勘误表:https://infocenter.nordicsemi.com/index.jsp?topic=%2Fstruct_nrf52%2Fstruct%2Fnrf52811_errata.html&cp=3_2_1
- nRF51822勘误表:https://infocenter.nordicsemi.com/index.jsp?topic=%2Fstruct_nrf51%2Fstruct%2Fnrf51822_pan.html&cp=4_4_1
11. 第11步(可选):认证
根据产品需要,你可以去做BQB认证,SRRC认证,FCC认证,ETSI认证,环保测试等。Nordic产品本身已经通过了上述所有测试和认证,对用户来说,这些认证工作,更多的是一些文档工作。一般来说,推荐用户去选择一家专业的实验室或者第三方机构去做这些认证,这样可以保证通过而且不耽误项目进度。
Nordic提供了两套射频测试固件,一套是DTM测试代码,符合蓝牙DTM标准,位于目录:SDK安装目录examplesdtmdirect_test_mode,具体说明请参考:https://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.sdk5.v15.3.0%2Fble_sdk_app_dtm_serial.html&cp=5_1_4_5;一套是Radio test测试代码,用于直接测试各个射频通道物理性能,比如频偏等,位于目录:SDK安装目录examplesperipheral adio_test,具体说明请参考:https://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.sdk5.v15.3.0%2Fnrf_radio_test_example.html&cp=5_1_4_6_29。BQB认证或者SRRC认证,一般推荐使用DTM代码。另外如果你需要测试2.4G丢包率,也推荐使用DTM代码,这个在量产测试的时候非常有用。当然,SRRC认证也可以使用radio test代码,radio test代码除了可以测试蓝牙和2.4G,还可以用来测试802.15.4的物理层,比较适合用来进行定频测试以及频偏测试等。
BQB认证分终端产品和底层component两种认证,做终端产品认证需要用到component认证证书,即QDID,大家可以到如下的蓝牙联盟官网查询Nordic所有认证产品的 QDID:https://launchstudio.bluetooth.com/Listings/Search,在搜索框输入“Nordic Semiconductor ASA”,即可搜出Nordic所有QDID。
除了上述认证,Nordic还提供如下报告:
- 企业责任报告:https://www.nordicsemi.com/About-us/Corporate-social-responsibility。
- QA相关文档及证书:https://www.nordicsemi.com/About-us/Quality-Assurance。
- 环境报告也是放在infocenter里面:https://infocenter.nordicsemi.com/index.jsp,大家可以在各个产品系列中找到对应的环境报告,比如nRF52的环境报告链接如下所示:
12. 第12步:搭建量产烧写环境
Nordic不提供量产烧写器,不过有很多第三方机构,比如希尔特,以及Nordic代理商都有相关量产用的烧写工具。其实,支持SWD接口的Jlink烧写器都可以用来烧写Nordic产品(淘宝上有很多)。虽然Nordic不提供量产烧写器,但是Nordic提供了一个量产烧写软件nrfjprog,而且nrfjprog有可执行文件,DLL库,Python接口等多种存在形式,同时支持Windows,Linux和Mac系统。nrfjprog的可执行文件和动态库在安装nRF5x Command Line Tools时就会自动安装好,可执行文件nrfjprog放置在如下目录:
然后在Windows环境变量中添加上述目录,如下:
你就可以在Windows命令行中执行nrfjprog命令,如下:
nrfjprog支持的命令非常多,比如擦除,烧写代码,读寄存器,复位等,具体使用说明请参考:https://infocenter.nordicsemi.com/index.jsp?topic=%2Fug_nrf5x_cltools%2FUG%2Fcltools%2Fnrf5x_nrfjprogexe.html&cp=6_1_3。
如果你想基于nrfjprog DLL来开发自己的量产烧写工具,请参考:https://infocenter.nordicsemi.com/index.jsp?topic=%2Fug_nrf5x_cltools%2FUG%2Fcltools%2Fnrf5x_nrfjprogdll.html&cp=6_1_4。
现在Python非常流行,如果你想开发Python版的量产烧写工具,nrfjprog也提供了相关库:pynrfjprog,相关使用说明请参考:https://infocenter.nordicsemi.com/index.jsp?topic=%2Fug_pynrfjprog%2FUG%2Fpynrfjprog%2Fpynrfjprog_lpage.html&cp=6_2。
如果你不想使用nrfjprog,而想使用标准的SWD指令去直接操作nRF5芯片,那么请参考white page 027:https://infocenter.nordicsemi.com/index.jsp?topic=%2Fnwp_027%2FWP%2Fnwp_027%2Fintro.html&cp=12_4。
方法多种多样,选择适合你的就好。
13. 第13步:搭建生产测试环境
一般来说,有2种生产测试方法:一是使用昂贵的专业设备来进行生产测试,比如Litepoint,Anritsu等,二是使用Nordic的nRF51/52 DK作为gold sample去测试DUT,成本低廉效果也不错。具体请参考Nordic application note 034:https://infocenter.nordicsemi.com/index.jsp?topic=%2Fstruct_appnotes%2Fstruct%2Fappnotes_nan34.html&cp=11_3
14. 第14步:小批量试生产
重点观察产品一致性,良率和产能。
15. 第15步:大批量生产
产品上市!
上面更多的是站在一个硬件工程师角度去评估,选型和开发一个产品,除此之外,软件选型也是非常重要的。软件开发的便捷性将直接影响产品的上市时间,SDK的稳定性和可维护性将直接影响后期人力资源的再投入,对很多公司来说,“软”投入已经大大超过“硬”投入了,所以软件选型也变得越来越重要了。很多人都觉得Nordic产品的功耗做得非常低,很了不起,不过个人感觉,Nordic真正的杀手锏优势不是低功耗,而是其提供的SDK开发起来非常方便,运行也非常稳定,开发者不需要把自己的精力花在帮Nordic找bug和解bug上,而只需专注在自己的业务逻辑开发上。关于Nordic SDK开发环境搭建,请参考: