文章目录
前言
本篇博文来介绍一下如何搭建TB-03模组二次开发环境!
一、安装开发工具
1. 官网下载安装包
2. 解压下载的好的压缩包
3. 安装开发工具
二、使用步骤
1. 修改编译路径
由于中文路径容易出问题,这里需要将默认的工具路径修改为英文
2. 打开开发工具并进入SDK
这里注意SDK的路径不要有中文
2. 导入工程
三、编译文件
1. 编译
2. 成功
四、烧录
参考https://blog.csdn.net/qq_54193285/article/details/136451640?spm=1001.2014.3001.5502此处链接的内容
注意:烧录文件的路径
五、SDK文件架构
- boot:提供芯片的bootloader,即MCU上电启动或deepsleep唤醒后的汇编处理过程,为后面C语言程序的运行搭建好环境。
- drivers:提供与 MCU 紧密相关的硬件设置和外设驱动程序,如 clock、flash、i2c、usb、gpio、uart 等。
- proj:提供 MCU 相关的外设驱动程序,如 flash,i2c,usb,gpio, uart 等。
- proj_lib:提供 MCU 运⾏所必需的库⽂件,包括 BLE 协议栈、RF 驱动、PM
驱动等,这部分是以库⽂件形式提供的,⽤⼾⽆法看到源⽂件,如 liblt_8258_mesh.a
为蓝⽛协议栈的库⽂件,libsig_mesh.a 为 SIG_mesh普通节点的库⽂件,libsig_mesh_LPN.a 为
SIG_mesh 中的低功耗节点的库⽂件,libsig_mesh_prov.a 为SIG_mesh 中的 provision
节点的库⽂件。 - stack:存放 BLE 协议栈相关的头⽂件。源⽂件被编译到库⽂件⾥⾯,对于⽤⼾是不可⻅的。
- vendor:⽤于存放⽤⼾应⽤层代码。⽬前 vendor ⽬录下有:
- 8267_master_kma_dongle:上位机测试使⽤,配合 GATT 模式上位机⼯具可以作为⼀个 provisioner
的⻆⾊,⽤于演⽰和 debug。
- common:主要包含了 mesh/mesh_lpn/mesh_provision/mesh_switch 等共⽤的模块,例如 SIG
mesh model 的处理,led 部分,出⼚初始化,测试命令等模块。
- mesh/mesh_gw_node_homekit/mesh_lpn/mesh_provision/mesh_switch/ spirit_lpn 这⼏个⽂件
夹的结构⼀样,每个⽂件夹对应⼀个应⽤类型,都包含了 app.c、app.h、app_att.c、app_config.h、
main.c。app.c/app.h 主要是初始化和底层回调功能;app_att.c 是蓝⽛ att 表的描述以及接⼝函数
的说明;app_config.h 是定义⼯程中对应的宏和声明;main.c 是主函数和中断函数的⼊⼝。
六、Mesh 接收和发送⾃定义⼴播包
1. ⾃定义⼴播包的发送:
sdk 初始化时调⽤ bls_set_advertise_prepare (app_advertise_prepare_handler) 注册⼴播包发送回调函数,发
⼴播前允许⽤⼾访问和修改⼴播包内容,sdk 默认 10ms 调⽤⼀次⼴播包发送函数。如果⽤⼾想发送⾃定义的
⼴播包,在 gatt_adv_prepare_handler ⾥参照 mesh 可连接⼴播包的发送即可。通过 clock_time_exceed 软
件计时⽅式控制⼴播包间隔,rf_packet_adv_t * p 指向待发送的⼴播包,⽤⼾根据⼴播包格式修改 p 指向的⼴
播包内容(可参考 set_adv_provision()),最后置返回值 ret 为 1 即可,表⽰要发送⼴播包。
2. 接收和过滤可连接⼴播包:
sdk 在 rf rx 中断调⽤ adv_filter_proc() 函数对收到的⼴播包进⾏过滤,函数返回 0 表⽰丢弃收到的⼴播包,返
回 1 表⽰不过滤 (接收并压⼊ blt_rxfifo)。默认情况下,过滤所有可连接⼴播包。如果⽤⼾想接收可连接⼴播包,
打开宏 USER_ADV_FILTER_EN,在 user_adv_filter_proc() 函数⾥对⽤⼾关⼼的⼴播包进⾏判断并返回 1,不
建议所有的可连接⼴播包都返回 1,因为此⽅式不对⼴播包做任何过滤,所有⼴播包都会压到 blt_rxfifo ⾥,包
括周围⾮ mesh 的其他 BLE 产品发出的⼴播包也会被接收进来,我们的接收 buffer 可能会不能存储那么多数
据,导致需要关⼼的 mesh message 丢失,进⽽影响 mesh 的收包效果。
blt_sdk_main_loop () 会检查 blt_rxfifo,如果检测到有数据需要处理,会调⽤ app_event_handle(),⽤⼾在此
回调函数的 if(LL_TYPE_ADV_NONCONN_IND != (pa->event_type & 0x0F)) 分⽀下处理收到的可连接⼴播包
即可。如下图:
总结
到这里我们TB-03F 二次开发环境搭建指导介绍完成了!
以上就是本期分享的内容,更多资料可从安信可官网上获取。
官方官网:https://www.ai-thinker.com
开发资料:https://docs.ai-thinker.com/
官方论坛:http://bbs.ai-thinker.com
技术支持:support@aithinker.com