nordic入门(基于NordicnRF52840Dongle的快速开发指南)

nRF52840 Dongle最早由Nordic 公司在2018年推出,Nordic公司宣称nRF52840 Dongle是一种小型,低成本的USB Dongle。官方提供了大量SDK供开发人员使用。本文主要介绍如何使用nRF52840 Dongle实现LED灯控实验。

一.开发环境及工具准备

nordic入门(基于NordicnRF52840Dongle的快速开发指南)(1)

二.按键控制触发 LED灯

示例用的代码均使用官方SDK中的串口透传例程,本节将实现用按键对官方原厂的nRF52840 Dongle板载上的1个LED灯以及1个RGB三色灯进行操作,也可以选用市面上的RF-DG-40A。操作步骤如下:

nordic入门(基于NordicnRF52840Dongle的快速开发指南)(2)

1.打开 SDK 中的示例工程:

..\..\nRF5_SDK_15.3.0_59ac345\examples\ble_peripheral\ble_app_uart\pca10056\s140\arm5_no_packs

2.打开pca10056.h,首先修改相应的引脚号。

nordic入门(基于NordicnRF52840Dongle的快速开发指南)(3)

nordic入门(基于NordicnRF52840Dongle的快速开发指南)(4)

3.打开工程后接下来我们开始添加按键控制相关的代码,由于SDK集成了按键的初始化及相关回调函数,我们只需要注册按键事件即可。

nordic入门(基于NordicnRF52840Dongle的快速开发指南)(5)

nordic入门(基于NordicnRF52840Dongle的快速开发指南)(6)

nordic入门(基于NordicnRF52840Dongle的快速开发指南)(7)

nordic入门(基于NordicnRF52840Dongle的快速开发指南)(8)

4.依次进上图所示的函数,在函数中添加框框所示的代码,即可注册按键的触发事件,bsp_event_to_button_action_assign 函数的第一个参数3,是按键的ID号。

BSP_BUTTON_ACTION_PUSH表示按键按下,第三个参数就是触发的事件名称。通过这个函数,就能完成当按键按下的时候会触发事件回调。

5.来看事件回调函数的修改。进入bsp_event_handler函数后,添加如下红框框所示的代码,为事件回调函数添加处理的内容,这里我们是做的事情是把LED逐个点亮。

nordic入门(基于NordicnRF52840Dongle的快速开发指南)(9)

6..接着添加LED灯的初始化函数就完成了我们按键点灯的程序编写,如下:

nordic入门(基于NordicnRF52840Dongle的快速开发指南)(10)

7.最后点击编译后会生成 HEX文件,留待后续的烧录到52840中。

三、烧录过程

1.打开nRF Conect。

nordic入门(基于NordicnRF52840Dongle的快速开发指南)(11)

2.打开后左边的框图就是nRF52840的flash结构图。

nordic入门(基于NordicnRF52840Dongle的快速开发指南)(12)

3.红色部分是nRF52840 Dongle的bootloader,橙色和深蓝牙部分是MBR 协议栈,绿色部分就是我们的Dongle应用层程序固件,注意这个固件这不开源的。接下来点击Add HEX file添加我们刚才写好的程序的hex文件,HEX路径如下:

..\..\SDK_15.3.0_59ac345\examples\ble_peripheral\ble_app_uart\pca10056\s140\arm5_no_packs\_build 。

4.添加之后右边会出现一条绿色的部分,这就是刚刚我们写好程序所占用的空间大小,可以从中看到起始地址和末端地址,那么为什么不是从0地址开始了?是因为还需要添加softdevice也就是协议栈。

nordic入门(基于NordicnRF52840Dongle的快速开发指南)(13)

5.添加协议栈路径为:

..\..\nRF5_SDK_15.3.0_59ac345\components\softdevice\s140\hex

6.添加完后框图如下,橙色和深蓝牙部分就是我们刚刚添加的协议栈和MBR。

nordic入门(基于NordicnRF52840Dongle的快速开发指南)(14)

7.烧录(写入)程序。点击Write,就可以把右边所有非空白的代码区域给烧录到nRF52840中。为了确定是否烧录成功最好可以验证一下,如图所示:

nordic入门(基于NordicnRF52840Dongle的快速开发指南)(15)

注意!这里的写入是不会把bootloader给擦除的。当烧录成功后,如果要再次烧录是需要进入bootloader模式才能识别到COM口的,那么怎么进入bootloader模式呢?只需要按下复位按键就行了,当进入bootloader模式时,模块会有红灯闪烁提示,这时候模块不会运行应用层程序,需要重新插拔后,模块默认会执行应用层程序。

nordic入门(基于NordicnRF52840Dongle的快速开发指南)(16)

8.验证。模块烧录成功后,就可以直接按下按钮来验证刚才的程序,程序里的功能是每按下一次按键,就会切换LED灯,效果如下图所示,循环依次点亮黄色,红色,绿色,蓝色LED灯。

nordic入门(基于NordicnRF52840Dongle的快速开发指南)(17)

四、通过手机APP点亮 LED灯

1.使用上一个示例工程,接着添加代码,实现通过手机APP nRF Connect来下发指令数据控制板载的LED灯状态。在nus_data_handler函数中添加和屏蔽如下代码

nordic入门(基于NordicnRF52840Dongle的快速开发指南)(18)

添加图中红框中所示的代码,并且把串口处理相关的代码屏蔽掉,然后按照上面介绍的烧录方法烧录程序。

2.验证

打开nRF Connect 应用,然后点击扫描,找到Nordic_UART名称的广播设备,然后点击连接

nordic入门(基于NordicnRF52840Dongle的快速开发指南)(19)

nordic入门(基于NordicnRF52840Dongle的快速开发指南)(20)

nordic入门(基于NordicnRF52840Dongle的快速开发指南)(21)

3.连接过后,在数据发送通道中发送字符1指令,表示打开板载的LED1灯,发送字符0,表示关闭板载的LED1灯。同时在接收通道会有相应的回馈信息,如下图:

nordic入门(基于NordicnRF52840Dongle的快速开发指南)(22)

nordic入门(基于NordicnRF52840Dongle的快速开发指南)(23)

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页