原创 【MM32 eMiniBoard】评测一 灵动微蓝牙服务实现点灯

2020-6-21 15:35 1782 25 25 分类: MCU/ 嵌入式 文集: MM32W3xx

       蓝牙发展到今天,有太多新特性了,去年年底(2019/12/31)推出的蓝牙5.2再一次更新了HCI物理特性,包括多重串流音频、低功耗音频解码器LC3、广播音频等等新特性,各家厂商也未停下创新的脚步,手头上的MM32W373就是集成了巨微集成电路的蓝牙射频方案的Cortex –M3内核主控的BLE SoC。由于是方案集成,加之刚入局,所以一些东西在蓝牙这块有待整理,规格书全文都少提蓝牙规格,都是在讲MCU那块,BLE方面的SDK也是没有,只是放出一个乱七八糟的例程:

1.      接口混乱,比如蓝牙接口居然有两个版本,但却同时存在,具体app_hogo.capp.c定义重复,前者是新版本5.3.1,后者是2.0.1旧版本。还有一些ATT属性句柄明显访问不到,定义失误,比如softwareRevision(0x2a28)

2.      写的非蓝牙部分也是混乱,比如uart.cuart_initwBaudRate函数惨传进来的参数没有用到,但使用的时候又偏偏传进来了一个无用的参数。

3.      文档也是混乱MiniBoardeMiniBoard,又是MM373WMMW373L。也是待整理。

言归正传,由于蓝牙都是基于service来处理,而恰巧有一个LED  Service,就来点灯看看,所有的API都放在mg_api.h(进一步实锤是MacroGiga巨微写的API),实现全部开放,做成静态库.lib(有OTA、连接、dtm检测定频3个库)分别对应mg_BLEOTA_lib_m3.libmg_BLEpair_lib_m3.libmg_TEST_Lib.lib,可供使用的API也只能修改广播类型(ble_set_adv_type)、广播间隔(ble_set_interval)、广播名称(ble_set_name)等,涉及到广播角色、连接参数、信号确认、连接状态机等很多关键过程全都没有,所以只能等待后续更新了。主框架是3个函数:

1)        SetBleIntRunningMode:设置中断SVC和协议栈通信

2)        radio_initBle:设置默认发射功率和MAC

3)        ble_run_interrupt_start:中断方式开启协议栈广播工作

看不到任何GATTGAP初始化设置等等步骤,但serviceatt的声明也有,所以可以去添加自己的特征值,具体文件app_hogo.c里数组AttCharList就是所有服务、特征的声明,比如0x2a29对应Manufactuer  Name0x2a26对应Firmware Revision0x2a28对应0x2a28

因为是写属性,干脆就以第二个特征属性来操作,它的properties就有写和无回复写,修改句柄范围为0x160x17,然后在写回调ser_write_rsp里添加操作内容:

实际操作如下(操作LD2绿灯,对应PC10, 开灯:

关灯

其他修改名称、间隔、MAC、发射功率也都可以改,比如改名字(URL编码):

也可AT指令动态修改:

不过时机不对会让协议栈工作不正常。高级特性mesh暂时官方没更新,OTA还没试,暂且这样。

作者: 南霁云, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-1821704.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

文章评论0条评论)

登录后参与讨论
我要评论
0
25
关闭 站长推荐上一条 /2 下一条