前言:
SDK版本15.3
评估板:pca10040
在uart的例程中添加battery service
添加之前,手机连上设备之后扫描到的service如下:

一、分配ram空间
softdevice的flash code是确定,但ram是不确定,和sevice的多少以及以下几个宏有关:
- #define NRF_SDH_BLE_TOTAL_LINK_COUNT 1 //一共同时可以支持多少个连接,使用默认值即可
- #define NRF_SDH_BLE_PERIPHERAL_LINK_COUNT 1 //作为从模式的连接同时能有几个,使用默认值即可
- #define NRF_SDH_BLE_CENTRAL_LINK_COUNT 0 //作为主模式的连接同时能有几个,使用默认值即可
- #define NRF_SDH_BLE_GATT_MAX_MTU_SIZE 247 // MTU 值的大小,使用默认值即可,nrf51 系列中 mtu 的默认值为23
- #define NRF_SDH_BLE_VS_UUID_COUNT 1 //用户自定义的base UUID有几个,使用默认值即可,因为例程中的uart service 使用了一个的128bit的 uuid ,所以这是 count 值为1。因为此次实验添加的是自有 service ,所以 base uuid 只有uart service 一个。每添加一个 base uuid , count 值就+1,同时每增加一个uuid,IRAM1的起始地址就要增加0x10,size 同时减少0x10。

- #define NRF_SDH_BLE_GATTS_ATTR_TAB_SIZE 1408 //Attribute table总共占多少协议栈RAM空间,该值必须是4的倍数。
- #define NRF_SDH_BLE_SERVICE_CHANGED 0 //要不要包含service change characteristic,使用默认值即可
二、代码修改
2.1 添加文件
- 添加service文件,文件路径

本文详细介绍了在nRF5 SDK版本15.3的PCA10040评估板上实现BLE Battery Service的过程,包括RAM空间分配、代码修改、服务初始化及电量模拟上报,适用于嵌入式蓝牙设备开发。
最低0.47元/天 解锁文章
426

被折叠的 条评论
为什么被折叠?



