7002DK测评
很高兴能得到此次的测评机会,我本事的工作就有和蓝牙打交道,一直都知道Nordic 是蓝牙的TOP 1,但由于不是系统的学习,都是项目上遇到实际的问题,东一榔头西一棒子的乱撞、看文档,去解决问题。期间也学会是用抓包器去监听蓝牙空中交互的数据,但是还是感觉对蓝牙不太熟悉,所以十分感谢能到得到本次的测评机会!
板子靓照
资料收集
一个芯片平台的开发最重要的就是要收集到足够多的资料,原厂都会整理文档、入门教程、应用手册等等资料来帮助开发者快速入门,特别是Nordic 这种国际大厂,资料特别完善!(好多英文资料啊,啃得好辛苦)。
注意在下载Nordic存放在github上的资料 和 下载官方的资料都要用科学上网比较好,不然下载资料需要等待很久,如果是访问网页上的文档、资料的话,是可以正常、快速的访问的。可见Nordic是有为中国的开发者做了一些工作的,所以请问Nordic可以更进一步的把代码放在中国国内的代码托管平台(gitee) 或者 在提供一个中国能够快速访问与获取的资料服务器呢?感谢!
中文官网 : HYPERLINK "http://www.nordicsemi.cn"
英文官网 : HYPERLINK "http://www.nordicsemi.com"
中文官网7002DK相关资料下载(含硬件资料):https://www.nordicsemi.cn/tools/nrf7002dk/
Nordic 开发者论坛: HYPERLINK "https://devzone.nordicsemi.com+" 7002在线文档 : HYPERLINK "https://infocenter.nordicsemi.com/topic/ps_nrf7002/keyfeatures_html5.html"
5340在线文档 : HYPERLINK "https://infocenter.nordicsemi.com/topic/ps_nrf5340/keyfeatures_html5.html"
Nordic GitHub仓库 :https://github.com/nrfconnect
以上是一些官方的资料网址。
1、SDK(Software development kit)
目前,Nordic有两个并行的软件开发工具包(SDK):传统的Keil(MDK 5)SDK和全新的nRF Connect SDK(简称NCS),部署在Vscode上运行。这两个SDK是相互独立的,开发者可以根据习惯与需求选择其中一个进行开发,但是新开的项目建议使用NCS,而老旧的项目处于维护的原因还是使用keil SDK即可。
一般而言,如果用的芯片是nRF51系列或nRF52系列,可以使用nRF5 SDK。如果用的是Nordic最新的产品系列,例如nRF53或nRF9160,那么使用nRF Connect SDK。
另外,如果用的是nRF52芯片,但需要使用最新的射频技术,如蓝牙测向、蓝牙Mesh v1.1、低功耗蓝牙音频等,也需要使用nRF Connect SDK(NCS)。
2、开发者社区
HYPERLINK "https://devzone.nordicsemi.com+"
开时遇到问题、收集资料时,可以在这个社区里搜索一下,可以找到别人问过的问题,以及解决的方法!非常有用!!
开发环境安装
开发环境安装
1、安装nRF-Command-Line-Tools
HYPERLINK "https://www.nordicsemi.com/Products/Development-tools/nRF-Command-Line-Tools/Download"
点击高亮即可下载!
安装nRF Connect for Desktop
HYPERLINK "https://www.nordicsemi.com/Products/Development-tools/nRF-Connect-for-Desktop/Download"
点击高亮即可下载
PS:嫌浏览器下载慢的话,可以使用迅雷下载,会比较快
安装以上的软件的时候,会提示安装其他的软件,安装提示安装即可!
下载代码
等待安装即可
按照提示打开Vscode,并且按照弹框安装Vscode的插件即可!
等待插件安装完毕后,在Vscode的左边侧边栏可以看见有 Nrf connect,点击。
安装安装路径选择即可
点击开启第一个点灯工程,路径在下面的第一张图
下图是成功打开例程的样子,紧接着我们如下图打开终端,方便观察编译的相关信息。
随后选择nrf connect build 终端 后点击”build”,
以下是编译成功的信息,会提示现在已占用的Flash 和 RAM的大小与百分比
随后在确保连接正确、可靠的情况下点击”Flash”,就可以下载代码,右边的终端会显示下载的进度与信息
最后,我们观察开发板,就可以发现有一颗灯在闪烁!
至此,环境已经搭建完毕,下面请看一些大大的乌龙,**各位读者不要遇到!
小结
乌龙1
请注意编译的文件与编译工程?的联系,不然会一直下载到没有编译(旧的、未经修改的)的代码!!
一定要确认编译 和 下载的代码是同一个!!
多余build可以按右删除,如下图
乌龙2
一开始不懂没有阅读 指导手册的时候,把右上角的USB口认为是J-Link,电脑一直识别不到设备!阅读后才发现需要插左边的USB口才连接着J-Link。
使用开发板的流程是简介左边的USB口(J2),拨动Powe switch(SW8)到ON,就可以看见LED5点亮 和 右上角的LED1 和 LED2 在闪烁。
点灯成功之后
在成功点亮第一颗LED后,我是第一次使用NCS,所以查看一下代码,想改改延时时间 和 IO口,熟悉一下新的代码。
修改LED的间隔时间,一眼就看到了,修改 SLEEP_TIME_MS 这个宏即可,并且时间单位是毫秒。修改后就可用修改LED点亮的间隔时间。
但是我始终看不明白LED 的IO在哪里设定的,与led0相关的宏,就是一直没看见哪里写着IO口。
随后我去看了原理图,从原理图上可以看到Led是P1.06。找了很久根本找不到!!
经过百度后发现“ Nordic最新的开发包NCS(nRF Connect SDK)相对于原来的nRF5 SDK来说,最大的更新莫过于采用了Zephyr系统。”“为了使Zephyr自带的硬件驱动代码能够通用,Zephyr采用了DeviceTree来描述硬件”
Zephyr 是 Linux 基金会推出的一个适用于物联网的小型可伸缩的实时操作系统,支持多种处理器架构。
但是Zephyr在国内的搜索引擎上根本没有多少热度,更少见有相关的讨论 与 文章,
下面是Nordic 官方在B站分享的相关教程网址:
详解Zephyr设备数与设备驱动模型 HYPERLINK "https://www.bilibili.com/video/BV1L94y1F7qS"
**Nordic 能多多分享 推广相关知识,吸引更多人的使用,一起构建生态。(Nordic入职肯定会有相关培训的,能不能整理一下没有敏感资料的部分分享一下呢??)
下图是按照提示找到的设备树描述文件。
随后在 nrf connect发现了DeviceTree,点击后可以看见,所有引脚的配置都呈现出来了!!
我们找到P1.06可以看见它有两个功能一个是作为普通IO 和 PWM 引脚使用,点击外面的红色箭头,就可以看见配置信息了。
它就是LED0!!
编译问题
偶然间我出现了一个问题,就是之前可以正常点灯的工程与代码的基础上,再次添加新的历程(效果如下图),按照之前的方法编译、烧录都成功之后就发现但是无法实现该例程的效果。
我仔细对比了之前的编译和烧录信息,并没有什么不同,并且使用了programmer的工具里的“擦除全部”
擦除后重新下载了也没有用!一段时间后我放弃了例程,重新导入一个全新的例程编译之后,可以正常烧录并实现该工程的功能!
于是我”clean build configuration”,清除相关配置,然后重新配置后就可以了!
这个问题应该是编译的相关文件错误导致的,但是没有找到,就从头添加了!问题解决!
在Nordic 居然还在 Vscode的终端里集成了串口工具,直接就可用显示串口的数据了!!
以上的LOG是按键检查 与 点灯例程里的LOG路径 → x:\ncs\v2.3.0\zephyr\samples\basic\button
代码中的回调函数中的打印信息!
总结
硬件
Nordic毫无保留的开放了开发板相关的PCB原文件、bom、生产文件,甚至nfc线圈的fpc源文件,还非常贴心的生成了可交互式的PDF给没有装AD的人使用。
如下图,开发板后面的丝印,包含了一些基本的引脚定义、引脚功能、短接/断开切换不同的功能的提示,在开发的时候就可以不用去查找原理吐了,很方便!!
众所周知Nordic 是专业做低功耗、无线的,开发板上有非常全面的测量功耗的设计,可以非常方便测量某的期间的功耗!
这个是7002DK,所以提供了最方便的接口直接测量7002这颗IC的独立功耗!
测量供电的VCC独立走线,可以单独测试7002的功耗,非常方便!
7002DK开发板,还有配置双双刀双掷 (DPDT) 模拟开关用于切换连接不同的外设,上图可以看见一个是接到USB虚拟串口(通过挂载一个USB虚拟串口设备到电脑上,可以直接使用),一个是接到普通的串口(普通的串口需要外接串口,转USB后才能被电脑识别),非常方便开发者配切换使用不同的外设!
软件生态
调试的时候遇到相关问题在网络上随便搜索第一、第二条信息都是Nordic的开发者社区的帖子,查找问题是非常方便、快捷的!
nRF Connect SDK
nRF Connect SDK即 NCS 和Nordic旧的开发方式最大的区别就是使用了Zephyr的DeviceTree来做硬件、外设相关驱动代码的分层。
这一点可能对一些个人用户来说没有什么比较重要的感悟与体验,但是对公司类型的用户维护产品线类的项目非常、非常、非常重要。
比如当我完成了这条产品线的第一个产品开发之后,在推广不同客户的时候,往往会遇到一些客户,想换他自己比较熟的一些外设。比如说一个蓝牙环境温度采样的设备,会间隔一段时间采集一下温度,上报给主机,对于其他应用(比如蓝牙)代码而言,你是什么牌子?什么类型的温度传感器?对于应用本身来说,一点都不重要,只要你能按照正常的途径上报温度就可以了。
但是往往我们的代码没有一个优秀的分层机制,往往会把这些耦合在应用代码里,没办法简单、快速的分离,造成更换传感器的时候,十分麻烦甚至产生严重的问题。
Nordic 使用Zephyr引入了DeviceTree这一成熟的方案,使用设备树目的是解耦硬件配置信息,可以描述硬件的数据结构等信息,对于同一SOC的不同主板,只需更换设备树文件即可实现不同主板的无差异支持!!直接使用不同的设备节点就可以完成温度传感器的快速替换!!
|