nordic_nordic 广播参数 - CSDN
精华内容
参与话题
  • 初识Nordic 52840

    万次阅读 2019-08-15 23:32:08
    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 settings 0x000F F000 - 0x0010 0000 (4 kB)
    MBR parameter storage 0x000F E000 - 0x000F F000 (4 kB)
    Bootloader 0x000F 8000 - 0x000F E000 (24 kB)
    Application area (incl. free space) x0002 0000 - 0x000F 8000 (864 kB)
    SoftDevice 0x0000 1000 - 0x0002 0000 (124 kB)
    Master Boot Record (MBR) 0x0000 0000 - 0x0000 1000 (4 kB)

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

    如何选择协议栈和SDK

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

    nRF52840 IC revision nRF5 SDK S132 SD S132 SDS S140 SD S140 SDS
    Engineering A 12.2.0 3.0.01 3.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; 1 15.0.0 6.0.0 1.x

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

    • SoftDevice

      选择S140版本

    • SDK

      选择15.0.0版本

    • 其他

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

    文档下载

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

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

    最后

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

    最后

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

    展开全文
  • nordic 蓝牙学习笔记(一)

    千次阅读 2018-01-09 19:04:01
    本人目前使用的蓝牙芯片有两种,一种是nordic51系列,一个是nordic52系列,刚刚开始学习蓝牙,我感觉两眼一蒙蔽,啥也不懂,怎么开始学习呢?无非是找一个关于nordic蓝牙相关的资料,看着看着,可能就越来越不懂吧...

    1.简介
    本人目前使用的蓝牙芯片有两种,一种是nordic51系列,一个是nordic52系列,刚刚开始学习蓝牙,我感觉两眼一蒙蔽,啥也不懂,怎么开始学习呢?无非是找一个关于nordic蓝牙相关的资料,看着看着,可能就越来越不懂吧,也越来越迷糊,这个时候,想起了我同学说过的话,你现在看不懂的书,是因为相关的基础知识还不懂,还有部分底层的只是没有掌握,所以,万事开头难,既然想学习蓝牙相关的知识,就必须有一个学习的心理。
    其次,最主要的是,蓝牙芯片的资料很多,如果只是想入门,是真的很简单,只要会用,基本就可以了。学习一个新事物,多少会有点不适应的,因此我在这里会详细的描述当初我自己学习蓝牙时候,或者说初级入门的时候所遇到的问题和难点,一方面希望能帮助大家,另一方面也是对我自己的一个总结。

    2.首先第一个问题是怎么学?从哪里入手?
    首先要学习,至少要有相关的资料,因此下面我会把自己的学习时搜集的资料放入链接中,有兴趣的朋友们可以下载看看。
    url—————————————————————
    最基本的是对蓝牙的一些基础知识了解,不然两眼一抹黑,是真的啥也不懂。

    1.什么叫特征值(characteristic)?
    2.服务(service)是什么意思?
    3.什么是UUID?

    以上三个问题其实都很简单,翻翻书都能知道,但是怎么理解,怎么使用又是一个问题。

    接下来问题是主机和从机的概念。

    我们现在使用的是ble4.0,作为一个设备就必须对它做明确的定义,比如蓝牙设备作为主机,那么他主动扫描广播,这样就衍生了怎么扫描,扫描的时间间隔,等等,我们需要明白或者做适配的就是关于扫描部分的配置。
    假如你的设备是作为从机,那个你就主动发送广播,这样也衍生一系列的问题,比如你是怎么广播的,广播的内容是什么,广播的间隔等等,我们需要配置的也就是这些。
    接着就是连接和断开连接,这个是双方都可以的。举个例子,如果我是手机蓝牙,那么我作为主设备,主动去扫描一个蓝牙设备(被扫描的发出广播),然后会发起连接,连接成功,开始通信等。
    广播的类型也不是一概而定的,他有四种类型,如下,
    (1)我随机广播,只要在我附近都可以收到,都可以连接我。
    (2)我是广播给某个指定的设备,只有他能连接我。
    (3)我只广播,在我附近都能收到或者扫描到,但是我不接受连接。
    (4)我是个广播,我可以被大家扫描,但是我不能被连接。
    

    以上纯属理论知识,可能有很多的是我自己看书翻译的总结的有很多的不对的地方,欢迎大家指出了。

    展开全文
  • 最近玩了一下nordic

    2017-11-12 17:22:33
    最近玩了一下nordic , 我随便bb。 刚开车的人一般都是选开发板的,淘宝上买一个,资源有的是,带资料,小公司开发几个蓝牙产品没有问题,震动棒之类的。。 我发现可以一开始就去自己打板,PACK和各种工具都是...

    我最近比较虚,新番又很少,玩个王者用李白买红叉快电刀打推进各种赢还经常被人举报,要不是我偷塔他们能赢?这是个推塔的游戏好不好



    最近玩了一下nordic , 我随便bb。


    刚开车的人一般都是选开发板的,淘宝上买一个,资源有的是,带资料,小公司开发几个蓝牙产品没有问题,震动棒之类的。。哟哟


    我发现可以一开始就去自己打板,PACK和各种工具都是开源的,github上面都有很多工具,


    https://github.com/NordicSemiconductor/Android-nRF-Connect     工具源码  测试可以用

    http://www.nordicsemi.com/eng/content/search?SearchText=Master%20Control%20Panel&filter[]=contentclass_id:54&activeFacets[class:Content%20type]=Resource  

    APK下载


    下载了就安装到自己的手机上,可以先做测试用



    2,然后我想说一下分区


    这个跟工具有很大的关系,官方的开发工具是keil , 下载安装NordicSemiconductor的 PACK ,库有好几个的,




    尼玛市面上卖的一共有这几块芯片,nRF51422_xxAC用的比较多,比如NRF51822    256K ROOM 32K RAM  不要选错了,选错了跑不动的 比了AA 或者AB 都是不一样的芯片




    这个就是分区,首先运行BOOTLOADER    然后再运行到APP   SD分区是Nordic 的固件  就这三个分区,那个FREE是SWAP分区,这个分区是用来安全升级的,类似于A/B system 

    MBR没什么的,放一下API  ,用来调用更新SD  毕竟那是R0区 ,R0 只能是人家R0 去写


    一般记住两个地址就可以  0X03C000 和 SD SIZE   SD SIZE 看你是用哪个版本的SD   大小不一样  那么烧写 APP的 offset就不一样 需要改一下




    18000 是96 K  我用的是S110    28000 = 160 K      对 是 256K 的room   RAM选择随意 够运行就可以了  预留可以大一点 



    3、说一下空中升级


    空中升级是BOOTLOADER 去实现的 , 一般有两种方式 


    1、按键方式

    2、APP切换方式


    两种方式都是要切换到boot 去直接运行boot  


    APP切换方式比较方便一点。



    什么鬼啊,意思就是说boot 本身就有一个蓝牙设备   跟APP的代码实现差不多   一样是调用 SD固件API的   


    还有做好的ZIP包千万要注意!不要放到类似百度云这种云端了,会加密运输的,ZIP头部都被改了,APP空中升级会不断弹出的,用QQ传输ZIP包到手机


    FREE分区会先放数据,OK的话会搬到 APP  这样如果数据验证不OK 还可以不会连  之前的APP都进不去了

    ./nrfutil.exe dfu genpkg /c/Users/10167/Desktop/2017.1.1.zip
     --application nrf51422_xxac_s130.hex --application-version 0xffffffff 
    --dev-revision 0xffff --dev-type 0xffff --sd-req 0xfffe

    做ZIP包的工具在 

    http://www.nordicsemi.com/eng/content/search?SearchText=MCP


    下载 X64 或者X86 的  


    MCP工具怎么用网上有说,太罗逼嗦不想说了。源码在github也有




    4、说一下example 


    如果你是AC 的芯片的话,最好选S130的官方实例


     app 的路径  D:\Keil_v5\ARM\PACK\NordicSemiconductor\nRF_Examples\11.0.0-2.alpha\ble_peripheral\ble_app_hrs\pca10028\s130_with_dfu\arm5

    bootloader 路径 D:\Keil_v5\ARM\PACK\NordicSemiconductor\nRF_Examples\11.0.0-2.alpha\dfu\bootloader\pca10028\dual_bank_ble_s130\arm5

    sofeware device 路径 D:\Keil_v5\ARM\PACK\NordicSemiconductor\nRF_Examples\11.0.0-2.alpha\ble_peripheral\ble_app_hrs\pca10028\s130_with_dfu\arm5\RTE\nRF_SoftDevice\nRF51422_xxAC 


    这个编译可以OK的,AC的芯片也不会有什么异常


    不过需要改一下BOOTLOADER


    -uint8_t  m_boot_settings[CODE_PAGE_SIZE] __attribute__((at(BOOTLOADER_SETTINGS_ADDRESS))) __attribute__((used));              /**< This variable reserves a codepage for bootloader specific settings, to ensure the compiler doesn't locate any code or variables at his location. */

    +uint8_t  m_boot_settings[CODE_PAGE_SIZE] __attribute__((at(BOOTLOADER_SETTINGS_ADDRESS))) __attribute__((used)) = {BANK_VALID_APP};              /**< This variable reserves a codepage for bootloader specific settings, to ensure the compiler doesn't locate any code or variables at his location. */


    将开机地址赋值一下  {BANK_VALID_APP}  就可以了。



    5、说一下code 吧 


    NORDIC的代码就是呵呵哈哈哈,好傻,是我 ,少年


    之前,不是说什么RTOS,说的有多牛逼的尼玛,其实是个while(1)  ,搞栈列表出来,把函数handle放到struct 上去,包一下,每次运行

    列表每行的一个,一行一行运行,就像什么来着,举个名字,叫,矩阵扫描喂狗运行法!人才


    喂狗是这样的,每运行完一个handle 会异或一下数值表 ,这个格子在下一次扫描就不会运行了,需要在喂一次狗,需要在这个格子数值表上面再置1


    这个我说的是RTOS的,RTOS没什么封装的,妈妈总说我说话很好听,


    NORDIC的程序不用去考虑这些啦,很简单的,那些sd_xxxxxx 开头的API都跳不进去的,已经封装在SD固件上面,写写中断函数就可以用了,This is Nordic


    ??? 什么意思,什么是写一下中断函数就可以用了尼玛


    那个中断函数叫:static void ble_evt_dispatch(ble_evt_t * p_ble_evt)



    APP那边传过来的 数据到了数据链路层 浮上来的handle就是 ble_evt_t


    typedef struct
    {
      ble_evt_hdr_t header;                 /**< Event header. */
      union
      {
        ble_common_evt_t  common_evt;         /**< Common Event, evt_id in BLE_EVT_* series. */
        ble_gap_evt_t     gap_evt;            /**< GAP originated event, evt_id in BLE_GAP_EVT_* series. */
        ble_l2cap_evt_t   l2cap_evt;          /**< L2CAP originated event, evt_id in BLE_L2CAP_EVT* series. */
        ble_gattc_evt_t   gattc_evt;          /**< GATT client originated event, evt_id in BLE_GATTC_EVT* series. */
        ble_gatts_evt_t   gatts_evt;          /**< GATT server originated event, evt_id in BLE_GATTS_EVT* series. */
      } evt;
    } ble_evt_t;



    所有的数据大杂烩都在这里,会进入一个共享中断 ble_evt_dispatch(ble_evt_t * p_ble_evt)


    在这个中断里面你可以尽情的去处理ble_evt_t这个handle


    void ble_conn_params_on_ble_evt(ble_evt_t * p_ble_evt)
    {
        switch (p_ble_evt->header.evt_id)
        {
            case BLE_GAP_EVT_CONNECTED:
                on_connect(p_ble_evt);
                break;


            case BLE_GAP_EVT_DISCONNECTED:
                on_disconnect(p_ble_evt);
                break;


            case BLE_GATTS_EVT_WRITE:
                on_write(p_ble_evt);
                break;


            case BLE_GAP_EVT_CONN_PARAM_UPDATE:
                on_conn_params_update(p_ble_evt);
                break;


            default:
                // No implementation needed.
                break;
        }
    }


    比如说这个处理函数,on_connect(p_ble_evt) 检查到连接中断然后拿到这个gap结构handle ,有了这个gap handle 你才可以发送特征数据


    static void on_connect(ble_nus_t * p_nus, ble_evt_t * p_ble_evt)
    {
        p_nus->conn_handle = p_ble_evt->evt.gap_evt.conn_handle;
    }


    你也可以在这个

    on_connect  标志(连接中断)去开启一个定时器100ms,通过p_ble_evt->evt.gap_evt.conn_handle 可以发送数据,



    一般步骤:

    services_init ->(sd_ble_gatts_service_add、sd_ble_gatts_characteristic_add)[添加服务] -> ble_evt_dispatch(connect)[等待连接][对比创建


    与接收handle] ->打开定时器-> sd_ble_gatts_hvx [发送] -> ble_evt_dispatch (on write)[接收][对比创建与接收handle]


    我好虚  我想过吃喝玩乐的日子   想领失业保险过日子成为废柴



    6、没了。













    展开全文
  • NORDIC蓝牙《详解篇》

    2020-07-27 23:33:57
    Nordic 蓝牙入门资料,对于学习BLE的朋友很有帮助,欢迎大家下载,希望对大家都有帮助。
  • 包含nordic蓝牙抓包工具以及抓包流程说明文档
  • 这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、...
    展开全文
  • Nordic型号对比

    2020-07-30 23:31:50
    Nordic型号对比,清楚的了解哪个型号的特性,适合选型
  • 一、电脑软件介绍 在这个连接https://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRFgo-Studio下载nRFgo-Studio并按照在电脑,如果系统是32位的就下载32位的如果是64位的就下载64... 这个是安装好的界面 ... ...
  • BLE开发 Nordic nRF52832(一) 搭建开发环境nRF52832 是Nordic出的最新款超低功耗soc,是上代芯片nRF51822的升级版。芯片集成2.4GHz发射器和一颗32位 ARM Cortex M4F CPU,以及512KB rom+64KB ram。厂家提供协议栈...
  • nordic 协议栈区别

    千次阅读 2017-02-25 13:52:46
    S110 指的是从设备的协议栈 S120 指的是主设备的协议栈
  • Nordic 52832 ——Ble uart 例程分析

    千次阅读 2018-10-27 14:38:49
    本文章只是本人对Nordic 52832 Ble uart例程的理解,如果有问题欢迎与我讨论,本人qq:993650814 1、 Ble uart services 添加  ble_nus_init 函数添加了ble 服务,并添加了Tx和Rx两个characteristic, 添加服务...
  • Nordic的协议栈用以hex的方式提供给用户开发。Nordic的芯片没用到类似stm32存储重映射的功能,所以code的地址直接从0x0000000开始。以S132_SDS_v5.0协议栈为例说说NORDIC协议栈以及应用层ROM和RAM的分布。协议栈的...
  • Nordic--nrf52832--RTT Log 打印

    千次阅读 2019-01-11 17:14:13
    日志打印可以有两种方法 串口打印的方式,即printf()的方式 JLink的RTT Log打印方式 JLink RTT Log打印 工程中添加:SEGGER相关的文件 配置步骤: sdk_config.h文件中配置: ...NRF_LOG_BACKEND_RTT_ENABLED 置1 ...
  • nordic nrf52 sdk 手册

    千次阅读 2016-09-28 14:07:07
    nrf52 的sdk手册单独的一个文档还没发现在哪里可以下载。这里提供一个nordic 论坛版主的解决方法。 nrf52 sdk manual  下载offline doc,解压后打开index.html文件就可以了。
  • 关于NRF 内部flash空间分部介绍

    千次阅读 2018-06-06 14:42:13
    以12.3 协议栈为例 、NRF51系列12.3.0的 协议栈的大小是 108K 则打小就是 108*1024=0x1B000APP的起始地址就是从0x1B000开始的 , APP的大小就是0x25000=148*1024 ,APP可以占用148K, 148+108=256K 也就flash...
  • 写在前面: 之前已经写过OTA过程是...Nordic 52832 —— OTA 流程源码分析(一), 正文: 一、 准备工作:如何编译bootloader以及让他正常工作请参考如下文章:  DFU升级 ,非常感谢这位大牛的贡献。 二、...
  • Nordic mesh 协议启动配置流程分析(一)

    千次阅读 2019-01-09 20:02:49
    写在前面:本篇主要分析启动配置流程,需要准备两份代码,provisioner 角色和provisionee角色。QQ:993650814,欢迎一起讨论ble或者mesh。参考资料如下: 解密蓝牙mesh系列 | 第九篇 解密蓝牙mesh系列 | 第十篇 ...
  • Nordic是协议栈以hex文件的方式提供,那么app怎么是怎么通过api来调用协议栈的呢。 一、应用层通过API的方式调用协议栈的函数,通过SVC中断方式。 1)svc的宏定义 #define SVCALL(number, return_type, ...
  • Nordic nRF52840 入门学习

    千次阅读 2019-07-22 14:00:00
    标题对Nordic Sdk里的库函数所实现功能的分析 1.Board Definition组 “ Board Definition”组中加入板卡定义文件“ boards.c”,该文件针对于具体板卡,主要要用来定义板卡的指示灯、按键、IO输出电压(仅nRFS2840具有...
  • Nordic芯片怎样烧录UICR

    千次阅读 2019-04-20 14:44:07
    使用工具nrfjprog,我们可以操作UICR,可以用于保存用户的数据,例如芯片的MAC地址和版本号等固定信息。具体操作如下: 首先,擦除掉芯片Flash,可以使用nRFgoStudio.exe或者J-Flash Lite。 然后打开win的窗口模式...
1 2 3 4 5 ... 20
收藏数 4,263
精华内容 1,705
关键字:

nordic