[经验] 【NRF51822试用体验】Nordic-BLE-自定义profile 简单介绍

[复制链接]

技术员

发表于 2016-7-11 23:16:18   3717 查看 4 回复 显示全部楼层 倒序浏览
分享

本次更新了sdk,同时也更新了keil~~~路途曲折有点小忧伤,不过现在开发环境更新了后感觉还可以。
keilMDK:5.20   Nordic BLE SDK :nRF51_SDK_8.1.0_b6ed55f
以上呢~网上都有,大家可以自己找,找不到再找我要吧~帖子不让发链接~~
使用例程:..\nRF51_SDK_8.1.0_b6ed55f\examples\ble_peripheral\ble_app_proximity2\pca10028\s110\arm5_no_packs\

    假设我们要创建个profile (Server),UUID为0xFFA2,包含一个Characterstic UUID为0xFF01.当然,UUID是我随便取的。
需要注意的有两个初始化接口:ble_stack_init();  跟services_init();
ble_stack_init()中有个softdevice_ble_evt_handler_set(ble_evt_dispatch); 其中所使用的参数见下图:
1.png

可以发现,这个函数中包含了各个profile的事件接收(处理)函数。所以我们需要在这个函数中添加我们自定义的事件接收函数。
ble_customer_on_ble_evt(p_ble_evt);至于为什么其他函数有两个参数~而我只有一个~因为ble传给我们的实际就那一个参数啊~其他的大家可以自己定。

services_init();
顾名思义,创建services(profile)的,
2.png
我们也添加自己的customer_init()用于添加Services。如下图是我添加的内容

3.png

4.png

最主要的是sd_ble_gatts_service_add(…),看名字就知道是增加服务的~so,查下document,可以找到如下功能:

5.png

参数1:类型,文档说:seeBLE_GATTS_SRVC_TYPES~~,因此等于 BLE_UUID_TYPE_BLE
参数2:服务的UUID的指针~,所以我们创建个ble_uuid_t   ble_uuid ,将该ble_uuid初始化~
参数3:注意该参数类型是out的,所以是个指针~,uint16 的数,其实是指向服务的handle(该handle 后面会用到)。

紧接着增加sd_ble_gatts_service_add(…)后,接下来就是增加Characterstic,如customer_char_add(); :
6.png

先是创建了好多不知道啥东西的变量,然后使用sd_ble_gatts_characteristic_add(…) 来增加Characterstic~,
其实上面的参数都是根据该函数的变量来的~因此参看文档即可知道需要添加什么参数,如:
7.png
参数1:services_handle ,是不是很熟悉,就是上面create services 时输出的services_handle。填入~
参数2:Charactersticmetadata ~不是很明白的话看看源码~goto过去看看,如下图:
8.png
后面的注释~~恩恩,就不怎么解释了。具体的赋值方式~后续再给出(此部分应该说是BLE4.0标准的东西了)。
参数3:Characterstic 的值~
参数4:out类型,这个就是Characterstic 的handle了~(注意,该值需要保存滴~后续读写之类的会用到)。
这样基本完成~~
接下来验证: 往ble_customer_on_ble_evt(..)中写点东西咯,当蓝牙层有事件发生,就会调用相应的函数入口,进入不同的switch!

9.png
注意!:该on_connect(),是我自己定义的~ 内容如下,可以看出,这是往串口输出 on_connect!!!!消息~。
10.png
我使用的是手机端的nRFTool来搜索ble设备的,用的是小米4(烂手机!哈哈)
直接debug,全速执行,即可搜索到device,点击连接,建立连接后可看到相应profile 串口也会打印消息。
如图:
11.png

12.png


调试过程遇到的几个问题:  
1、debug的时候,全速执行,手动去点暂停~,再全速执行,再暂停,很容易进入HardFault_Handler ,(其实呢,官方的demo也会这样的,所以,一定是我们调试方法不对,最好还是用串口输出吧)。
2、烧写softdevice的时候遇到点麻烦~下载的sdk如下图,softdevice 藏在框框中~如:..\Desktop\nRF51_SDK_8.1.0_b6ed55f\components\softdevice\s110\hex\   ,找到hex了,使用nRF Studio进行烧写,
但是呢,遇到个问题如下图,这个其实是softDevice size 没有填(图中为0),那么填多少合适??? 文档中有写。文档路径:..\nRF51_SDK_8.1.0_b6ed55f\components\softdevice\s110\docs110_nrf51822_8.0.0_migration_document.pdf

13.png
记得一定要多看文档!

标签:nordic ble

高级工程师

发表于 2016-7-12 13:30:12  
回复

点赞 举报

实习生

发表于 2016-10-6 16:15:49  

PCB在线计价下单

板子大小:

cm
X
cm

层数:

2

板子数量:

10

厚度:

1.6
本人公司需求BLE接收器,可同時接收8個不同GATT設備的資料,經過2/3G 到server,想用nrf51822,不知可否,有否一些建議?
回复

点赞 举报

等待验证会员

发表于 2016-10-31 14:17:26  
NRF51822-QFAC-R
NRF51822-QFAA-R
NRF51802-QFAA-R
NRF52832-QFAA-R
优势供应,需求请联系。
回复

点赞 举报

等待验证会员

发表于 2017-2-6 16:21:52  
一直很崇拜程序猿的射频芯片销售小何/QQ:206770193
有TI/CC,NORDIC,SILICON LABS COOPER Bussmann,等品牌
回复

点赞 举报

只有小组成员才能发言,加入小组>>

3个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表
-

推荐专区

技术干货集中营

专家问答

用户帮助┃咨询与建议┃版主议事

工程师杂谈

工程师创意

工程师职场

论坛电子赛事

社区活动专版

发烧友活动

-

嵌入式论坛

ARM技术论坛

Android论坛

Linux论坛

单片机/MCU论坛

FPGA|CPLD|ASIC论坛

DSP论坛

嵌入式系统论坛

-

电源技术论坛

电源技术论坛

无线充电技术

-

硬件设计论坛

PCB设计论坛

电路设计论坛

电子元器件论坛

控制|传感

总线技术|接口技术

-

测试测量论坛

LabVIEW论坛

Matlab论坛

测试测量技术专区

仪器仪表技术专区

-

EDA设计论坛

multisim论坛

PADS技术论坛

Protel|AD|DXP论坛

Allegro论坛

proteus论坛|仿真论坛

EasyEDA-中国人自已的EDA工具

Orcad论坛

-

综合技术与应用

电机控制

智能电网

光电及显示

参考设计中心

汽车电子技术论坛

医疗电子论坛

-

开源硬件

-

无线通信论坛

无线通信技术专区

天线|RF射频|微波|雷达技术

-

IC设计论坛

芯片测试与失效分析

Mixed Signal/SOC[数模混合芯片设计]

Analog/RF IC设计

设计与制造封装测试

-

厂商专区

TI论坛

TI Deyisupport社区

-

检测技术与质量

电磁兼容(EMC)设计与整改

安规知识论坛

检测与认证

-

消费电子论坛

手机技术论坛

平板电脑/mid论坛

音视/视频/机顶盒论坛

-

电子论坛综合区

聚丰众筹官方社区

新人报道区

聚丰供应链

-

论坛服务区

-

供求信息发布

供需广告

招聘┃求职发布区

电子展览展会专区