Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
AB32VG1
蓝牙BLE
RT-Thread学习营
【AB32VG1开发】RT-Thread bluetrum_sdk BLE例程
发布于 2021-12-04 17:29:53 浏览:1212
订阅该版
[tocm] # **【AB32VG1开发】基于RT-Thread 中科蓝讯AB32VG1 BLE开发例程讲解** ------------ 中科蓝讯最近出的SDK(bluetrum_sdk) V1.1.0,支持了BLE开发,目前官方还没有正式文档,我来摸索一下吧 ------------ ## **安装最近SDK** 操作步骤详细请参阅: [基于RT-Thread的AB32VG1开发环境搭建](http://bbs.sunsili.com/thread-225595-1-1.html) ![ab32_sdk.JPG](https://oss-club.rt-thread.org/uploads/20211204/b1663e8feac9addc46e256b3334aa12a.jpg.webp) 选择中科蓝讯AB32VG1开发板最新SDK(bluetrum_sdk) 1.1.0安装 ## **建RT-Thread工程** 操作步骤详细请参阅: [基于RT-Thread的AB32VG1开发环境搭建](http://bbs.sunsili.com/thread-225595-1-1.html) 注意选择最新SDK 1.1.0 ![ab32_prj.JPG](https://oss-club.rt-thread.org/uploads/20211204/d2c5acde7423d65fe271cb1ec07ccaf4.jpg.webp) ### **配置工程** 操作步骤详细请参阅: [基于RT-Thread的AB32VG1开发环境搭建](http://bbs.sunsili.com/thread-225595-1-1.html) 配置详情如下: ![ab32_prj_config.JPG](https://oss-club.rt-thread.org/uploads/20211204/b4a2b77c84a105bbf6d8e86eb0391280.jpg.webp) 开启: 宏: [SOC_AB32VG1] 宏: [PKG_USING_BLUETRUM_NIMBLE] 宏: [BSP_USING_TIM](这后面加的,因为出现这个了定时报告数据时运行错误:(rt_object_get_type(&timer->parent) == RT_Object_Class_Timer) assertion failed at function:rt_timer_stop, line number:502 )我以为加上TIMER模块,就加了,但是还是没解决。 配置后,保存会出现错误:local variable 'get_git_root' referenced before assignment Operation failed.这里不管它,编译时看看具体是哪里同, 我们再修改。 ![AB32_BLE_Config_err.JPG](https://oss-club.rt-thread.org/uploads/20211204/4f1bb9748bcaddff25d51ed8c89496f1.jpg.webp) ### **修改代码** 首先熟悉一下BLE_SDK代码目录: ![AB32VG1_ble_dir.png](https://oss-club.rt-thread.org/uploads/20211204/d3c93794a2f6994c4328958a16b902ec.png.webp) ### **修改mac_addr** 工程目录下: packages\bluetrum_sdk-latest\bluetrum_nimble\porting\npl\rtthread\src\ble_platform.c ![AB32_BLE._mac_addr.JPG](https://oss-club.rt-thread.org/uploads/20211204/fc466fa5934f49568bdb54278d072451.jpg.webp) 我修改如下: ```c void bt_get_local_bd_addr(uint8_t *addr) { uint8_t addr_table[6] = {0x41, 0x42, 0x18, 0x58, 0x68, 0x88}; //mac_addr是6bytes, SDK代码里只写了5个数据 memcpy(addr, addr_table, 6); } ``` 注意:mac_addr是6bytes, SDK代码里只写了5个数据,这是疏漏还是有意为之 ### **修改BLE_name(名字)** 工程目录下: \packages\bluetrum_sdk-latest\bluetrum_nimble\apps\blehr\src\blehr.c ![AB32_BLE._name.JPG](https://oss-club.rt-thread.org/uploads/20211204/4354976834db3e72d033a6451ec161de.jpg.webp) 我修改如下: ```c static const char *device_name = "Silicon_blehr_sensor"; ``` 注意:不能是中文,中文会找不到设备 ### **修改服务及设备信息** 工程目录下: packages\bluetrum_sdk-latest\bluetrum_nimble\apps\blehr\src ![ab32_ble_srv_device_info.JPG](https://oss-club.rt-thread.org/uploads/20211204/03a69944037e85e1a44b01ae6297cb10.jpg.webp) 我修改如下: ```c static const char *manuf_name = "谷动谷力"; //Sunshine Silicon";可以中文,但长度限制了,没有找到哪里限制了 static const char *model_num = "SunSilicon HR Sensor"; ``` ```C static const struct ble_gatt_svc_def gatt_svr_svcs[] = { { /* Service: Heart-rate */ .type = BLE_GATT_SVC_TYPE_PRIMARY, .uuid = BLE_UUID16_DECLARE(GATT_HRS_UUID), .characteristics = (struct ble_gatt_chr_def[]) { { /* Characteristic: Heart-rate measurement */ .uuid = BLE_UUID16_DECLARE(GATT_HRS_MEASUREMENT_UUID), .access_cb = gatt_svr_chr_access_heart_rate, .val_handle = &hrs_hrm_handle, .flags = BLE_GATT_CHR_F_NOTIFY, }, { /* Characteristic: Body sensor location */ .uuid = BLE_UUID16_DECLARE(GATT_HRS_BODY_SENSOR_LOC_UUID), .access_cb = gatt_svr_chr_access_heart_rate, .flags = BLE_GATT_CHR_F_READ, }, { 0, /* No more characteristics in this service */ }, } }, { /* Service: Device Information */ .type = BLE_GATT_SVC_TYPE_PRIMARY, .uuid = BLE_UUID16_DECLARE(GATT_DEVICE_INFO_UUID), .characteristics = (struct ble_gatt_chr_def[]) { { /* Characteristic: * Manufacturer name */ .uuid = BLE_UUID16_DECLARE(GATT_MANUFACTURER_NAME_UUID), .access_cb = gatt_svr_chr_access_device_info, .flags = BLE_GATT_CHR_F_READ, }, { /* Characteristic: Model number string */ .uuid = BLE_UUID16_DECLARE(GATT_MODEL_NUMBER_UUID), .access_cb = gatt_svr_chr_access_device_info, .flags = BLE_GATT_CHR_F_READ, }, { 0, /* No more characteristics in this service */ }, } }, { 0, /* No more services */ }, }; ``` ### **修改服务属性** ![AB32VG1_ble_Svr.png](https://oss-club.rt-thread.org/uploads/20211204/26749f137f46bd1ebbcd667b9c9ba7ff.png) 这里服务,我们没做修改,保存默认。 ### **编译** 编译工程:Ctrl+B,会出错, 如下: In file included from
: E:\RT-ThreadWorkspace\AB32_BLE_Demo\rtconfig_preinc.h:8:9: error: no macro name given in #define directive 8 | #define | ^ In file included from
: E:\RT-ThreadWorkspace\AB32_BLE_Demo\rtconfig_preinc.h:8:9: error: no macro name given in #define directive 8 | #define | ^ make: *** [rt-thread/src/subdir.mk:57: rt-thread/src/device.o] Error 1 make: *** Waiting for unfinished jobs.... In file included from
: E:\RT-ThreadWorkspace\AB32_BLE_Demo\rtconfig_preinc.h:8:9: error: no macro name given in #define directive 8 | #define | ^ In file included from
: E:\RT-ThreadWorkspace\AB32_BLE_Demo\rtconfig_preinc.h:8:9: error: no macro name given in #define directive 8 | #define | ^ make: *** [rt-thread/src/subdir.mk:57: rt-thread/src/clock.o] Error 1 make: *** [rt-thread/src/subdir.mk:57: rt-thread/src/components.o] Error 1 make: *** [rt-thread/src/subdir.mk:57: rt-thread/src/idle.o] Error 1 "make -j4 all2" terminated with exit code 2. Build might be incomplete. 14:29:13 Build Failed. 9 errors, 0 warnings. (took 1s.464ms) ![AB32_BLE_Config_err.JPG](https://oss-club.rt-thread.org/uploads/20211204/4f1bb9748bcaddff25d51ed8c89496f1.jpg.webp) 双击出错提示,定位到出错的地方,#define后面是空的,删除这个#define即可 ### **标题重新编译** 保存修改内容: ctrl+s, 编译:ctrl+b ![AB32_BLE_build_suc.JPG](https://oss-club.rt-thread.org/uploads/20211204/2c0499e23716187c9bc2013915cb9d9c.jpg.webp) 编译成功 ## **调试** 将编译好的,目标文件:rtthread.elf,烧录到中科蓝讯AB32VG1 BLE开发板,操作步骤详细请参阅: [基于RT-Thread的AB32VG1开发环境搭建](http://bbs.sunsili.com/thread-225595-1-1.html) ![AB32_BLE_debug.JPG](https://oss-club.rt-thread.org/uploads/20211204/1e3d20c76bc3a2cb64c89d7d88bffa1f.jpg.webp) ### **手机打开蓝牙** ![AB32_BLE_debug_phone_openBLE.JPG](https://oss-club.rt-thread.org/uploads/20211204/89147a28bb09873446b2c6ac9f03034f.jpg.webp) ### **手机打开蓝牙BLE调试助手** ![AB32_BLE_debug_phone_openBLEdbg.JPG](https://oss-club.rt-thread.org/uploads/20211204/424977048d0e3080948b2b2e6d3c19c5.jpg) ### **连接BLE设备** 扫描到与我们代码设置一样BLE设备名字,说明代码修改正确.连接与我们代码设置一样BLE设备名字. ![AB32_BLE_debug_phone_conect_bleg.JPG](https://oss-club.rt-thread.org/uploads/20211204/b044f5ce50ec1d88b1351ab04ee7303b.jpg.webp) ### **设备相关数据服务列表** ![AB32_BLE_debug_blereportsrv.JPG](https://oss-club.rt-thread.org/uploads/20211204/5ee1f7aaa388faa11021c84544813b6a.jpg.webp) ### **获取BLE设备数据--制造商信息** ![AB32_BLE_debug_blerd.JPG](https://oss-club.rt-thread.org/uploads/20211204/70d9d58c457af0383cf4e4a020d64e10.jpg.webp) 点"读取"即可,这与我们代码设置一样,说明代码修改正确 ![AB32_BLE_debug_blereport.JPG](https://oss-club.rt-thread.org/uploads/20211204/3e3a4a98d28dfbeb2963c92bd7c54c2c.jpg.webp) ### **获取BLE设备数据--设备型号信息** 点"读取"即可,这与我们代码设置一样,说明代码修改正确 ![AB32_BLE_debug_blerdnum.JPG](https://oss-club.rt-thread.org/uploads/20211204/83cd7f0b2c9a45e6b16fb1d804a69593.jpg.webp) ### **读取心率相关数据** ![AB32_BLE_debug_blerdhr01.JPG](https://oss-club.rt-thread.org/uploads/20211204/68b958b70acd9c1c63c48b7d3e6deb20.jpg.webp) ### **心率数据自动数据通知上报** 心律数据是模拟的,开发板硬件上没有 ![AB32_BLE_debug_blerdhr01.JPG](https://oss-club.rt-thread.org/uploads/20211204/68b958b70acd9c1c63c48b7d3e6deb20.jpg.webp) ![AB32_BLE_debug_blerdhr02.JPG](https://oss-club.rt-thread.org/uploads/20211204/b1f4f06b6e46e3daa36df91bd98998c4.jpg.webp) ![AB32VG1_debug_ble_err.png](https://oss-club.rt-thread.org/uploads/20211204/731a63a042ab3918486c986e9f2fdcd2.png) ![AB32VG1_debug_ble_err02.png](https://oss-club.rt-thread.org/uploads/20211204/fe816d2f453a72135a833bad1e6fcc46.png) 这个数据点代码有BUG,不定什么时候,报错,每次错误还不一样, 这个还得官方分析一下. ## **遗留问题** 1) 定时上报数据点代码有BUG,不定什么时候,报错,每次错误还不一样, 这个还得官方分析一下. 2)现在只有Read(BLE上报数据)功能,没有write(APP->BLE下达数据)功能,这个后面移植一下 3)连接现有通用平台功能, 如微信\涂鸦\天猫精灵.....等等 4)mac_addr是6bytes, 代码里只写了5个数据,这是疏漏还是有意为之 5)制造名长度限制了,没有找到哪里限制了,是不是上报告数据长度限制了,在代码哪里呢 上面遗留问题,还请专家帮忙解决一下,我能力有限. ## **总结** 用RT-Thread基本中科蓝讯AB32VG1 BLE开发快捷方便.做一个只要官方有的驱动及软件,相关方便快捷,没有话自己移植的话,还是比较复杂.
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
fannifu
我是谷动谷力的大树,欢迎大家来访http://bbs.sunsili.com
文章
5
回答
3
被采纳
0
关注TA
发私信
相关文章
1
stm32f407+lan8720 lwip2.0 作业提交
2
玩溜GD32303E-EVAL BSP系列(五)----设备连接网络
3
onenet应用连不上云端
4
【文件系统】晴天文件匹配
5
rtt semc sdram 基于操作系统怎么初始化驱动设备
6
RT-Thread移植笔记
7
RT-Thread内核移植+LoIIs+STM32F103C8+StdLib
8
EVN编译报错,求助大神
9
【内核和外设学习营】十里 简单LED闪亮测试
10
【内核和外设学习营】 十里 串口指令控制RGB灯点亮的颜色
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
freemodbus
PWM
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
中断
编译报错
Debug
SFUD
rt_mq_消息队列_msg_queue
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
a1012112796
10
个答案
1
次被采纳
踩姑娘的小蘑菇
4
个答案
1
次被采纳
红枫
4
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
Ryan_CW
4
个答案
1
次被采纳
本月文章贡献
catcatbing
3
篇文章
5
次点赞
YZRD
2
篇文章
4
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
Woshizhapuren
1
篇文章
5
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部