nRF52832+Mesh 3.2.0 学习笔记 - 记录贴

nRF52832+Mesh 3.2.0 学习笔记

                                                                              2019.12.21       

0 参考资料

API参考手册等入口:http://www.viper1983.com/nrf_mesh/html/

创建新模型:http://www.viper1983.com/nrf_mesh/html/md_doc_libraries_how_to_models.html

简单的onoff模型解析:http://www.viper1983.com/nrf_mesh/html/md_models_vendor_simple_on_off_README.html

Mesh通用模型/ 规格:http://www.viper1983.com/MshMDLv1.0.1/MshMDLv1.0.1-201-317.pdf.html

模型/操作码/状态码消息流/序列

SDK下载:https://www.nordicsemi.com/Software-and-tools/Software/nRF5-SDK/Download#infotabs

mesh下载:https://www.nordicsemi.com/Software-and-tools/Software/nRF5-SDK-for-Mesh/Download

mesh3.2.0介绍:https://infocenter.nordicsemi.com/index.jsp?topic=%2Fstruct_sdk%2Fstruct%2Fsdk_mesh_latest.html

mesh APP:艾克姆资料盘

mesh APP源码:https://github.com/NordicSemiconductor/Android-nRF-Mesh-Library

nRF52832中文手册: https://www.docin.com/p-2197883124.html

1.修改蓝牙名称

2.修改发布次数,解决进入两次接收回调

3.在工程中新建文件夹并添加.c/.h文件

添加新.c程序或已经存在的.c

添加.h路径

4.关于RSSI

负数级别,越接近0,表示功率越大,信号越好

-80以后信号比较弱了,不能说不保证正常通讯,只是信号比较弱,更容易受到干扰

5.蓝牙名称

SD_BLE_GAP_DEVICE_NAME_SET       = BLE_GAP_SVC_BASE + 16,  /**< Set Device Name. */

命了31个字符,32个就不行了

6.cjson创建与解析

创建cjson:  

cJSON * root =  cJSON_CreateObject();

    cJSON * item =  cJSON_CreateObject();

    cJSON_AddItemToObject(root, "operation", cJSON_CreateString("CALL"));

    cJSON_AddItemToObject(root, "service", cJSON_CreateString("telephone"));

    cJSON_AddItemToObject(root, "text", cJSON_CreateString("XXXX"));

    cJSON_AddItemToObject(root, "semantic", item);//root节点下添加     semantic节点

    cJSON_AddItemToObject(item, "name", cJSON_CreateString("san"));//semantic节点下添加     item节点

    cJSON_AddItemToObject(item, "number", cJSON_CreateString("1234"));//添加   name节点

    __LOG(LOG_SRC_APP, LOG_LEVEL_INFO, "--first json:\n%s\n", cJSON_PrintUnformatted(root));

    cJSON_Delete(root);

解析cjson:

    strcpy(Rx_buf,"{\"operation\":\"CALL\",\"semantic\":{\"name\":\"san\",\"number\":\"1234\"}}");

    cJSON * root1 =  cJSON_Parse(Rx_buf); 

    cJSON * item1;

    cJSON * item2;

    item1  = cJSON_GetObjectItem(root1, "operation");

    if(item1 != NULL)

    {

    __LOG(LOG_SRC_APP, LOG_LEVEL_INFO, "--operation:%s\n", item1->valuestring);

    }

    item1  = cJSON_GetObjectItem(root1, "semantic");

    if(item1 != NULL)

    {

        //char *str = cJSON_PrintUnformatted(item1);

        __LOG(LOG_SRC_APP, LOG_LEVEL_INFO, "--semantic:%s\n",cJSON_PrintUnformatted(item1));

        cJSON * root2 =  cJSON_Parse(cJSON_PrintUnformatted(item1));  

        cJSON * item2;

        item2  = cJSON_GetObjectItem(root2, "name");

        if(item2 != NULL)

        {

        __LOG(LOG_SRC_APP, LOG_LEVEL_INFO, "--name:%s\n",item2->valuestring);

        }

        item2  = cJSON_GetObjectItem(root2, "number");

        if(item2 != NULL)

        {

        __LOG(LOG_SRC_APP, LOG_LEVEL_INFO, "--number:%s\n",item2->valuestring);

        }

    }

cJSON_Delete(root1);

7.sdk_config中添加配置选项

这需要从其他的包含这个选项的例子里面拷贝过来,在包含这个选项的sdk_config的Configuration Wizard界面选中这个配置项,然后切换回Text Editor,这时光标位置是这个配置项的起始行,选中这个配置项的下一个配置项切回Text Editor再往上退一行就得到结束行 ,然后拷贝起始行-结束行到自己的sdk_config.

例如下图,想要增加NRFX_PRS_ENABLED - nrfx_prs - Peripheral Resource Sharing module这个选项,选中这个配置后切回Text Editor得到起始行52,再返回Configuration Wizard选中这个配置的下一个项NRFX_UARTE_ENABLED - nrfx_uarte - UARTE peripheral driver然后切回Text Editor得到这个项的起始行为145,则我们想要添加的项结束行为144.所以我们复制52-144行即可.

   

 

8.使用内部32.768k RC

图中红色方框内的32.768k晶振是协议栈使用的,实际可以切换为内部晶振从而去掉这部分硬件回路.这就需要软件层面去切换:在sdk_config.h中修改下图中红框内的配置即可.

 

9. P0.09 P0.10做普通IO使用

由于P0.09 P0.10默认是被用作NFC功能,所以这里需要添加个宏定义将其用作普通IO.在system_nrf52.c文件中增加宏定义:

#define CONFIG_NFCT_PINS_AS_GPIOS  即可

  • 0
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值