精华内容
下载资源
问答
  • 红旭无线开发板主要由Nordic 52840模块组成,涵盖了目前市面上大部分的主流无线通讯协议,可以满足大部分的物联网应用场景。 简介 红旭无线开发板主要由以下两大部分组成 NRF52840核心板 NRF52840的各个外设配件...
  • Nordic 52840的第一课:Hello World

    千次阅读 2018-06-15 13:17:00
    前言 众所周知,基本上所有嵌入式入门的第一课都是跟灯有关,什么跑马灯、流水灯、点天灯等等....在准备开始Hello World之前,我们还必须要有一个Nordic 52840的模板工程,这样我们才可以在工程模版的基础上进行...

    前言

    众所周知,基本上所有嵌入式入门的第一课都是跟有关,什么跑马灯流水灯点天灯等等.然而,在笔者看来第一课应该跟互联网的第一课一样,向世人宣布我来了,即Hello World.因此,红旭的Nordic 52840第一课也是一样.
    [外链图片转存失败(img-fOh0SSax-1565883185064)(https://raw.githubusercontent.com/xiaolongba/picture/master/emoji.jpg)]

    准备动作

    在准备开始Hello World之前,我们还必须要有一个Nordic 52840的模板工程,这样我们才可以在工程模版的基础上进行以后一序列地开发.基本上,所有的模板工程就跟嵌入式硬件的最小系统一样,只保留最基本的配置文件,里面什么内容都没有,只有一个入口函数main(),至于如何在官方的SDK开发包裁剪出工程模板,这里不表.已经裁剪好的工程模版在这里(请点我).

    欢迎来到这个世界

    有了工程模版之后,那么接下来进行我们今天的主题,即打印输出Hello World.那么通过什么方式打印呢?可以通过以下两种方式:

    • UART
    • RTT

    UART

    硬件

    这个就是我们平常口中所说的串口,我们可以通过串口可以打印输出"Hello World"字符串.在此之前,我们看一下红旭无线开发板上USB转TTL所连接的是Nordic 52840的哪两个串口脚**.(注意:除了电源、地、烧录口以及USB接口之外,任意GPIO口均可以做为串口脚)**

    • TX–>P0.08
    • RX–>P0.06

    实物接线示意图如下所示:

    在这里插入图片描述

    下图与上图的PIN脚分别是一一对应的

    [外链图片转存失败(img-qFEoWN5e-1565883185065)(https://raw.githubusercontent.com/xiaolongba/picture/master/UART_SILK_SCREEN.jpg)]

    从上面两幅图可以看出,只需要将 USB_T & NRF52_R,USB_R & NRF52_T两两通过跳帽连接在一起即可.

    软件

    我们在模板工程的基础上,添加驱动串口的相关函数.因为模板工程是纯净的,只有维持最小系统所需的一些文件.那么如何来操作呢?如下步骤所示:

    • 添加Nordic官方已经封装好的UART驱动函数

    UART相关的驱动函数

    上图就是要实现这次串口打印所需要的UART驱动函数,可能会问怎么需要这么多文件,因为这些文件集成了UART重映射以及接下来的RTT等功能,异常的强大.

    • 添加UART相关的头文件路径

    在这里插入图片描述

    同样,需要添加的头文件路径也有很多.那是因为官方的SDK将各个功能模块分得很细,不像我们自己写的程序一样所有的文件都放在一个文件夹,所以这个包含的头文件会很多.那么,这个时候问题来了?在SES上是如何添加头文件路径的呢?对于用惯了MDK以及IAR的工程师来说,肯定会一脸懵逼.不过幸好你们买了红旭的无线开发板,对于这些细活,肯定有详细的步骤告诉你的,如下所示:

    • 在SES的项目浏览中选中整个工程并右击->Edit Options…->Common->Build->Project Macros

    在打开Project Macros的设置中,添加SDK开发包的路径宏(小编的SDK包实际路径如下所示);

    nRF52840_SDK_DIR=D:/Project/wireless_tech/wireless_tech_template
    

    [外链图片转存失败(img-B8Nkfh2x-1565883185067)(https://raw.githubusercontent.com/xiaolongba/picture/master/%E6%B7%BB%E5%8A%A0%E8%B7%AF%E5%BE%84%E5%AE%8F.gif)]

    • 在SES的项目浏览中选中整个工程并右击->Edit Options…->Common->Preprocessor->User Include Directories

    User Include Directories添加头文件路径;
    在这里插入图片描述

    $(nRF52840_SDK_DIR)/components/toolchain/cmsis/include
    $(nRF52840_SDK_DIR)/components/libraries/experimental_log
    $(nRF52840_SDK_DIR)/components/libraries/util
    $(nRF52840_SDK_DIR)/template_project/config
    $(nRF52840_SDK_DIR)/modules/nrfx/mdk
    $(nRF52840_SDK_DIR)/components/softdevice/s140/headers
    $(nRF52840_SDK_DIR)/components/libraries/experimental_section_vars
    $(nRF52840_SDK_DIR)/components/libraries/strerror
    $(nRF52840_SDK_DIR)/components/libraries/experimental_log/src
    $(nRF52840_SDK_DIR)/components/libraries/experimental_memobj
    $(nRF52840_SDK_DIR)\components\libraries\balloc
    $(nRF52840_SDK_DIR)\template_project\user_driver\include
    $(nRF52840_SDK_DIR)\external\fprintf
    $(nRF52840_SDK_DIR)\integration\nrfx\legacy
    $(nRF52840_SDK_DIR)\modules\nrfx
    $(nRF52840_SDK_DIR)\integration\nrfx
    $(nRF52840_SDK_DIR)\modules\nrfx\drivers\include
    $(nRF52840_SDK_DIR)\components\libraries\atomic
    $(nRF52840_SDK_DIR)\components\libraries\delay
    $(nRF52840_SDK_DIR)\external\segger_rtt
    
    
    • 使能UART以及更改UART的TX引脚

    sdk_config.h中找到NRF_LOG_BACKEND_UART_ENABLEDNRF_LOG_BACKEND_UART_TX_PIN以及NRF_LOG_BACKEND_RTT_ENABLED,并更改为以下所显示的值.

    #ifndef NRF_LOG_BACKEND_RTT_ENABLED
    #define NRF_LOG_BACKEND_RTT_ENABLED 0
    #endif
    
    #ifndef NRF_LOG_BACKEND_UART_ENABLED
    #define NRF_LOG_BACKEND_UART_ENABLED 1
    #endif
    
    #ifndef NRF_LOG_BACKEND_UART_TX_PIN
    #define NRF_LOG_BACKEND_UART_TX_PIN 8
    #endif
    
    #ifndef NRF_LOG_DEFERRED
    #define NRF_LOG_DEFERRED 0
    #endif
    

    至此,就完成了UART函数以及头文件路径地添加,接下来要做的事情就是在main函数调用初始化函数和打印输出函数,最后编译下载即可.

    RTT

    RTT全称是 “Real Time Transfer”,是SEGGER公司发明的基于Jlink的一门新技术,如果想要更加了解RTT请点击如下链接:
    RTT更多详情.

    硬件

    要实现RTT的功能,其实只有手上有Jlink即可实现这个功能,并不用再需要额外的一些外设硬件来搭配使用.你只需要将Jlink的SWD引脚分别一一对应接到目标设备的SWD接口即可,它比UART的好处就是不占用硬件设备的UART外设.

    [外链图片转存失败(img-aRQVWEff-1565883185069)(https://raw.githubusercontent.com/xiaolongba/picture/master/SWD_%E6%AD%A3%E9%9D%A2.jpg)]

    [外链图片转存失败(img-JFXZbtqk-1565883185070)(https://raw.githubusercontent.com/xiaolongba/picture/master/SWD%E5%8F%8D%E9%9D%A2.jpg)]

    软件

    其实这里所要做的事情跟UART中的基本一致.只需要将RTT的使能宏打开并关闭UART的使能宏即可.

    • 增加RTT所需要的驱动函数文件

    RTT所需要的驱动函数文件

    • sdk_config.h中找到NRF_LOG_BACKEND_UART_ENABLEDNRF_LOG_BACKEND_UART_TX_PIN以及NRF_LOG_BACKEND_RTT_ENABLED,并更改为以下所显示的值.
    #ifndef NRF_LOG_BACKEND_RTT_ENABLED
    #define NRF_LOG_BACKEND_RTT_ENABLED 1
    #endif
    
    #ifndef NRF_LOG_BACKEND_UART_ENABLED
    #define NRF_LOG_BACKEND_UART_ENABLED 0
    #endif
    
    #ifndef NRF_LOG_DEFERRED
    #define NRF_LOG_DEFERRED 0
    #endif
    

    至此就完成了RTT的配置工作了,接下来要做的事情就是在main函数调用初始化函数和打印输出函数,最后编译下载即可.

    主函数

    上面已经完成了大部分的工作,这里只要在main函数,调用以下几个函数即可.

    /**
     * Copyright (c) 2014 - 2018, Nordic Semiconductor ASA
     *
     * All rights reserved.
     *
     * Redistribution and use in source and binary forms, with or without modification,
     * are permitted provided that the following conditions are met:
     *
     * 1. Redistributions of source code must retain the above copyright notice, this
     *    list of conditions and the following disclaimer.
     *
     * 2. Redistributions in binary form, except as embedded into a Nordic
     *    Semiconductor ASA integrated circuit in a product or a software update for
     *    such product, must reproduce the above copyright notice, this list of
     *    conditions and the following disclaimer in the documentation and/or other
     *    materials provided with the distribution.
     *
     * 3. Neither the name of Nordic Semiconductor ASA nor the names of its
     *    contributors may be used to endorse or promote products derived from this
     *    software without specific prior written permission.
     *
     * 4. This software, with or without modification, must only be used with a
     *    Nordic Semiconductor ASA integrated circuit.
     *
     * 5. Any software provided in binary form under this license must not be reverse
     *    engineered, decompiled, modified and/or disassembled.
     *
     * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS
     * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
     * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
     * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE
     * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
     * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
     * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
     * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     *
     */
    
    /* =================================================================================
      由于是在官方的基础上更改,故上面的说明不敢更改,从而保持下来
     =================================================================================*/
    
    /**
    * @file         main.c
    * @brief        用户应用程序入口
    * @details      用户应用程序的入口文件,用户所有要实现的功能逻辑均是从该文件开始或者处理
    * @author       Helon_Chan
    * @par Copyright (c):
    *               红旭无线开发团队
    * @par History:
    *               Ver0.0.1:
                         Helon_Chan, 2018/06/09, 初始化版本\n
    */
    
    
    /* =============
    头文件包含
     =============*/
    #include <stdbool.h>
    #include <stdint.h>
    #include <string.h>
    #include "user_log.h"
    
     /**
     * 应用程序的函数入口
     * @param[in]   NULL
     * @retval      NULL
     * @par         修改日志
     *              Ver0.0.1:
                      Helon_Chan, 2018/06/09, 初始化版本\n
     */
    int main(void)
    {
      /* log函数初始化  */
      log_init();
      NRF_LOG_INFO("/******************************************************************************/\n");
      NRF_LOG_INFO("                         Welcome to wireless-tech world                         \n");
      NRF_LOG_INFO("                         website :bbs.wireless-tech.cn                          \n");
      NRF_LOG_INFO("                         QQ Group:671139854                                     \n");
      NRF_LOG_INFO("/******************************************************************************/\n");
    }
    
    

    编译并下载

    历经千辛万苦最终来到观看结果的这一环节了,很快大家就会看到打印信息了.但是,在此之前我们还需要做最后一个设置.即配置协议栈的路径.如下所示:
    在SES的项目浏览中选中整个工程并右击->Edit Options…->Common->Debug->Loader->Additional Load File[0],在打开的设置中添加协议的绝对路径(以下是小编的协议栈实际路径).

    D:/Project/wireless_tech/wireless_tech_template/components/softdevice/s140/hex/s140_nrf52_6.0.0_softdevice.hex
    

    [外链图片转存失败(img-MBcfTvSC-1565883185072)(https://raw.githubusercontent.com/xiaolongba/picture/master/%E6%B7%BB%E5%8A%A0%E5%8D%8F%E8%AE%AE%E6%A0%88%E8%B7%AF%E5%BE%84.gif)]
    配置完成之后,在SES中直接按下F5即可.

    效果演示

    UART

    小编是使用 SecureCRT来显示串口打印,至于如何设置以及下载SecureCRT,我们这里不表.不废话直接看效果.
    [外链图片转存失败(img-UNSPKc0j-1565883185072)(https://raw.githubusercontent.com/xiaolongba/picture/master/nRF52840_UART_115200.jpg)]

    RTT

    RTT的效果查看,相对于UART来说会麻烦一些.但是也只是首次要配置下,以后直接用即可.步骤如下所示:

    • 打开JLinkRTTViewer(安装Jlink6.12以上的版本,因为旧版本还没有nRF52840)并按下图所示设置,设置完成之后点击OK且不要关闭RTT View,以后每次使用并要打开;

    [外链图片转存失败(img-fdNY7hHz-1565883185073)(https://raw.githubusercontent.com/xiaolongba/picture/master/RTT%E8%AE%BE%E7%BD%AE.png)]

    • 打开SecureCRT,然后点文件->快速连接->选择协议->IP地址->端口号->点连接

    [外链图片转存失败(img-0mwjo15k-1565883185074)(https://raw.githubusercontent.com/xiaolongba/picture/master/SecureCRT.jpg)]

    [外链图片转存失败(img-MCpIT2mp-1565883185075)(https://raw.githubusercontent.com/xiaolongba/picture/master/nRF52840_RTT.png)]

    最后

    该教程对应的源码,放在红旭无线开发板的github代码仓,热烈欢迎各行业大佬斧正,鄙人虚心接受任何批评以及赞扬.

    最后

    红旭无线Github
    红旭无线技术交流论坛
    微信公众号
    在这里插入图片描述

    本文原创,转载请注明出处

    展开全文
  • 如何搭建Nordic 52840开发环境

    千次阅读 2018-06-05 21:42:25
    前言 我相信最近很多小伙伴都已经陆陆续续地收到红旭的无线...显然这是绝对不允许发生的,那么接下来就跟随小编的步伐一起看看如何搭建Nordic 52840开发环境,开启无线事业的另外一个征途吧. 开发环境...

    前言

    我相信最近很多小伙伴都已经陆陆续续地收到红旭的无线开发板了吧,小编非常感谢这些红旭铁粉地强力支持,同时红旭无线开发团队一致决定在正式售价的基础上打85折用来回馈铁粉.那么对于那些已经收到开发板的小伙伴们,是不是就上个电就放进抽屉吃灰呢?显然这是绝对不允许发生的,那么接下来就跟随小编的步伐一起看看如何搭建Nordic 52840开发环境,开启无线事业的另外一个征途吧.

    开发环境

    • Windows/Mac/Linux操作系统
    • 红旭nRF52840+ESP32 Mini无线开发板
    • SEGGER Embedded Studio IDE
    • JLink (请不要使用2,30块的那种垃圾Jlink OB,因为有可能会出现一些无法想象的问题)

    为什么要选择SEGGER Embedded Studio

    现在,占据嵌入式开发工具IDE半壁江山的主要是MDKIAR,我想从事嵌入式开发的不太可能不认识这两个IDE吧,而且大部分工程师也都很熟悉.这个时候可能有人会问了,既然大家都熟悉的东西你不用,你非要选择偏门的工具,你这不是傻逼嘛,增加我的学习成本.其实,这样骂小编也不是没有道理,但是当你看了下面几个原因之后,也许你就不会骂我了,有可能举双脚赞成哦.具体理由如下:

    • Nordic官方主推使用该IDE,后续Nordic在2019年推出的芯片级NB-IOT也是基于该IDE开发的 (届时红旭也会推出相对应的开发板),所以有时候做事不能光看眼前,还是要有一定的前瞻性和格局的;

    • 国内很多公司或者工程师,已经将破解版的MDK和IAR当成正版使用了,好像这一切都是理所当然的,其实这个是很不好的,起码在我看来是很不好的;

    • SEGGER Embedded Studio在用户体验方面相对会好过MDK和IAR,有些功能显示也会更直观;

    • SEGGER Embedded Studio是跨平台开发IDE,支持MAC/Windows/Linux等开发平台,以后你就不必担心换了一个平台代码移植的问题;

    • Nordic已经为开发者购买了SEGGER Embedded Studio的使用版权,只要是使用Nordic的产品均可以免费使用该IDE,不用再去担心版权的问题;

    以上几点也是为什么红旭会选择该IDE来开发Nordic 52840.

    如何下载

    SEGGER Embedded Studio是SEGGER公司开发的一款用于嵌入式开发的IDE,不仅支持Nordic的芯片,而且还支持市场上大部分主流的MCU,你即使没有licence也可以使用该IDE的所有功能,没有任何代码限制.大家可以在SEGGER公司的官方上根据自身的开发环境下载对应的软件版本,下载地址如下所示:
    SEGGER Embedded Studio下载地址.

    如何安装

    SEGGER Embedded Studio的安装就是无脑式地点击Next就可以完成安装了.

    如何激活

    默认情况下,首次安装SEGGER Embedded Studio之后,该软件是没有激活的,也就是说还没有获取到license.那么如何获取免费的license呢,如下步聚所示 (这里所有操作均是在windows下进行,其他平台的操作跟这个类似):

    • 在桌面打开SEGGER Embedded Studio,首次打开的界面如下所示:
      [外链图片转存失败(img-BelTXBW9-1565883154115)(https://raw.githubusercontent.com/xiaolongba/picture/master/open%20for%20the%20first%20time%20for%20ses.png)]

    • 按下F7->Activate Your Free License
      [外链图片转存失败(img-6VgKcMG1-1565883154116)(https://raw.githubusercontent.com/xiaolongba/picture/master/No%20license%20for%20commercial%20use.png)]
      [外链图片转存失败(img-ww3CFloj-1565883154117)(https://raw.githubusercontent.com/xiaolongba/picture/master/Emedded%20Studio%20Lisence%20Activate.png)]

      在收到License的邮件中复制license至如下空白处即可(注意:QQ邮箱是收不到License的,小编用的谷歌邮箱是可以的)
      [外链图片转存失败(img-3n617HYE-1565883154118)(https://raw.githubusercontent.com/xiaolongba/picture/master/Emedded%20Studio%20Lisence%20Activate2.png)]
      至此,激活工作就完成了.

    打开第一个工程

    按照上文中的那些描述,此时开发环境搭建已经完成了99%,接下来只需打开一个示例工程,编译并烧录至红旭nRF52840+ESP32 Mini无线开发板即可完成您的第一个工程.步骤如下所示:

    • 下载Nordic 52840 BLE软件开发包,即SDK并解压
    • 在SEGGER Embedded Studio中选择File->Close Solution
    • 在SEGGER Embedded Studio中选择File->Open Solution选择示例工程文件,小编的路径如下所示:
    C:\Users\Administrator\Desktop\Wireless_Tech\nRF5_SDK_15.0.0_a53641a\examples\ble_peripheral\ble_app_template\pca10056\s140\ses\ble_app_template_pca10056_s140.emProject
    

    (注意:正式开发过程中,SDK的路径不要包含有中文以及路径不要过长)

    • 在SEGGER Embedded Studio界面中,按下F7编译,然后连接上Jlink再按F5即可将固件下载至红旭nRF52840+ESP32 Mini无线开发板中

    延伸

    如果大家想要更加了解SEGGER Embedded Studio的使用,其实Nordic官方已经推出了7节视频教程,小编已经从Youtube中下载了这套高清无码格式的视频,下载地址如下:
    SEGGER Embedded Studio官方视频教程

    最后

    红旭无线Github
    红旭无线技术交流论坛
    微信公众号
    在这里插入图片描述

    本文原创,转载请注明出处

    展开全文
  • 初识Nordic 52840

    万次阅读 2018-06-05 14:09:18
    Nordic是挪威一家只做2.4G频段的无线通讯技术半导体芯片厂商,明年也就是2019年中旬也会推出量产级别兼芯片级的NB-IOT即nRF91,其目前在BLE行业中占据了百分之60以上的市场份额 (数据来源于Nordic官方) ,不得不说...

    前言

    接触过BLE的朋友,我想基本上都听过Nordic吧,如果真有用过BLE的人没听说过这个品牌,那你很大可能性就是骗别人说你做过BLE开发。Nordic是挪威一家只做2.4G频段的无线通讯技术半导体芯片厂商,明年也就是2019年中旬也会推出量产级别兼芯片级的NB-IOT即nRF91,其目前在BLE行业中占据了百分之60以上的市场份额 (数据来源于Nordic官方) ,不得不说这样的数据是相当恐怖的。当然了,Nordic的成功是有原因的,其BLE芯片出色的性能、完善的资料系统以及对工程师相当友好的开发社区等等都是广大用户有目共睹的。简单地介绍完Nordic之后,接下来我们直接进入主题。

    整体框架了解

    不管是新手还是老鸟工程师,接触到之前没有用过的芯片,首先要做的就是去官方网站或者代理商获取芯片相关的文档进行查阅,从而为后面的芯片开发铺路或者打下基础。理所当然,对于Nordic 52840也是这样,所有的资料均可在官方网站下载得到,但是对从来没有用过Nordic BLE芯片的人来说,肯定是一脸懵逼的,有的人可能在哪里下载到相关的文档都不知道。大家莫慌,随我慢慢道来,但是我不会马上就告诉你相关的文档在哪里下载,因为写这篇文章就是让你初识Nordic 52840,假设直接就告诉你相关的文档在哪里,那么你看了这篇文章就等于没看。因此,要想知道如何开发这个芯片,就应该先看看这个芯片相关的框架。

    内存布局

    我们先来看看Nordic 52840的内存分布,如下图所示

    [外链图片转存失败(img-PArqkq6C-1565883107881)(https://raw.githubusercontent.com/xiaolongba/picture/master/bootloader_memory_nrf52.svg?sanitize=true)]

    我们先暂时不要去理会上图左右两边的标注,就单看中间的Nordic 52840的内存分布结构。由上图可以知道,Nordic 52840是由以下几个部分组成:

    • MBR
    • SoftDevice
    • Application
    • Bootloader
    • MBR parameter storage
    • Bootloader settings

    那这时候问题来了,这些都是些啥鸡巴玩意啊?兄弟,莫慌!听哥徐徐道来(如果短时间看不明白,可以暂时忽略这些)。

    • MBR

      MBR的全称是Master Boot Record ,即主引导记录的意思,其主要功能就是提供一个接口用于应用程序固件、协议栈或者Bootloader固件在系统内更新;

    • MBR parameter storage

      具体的作用如下所示:

      官方原文:
      
        This used to store the SD_MBR_COMMAND_COPY_BL or the SD_MBR_COMMAND_VECTOR_TABLE_BASE_SET command when resetting the IC. E.g. under a bootloader update. Also if reset or power is lost, the MBR will read the stored commands and continue the update process. Upon reset the MBR read the stored commands, which will not be erased before the update is finished. Seeing that there is a “copy bootloader” command, the MBR will check if the bootloader was successfully copied, if not, it will re-write the bootloader to the bootloader section.
      
      译文:
        这用于当复位芯片时,存储SD_MBR_COMMAND_COPY_BL或SD_MBR_COMMAND_VECTOR_TABLE_BASE_SET命令(例如,在更新bootloader时)。此外,如果重启或断电,MBR将读取存储的命令并继续更新过程。复位后,MBR读取存储的命令,在更新完成之前不会擦除这些命令。看到有一个“copy bootloader”命令,MBR将检查bootloader是否被成功复制,如果没有,它会将bootloader重新写入flash中的bootloader空间
      
    • SoftDevice

      这个就是Nordic的协议栈的统称,其所有协议栈都叫SoftDevice,不同功能的协议栈通过代号来区分。例如,目前最新的BLE、Zigbee、Thread以及SIG Mesh四合一的协议栈就是S140,它是以16进制的形式提供的,首次使用时只需直接下载至flash中即可;

    • Application

      我们平时所写的程序就是保存在这里,包括用户需要掉电保护的一此自定义数据也是保存在这里的;

    • Bootloader

      Bootloader主要用于处理系统内的更新过程,具体作用如下所示

      官方原文:
        The bootloader has full access to the SoftDevice API and can be implemented like any application that uses the SoftDevice. In particular, the bootloader can make use of the SoftDevice API for Bluetooth low energy communication.
      The bootloader is also responsible for keeping track of and verifying the integrity of the SoftDevice. If an unexpected reset occurs during an update of the SoftDevice, it is the responsibility of the bootloader to detect this and resume the update procedure.
      
      译文:
        bootloader可以完全访问SoftDevice API函数,并且可以像使用SoftDevice的任何应用程序中一样实现同样的功能。尤其是,bootloader可以利用SoftDevice API函数进行蓝牙低功耗通信。
        bootloader还负责跟踪和验证SoftDevice的完整性。 如果在更新SoftDevice期间发生意外重启,bootloader有责任检测这种情况并重新开始更新过程。
      
    • Bootloader settings

      具体作用如下所示:

      官方原文:
        A bootloader settings page contains information about the current DFU process. In addition, it can contain information about the installed application and the firmware version.
      
      译文:
        bootloader设置页包含当前空中升级进程的信息。此外,还可能包含有应用程序和固件的版本信息。
      

    看完以上的介绍,估计大部分人都已经明白Nordic 52840的内存分布结构吧,那这个时候可能又有一个问题了,那这些组成部分到底各占用多大的空间呢?这也是普众单片机工程师都很在意或者关心的东西,具体如下表格所示:

    各组成部分各组成部分占用的空间范围
    Bootloader settings0x000F F000 - 0x0010 0000 (4 kB)
    MBR parameter storage0x000F E000 - 0x000F F000 (4 kB)
    Bootloader0x000F 8000 - 0x000F E000 (24 kB)
    Application area (incl. free space)x0002 0000 - 0x000F 8000 (864 kB)
    SoftDevice0x0000 1000 - 0x0002 0000 (124 kB)
    Master Boot Record (MBR)0x0000 0000 - 0x0000 1000 (4 kB)

    注意:SoftDevice即协议栈的大小会根据版本不同而不同

    如何选择协议栈和SDK

    通过内存布局中可以看出,我们主要关注SoftDevice和Application部分即可,但是Nordic的SoftDevice有好多版本,SDK也有好多版本,而且这两者不能乱选择,这样就让初学者会很容易限入窘境不知道哪个才适合他使用。其实,官方已经有一个映射表格说明这些了,具体如下表格所示:

    nRF52840 IC revisionnRF5 SDKS132 SDS132 SDSS140 SDS140 SDS
    Engineering A12.2.03.0.013.12--
    12.3.0
    13.0.0--5.0.0-2.alpha
    13.1.0
    14.0.0
    14.1.0
    14.2.0
    -5.0.0-3.alpha
    6.0.0-6.alpha
    Engineering B; Engineering C; 115.0.06.0.01.x

    从这个表格可以看到,不同版本的SDK不是都支持所有协议栈的。在这里,我们只需要查看最后一行即可,即

    • SoftDevice

      选择S140版本

    • SDK

      选择15.0.0版本

    • 其他

      SDS全称是SoftDevice Specification 即协议栈规格书

    文档下载

    说了这么多,终于来到如何下载开发所需的Nordic 52840相关文档这一章节了,之所以在前面叨叨说那些内容,就是想让初学者明白,官方的文档有很多如果没有一个整体地了解,那么就会很容易稀里糊涂地下载一堆没用的资料,而且下载下来也不知道该看哪个,其实对于大部分开发者来说只需要下载如下几个文档就可以了,具体如下所示:

    其中,SDK包中均包含有API手册,如果需要更多的文档可以到官方的文档中心下载

    最后

    希望看过这篇文章的初学者能有所收获,而期望各位大佬、大神以及砖家斧正,当然如果你想要购买Nordic 52840开发板玩玩,也可以点击这里

    最后

    红旭无线Github
    红旭无线技术交流论坛
    微信公众号
    在这里插入图片描述
    本文原创,转载请注明出处

    展开全文
  • GDB Nordic52840

    2020-02-29 21:37:34
    1)a,JLinkExe b,connect ... c,NRF52840_XXAA d,SWD e,4000 kHz 2)JLinkGDBServer -if swd -speed 4000 -device nrf51822 -if swd -speed 4000 -port 2331 3)a,arm-none-eabi-gdb XXX.e...

    1)a,JLinkExe

         b,connect

         c,NRF51822_XXAA

         d,SWD

         e,4000 kHz

     

    2)JLinkGDBServer -if swd -speed 4000 -device nrf51822 -if swd -speed 4000 -port 2331

     

    3)a,arm-none-eabi-gdb XXX.elf 

    b,target remote:2331

    展开全文
  • Nordic52840开发环境搭建

    千次阅读 2019-12-03 17:57:06
    SDK:Nordic nRF5_SDK_16.0.0_98a08e2 Keil安装完成之后会提示缺少必要的设备依赖包主要有以下几个: 1:CMSIS.4.5.0 http://www.keil.com/pack/ARM.CMSIS.4.5.0.pack 2:NordicSemiconductor::nRF_DeviceFamilyPack...
  • SKYLAB BLE5.0蓝牙模块SKB501基于Nordic nRF52840方案,具有性能良好,功耗低,接收灵敏度高,传输距离远,支持SPI/UART/TWI通信协议,封装小等优点。产品能较好的嵌入到客户产品中,同时满足客户对蓝牙产品再次快速...
  • 烧入的FLASH偏移是0x73000 size是67000 BIN文件如何生成 首先需要了解下zephyr 的nordic52840如何运行,比如跑一个hello world 之后根据Nordic的nrf_MCUBOOT官方文档 根据NRF_编译步骤 这个可以搭建环境 再根据...
  • Nordic nRF52840 入门学习

    千次阅读 2019-07-22 13:49:28
    标题对Nordic Sdk里的库函数所实现功能的分析 1.Board Definition组 “ Board Definition”组中加入板卡定义文件“ boards.c”,该文件...对于Nordic nRF52840开发板(兼容 Nordic的PCA10056),设计了4个指示灯和按键...
  • Nordic nRF52840高级蓝牙5

    2020-11-15 06:04:02
    在本文中,我们将学习使用Arduino IDE的Nordic nRF52840低功耗蓝牙5.0及其应用。 nRF52840 SoC是由Nordic Semiconductor设计和开发的灵活,高效的Bluetooth 5。 nRF52840 SoC围绕32位ARM®Cortex®-M4F处理器构建,...
  • 硬件: NORDIC nRF 52840 SoC 软件: NORDIC nRF SDK Ver 15.2 功能: nRF 52840 带3路PWM硬件模块,每个模块支持4通道,总共支持12路PWM通道 PWM Module 工程配置 于 sdk_config.h 文件nRF_Drivers 配置中使能 ...
  • 硬件: NORDIC nRF 52840 SoC 软件: NORDIC nRF SDK Ver 15.2 硬件中断触发: 低电平触发 Step 1: 正确配置 GPIOTE Driver 通道数 Step 2: GPIO 引脚初始化 #define RX8010_IRQ1 16 #define RX8010_IRQ2 ...
  • Nordic nRF52840 使用DK测试通信距离

    千次阅读 2020-03-19 16:35:58
    Nordic DevZone:Testing Long Range (Coded PHY) with Nordic solution (It Simply Works) 一、准备工作 nRF52840 DK PCA10056 * 2 Hex文件:不连接/连接测试_信号强度.hex main.c里CONNECT_TO_ADV_REPORT为0时...
  • nRF52840 Dongle最早由Nordic公司在2018年推出,Nordic公司宣称nRF52840 Dongle是一种小型,低成本的USB Dongle。官方提供了MESH SDK供开发人员使用。本文梳理了Nordic nRF52840 Dongle作为mesh节点开发流程,主要...
  • 目的:NORDIC nRF52840 ROM与RAM 开始地址及大小的正确设置方法(keil 环境) 硬件: NORDIC nRF 52840 DK (FLASH ROM: 1MB, RAM: 256 KB) 协议栈: s140_nrf52_6.1.0 Keil: u version ver 5.23.0.0 1. 设置界面; ...
  • 硬件: Raspberry Pi 3B+, Nordic nRF52840 SoC 操作系统: Raspbian Lite, Nordic softDevice S140 RPI 串口硬件查看 $ ls /dev/ttyACM* $ dmesg | grep ttyACM* RPI 串口操作 # 向串口写数据 $ echo data &...
  • 一、Firmware 1. sdk_config.h #define NRF_LOG_BACKEND_RTT_ENABLED 1 #define NRF_LOG_ENABLED 1 2. header files #include "nrf_log.h" #include "nrf_log_ctrl.h" #include "nrf_log_default_backends.h" ...
  • Nordic nRF52840实战学习

    千次阅读 2020-03-27 17:18:34
    ble_app_blinky例程 ble_app_uart例程 透传模块速率优化
  • Nordic52840 为工程添加OTA

    千次阅读 2019-11-01 15:15:57
    在上一篇添加GATT Service的基础上,继续添加OTA。 1代码启动流程 nRF52840的代码区块可以分为三块:SoftDevice,Application,Bootloader。如图 1.1‑1所示: ...SoftDevice是Nordic提供的,需要注意其版本...
  • Nordic52840 搭建GATT Service

    千次阅读 2019-10-25 16:36:40
    1 NRF52840 SDK 基础 1.1 GATT Service 蓝牙协议中定义 GATT service 为: “A service is a collection of data and associated behaviors to accomplish a particular function or feature. [...] A service ...
  • Nordic nRF52840 低功耗蓝牙BLE 5.0新手入门指南_000-----TroubleshootingNordic nRF52840 低功耗蓝牙BLE 5.0新手入门指南_000-----TroubleshootingCannot install Pack(NordicSemiconductor:nRF_DeviceFamilyPack_...
  • nRF52840 Dongle最早由Nordic公司在2018年推出,Nordic公司宣称nRF52840 Dongle是一种小型,低成本的USB Dongle。官方提供了大量SDK供开发人员使用。本文主要介绍如何使用nRF52840 Dongle实现LED灯控实验。 一.开发...
  • nRF52840 Dongle最早由Nordic公司在2018年推出,Nordic公司宣称nRF52840 Dongle是一种小型,低成本的USB Dongle。这款Dongle可以对ZigBee进行抓包。本文档介绍如何使用Nordic的nRF52840 Dongle当作ZigBee sniffer来...
  • 硬件: Nordic nRF 52840 SoC 软件: Nordic SDK V15.2 于 system_nrf52840.h 文件中,定义#define CONFIG_NFCT_PINS_AS_GPIOS, P0.09,P0.10 做普通 GPIO 定义即可使用.

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 703
精华内容 281
关键字:

nordic52840