nRF52810使用官网SDK开发入门教程

news/2024/11/18 23:23:05/

一、概述
近来,物联网已成为大势所趋,VR与AR正方兴未艾,各种手环、遥控、智能家居也在粉墨登场。技术前沿的领航者们已经快马加鞭,各种意志与暗示也在上传下达。物联网,无线通讯,移动互联,将成为新的目标与宠儿。最近开的电赛动员会上已经明确而彻底的传达了“互联网+”的精神,甚至要用手机做APP来操控云云,总之是无线通信已经被摆在了前所未有的位置上。

现在常用的有规范标准的无限通信协议主要有WiFi(802.11a/b/g/n),蓝牙(Bluetooth),ZigBee(802.15.4)等等,他们各有各的优点与不足。

WiFi的功耗太大,速率高,适合来传输数据流(文件),而不是做控制,距离较短。蓝牙功耗很低(BLE),而且历史悠久,技术成熟,是手机的标配,距离适中,适合做控制以及小规模的数据传输。(BLE是低功耗蓝牙的意思,也就是指蓝牙4.2。)ZigBee功耗也很低,且通信距离较远,传输速率很低,是专为自动控制设计的通信协议,但目前技术仍不够成熟,且组网较为复杂。

此外还有Z-wave,Threa;6LoWPAN似乎也很有潜力,但是目前才刚刚开始。ANT等各种无线通信协议,但是不如以上几种通用程度高作为无线通信入门,我选择了从蓝牙开始。市面上常见的蓝牙模块有很多,TI的CC系列,Dialog的DA系列,以及Nordic的nRF系列都是很优秀的产品。

Dialog的产品硬件结构较特殊,整体成本低但是开发复杂,CC系列和nRF系列都是资料资源丰富且广泛使用的产品,我所选择的产品就是Nordic的nRF52810,支持蓝牙4.2(BLE),甚至可以支持5.0。这些蓝牙模块多半都是带有MCU核的,或者说根本就是一个MCU带有蓝牙功能。相对于TI产品,nRF52810的硬件资源要丰厚许多(Cortex-M4F,512K Flash,64K RAM,xxAA版),这也就意味着更大规模的工程成为可能。

开发板不想买了,因为已经习惯了用TI的TM4C1294进行开发,所以一般主体工程都是靠1294完成,学习52832主要是想熟练蓝牙的配置与使用。于是买了个最小系统板(严格来说都不算,只是把所有引脚引出来而已,然后加一段镀铜天线),然后就遇到了许多问题。

一站式物联网公司

之前用1294时是TI官方的EvaluationKit板,自带仿真模块(Stellaris ICDI),只要驱动一装就能刷金程序然后Debug调试。因此也从来没有考虑过什么接口仿真的问题。现在对着52810芯片手册上的管脚图,只找到了两个SWDIO和SWDCLK引脚,对于具体如何把程序烧写进去依然一无所知。回想起其他用32开发板的情况,似乎需要一个名为Jlink的东东?快速上淘宝翻了下52810开发板的情况,确实如此,Jlink仿真器是必须的,开发板上已经预留好了20脚的JTAG接口,直接将仿真器连在开发板与PC中间,再辅以相应的驱动程序就能实现下载与仿真。但是我买的产品上可没有JTAG接口,而且SWD和JTAG似乎也不太一样的吧?

一顿搜索,大概对JTAG,SWD,JLink都有了一番了解。JTAG和SWD确实是不一样的协议,Jlink本身默认JTAG,但是从JLinkV6以后,Jlink仿真器也开始支持SWD,到了V8以后,对SWD的支持已经相当不错了。于是又买了块Jlink仿真器,说是给nrf5系列专用的V8,一个仿真器比两个我买的52810板还贵,拿到手以后,做工让我瞬间就断定是盗版货了。。还好上面似乎有标识JTAG+SWD…在52810的数据手册上,基本已经确定了这款芯片只支持SWD了,希望能用吧(笑)。大概就是把SWD的引脚接到仿真器的特定引脚上吧。

然后是软件环节。习惯了TI的datasheet和SDK,Nordic的真的是…体验感差好多呀。。采用的IDE是MDK Keil,然而官网提供的nRF_DeviceFamilyPack最新版和SDK最新版例程里的pack版本居然不一样(pack已经更新到8.14.1了,而SDK里用的是8.12.0,SDK用的也是最新版)。好吧或许SDK那边还没更新,但是老版的pack下载在哪里呢?只能手动添加Device和CMSIS,然后是令人烦躁的include paths。SDK的文件结构相当出色,各种包各种drivers各种libraries相当完善有条理,但是初始化必须的一些驱动和库文件被包含在了各个文件夹,相比之下,TI的driverlib简直太方便了。至于TI的pdf函数库对Nordic的html的无比的优越性。。用了都知道。

终于到了编译环节,把官方的例程拿出来编译,果然一大堆错误,定义变量语句不在函数开头之类的问题比比皆是,还有一大堆定义结构体顺便初始化的奇怪格式也是层出不穷,难道我的Keil MDK 5.20已经很老了吗~

在手动改完官方库的所有错误之后,把自己的初始化空工程拿出来终于编译通过…比TI的果然是慢了好多好多。。

二、搭建开发环境
1.官方代码与工具下载
http://www.nordicsemi.com/eng/Products/Bluetooth-low-energy/nRF52-DK

2.开发板硬件资料
硬件资料保含开发板的原理图,BOM,Layout。在调试时候或者外接扩展时候看。

一站式物联网公司

协议栈烧写工具nRFgo studio下载
这个软件是前期用来烧写固件。对于这款芯片固件分三个部分:蓝牙协议栈SoftDevice ,固件升级bootloader,App(用户自己写的程序)

一站式物联网公司

nRF52 DK下载
http://www.nordicsemi.com/eng/Products/Bluetooth-low-energy/nRF5-SDK

一站式物联网公司

官方例程和库文件

S132 SoftDevice 下载
蓝牙协议栈
http://www.nordicsemi.com/eng/Products/S132-SoftDevice

一站式物联网公司

Nordic 自家的蓝牙测试安卓或ios app
常用:nRF Master Countrol pannel
可以在github下载源码用于App开发

3.试验第一个程序
· 打开 nRFgo studio

一站式物联网公司

我使用的是开发板,开发板上自带有jlink芯片,软件能识别到nRF52 development boards。

注意:在使用过程中由于jlink驱动版本的问题会出现不识别芯片的情况。需要安装该软件自带的segger驱动。

右侧窗口中可以清楚的看到芯片存储空间的结构,包括上述三部分程序的起止地址和大小,其中SoftDevice 和Application是不可以缺失的。

l 烧写固件

以“虚拟串口”为例,分别选择三部分程序的hex文件,路径如下:
softdevice
/s132_nrf52_2.0.1/s132_nrf52_2.0.1_softdevice.hex
bootloader nRF5_SDK_11.0.0_89a8197/examples/dfu/bootloader/pca10040/dual_bank_ble_s132/arm5_no_packs/_build/nrf52832_xxaa_s132.hex

Application

nRF5_SDK_11.0.0_89a8197/examples/ble_peripheral/ble_app_uart/pca10040/s132/arm5_no_packs/_build/nrf52832_xxaa_s132.hex

l 成功烧录之后就可以打开app搜索了,蓝牙4.0不需要配对

一站式物联网公司

使用keil调试
打开测试固件对应的keil工程文件,就可以进行debug等操作

一站式物联网公司

1.Keil软件安装;

2.Jlink驱动安装;

3.nRFgoStdio安装,该软件用来烧写蓝牙协议栈和应用软件。第二步安装了Jlink驱动后,不要安装nRFgo里自带的Jlink驱动。

4.安装nRF51SDK,安装完成后,在Keil的目录里有51822的相关的例程和源码。

三、本例安装的软件版本

Windows: win7 64bit

Keil:V5.13.0.0 (mdk_513.exe)

Jlink:V4.96d (Setup_JLink_V496d.exe)

nRFgoStdio:V1.17.1 (nrfgostudio_win-64_1.17.1_installer.msi)

nRF51SDK: V6.1.0(nrf51_sdk_v6_1_0_b2ec2e6.msi)

SoftDevice:V7.1.0 (s110_nrf51810_7.1.0.zip)

4.遇到的问题
开发环境,包括软件环境以及硬件环境可以参考官方的User Guide 文档。期间遇到的问题有两个:

  1. nRFgoStdio无法识别nRF6310 MotherBoard?

在这里没有解决这个问题,对我的开发工作影响不大,我们的开发工作只需要更新ble stack和应用层APP即可,大部分时候只需要烧录app即可。

2.keil打开.uvproj后缀名的工程,无法编译?

安装的最新的keil版本以及SDK需要打开.uvprojx后缀名的工程,则编译无错误。

3.通过nRFgo烧写SoftDevice 和 ble_app_hrs无法工作?

这里存在nRF51SDK与SoftDevice和app的兼容性问题,本机安装了SDK的6版本,在Nordic官网SoftDevice有5,6,7三个版本,逐一尝试后,最新的版本7和app兼容,能正常工作。

4.在调试期间可能遇到VTG灯变红、异常闪烁或不亮,nRFgo 和keil无法烧写?

如果是电池供电的话,则很可能是电池没电。检测电池的电压才1v,新电池1.6v左右。更换电池解决问题。

不能解决的问题,可以在Nordic官网论坛提问,会有Nordic的员工为你解答。

https://devzone.nordicsemi.com/questions/ 为了更好的结合串口打印信息,来分析代码的流程。故结合6310里的uart_example例程,来调试UART功能,并将该初始化函数移植到要分析的例程去。

在uart_exam ple的simple_uart_config函数中,对uart指定输出输入引脚,关键是找到6310板子上的该两个引脚的位置。因为没有6310的原理图,经过查阅了很多资料,终于找到这两个引脚,分别是P9 端口的,p2.0与p2.1,连接到电脑的USB串口线并另一个接地,在电脑端配置好相应的串口参数,则解决问题。


http://www.ppmy.cn/news/747088.html

相关文章

Smarty快速入门之一

Smarty是一个使用PHP写出来的模板引擎,是目前业界最著名的PHP模板引擎之一。它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离。简单的讲,目的就是要使PHP程序员同前…

恩智浦+飞思卡尔后你需要知道的十件事

这两年,半导体行业似乎进入了多事之秋,收购战此起彼伏。就在今年短短的3个月里,半导体行业并/收购案有:Avago Technologies 以 6 亿美金价格收购无线网络公司 Emulex Corp ELX.O,Maxlinear以2.87亿美元收购Entropic Co…

快速入门脑机接口:BCI基础(一)

在本模块中,将介绍脑机接口的基础知识。 定义:脑机接口是什么? 脑机接口(BCI)是允许大脑与各种机器之间进行通信的系统。 它们的工作分为三个主要步骤:收集大脑信号,对其进行解释,然后根据接收到的大脑信号…

快思聪笔记2022年9月11日

通信端口(com口) RS-232是最常用的协议 RS-422、RS-485少见,优点:平衡,传输距离更远 RS-485可以串很多设备 发送红外信号 可以当单向com口 低压继电器(额定电压30v AC/DC) 1.正常数字输入 2.0—10V直流电…

python 会议室预约系统解决方案_快思聪FUSION会议预约系统

CRESTRON FUSION是CRESTRON推出的智慧企业管理平台,是一系列楼宇管理应用的集合,是所有系统共同的数据存储站。通过FUSION可以监视、管理和控制整个园区中、每栋楼内、每个房间内的每台设备,或是世界上任何连接在Crestron控制系统上的设备。同时综合各种智能感应器,赋予楼宇…

Caché 从入门到精通

Cach 从入门到精通 第一章 Cach 对象介绍 ☆ 第二章 Cach 定义和编译类 ☆ ☆ ☆ 第三章 Cach 包选项 ☆ ☆ ☆ 第四章 Cach 类参数介绍 ☆ ☆ ☆ ☆ 第五章 Cach 定义和调用方法 ☆ ☆ ☆ ☆ 第六章 Cach 使用注册对象 ☆ ☆ ☆ ☆ 第七章 Cach 持久性对象介绍 ☆ ☆ ☆…

使用快思聪中控控制PC播放器

使用快思聪中控控制PC播放器 想寻找一个可以通过中控系统控制的播放器,测试了这么多,还是VLC最简单。先来介绍下 vlc 的使用,再来连接快思聪。 vlc 直接支持命令行和 tcp server 方法运行,支持远程命令。但用网络调试助手测试&…

web安全php基础_phpstudy pro安装

phpstudy pro是什么 phpstudy是一个php运行环境的集成包,用户不需要去配置运行环境,就可以使用,phpstudy不仅是一款比较好用的php调试环境工具,并且还包括了开发工具和常用手册,对于新手是有很大帮助的 windows下ph…